From a645006bf84c976ffcf2cc57cee4f6366059a7b5 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger <asterix@lagaule.org> Date: Wed, 12 Dec 2007 08:44:46 +0000 Subject: [PATCH] merge diff from trunk --- AUTHORS | 4 +- COPYING | 910 +- ChangeLog | 29 + Makefile.am | 12 +- README.html | 4 +- README.osx | 99 + THANKS | 1 - TODO.osx | 36 + autogen.sh | 14 +- configure.ac | 81 +- data/Makefile.am | 2 +- data/emoticons/animated/emoticons.py | 1 + data/emoticons/static-big/emoticons.py | 4 + data/emoticons/static-big/lion.png | Bin 0 -> 1362 bytes data/emoticons/static/emoticons.py | 4 + data/emoticons/static/lion.png | Bin 0 -> 934 bytes data/gajim-remote.1 | 2 +- data/gajim.desktop.in.in | 7 +- data/glade/account_context_menu.glade | 56 +- .../account_creation_wizard_window.glade | 92 +- data/glade/accounts_window.glade | 81 +- data/glade/add_new_contact_window.glade | 1 + data/glade/advanced_menuitem_menu.glade | 218 +- data/glade/chat_context_menu.glade | 2 +- data/glade/chat_control_popup_menu.glade | 190 +- data/glade/chat_to_muc_window.glade | 185 + data/glade/filetransfers.glade | 2 +- data/glade/gc_control_popup_menu.glade | 6 +- data/glade/gc_occupants_menu.glade | 28 +- data/glade/history_manager.glade | 90 +- data/glade/history_window.glade | 625 +- data/glade/message_window.glade | 1996 ++--- data/glade/passphrase_dialog.glade | 1 + data/glade/preferences_window.glade | 5918 +++++-------- data/glade/roster_contact_context_menu.glade | 35 +- data/glade/roster_window.glade | 39 +- data/glade/service_discovery_window.glade | 77 +- data/glade/single_message_window.glade | 1 + .../glade/zeroconf_contact_context_menu.glade | 115 +- data/glade/zeroconf_context_menu.glade | 86 +- data/nibs/Gajim.nib/classes.nib | 4 + data/nibs/Gajim.nib/info.nib | 24 + data/nibs/Gajim.nib/keyedobjects.nib | Bin 0 -> 7184 bytes data/other/cacerts.pem | 37 +- data/pixmaps/gajim.icns | Bin 0 -> 42918 bytes debian/changelog | 49 + debian/control | 13 +- debian/gajim.menu | 2 +- gajim.iss | 5 +- launch.sh | 13 +- po/LINGUAS | 30 +- po/cs.po | 5044 ++++++----- po/da.po | 7648 ++++++++++++++++ po/de.po | 6018 ++++++++----- po/fr.po | 8 +- po/{gl_ES.po => gl.po} | 0 po/it.po | 4708 ++++++---- po/lt.po | 7655 +++++++++++++++++ po/pl.po | 5114 ++++++----- po/pt_BR.po | 4706 ++++++---- po/ru.po | 5395 +++++++----- po/sr@Latn.po | 7637 ++++++++++++++++ setup_osx.py | 200 + setup_win32.py | 18 +- src/Makefile.am | 3 +- src/adhoc_commands.py | 18 +- src/advanced.py | 18 +- src/atom_window.py | 13 +- src/cell_renderer_image.py | 19 +- src/chat_control.py | 336 +- src/common/GnuPG.py | 40 +- src/common/GnuPGInterface.py | 3 + src/common/caps.py | 13 +- src/common/check_paths.py | 15 +- src/common/commands.py | 35 +- src/common/config.py | 51 +- src/common/configpaths.py | 9 +- src/common/connection.py | 385 +- src/common/connection_handlers.py | 421 +- src/common/contacts.py | 144 +- src/common/crypto.py | 86 + src/common/dataforms.py | 2 +- src/common/dbus_support.py | 22 +- src/common/defs.py | 2 +- src/common/dh.py | 207 + src/common/events.py | 30 +- src/common/exceptions.py | 27 +- src/common/fuzzyclock.py | 15 +- src/common/gajim.py | 26 +- src/common/helpers.py | 58 +- src/common/i18n.py | 17 +- src/common/logger.py | 24 +- src/common/nslookup.py | 11 +- src/common/optparser.py | 60 +- src/common/passwords.py | 14 +- src/common/proxy65_manager.py | 19 +- src/common/rst_xhtml_generator.py | 13 +- src/common/sleepy.py | 21 +- src/common/socks5.py | 17 +- src/common/stanza_session.py | 910 ++ src/common/xmpp/c14n.py | 36 + src/common/xmpp/idlequeue.py | 16 +- src/common/xmpp/protocol.py | 3 + src/common/xmpp/roster.py | 4 + src/common/xmpp/transports_nb.py | 35 +- src/common/xmpp_stringprep.py | 13 +- src/common/zeroconf/client_zeroconf.py | 28 +- .../zeroconf/connection_handlers_zeroconf.py | 167 +- src/common/zeroconf/connection_zeroconf.py | 41 +- src/common/zeroconf/roster_zeroconf.py | 11 +- src/common/zeroconf/zeroconf.py | 11 +- src/common/zeroconf/zeroconf_avahi.py | 33 +- src/common/zeroconf/zeroconf_bonjour.py | 15 +- src/config.py | 809 +- src/conversation_textview.py | 219 +- src/dataforms_widget.py | 144 +- src/dialogs.py | 496 +- src/disco.py | 55 +- src/features_window.py | 52 +- src/filetransfers_window.py | 58 +- src/gajim-remote.py | 16 +- src/gajim.py | 666 +- src/gajim_themes_window.py | 18 +- src/groupchat_control.py | 239 +- src/gtkexcepthook.py | 13 +- src/gtkgui_helpers.py | 45 +- src/history_manager.py | 51 +- src/history_window.py | 279 +- src/htmltextview.py | 8 + src/lastfm.py | 217 + src/lastfm_track_listener.py | 103 + src/message_control.py | 42 +- src/message_textview.py | 17 +- src/message_window.py | 153 +- src/music_track_listener.py | 36 +- src/negotiation.py | 87 + src/network_manager_listener.py | 55 +- src/notify.py | 50 +- src/osx/.deps/idle_la-idle.Plo | 1 + src/osx/.deps/nsapp.Plo | 1 + src/osx/Makefile.am | 45 + src/osx/__init__.py | 45 + src/osx/dbus.py | 131 + src/osx/growl/.deps/_growlImage.Plo | 1 + src/osx/growl/.deps/_growl_la-_growl.Plo | 1 + src/osx/growl/Growl.py | 247 + src/osx/growl/Makefile.am | 41 + src/osx/growl/__init__.py | 1 + src/osx/growl/_growl.c | 239 + src/osx/growl/_growlImage.m | 274 + src/osx/growl/setup.py | 25 + src/osx/growler.py | 63 + src/osx/idle.c | 174 + src/osx/nsapp.h | 19 + src/osx/nsapp.m | 239 + src/osx/prep_py2app.py | 23 + src/osx/setup.py | 20 + .../syncmenu/.deps/syncmenu_la-pysyncmenu.Plo | 1 + .../syncmenu/.deps/syncmenu_la-sync-menu.Plo | 1 + src/osx/syncmenu/Makefile.am | 21 + src/osx/syncmenu/pysyncmenu.c | 55 + src/osx/syncmenu/setup.py | 27 + src/osx/syncmenu/sync-menu.c | 728 ++ src/osx/syncmenu/sync-menu.h | 27 + src/osx/syncmenu/test-menu.c | 107 + src/osx/syncmenu/test-menu.py | 78 + src/profile_window.py | 103 +- src/remote_control.py | 17 +- src/roster_window.py | 948 +- src/search_window.py | 20 +- src/secrets.py | 194 + src/statusicon.py | 30 +- src/systray.py | 23 +- src/tooltips.py | 42 +- src/vcard.py | 37 +- 175 files changed, 56738 insertions(+), 20138 deletions(-) create mode 100644 README.osx create mode 100644 TODO.osx create mode 100644 data/emoticons/static-big/lion.png create mode 100644 data/emoticons/static/lion.png create mode 100644 data/glade/chat_to_muc_window.glade create mode 100644 data/nibs/Gajim.nib/classes.nib create mode 100644 data/nibs/Gajim.nib/info.nib create mode 100644 data/nibs/Gajim.nib/keyedobjects.nib create mode 100644 data/pixmaps/gajim.icns create mode 100644 po/da.po rename po/{gl_ES.po => gl.po} (100%) create mode 100644 po/lt.po create mode 100644 po/sr@Latn.po create mode 100644 setup_osx.py create mode 100644 src/common/crypto.py create mode 100644 src/common/dh.py create mode 100644 src/common/stanza_session.py create mode 100644 src/common/xmpp/c14n.py create mode 100644 src/lastfm.py create mode 100644 src/lastfm_track_listener.py create mode 100644 src/negotiation.py create mode 100644 src/osx/.deps/idle_la-idle.Plo create mode 100644 src/osx/.deps/nsapp.Plo create mode 100644 src/osx/Makefile.am create mode 100644 src/osx/__init__.py create mode 100644 src/osx/dbus.py create mode 100644 src/osx/growl/.deps/_growlImage.Plo create mode 100644 src/osx/growl/.deps/_growl_la-_growl.Plo create mode 100644 src/osx/growl/Growl.py create mode 100644 src/osx/growl/Makefile.am create mode 100644 src/osx/growl/__init__.py create mode 100644 src/osx/growl/_growl.c create mode 100644 src/osx/growl/_growlImage.m create mode 100644 src/osx/growl/setup.py create mode 100644 src/osx/growler.py create mode 100644 src/osx/idle.c create mode 100644 src/osx/nsapp.h create mode 100644 src/osx/nsapp.m create mode 100644 src/osx/prep_py2app.py create mode 100644 src/osx/setup.py create mode 100644 src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo create mode 100644 src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo create mode 100644 src/osx/syncmenu/Makefile.am create mode 100644 src/osx/syncmenu/pysyncmenu.c create mode 100644 src/osx/syncmenu/setup.py create mode 100644 src/osx/syncmenu/sync-menu.c create mode 100644 src/osx/syncmenu/sync-menu.h create mode 100644 src/osx/syncmenu/test-menu.c create mode 100644 src/osx/syncmenu/test-menu.py create mode 100644 src/secrets.py diff --git a/AUTHORS b/AUTHORS index 9c646612b2..b57e57a657 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,8 +1,10 @@ CURRENT DEVELOPERS: -Yann Le Boulanger (asterix AT lagaule.org) +Yann Leboulanger (asterix AT lagaule.org) Nikos Kouremenos (kourem AT gmail.com) Travis Shirk (travis AT pobox.com) +Stephan Erb (steve-e AT h3c.de) +Julien Pivotto (roidelapluie AT gmail.com) PAST DEVELOPERS: diff --git a/COPYING b/COPYING index e90dfed1a3..94a9ed024d 100644 --- a/COPYING +++ b/COPYING @@ -1,285 +1,626 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of this License. - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it @@ -287,15 +628,15 @@ free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least +state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> - This program is free software; you can redistribute it and/or modify + 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 + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -304,37 +645,30 @@ the "copyright" line and a pointer to where the full notice is found. 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 - + along with this program. If not, see <http://www.gnu.org/licenses/>. Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/ChangeLog b/ChangeLog index a4fba5334e..09d3887847 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,32 @@ +Gajim 0.11.4 (06 December 2007) + + * Fix /nick command in groupchats + * Better Metacontacts sorting + * Fix Ctrl + PageUP/Down behaviour + * Fix saving files from filetransfer under windows + +Gajim 0.11.3 (17 November 2007) + + * Fix bookmarks support detection + * Improve file transfer on windows + * Fix some zeroconf bugs + * Fix focus bug in chat window + * Fix nickname changement behaviour in groupchats + +Gajim 0.11.2 (22 September 2007) + + * Improve idle, transports support + * Enable ellipsization in roster and chatwindow + * Fixed some metacontacts problems (#2156, #2761) + * Beter support of XEP-0070 (Verifying HTTP Requests via XMPP) + * Make the same height of a banner for all chat tabs + * Fix a bug with french translation and invitations (#3043) + * Fix a bug with UTF-8 and emoticons + * Corrected many bugs with passwords and gnome-keyring + * Improve xhtml-im and pictures support + * Improve Ad-Hoc support + * And many other bufixes + Gajim 0.11.1 (18 February 2007) * Fixes in gajim-remote and the way XMPP URI are handled * Fix Idle under Windows diff --git a/Makefile.am b/Makefile.am index 50329095c3..59a6d995d7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -48,6 +48,16 @@ MAINTAINERCLEANFILES = \ compile \ depcomp \ config.guess \ + config.log \ config.sub \ + config.status \ aclocal.m4 \ - libtool + libtool \ + po/POTFILES.in \ + src/trayicon_la-eggtrayicon.loT \ + m4/intltool.m4 + +MAINTAINERCLEANDIRS = \ + autom4te.cache \ + build \ + dist diff --git a/README.html b/README.html index c59ac15a9a..f1f2248969 100644 --- a/README.html +++ b/README.html @@ -16,7 +16,7 @@ Welcome to Gajim and thank you for trying out our client. <h2>Runtime Requirements</h2> <ul> <li>python2.4 or higher</li> -<li>pygtk2.6 or higher</li> +<li>pygtk2.8 or higher</li> <li>python-libglade</li> <li>pysqlite2 (if you have python 2.5, you already have this)</li> </ul> @@ -29,6 +29,7 @@ Gajim is a GTK+ app that loves GNOME. You can do 'make' so you don't require gno <h2>Optional Runtime Requirements</h2> <ul> <li><a href="http://pyopenssl.sourceforge.net/">PyOpenSSL</a> (python-pyopenssl package in Debian) for <em>secure</em> SSL/TLS. Python's default SSL is insecure, so this package is highly recommended!</li> +<li>python-crypto to enable End to end encryption</li> <li>For zeroconf (bonjour), the "enable link-local messaging" checkbox, you need dbus-glib, python-avahi</li> <li>dnsutils (or whatever package provides the nslookup binary) for SRV support; if you don't know what that is, you don't need it</li> <li>gtkspell and aspell-LANG where lang is your locale eg. en, fr etc</li> @@ -37,6 +38,7 @@ Gajim is a GTK+ app that loves GNOME. You can do 'make' so you don't require gno <li>notification-daemon or notify-python (and D-Bus) to get cooler popups</li> <li>D-Bus running to have gajim-remote working</li> <li>python-dbus bindings</li> +<li>python-sexy to have clickable URLs in chat windows</li> </ul> <p> diff --git a/README.osx b/README.osx new file mode 100644 index 0000000000..64c45ad858 --- /dev/null +++ b/README.osx @@ -0,0 +1,99 @@ +Introduction +------------ + +This is an alpha release of Gajim for OS/X using native GTK+. It is not finished +nor is it relatively stable. The native port of GTK+ is alpha and not stable +yet, though it has proven to be usable for Gajim. Having said that it is usable, +basic functionality works. See the TODO file for a list of what is and is not +working. + + + +Installing +---------- + +Install the GTK+ framework into your /Library/Frameworks directory. It can be +found at http://codepunks.org/misc/gtk/osx. + +Copy the Gajim.app into the /Applications directory or any other directory. + + +Installing language dictionaries +-------------------------------- + +The codepunks.org build of the GTK+ framework comes with the US English +dictionary pre-installed. If you wish to install a different dictionary download +the appropriate dictionary from here: + +http://ftp.gnu.org/gnu/aspell/dict/ + +Then follow these instructions: + +source /Library/Frameworks/GTK+.framework/Versions/Current/bin/env +tar -jxf aspell-<lang>-<version>.tbz2 +cd aspell-<lang>-<version> +./configure +make +make install + + +Compiling Requirements +---------------------- +These instructions were gathered for building a universal binary on a PPC. The +steps for building on an i386 should be essentially the same. + +Requirements: +- OS/X 10.4, i386 or ppc +- Universal MacPython 2.5 + http://www.pythonmac.org/packages/py25-fat/index.html +- Latest XCode (2.4.0 or greater) +- py2app + http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html + +Install all of the requirements. Make sure that the universal MacPython is +installed before py2app. Then ensure that this is the first python in your +PATH. + + export PATH=/Library/Frameworks/Python.framework/Versions/2.5/bin:$PATH + +Then install py2app. + + +Compiling +--------- + +In the top level run the configure script. If this is source is from subversion +then run the autogen.sh script. Follow it up with a make: + + ./configure + or + ./autogen.sh + make + +Once that is done Gajim can be run from the source tree. You may also create an +app bundle suitable for use or distribution. To do that run: + + python setup_osx.py build + +The Gajim.app bundle is created in the dist directory. This bundle is ready +for use as is. Copy it to your /Applications directory and you're good to go. + +You now have a self contained (almost, requires GTK+.framework still) universal +native build of Gajim. + +Optionally to create a distribution of the Gajim app bundle do: + + python setup_osx.py dist + + + +Development +----------- + +It is possible to run Gajim correctly from the app bundle but still use the +python code in the source tree. This line must be added to the _run() function +in the Gajim.app/Resources/__boot__.py file. It needs to be located just after +the sys module is imported. Font forget to fix the path to match your +environment. + +sys.path = ["/Users/user/Source/gajim/src"] + sys.path diff --git a/THANKS b/THANKS index 4e1288a786..e00eaa901b 100644 --- a/THANKS +++ b/THANKS @@ -20,7 +20,6 @@ Guillaume Morin Gustavo J. A. M. Carneiro Ivo Anjo Josef VybÃral -Julien Pivotto Juraj Michalek Luis Peralta Michael Scherer diff --git a/TODO.osx b/TODO.osx new file mode 100644 index 0000000000..b5c332299d --- /dev/null +++ b/TODO.osx @@ -0,0 +1,36 @@ +The bits that work +------------------ + +-idle checking +-dbus and gajim-remote, using dbus from GTK+.framework. +-systray icon +-app bundle with universal binaries. Depends on the GTK+.framework. +-notifications through growl, internal fallback works fine as well +-spell checking +-running apps and opening files/urls +-playing sounds +-Network monitoring +-Mostly everything else except for whats below. + + + +The bits that dont work +----------------------- + +-Application start/stop/doc/DnD handling +-finish the .app bundle + - setup gajim-remote, maybe install it to /usr/local + - fix user session management +-integrate the Gajim and gajim-remote scripts with autoconf and add GTK + framework detection +-Maybe setup the pasteboard services for an OS/X alternative to the + gajim_remote +-CFBundleDocumentTypes.NSDocument +-zeroconf has a parsing problem with the MDNS result. + + +Native GTK bugs +---------------- + +-cut and paste blows up Finder and the os/x GUI server. very very nasty. +-with mutiple displays, popup menus show up on the wrong display diff --git a/autogen.sh b/autogen.sh index dbf2cc8121..97eb8bbce1 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,4 +1,12 @@ #!/usr/bin/env bash + AM_ARGS="--add-missing --gnu --copy" + CONF_ARGS="" + if test x`uname -s 2>/dev/null` = 'xDarwin';then + . /Library/Frameworks/GTK+.framework/Versions/Current/env + AM_ARGS="${AM_ARGS} --ignore-deps" + CONF_ARGS="${CONF_ARGS} --disable-idle --without-x" + fi + echo "[encoding: UTF-8]" > po/POTFILES.in \ && ls -1 -U data/gajim.desktop.in.in data/glade/*.glade \ src/*py src/common/*py src/common/zeroconf/*.py >> \ @@ -8,11 +16,11 @@ echo "See README.html for build requirements." exit 1 fi - set -x + intltoolize --force --automake \ && aclocal -I ./m4 \ && libtoolize --copy --force --automake \ && autoheader \ && autoconf \ - && automake --add-missing --gnu --copy \ - && ./configure $@ + && automake ${AM_ARGS} \ + && ./configure ${CONF_ARGS} $@ diff --git a/configure.ac b/configure.ac index c4bdb142e2..68f3e9ada8 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,14 @@ AC_INIT([Gajim - A Jabber Instant Messager], - [0.11.1.5],[http://trac.gajim.org/],[gajim]) + [0.11.4.0-svn],[http://trac.gajim.org/],[gajim]) AC_PREREQ([2.59]) AM_INIT_AUTOMAKE([1.8]) AC_CONFIG_HEADER(config.h) AC_CONFIG_MACRO_DIR([m4]) AM_MAINTAINER_MODE +dnl Make Objective-C work with automake +AM_CONDITIONAL([am__fastdepOBJC], false) + IT_PROG_INTLTOOL([0.35.0]) PKG_PROG_PKG_CONFIG([0.19]) @@ -33,7 +36,7 @@ AM_NLS dnl **** dnl pygtk and gtk+ dnl **** -PKG_CHECK_MODULES([PYGTK], [gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0]) +PKG_CHECK_MODULES([PYGTK], [gtk+-2.0 >= 2.8.0 pygtk-2.0 >= 2.8.0]) AC_SUBST(PYGTK_CFLAGS) AC_SUBST(PYGTK_LIBS) PYGTK_DEFS=`$PKG_CONFIG --variable=defsdir pygtk-2.0` @@ -128,6 +131,75 @@ AC_ARG_ENABLE(trayicon, test "x$enable_trayicon" = "xyes" && have_trayicon=true || have_trayicon=false AM_CONDITIONAL(BUILD_TRAYICON, $have_trayicon) +dnl **** +dnl Cocoa +dnl **** +AC_ARG_ENABLE([cocoa], + [ --disable-cocoa build cocoa integration [default auto]], + enable_cocoa=$enableval, enable_cocoa=yes) + +if test "x$enable_cocoa" = "xyes";then + dnl There is no pkgconfig for cocoa; lets do a header check + temp_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS -ObjC" + AC_CHECK_HEADER(Cocoa/Cocoa.h, [have_cocoa=true], [have_cocoa=false]) + AC_CHECK_HEADER(AppKit/AppKit.h, [have_appkit=true], [have_appkit=false]) + CFLAGS="$temp_save_cflags" + + if test "x$have_cocoa" = "xtrue";then + COCOA_LIBS="$COCOA_LIBS -Xlinker -framework -Xlinker Cocoa" + fi + if test "x$have_appkit" = "xtrue";then + COCOA_LIBS="$COCOA_LIBS -Xlinker -framework -Xlinker AppKit" + fi + if test "x$COCOA_LIBS" != "x";then + AC_SUBST(COCOA_LIBS) + true + fi +fi +AM_CONDITIONAL(BUILD_COCOA, $have_cocoa) + +dnl **** +dnl Carbon +dnl **** +AC_ARG_ENABLE([carbon], + [ --disable-carbon build with carbon [default auto]], + enable_carbon=$enableval, enable_carbon=yes) + +if test "x$enable_carbon" = "xyes";then + dnl There is no pkgconfig for carbon; lets do a header check + AC_CHECK_HEADER(Carbon/Carbon.h, [have_carbon=true], [have_carbon=false]) + AC_CHECK_HEADER(IOKit/IOKitLib.h, [have_iokit=true], [have_iokit=false]) + + if test "x$have_carbon" = "xtrue";then + CARBON_LIBS="$CARBON_LIBS -Xlinker -framework -Xlinker Carbon" + fi + if test "x$have_iokit" = "xtrue";then + CARBON_LIBS="$CARBON_LIBS -Xlinker -framework -Xlinker IOKit" + fi + if test "x$CARBON_LIBS" != "x";then + AC_SUBST(CARBON_LIBS) + have_idle_osx=true + dnl Disable X11 idle + have_idle=false + AM_CONDITIONAL(BUILD_IDLE, false) + dnl Disable custom trayicon + have_trayicon=gtk+ + AM_CONDITIONAL(BUILD_TRAYICON, false) + dnl Hack to work around failure in gettext package detection on OS/X + if test "x$GMSGFMT" = "x";then + AC_SUBST(GMSGFMT, msgfmt) + AC_SUBST(MSGFMT, msgfmt) + AC_SUBST(XGETTEXT, xgettext) + fi + else + have_carbon=false + have_idle_osx=false + fi +fi +AM_CONDITIONAL(BUILD_IDLE_OSX, $have_carbon) +AM_CONDITIONAL(BUILD_CARBON, $have_carbon) + ACLOCAL_AMFLAGS="\${ACLOCAL_FLAGS}" AC_SUBST(ACLOCAL_AMFLAGS) @@ -159,6 +231,9 @@ AC_CONFIG_FILES([ data/defs.py src/Makefile src/common/Makefile + src/osx/Makefile + src/osx/growl/Makefile + src/osx/syncmenu/Makefile scripts/gajim scripts/gajim-remote po/Makefile.in @@ -171,4 +246,6 @@ echo " idle module ...... ${have_idle} remote control ... ${have_remote} trayicon ......... ${have_trayicon} + idle module OSX .. ${have_idle_osx} + cocoa ............ ${have_cocoa} *****************************" diff --git a/data/Makefile.am b/data/Makefile.am index 9b6abc349c..c34b2916ff 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -12,7 +12,7 @@ soundsdir = $(pkgdatadir)/data/sounds sounds_DATA = $(srcdir)/sounds/*.wav otherdir = $(pkgdatadir)/data/other -other_DATA = other/servers.xml +other_DATA = other/servers.xml other/cacerts.pem man_MANS = gajim.1 gajim-remote.1 diff --git a/data/emoticons/animated/emoticons.py b/data/emoticons/animated/emoticons.py index 336124ee6c..90d2c30113 100644 --- a/data/emoticons/animated/emoticons.py +++ b/data/emoticons/animated/emoticons.py @@ -1,3 +1,4 @@ +# coding=utf-8 emoticons = { ':-[': 'bat.gif', ':[': 'bat.gif', diff --git a/data/emoticons/static-big/emoticons.py b/data/emoticons/static-big/emoticons.py index 50505816a8..977ce6ff20 100644 --- a/data/emoticons/static-big/emoticons.py +++ b/data/emoticons/static-big/emoticons.py @@ -1,3 +1,4 @@ +# coding=utf-8 emoticons = { ':-)': 'smile.png', ':)': 'smile.png', @@ -54,6 +55,9 @@ emoticons = { # ':-[': 'bat.png', ':[': 'bat.png', +# + '>:3': 'lion.png', + ':3': 'lion.png', # #MSN ones '(@)': 'pussy.png', diff --git a/data/emoticons/static-big/lion.png b/data/emoticons/static-big/lion.png new file mode 100644 index 0000000000000000000000000000000000000000..ae10ca7bf7ad37bd8f3b0aa0fd3a2e16281a11e1 GIT binary patch literal 1362 zcmV-Y1+DstP)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L0E%e<0E%e=v1PL|00007bV*G`2iFS? z6C4g%`T~dm00h!WL_t(I%e|G|Z&P&`$3MT*({}APx~=P8nR9cz4#q69O)!x-B1+JZ zpwXxaAu%CnOpG=`;th8aQw<4%QSc976TBcIGqCX@lSNWsxWO{VU}Ixr?b>c<eK|en z{JdC!iC+7?eV%-NPd<6_{6r{#6W9Z+2gZO?z%M`os0ZEzT7U}XGY(t^+JJr_2iO8^ z%l2FZ_KQ$}&s^oJzVNPjjdXO3_&^tWZ1g_R2edj0Dn#DmdhGc=gaCae%-mQ%>F7NP zoCQ`Yj@*j;nkHN&&k*hJBptcER|T4jR&Swrc|FJ#lr?Q7@@HrH%ur8xY4aQ8Jynmu z0y6<fu(^@g&_?=2{A$~#9B&PaR&2uIEeB~KY&qON_su#Lm`qQP0*%PYlPK<|DQVnD z$=X-Z=O*d-?KBOQ5nOf)fTXU_J6_1M%W5fWc@Oj%%-bh0?whD9caw^Y0F0=>$=J;^ zyGon3qApqu@vF$>C^*YFbKxdmwnZuN*f{!W2>|bZHNj+Lh)-Hhuz5{Ba&8nX16%zL zbZw5A!E*pViBJFsFz8#m?WxL*JCIXnAU(mu7^bB2T9To$G%__yHA8Hyj$%{fqaNX@ z!_l;tvESQ?^q%eqRxAD>I`DP)>PZZ35>dDg04XJwWpV8MEJb<n?y7sdy*NaXE5naB zOOTJbDBcFr+6>cuX8{iRgIG$omSc0evAK(p+FwX%fHdg2l_1z2XU`8&)Yu44)#CH6 zIu7(y^T)X75!jmO#_1`<RkD<aYxxk|kXzM=5DHQo0LuhvG8M}J5YsI5v`)qp#8WB& z;iUcX$VLoB(aEh`4)FX!@Di7=7W4?18e}JKTB6{|6}+%g!R2<6qgrgJisNw_tSz6( zda$8ZEk$NxI6Xdq8UQsE0H9KJ=ON8GkS6m2C8Y(DQ~TUF?Glk(L1y>{`&$RmO+k)o zA)GGkRdongE?8+4)eevo3V`YlLMXtDnbInR;>`M$NGTCQViS@N59?eTRzWt>P^xj@ z9SwVaE+TgkLIBc0*qj(C4Iu6hK2|Z1oVo*c51^1p8SFfeV&s8=X&MYoSfn$MHUz`7 z`QR<%UNWDZ2O*I%0Rav#$?yokz(U7e+Q@Y*(?qyynTi|q-m!QPHE`KYj(h;sKB)Fd zj_fvZ*-akAOnUFYRNO?kYmk;eyL%m=YazJJNW@anTbB?8ek#2xr3KL5Z6Pg#YM((> zv81Y4QtdO4mO*>BpwuI&^a?~_3(>(VWVCQ9d-bpZeAkV(Ydxij$)V<=`c~AuQYxH- zeE+N9LcgHns-S03VKgiV-Bvhu$;Oo-8~fhUscU!{QxtLM)FCWA@vT2dJM(hp6ADlO zgz^^G*VMlLF(Na;mCGF*znDNbU~{7ZNII^mI8@2@4Gx}b*@SddG5qskW=C!e1Ac#y z*gwEocmvRxTfW3w{mL#Jd5e&<eK0qK)FXgI*bBg2i^yMvo|xlq$5H0S2O_{r{vf@N z?gvjK6rdhBuGn*y`PQ^jv~mMZPf4~aK}ymyVW#^p5$^58)RP0ic7Kq*g`9tZvv4;M z06qeW9eIV=^NRq;Xi@apX@D?r5D5B%B%WmaCwRdFF5pF=`H4TT2RQE!lH~u+-;T)? U*d+F}F#rGn07*qoM6N<$f)|f&egFUf literal 0 HcmV?d00001 diff --git a/data/emoticons/static/emoticons.py b/data/emoticons/static/emoticons.py index 50505816a8..977ce6ff20 100644 --- a/data/emoticons/static/emoticons.py +++ b/data/emoticons/static/emoticons.py @@ -1,3 +1,4 @@ +# coding=utf-8 emoticons = { ':-)': 'smile.png', ':)': 'smile.png', @@ -54,6 +55,9 @@ emoticons = { # ':-[': 'bat.png', ':[': 'bat.png', +# + '>:3': 'lion.png', + ':3': 'lion.png', # #MSN ones '(@)': 'pussy.png', diff --git a/data/emoticons/static/lion.png b/data/emoticons/static/lion.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab9e7d05d9a82a115bc81fbd1aa2dfdb83d961a GIT binary patch literal 934 zcmV;X16lluP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L0E%e<0E%e=v1PL|00007bV*G`2iFS? z6CWCA4TUxU00SmTL_t(I%U#gTYg|<v#_{ht_hsHEO>$$B#$=M1#>OOt4$_L*6-z{f zE_9*Lm9)DqtaK;15nP4VKR_sj3gX6vSVa_qRxq)omd3Q2l%|;^lS#sib2E45&V4z@ zg{i2&<-_xQ7C-Up``KA5>s%JnP=Q;yrP_@pA&rwpD*u{cr^f(P&{~UH^;=rSOF~*j zE9aa;2qLd`)wHrbmwHdXIcsO~9F$hh9&Fs(Pxp@YWCo5KRyqej*ldh@TMuS~%EP@x z&zO@PdC?3#m%Te*_@)p-Tj?B`>;dViX|sE3rmx;;Qr=x>G*bm&!%N@{P8-g%&-Dp^ z2h*(J<&J`off>}xU%8L(zM3x1ShBH%B@?VY*yo#H8oc~M0v-7Lw7AVH!+V?>j?pS4 zp1g?r_)a@;cfOP=Y~8N^aeF0bhL9S9$YrWvaJHDlF=}+W_c=3EVbXCSa1pr?+Hs2d zqlMpe)LxK)uj0T%nh@5}DrEki#|JlRw0G8tf{+h?9OZ|NP5@|@F_SiiomGI6Ku6LU z={HS@_P0Ps2pyrd1{DDstw9J4fUv=|1&JelgFu%Fq|Icu3tFIj(3+VEN#8pOj^&RM zm44@=Gi!`=`pDc7%)TMC2$7bZ0c;6GD)fD{fmRWv-2hXDZ0$#!yO!dO&!^cj21t#L zvy&MI+eQnMIBa=9Ac3l1+b+eiCQxavf7fPpGi0zkroR*VyCsD}mPfS|*S}W;I)hRs z?OM46R3)$(x|Id@$x3W>JWnQRFuxp8a3W3=G$#s*f)g>ntjQ!KR>uTxX*CZ1EH40? z0$}M1r|f*s&EeS#$EseHYoFey(F};y-;XmSWYZ>>-#$)Pu9x+1Z>$FO%K73Pi%$VV zNb^Fbf9&J_)2}BFG;D3G(rNDkidx%YU}%h-G$=2A?R(p+?`jo&Qk)|e9Ny9ul0q8i zjb!e<u8Eh%I)*1LGnodhiToz+la;Xg@aMItb#PUy_-1hqAK)M05Rt$X@Rl^~lU64G z3<yH6zN@0(F7O$!T%1Ea-TVjm7i0lFK>jdtfxY4!;s3jT0Tz2|a8E~!ssI2007*qo IM6N<$f;PFT_5c6? literal 0 HcmV?d00001 diff --git a/data/gajim-remote.1 b/data/gajim-remote.1 index 8b13ff1a84..9bbbc72141 100644 --- a/data/gajim-remote.1 +++ b/data/gajim-remote.1 @@ -1,7 +1,7 @@ .\" 20050818 .TH "Gajim-remote" "1" "August 18, 2005" "Gajim dev team" "" .SH "NAME" -Gajim-remote +Gajim-remote \- tool to communicate with a running instance of Gajim .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" diff --git a/data/gajim.desktop.in.in b/data/gajim.desktop.in.in index 55b50e3ecb..858078e09f 100644 --- a/data/gajim.desktop.in.in +++ b/data/gajim.desktop.in.in @@ -1,12 +1,11 @@ [Desktop Entry] -Categories=Network;InstantMessaging;Application;GTK;GNOME; +Categories=Network;InstantMessaging;GTK;GNOME; _Name=Gajim Instant Messenger _GenericName=Jabber IM Client _Comment=A GTK+ Jabber client -Version=@VERSION@ -Encoding=UTF-8 +Version=1.0 Exec=gajim -Icon=gajim.png +Icon=gajim StartupNotify=true StartupWMClass=Gajim Terminal=false diff --git a/data/glade/account_context_menu.glade b/data/glade/account_context_menu.glade index f853d133b0..4316c5f0c5 100644 --- a/data/glade/account_context_menu.glade +++ b/data/glade/account_context_menu.glade @@ -32,21 +32,31 @@ </widget> </child> <child> - <widget class="GtkSeparatorMenuItem" id="seperator"> + <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> </widget> </child> <child> - <widget class="GtkMenuItem" id="open_gmail_inbox_menuitem"> + <widget class="GtkImageMenuItem" id="start_chat_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">_Open Gmail Inbox</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">_Start Chat...</property> <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="menu-item-image7"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="stock">gtk-jump-to</property> + <property name="icon_size">1</property> + </widget> + </child> </widget> </child> <child> <widget class="GtkImageMenuItem" id="join_group_chat_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">_Group Chat</property> + <property name="label" translatable="yes">Join _Group Chat...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1236"> @@ -57,6 +67,25 @@ </child> </widget> </child> + <child> + <widget class="GtkSeparatorMenuItem" id="seperator"> + <property name="visible">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="add_contact_menuitem"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Add Contact...</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1238"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> <child> <widget class="GtkImageMenuItem" id="service_discovery_menuitem"> <property name="visible">True</property> @@ -74,7 +103,7 @@ <child> <widget class="GtkImageMenuItem" id="execute_command_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">_Execute Command</property> + <property name="label" translatable="yes">_Execute Command...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1246"> @@ -86,28 +115,21 @@ </widget> </child> <child> - <widget class="GtkSeparatorMenuItem" id="seperator"> + <widget class="GtkMenuItem" id="open_gmail_inbox_menuitem"> <property name="visible">True</property> + <property name="label" translatable="yes">_Open Gmail Inbox</property> + <property name="use_underline">True</property> </widget> </child> <child> - <widget class="GtkImageMenuItem" id="add_contact_menuitem"> + <widget class="GtkSeparatorMenuItem" id="seperator"> <property name="visible">True</property> - <property name="label" translatable="yes">_Add Contact</property> - <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="image1238"> - <property name="visible">True</property> - <property name="stock">gtk-add</property> - <property name="icon_size">1</property> - </widget> - </child> </widget> </child> <child> <widget class="GtkImageMenuItem" id="edit_account_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">_Modify Account...</property> + <property name="label" translatable="yes">_Modify Account</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1240"> diff --git a/data/glade/account_creation_wizard_window.glade b/data/glade/account_creation_wizard_window.glade index 93ba1cb8b1..38997769fa 100644 --- a/data/glade/account_creation_wizard_window.glade +++ b/data/glade/account_creation_wizard_window.glade @@ -35,7 +35,6 @@ to the Jabber network.</property> <child> <widget class="GtkFrame" id="frame33"> <property name="visible">True</property> - <property name="label_xalign">0</property> <property name="shadow_type">GTK_SHADOW_NONE</property> <child> <widget class="GtkAlignment" id="alignment68"> @@ -51,7 +50,7 @@ to the Jabber network.</property> <widget class="GtkRadioButton" id="use_existing_account_radiobutton"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">I already have an account I want to use</property> + <property name="label" translatable="yes">I already have an account I want to _use</property> <property name="use_underline">True</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> @@ -99,9 +98,6 @@ to the Jabber network.</property> </packing> </child> </widget> - <packing> - <property name="tab_expand">False</property> - </packing> </child> <child> <widget class="GtkLabel" id="label259"> @@ -109,7 +105,6 @@ to the Jabber network.</property> </widget> <packing> <property name="type">tab</property> - <property name="tab_expand">False</property> <property name="tab_fill">False</property> </packing> </child> @@ -294,7 +289,6 @@ to the Jabber network.</property> </widget> <packing> <property name="position">1</property> - <property name="tab_expand">False</property> </packing> </child> <child> @@ -304,7 +298,6 @@ to the Jabber network.</property> <packing> <property name="type">tab</property> <property name="position">1</property> - <property name="tab_expand">False</property> <property name="tab_fill">False</property> </packing> </child> @@ -526,7 +519,6 @@ to the Jabber network.</property> </widget> <packing> <property name="position">2</property> - <property name="tab_expand">False</property> </packing> </child> <child> @@ -536,7 +528,69 @@ to the Jabber network.</property> <packing> <property name="type">tab</property> <property name="position">2</property> - <property name="tab_expand">False</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="ssl_vbox"> + <property name="visible">True</property> + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="stock">gtk-dialog-warning</property> + <property name="icon_size">5</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ssl_label"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ssl_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Add this certificate to the list of trusted certificates. +SHA1 fingerprint of the certificate: +</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label482"> + <property name="visible">True</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">3</property> <property name="tab_fill">False</property> </packing> </child> @@ -548,8 +602,7 @@ to the Jabber network.</property> </child> </widget> <packing> - <property name="position">3</property> - <property name="tab_expand">False</property> + <property name="position">4</property> </packing> </child> <child> @@ -558,8 +611,7 @@ to the Jabber network.</property> </widget> <packing> <property name="type">tab</property> - <property name="position">3</property> - <property name="tab_expand">False</property> + <property name="position">4</property> <property name="tab_fill">False</property> </packing> </child> @@ -592,8 +644,7 @@ Please wait...</property> </child> </widget> <packing> - <property name="position">4</property> - <property name="tab_expand">False</property> + <property name="position">5</property> </packing> </child> <child> @@ -602,8 +653,7 @@ Please wait...</property> </widget> <packing> <property name="type">tab</property> - <property name="position">4</property> - <property name="tab_expand">False</property> + <property name="position">5</property> <property name="tab_fill">False</property> </packing> </child> @@ -671,8 +721,7 @@ Please wait...</property> </child> </widget> <packing> - <property name="position">5</property> - <property name="tab_expand">False</property> + <property name="position">6</property> </packing> </child> <child> @@ -681,8 +730,7 @@ Please wait...</property> </widget> <packing> <property name="type">tab</property> - <property name="position">5</property> - <property name="tab_expand">False</property> + <property name="position">6</property> <property name="tab_fill">False</property> </packing> </child> diff --git a/data/glade/accounts_window.glade b/data/glade/accounts_window.glade index ecd00cea64..4915193f98 100644 --- a/data/glade/accounts_window.glade +++ b/data/glade/accounts_window.glade @@ -780,42 +780,19 @@ </packing> </child> <child> - <widget class="GtkHBox" id="hbox4"> + <widget class="GtkCheckButton" id="use_gpg_agent_checkbutton1"> <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkCheckButton" id="gpg_save_password_checkbutton1"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you</property> - <property name="label" translatable="yes">Save _passphrase (insecure)</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_gpg_save_password_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkEntry" id="gpg_password_entry1"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="visibility">False</property> - <property name="invisible_char">*</property> - <signal name="changed" handler="on_gpg_password_entry_changed"/> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">If checked, Gajim will get the password from a GPG agent like seahorse</property> + <property name="label" translatable="yes">Use GPG _Agent</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_use_gpg_agent_checkbutton_toggled"/> </widget> <packing> <property name="expand">False</property> - <property name="position">1</property> + <property name="fill">False</property> </packing> </child> </widget> @@ -1218,40 +1195,18 @@ You might consider to change possible firewall settings.</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox7"> + <widget class="GtkCheckButton" id="use_gpg_agent_checkbutton2"> <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkCheckButton" id="gpg_save_password_checkbutton2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you</property> - <property name="label" translatable="yes">Save _passphrase (insecure)</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_gpg_save_password_checkbutton_toggled"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkEntry" id="gpg_password_entry2"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="visibility">False</property> - <property name="invisible_char">*</property> - <signal name="changed" handler="on_gpg_password_entry_changed"/> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">If checked, Gajim will get the password from a GPG agent like seahorse</property> + <property name="label" translatable="yes">Use GPG _Agent</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_use_gpg_agent_checkbutton_toggled"/> </widget> <packing> - <property name="position">2</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> diff --git a/data/glade/add_new_contact_window.glade b/data/glade/add_new_contact_window.glade index cd10d283e2..004d869630 100644 --- a/data/glade/add_new_contact_window.glade +++ b/data/glade/add_new_contact_window.glade @@ -206,6 +206,7 @@ <widget class="GtkCheckButton" id="auto_authorize_checkbutton"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="no_show_all">True</property> <property name="label" translatable="yes">A_llow this contact to view my status</property> <property name="use_underline">True</property> <property name="response_id">0</property> diff --git a/data/glade/advanced_menuitem_menu.glade b/data/glade/advanced_menuitem_menu.glade index b331dbb3ed..f90116d814 100644 --- a/data/glade/advanced_menuitem_menu.glade +++ b/data/glade/advanced_menuitem_menu.glade @@ -1,142 +1,80 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> <glade-interface> - -<widget class="GtkMenu" id="advanced_menuitem_menu"> - - <child> - <widget class="GtkImageMenuItem" id="send_single_message_menuitem"> - <property name="label" translatable="yes">_Send Single Message</property> - <property name="use_underline">True</property> - - <child internal-child="image"> - <widget class="GtkImage" id="image1466"> - <property name="visible">True</property> - <property name="stock">gtk-new</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="xml_console_menuitem"> - <property name="label" translatable="yes">Show _XML Console</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkImageMenuItem" id="blocked_contacts_menuitem"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Blocked Contacts</property> - <property name="use_underline">True</property> - <signal name="activate" handler="on_blocked_contacts_menuitem_activate" last_modification_time="Thu, 19 Apr 2007 15:32:47 GMT"/> - - <child internal-child="image"> - <widget class="GtkImage" id="image1467"> - <property name="visible">True</property> - <property name="stock">gtk-stop</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="privacy_lists_menuitem"> - <property name="label" translatable="yes">_Privacy Lists</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkSeparatorMenuItem" id="separator8"> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="administrator_menuitem"> - <property name="label" translatable="yes">_Administrator</property> - <property name="use_underline">True</property> - - <child> - <widget class="GtkMenu" id="administrator_menuitem_menu"> - - <child> - <widget class="GtkImageMenuItem" id="send_server_message_menuitem"> - <property name="tooltip" translatable="yes">Sends a message to users currently connected to this server</property> - <property name="label" translatable="yes">_Send Server Message</property> - <property name="use_underline">True</property> - - <child internal-child="image"> - <widget class="GtkImage" id="image1468"> - <property name="visible">True</property> - <property name="stock">gtk-new</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkSeparatorMenuItem" id="separator9"> - <property name="visible">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="set_motd_menuitem"> - <property name="tooltip" translatable="yes">Sets Message of the Day</property> - <property name="label" translatable="yes">Set MOTD</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkMenuItem" id="update_motd_menuitem"> - <property name="tooltip" translatable="yes">Updates Message of the Day</property> - <property name="label" translatable="yes">Update MOTD</property> - <property name="use_underline">True</property> - </widget> - </child> - - <child> - <widget class="GtkImageMenuItem" id="delete_motd_menuitem"> - <property name="tooltip" translatable="yes">Deletes Message of the Day</property> - <property name="label" translatable="yes">Delete MOTD</property> - <property name="use_underline">True</property> - - <child internal-child="image"> - <widget class="GtkImage" id="image1469"> - <property name="visible">True</property> - <property name="stock">gtk-clear</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> -</widget> - + <widget class="GtkMenu" id="advanced_menuitem_menu"> + <child> + <widget class="GtkMenuItem" id="xml_console_menuitem"> + <property name="label" translatable="yes">Show _XML Console</property> + <property name="use_underline">True</property> + </widget> + </child> + <child> + <widget class="GtkMenuItem" id="privacy_lists_menuitem"> + <property name="label" translatable="yes">Edit _Privacy Lists...</property> + <property name="use_underline">True</property> + </widget> + </child> + <child> + <widget class="GtkSeparatorMenuItem" id="separator8"> + </widget> + </child> + <child> + <widget class="GtkMenuItem" id="administrator_menuitem"> + <property name="label" translatable="yes">_Administrator</property> + <property name="use_underline">True</property> + <child> + <widget class="GtkMenu" id="administrator_menuitem_menu"> + <child> + <widget class="GtkImageMenuItem" id="send_server_message_menuitem"> + <property name="tooltip" translatable="yes">Sends a message to users currently connected to this server</property> + <property name="label" translatable="yes">_Send Server Message...</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1468"> + <property name="visible">True</property> + <property name="stock">gtk-new</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkSeparatorMenuItem" id="separator9"> + <property name="visible">True</property> + </widget> + </child> + <child> + <widget class="GtkMenuItem" id="set_motd_menuitem"> + <property name="tooltip" translatable="yes">Sets Message of the Day</property> + <property name="label" translatable="yes">Set MOTD...</property> + <property name="use_underline">True</property> + </widget> + </child> + <child> + <widget class="GtkMenuItem" id="update_motd_menuitem"> + <property name="tooltip" translatable="yes">Updates Message of the Day</property> + <property name="label" translatable="yes">Update MOTD...</property> + <property name="use_underline">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="delete_motd_menuitem"> + <property name="tooltip" translatable="yes">Deletes Message of the Day</property> + <property name="label" translatable="yes">Delete MOTD</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1469"> + <property name="visible">True</property> + <property name="stock">gtk-clear</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> </glade-interface> diff --git a/data/glade/chat_context_menu.glade b/data/glade/chat_context_menu.glade index 4bfa143a0c..7a0179187e 100644 --- a/data/glade/chat_context_menu.glade +++ b/data/glade/chat_context_menu.glade @@ -135,7 +135,7 @@ <child> <widget class="GtkImageMenuItem" id="add_to_roster_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">_Add to Roster</property> + <property name="label" translatable="yes">_Add to Roster...</property> <property name="use_underline">True</property> <child internal-child="image"> diff --git a/data/glade/chat_control_popup_menu.glade b/data/glade/chat_control_popup_menu.glade index c3ebb1e245..36dd58801e 100644 --- a/data/glade/chat_control_popup_menu.glade +++ b/data/glade/chat_control_popup_menu.glade @@ -1,90 +1,104 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> <glade-interface> - -<widget class="GtkMenu" id="chat_control_popup_menu"> - - <child> - <widget class="GtkImageMenuItem" id="history_menuitem"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Click to see past conversations with this contact</property> - <property name="label" translatable="yes">_History</property> - <property name="use_underline">True</property> - - <child internal-child="image"> - <widget class="GtkImage" id="image1370"> - <property name="visible">True</property> - <property name="stock">gtk-justify-fill</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkImageMenuItem" id="information_menuitem"> - <property name="visible">True</property> - <property name="label">gtk-info</property> - <property name="use_stock">True</property> - </widget> - </child> - - <child> - <widget class="GtkImageMenuItem" id="send_file_menuitem"> - <property name="visible">True</property> - <property name="label" translatable="yes">Send _File</property> - <property name="use_underline">True</property> - <signal name="activate" handler="_on_send_file_menuitem_activate" last_modification_time="Tue, 03 Jan 2006 04:26:55 GMT"/> - - <child internal-child="image"> - <widget class="GtkImage" id="image1371"> - <property name="visible">True</property> - <property name="stock">gtk-file</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkCheckMenuItem" id="toggle_gpg_menuitem"> - <property name="visible">True</property> - <property name="label" translatable="yes">Toggle Open_PGP Encryption</property> - <property name="use_underline">True</property> - <property name="active">False</property> - <signal name="activate" handler="_on_toggle_gpg_menuitem_activate" last_modification_time="Tue, 03 Jan 2006 04:26:46 GMT"/> - </widget> - </child> - - <child> - <widget class="GtkImageMenuItem" id="add_to_roster_menuitem"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Add to Roster</property> - <property name="use_underline">True</property> - <signal name="activate" handler="_on_add_to_roster_menuitem_activate" last_modification_time="Tue, 03 Jan 2006 04:26:37 GMT"/> - - <child internal-child="image"> - <widget class="GtkImage" id="image1372"> - <property name="visible">True</property> - <property name="stock">gtk-add</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> -</widget> - + <widget class="GtkMenu" id="chat_control_popup_menu"> + <child> + <widget class="GtkImageMenuItem" id="add_to_roster_menuitem"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Add to Roster</property> + <property name="use_underline">True</property> + <signal name="activate" handler="_on_add_to_roster_menuitem_activate"/> + <child internal-child="image"> + <widget class="GtkImage" id="image1372"> + <property name="visible">True</property> + <property name="stock">gtk-add</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="send_file_menuitem"> + <property name="visible">True</property> + <property name="label" translatable="yes">Send _File</property> + <property name="use_underline">True</property> + <signal name="activate" handler="_on_send_file_menuitem_activate"/> + <child internal-child="image"> + <widget class="GtkImage" id="image1371"> + <property name="visible">True</property> + <property name="stock">gtk-save</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="convert_to_groupchat"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Invite _Contacts</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="menu-item-image4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="stock">gtk-missing-image</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkSeparatorMenuItem" id="separatormenuitem2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + </child> + <child> + <widget class="GtkCheckMenuItem" id="toggle_gpg_menuitem"> + <property name="visible">True</property> + <property name="label" translatable="yes">Toggle Open_PGP Encryption</property> + <property name="use_underline">True</property> + <signal name="activate" handler="_on_toggle_gpg_menuitem_activate"/> + </widget> + </child> + <child> + <widget class="GtkCheckMenuItem" id="toggle_e2e_menuitem"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Toggle End to End Encryption</property> + <property name="use_underline">True</property> + <signal name="activate" handler="_on_toggle_e2e_menuitem_activate"/> + </widget> + </child> + <child> + <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="information_menuitem"> + <property name="visible">True</property> + <property name="label">gtk-info</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="history_menuitem"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Click to see past conversations with this contact</property> + <property name="label" translatable="yes">_History</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1370"> + <property name="visible">True</property> + <property name="stock">gtk-justify-fill</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + </widget> </glade-interface> diff --git a/data/glade/chat_to_muc_window.glade b/data/glade/chat_to_muc_window.glade new file mode 100644 index 0000000000..745b3d0060 --- /dev/null +++ b/data/glade/chat_to_muc_window.glade @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> +<glade-interface> + <widget class="GtkWindow" id="chat_to_muc_window"> + <property name="visible">True</property> + <property name="border_width">5</property> + <property name="title" translatable="yes">Invite Friends !</property> + <signal name="key_press_event" handler="on_chat_to_muc_window_key_press_event"/> + <signal name="destroy" handler="on_chat_to_muc_window_destroy"/> + <child> + <widget class="GtkVBox" id="general_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">You are going to begin a Multi-User Chat. +Select the contacts you want to invite</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">4</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="guests_scrolledwindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="guests_treeview"> + <property name="height_request">300</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <signal name="drag_data_get" handler="on_guests_treeview_drag_data_get"/> + <signal name="drag_data_received" handler="on_guests_treeview_drag_data_received"/> + <signal name="drag_end" handler="on_guests_treeview_drag_end"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">4</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkExpander" id="expander1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkLabel" id="server_select_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Please select a MUC server.</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">4</property> + </packing> + </child> + <child> + <widget class="GtkComboBoxEntry" id="server_list_comboboxentry"> + <property name="visible">True</property> + <child internal-child="entry"> + <widget class="GtkEntry" id="comboboxentry-entry1"> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">MUC server</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">6</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="cancel_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_cancel_button_clicked"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">3</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="invite_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_invite_button_clicked"/> + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-jump-to</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">In_vite</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">3</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + </widget> + </child> + </widget> +</glade-interface> diff --git a/data/glade/filetransfers.glade b/data/glade/filetransfers.glade index 3106b36630..6f85e0e164 100644 --- a/data/glade/filetransfers.glade +++ b/data/glade/filetransfers.glade @@ -271,7 +271,7 @@ <child internal-child="image"> <widget class="GtkImage" id="image1146"> <property name="visible">True</property> - <property name="stock">gtk-missing-image</property> + <property name="stock">gtk-directory</property> <property name="icon_size">1</property> </widget> </child> diff --git a/data/glade/gc_control_popup_menu.glade b/data/glade/gc_control_popup_menu.glade index 2c2e665e77..7ad038b068 100644 --- a/data/glade/gc_control_popup_menu.glade +++ b/data/glade/gc_control_popup_menu.glade @@ -5,7 +5,7 @@ <widget class="GtkMenu" id="gc_control_popup_menu"> <child> <widget class="GtkImageMenuItem" id="change_nick_menuitem"> - <property name="label" translatable="yes">Change _Nickname</property> + <property name="label" translatable="yes">Change _Nickname...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1409"> @@ -28,7 +28,7 @@ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <child> <widget class="GtkImageMenuItem" id="change_subject_menuitem"> - <property name="label" translatable="yes">Change _Subject</property> + <property name="label" translatable="yes">Change _Subject...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1408"> @@ -41,7 +41,7 @@ </child> <child> <widget class="GtkImageMenuItem" id="configure_room_menuitem"> - <property name="label" translatable="yes">Configure _Room</property> + <property name="label" translatable="yes">Configure _Room...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1406"> diff --git a/data/glade/gc_occupants_menu.glade b/data/glade/gc_occupants_menu.glade index 044a6bb4fc..a8b4afbbca 100644 --- a/data/glade/gc_occupants_menu.glade +++ b/data/glade/gc_occupants_menu.glade @@ -17,6 +17,20 @@ </child> </widget> </child> + <child> + <widget class="GtkImageMenuItem" id="send_file_menuitem"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Send _File</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="menu-item-image4"> + <property name="stock">gtk-save</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> <child> <widget class="GtkMenuItem" id="group_chat_actions_menuitem"> <property name="visible">True</property> @@ -87,20 +101,6 @@ </child> </widget> </child> - <child> - <widget class="GtkImageMenuItem" id="send_file_menuitem"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Send _File</property> - <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="menu-item-image4"> - <property name="stock">gtk-save</property> - <property name="icon_size">1</property> - </widget> - </child> - </widget> - </child> <child> <widget class="GtkSeparatorMenuItem" id="separator6"> <property name="visible">True</property> diff --git a/data/glade/history_manager.glade b/data/glade/history_manager.glade index 2d7802f95d..0ed565d085 100644 --- a/data/glade/history_manager.glade +++ b/data/glade/history_manager.glade @@ -43,18 +43,91 @@ <widget class="GtkVBox" id="vbox1"> <property name="visible">True</property> <child> - <widget class="GtkLabel" id="welcome_label"> + <widget class="GtkVBox" id="welcome_vbox"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><big><b>Welcome to Gajim History Logs Manager</b></big> - -You can select logs from the left and/or search database from below. + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkLabel" id="welcome_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"><big><b>Welcome to Gajim History Logs Manager</b></big></property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">True</property> + </widget> + </child> + <child> + <widget class="GtkHBox" id="hbox3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkImage" id="image3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">1</property> + <property name="yalign">0</property> + <property name="stock">gtk-info</property> + </widget> + </child> + <child> + <widget class="GtkLabel" id="info_label"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">This log manager is not intended for log viewing. If you are looking for such functionality, use the history window instead. -<b>WARNING:</b> +Use this program to delete or export logs. You can select logs from the left and/or search database from below.</property> + <property name="use_markup">True</property> + <property name="wrap">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">20</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkImage" id="warning_image"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">1</property> + <property name="yalign">0</property> + <property name="stock">gtk-dialog-warning</property> + </widget> + </child> + <child> + <widget class="GtkLabel" id="warning_label"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>WARNING:</b> If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with.</property> - <property name="use_markup">True</property> - <property name="wrap">True</property> + <property name="use_markup">True</property> + <property name="wrap">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">20</property> + <property name="position">2</property> + </packing> + </child> </widget> + <packing> + <property name="expand">False</property> + </packing> </child> <child> <widget class="GtkScrolledWindow" id="logs_scrolledwindow"> @@ -115,7 +188,6 @@ If you plan to do massive deletions, please make sure Gajim is not running. Gene <widget class="GtkEntry" id="search_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> <property name="activates_default">True</property> </widget> </child> diff --git a/data/glade/history_window.glade b/data/glade/history_window.glade index b475f03b43..ba74ec04ce 100644 --- a/data/glade/history_window.glade +++ b/data/glade/history_window.glade @@ -1,346 +1,283 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> <glade-interface> - -<widget class="GtkWindow" id="history_window"> - <property name="title" translatable="yes">Conversation History</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">False</property> - <property name="default_width">650</property> - <property name="default_height">350</property> - <property name="resizable">True</property> - <property name="destroy_with_parent">False</property> - <property name="role">history</property> - <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> - <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="focus_on_map">True</property> - <signal name="destroy" handler="on_history_window_destroy" last_modification_time="Tue, 01 Mar 2005 16:30:31 GMT"/> - - <child> - <widget class="GtkVBox" id="vbox"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkHPaned" id="hpaned"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="position">165</property> - - <child> - <widget class="GtkVBox" id="vbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkCalendar" id="calendar"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="display_options">GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES</property> - <signal name="day_selected" handler="on_calendar_day_selected" last_modification_time="Sun, 20 Nov 2005 19:26:58 GMT"/> - <signal name="month_changed" handler="on_calendar_month_changed" last_modification_time="Thu, 24 Nov 2005 00:49:22 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="shrink">True</property> - <property name="resize">False</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="shrink">True</property> - <property name="resize">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="log_history_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Log conversation history</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">True</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkExpander" id="search_expander"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="expanded">False</property> - <property name="spacing">0</property> - <signal name="activate" handler="on_search_expander_activate" last_modification_time="Tue, 29 Nov 2005 13:43:41 GMT"/> - - <child> - <widget class="GtkVBox" id="expander_vbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkHBox" id="query_hbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkEntry" id="query_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="search_button"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_search_button_clicked" last_modification_time="Tue, 29 Nov 2005 11:40:15 GMT"/> - - <child> - <widget class="GtkAlignment" id="alignment99"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox3004"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image1327"> - <property name="visible">True</property> - <property name="stock">gtk-find</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label372"> - <property name="visible">True</property> - <property name="label" translatable="yes">Search</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="query_builder_button"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Build custom query</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Query Builder...</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_query_builder_button_clicked" last_modification_time="Tue, 29 Nov 2005 11:40:18 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="results_scrolledwindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="results_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">True</property> - <property name="rules_hint">True</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - <signal name="row_activated" handler="on_results_treeview_row_activated" last_modification_time="Tue, 29 Nov 2005 21:05:37 GMT"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label368"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Search</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHButtonBox" id="hbuttonbox"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="close_button"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_close_button_clicked" last_modification_time="Tue, 01 Mar 2005 16:21:16 GMT"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> -</widget> - + <widget class="GtkWindow" id="history_window"> + <property name="title" translatable="yes">Conversation History</property> + <property name="role">history</property> + <property name="default_width">650</property> + <property name="default_height">350</property> + <signal name="key_press_event" handler="on_history_window_key_press_event"/> + <signal name="destroy" handler="on_history_window_destroy"/> + <child> + <widget class="GtkVBox" id="vbox"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="spacing">6</property> + <child> + <widget class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkEntry" id="jid_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="tooltip" translatable="yes">Choose the chatlog you want to view. +Enter the jid of a groupchat or a contact here. For online accounts you can even enter a a contact's nickname.</property> + <signal name="activate" handler="on_jid_entry_activate"/> + </widget> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>JID Selection</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">8</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkHPaned" id="hpaned"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="position">165</property> + <child> + <widget class="GtkVBox" id="vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkCalendar" id="calendar"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="month_changed" handler="on_calendar_month_changed"/> + <signal name="day_selected" handler="on_calendar_day_selected"/> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + </widget> + <packing> + <property name="resize">False</property> + <property name="shrink">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="resize">True</property> + <property name="shrink">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>History Viewer</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="log_history_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Log conversation history</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkExpander" id="search_expander"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="activate" handler="on_search_expander_activate"/> + <child> + <widget class="GtkVBox" id="expander_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkHBox" id="query_hbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Search</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="query_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="activates_default">True</property> + <signal name="activate" handler="on_query_entry_activate"/> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">in</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="query_combobox"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="items" translatable="yes">Current History +All Chat Histories</property> + <signal name="changed" handler="on_query_combobox_changed"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="results_scrolledwindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="results_treeview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="rules_hint">True</property> + <signal name="row_activated" handler="on_results_treeview_row_activated"/> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label368"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Search</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="close_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_close_button_clicked"/> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + </widget> + </child> + </widget> </glade-interface> diff --git a/data/glade/message_window.glade b/data/glade/message_window.glade index 77d9028b11..07d39763c5 100644 --- a/data/glade/message_window.glade +++ b/data/glade/message_window.glade @@ -1,1216 +1,784 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> <glade-interface> - -<widget class="GtkWindow" id="message_window"> - <property name="title" translatable="yes"></property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">False</property> - <property name="default_width">480</property> - <property name="default_height">440</property> - <property name="resizable">True</property> - <property name="destroy_with_parent">False</property> - <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> - <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="focus_on_map">True</property> - <property name="urgency_hint">False</property> - - <child> - <widget class="GtkAlignment" id="msg_window_alignment"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">2</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkNotebook" id="notebook"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="show_tabs">True</property> - <property name="show_border">True</property> - <property name="tab_pos">GTK_POS_TOP</property> - <property name="scrollable">True</property> - <property name="enable_popup">False</property> - - <child> - <widget class="GtkVBox" id="chat_child_vbox"> - <property name="border_width">3</property> - <property name="can_focus">True</property> - <property name="homogeneous">False</property> - <property name="spacing">1</property> - - <child> - <widget class="GtkAlignment" id="alignment"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">3</property> - <property name="right_padding">3</property> - - <child> - <widget class="GtkEventBox" id="banner_eventbox"> - <property name="visible">True</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkHBox" id="hbox3004"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkImage" id="banner_status_image"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">5</property> - </widget> - <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkImage" id="banner_typing_image"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="banner_name_label"> - <property name="visible">True</property> - <property name="label"><span weight="heavy" size="large">Contact name</span> -Status message</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.0500000007451</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">5</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkEventBox" id="avatar_eventbox"> - <property name="visible">True</property> - <property name="visible_window">False</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkImage" id="avatar_image"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox106"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkScrolledWindow" id="conversation_scrolledwindow"> - <property name="border_width">3</property> - <property name="height_request">60</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="message_scrolledwindow"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="actions_hbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkHBox" id="hbox3006"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">1</property> - - <child> - <widget class="GtkEventBox" id="gpg_eventbox"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">OpenPGP Encryption</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkToggleButton" id="gpg_togglebutton"> - <property name="visible">True</property> - <property name="relief">GTK_RELIEF_NONE</property> - <property name="focus_on_click">False</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - - <child> - <widget class="GtkImage" id="image1333"> - <property name="visible">True</property> - <property name="stock">gtk-dialog-authentication</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVSeparator" id="vseparator4"> - <property name="visible">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox3007"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="emoticons_button"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Click to insert an emoticon (Alt+M)</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkHBox" id="hbox3008"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkImage" id="emoticons_button_image"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">2</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkArrow" id="arrow3"> - <property name="visible">True</property> - <property name="arrow_type">GTK_ARROW_DOWN</property> - <property name="shadow_type">GTK_SHADOW_OUT</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="message_window_actions_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment101"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox3009"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image1338"> - <property name="visible">True</property> - <property name="stock">gtk-execute</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label372"> - <property name="visible">True</property> - <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Actions</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkArrow" id="arrow4"> - <property name="visible">True</property> - <property name="arrow_type">GTK_ARROW_DOWN</property> - <property name="shadow_type">GTK_SHADOW_OUT</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVSeparator" id="vseparator5"> - <property name="visible">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="send_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment102"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox3010"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image1339"> - <property name="visible">True</property> - <property name="stock">gtk-jump-to</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label373"> - <property name="visible">True</property> - <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Send</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkEventBox" id="chat_tab_ebox"> - <property name="visible">True</property> - <property name="visible_window">False</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkHBox" id="tab_hbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">4</property> - - <child> - <widget class="GtkImage" id="tab_image"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="tab_label"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="tab_close_button"> - <property name="width_request">20</property> - <property name="height_request">20</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NONE</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkImage" id="image1329"> - <property name="visible">True</property> - <property name="stock">gtk-close</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">6</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="muc_child_vbox"> - <property name="border_width">3</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkAlignment" id="alignment103"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">1</property> - <property name="left_padding">3</property> - <property name="right_padding">3</property> - - <child> - <widget class="GtkEventBox" id="banner_eventbox"> - <property name="visible">True</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkHBox" id="hbox3024"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkImage" id="gc_banner_status_image"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">5</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="banner_name_label"> - <property name="visible">True</property> - <property name="label"><span weight="heavy" size="large">room jid</span> -topic</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.0500000007451</property> - <property name="yalign">0.5</property> - <property name="xpad">6</property> - <property name="ypad">6</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHPaned" id="hpaned"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="position">495</property> - - <child> - <widget class="GtkVBox" id="vbox108"> - <property name="width_request">150</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkVBox" id="vbox109"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="conversation_scrolledwindow"> - <property name="width_request">200</property> - <property name="height_request">60</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="message_scrolledwindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="shrink">False</property> - <property name="resize">False</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="list_scrolledwindow"> - <property name="width_request">100</property> - <property name="visible">True</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="list_treeview"> - <property name="border_width">1</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - </widget> - </child> - </widget> - <packing> - <property name="shrink">False</property> - <property name="resize">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="actions_hbox"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkHBox" id="hbox3023"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox3013"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="emoticons_button"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Click to insert an emoticon (Alt+M)</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkHBox" id="hbox3014"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkImage" id="emoticons_button_image"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">2</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkArrow" id="arrow5"> - <property name="visible">True</property> - <property name="arrow_type">GTK_ARROW_DOWN</property> - <property name="shadow_type">GTK_SHADOW_OUT</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="muc_window_actions_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment104"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="gc_actions_hbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image1344"> - <property name="visible">True</property> - <property name="stock">gtk-execute</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label376"> - <property name="visible">True</property> - <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Actions</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkArrow" id="arrow6"> - <property name="visible">True</property> - <property name="arrow_type">GTK_ARROW_DOWN</property> - <property name="shadow_type">GTK_SHADOW_OUT</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkVSeparator" id="vseparator6"> - <property name="visible">True</property> - </widget> - <packing> - <property name="padding">2</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="send_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment105"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox3016"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image1345"> - <property name="visible">True</property> - <property name="stock">gtk-jump-to</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label377"> - <property name="visible">True</property> - <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Send</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkEventBox" id="muc_tab_ebox"> - <property name="visible">True</property> - <property name="visible_window">False</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkHBox" id="hbox3017"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">4</property> - - <child> - <widget class="GtkImage" id="image1346"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label378"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="button34"> - <property name="width_request">20</property> - <property name="height_request">20</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NONE</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkImage" id="image1347"> - <property name="visible">True</property> - <property name="stock">gtk-close</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">6</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> -</widget> - + <widget class="GtkWindow" id="message_window"> + <property name="default_width">480</property> + <property name="default_height">440</property> + <child> + <widget class="GtkAlignment" id="msg_window_alignment"> + <property name="visible">True</property> + <property name="top_padding">2</property> + <child> + <widget class="GtkNotebook" id="notebook"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="scrollable">True</property> + <child> + <widget class="GtkVBox" id="chat_child_vbox"> + <property name="can_focus">True</property> + <property name="border_width">3</property> + <property name="spacing">1</property> + <child> + <widget class="GtkAlignment" id="alignment"> + <property name="visible">True</property> + <property name="left_padding">3</property> + <property name="right_padding">3</property> + <child> + <widget class="GtkEventBox" id="banner_eventbox"> + <property name="visible">True</property> + <child> + <widget class="GtkHBox" id="hbox3004"> + <property name="visible">True</property> + <child> + <widget class="GtkImage" id="banner_status_image"> + <property name="visible">True</property> + <property name="ypad">5</property> + <property name="stock">None</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">5</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="banner_vbox"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">5</property> + <child> + <widget class="GtkLabel" id="banner_name_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label"><span weight="heavy" size="large">Contact name</span></property> + <property name="use_markup">True</property> + </widget> + </child> + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkEventBox" id="avatar_eventbox"> + <property name="visible">True</property> + <property name="visible_window">False</property> + <child> + <widget class="GtkImage" id="avatar_image"> + <property name="visible">True</property> + <property name="stock">None</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox106"> + <property name="visible">True</property> + <child> + <widget class="GtkScrolledWindow" id="conversation_scrolledwindow"> + <property name="height_request">60</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">3</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <placeholder/> + </child> + </widget> + </child> + <child> + <widget class="GtkScrolledWindow" id="message_scrolledwindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">3</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="actions_hbox"> + <property name="visible">True</property> + <child> + <widget class="GtkHBox" id="hbox3006"> + <property name="visible">True</property> + <property name="spacing">1</property> + <child> + <widget class="GtkEventBox" id="gpg_eventbox"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">OpenPGP Encryption</property> + <child> + <widget class="GtkToggleButton" id="gpg_togglebutton"> + <property name="visible">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <child> + <widget class="GtkImage" id="image1333"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-authentication</property> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkVSeparator" id="vseparator4"> + <property name="visible">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkHBox" id="hbox3007"> + <property name="visible">True</property> + <property name="border_width">3</property> + <property name="spacing">6</property> + <child> + <widget class="GtkButton" id="emoticons_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Click to insert an emoticon (Alt+M)</property> + <property name="response_id">0</property> + <child> + <widget class="GtkHBox" id="hbox3008"> + <property name="visible">True</property> + <child> + <widget class="GtkImage" id="emoticons_button_image"> + <property name="visible">True</property> + <property name="xpad">2</property> + <property name="stock">None</property> + </widget> + </child> + <child> + <widget class="GtkArrow" id="arrow3"> + <property name="visible">True</property> + <property name="arrow_type">GTK_ARROW_DOWN</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="message_window_actions_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <child> + <widget class="GtkAlignment" id="alignment101"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox3009"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image1338"> + <property name="visible">True</property> + <property name="stock">gtk-execute</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label372"> + <property name="visible">True</property> + <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Actions</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkArrow" id="arrow4"> + <property name="visible">True</property> + <property name="arrow_type">GTK_ARROW_DOWN</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkVSeparator" id="vseparator5"> + <property name="visible">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="send_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <child> + <widget class="GtkAlignment" id="alignment102"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox3010"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image1339"> + <property name="visible">True</property> + <property name="stock">gtk-jump-to</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label373"> + <property name="visible">True</property> + <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Send</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkEventBox" id="chat_tab_ebox"> + <property name="visible">True</property> + <property name="visible_window">False</property> + <child> + <widget class="GtkHBox" id="tab_hbox"> + <property name="visible">True</property> + <property name="spacing">4</property> + <child> + <widget class="GtkImage" id="tab_image"> + <property name="visible">True</property> + <property name="stock">None</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="tab_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="tab_close_button"> + <property name="width_request">20</property> + <property name="height_request">20</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="response_id">0</property> + <child> + <widget class="GtkImage" id="image1329"> + <property name="visible">True</property> + <property name="ypad">6</property> + <property name="stock">gtk-close</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="type">tab</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="muc_child_vbox"> + <property name="border_width">3</property> + <child> + <widget class="GtkAlignment" id="alignment103"> + <property name="visible">True</property> + <property name="bottom_padding">1</property> + <property name="left_padding">3</property> + <property name="right_padding">3</property> + <child> + <widget class="GtkEventBox" id="banner_eventbox"> + <property name="visible">True</property> + <child> + <widget class="GtkHBox" id="hbox3024"> + <property name="visible">True</property> + <child> + <widget class="GtkImage" id="gc_banner_status_image"> + <property name="visible">True</property> + <property name="stock">None</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">5</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="banner_vbox"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">5</property> + <child> + <widget class="GtkLabel" id="banner_name_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label"><span weight="heavy" size="large">room jid</span></property> + <property name="use_markup">True</property> + </widget> + </child> + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkHPaned" id="hpaned"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">3</property> + <property name="position">495</property> + <child> + <widget class="GtkVBox" id="vbox108"> + <property name="width_request">150</property> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkVBox" id="vbox109"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkScrolledWindow" id="conversation_scrolledwindow"> + <property name="width_request">200</property> + <property name="height_request">60</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <placeholder/> + </child> + </widget> + </child> + <child> + <widget class="GtkScrolledWindow" id="message_scrolledwindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="resize">False</property> + <property name="shrink">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="list_scrolledwindow"> + <property name="width_request">100</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="list_treeview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">1</property> + <property name="headers_visible">False</property> + </widget> + </child> + </widget> + <packing> + <property name="resize">False</property> + <property name="shrink">False</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="actions_hbox"> + <property name="visible">True</property> + <property name="border_width">3</property> + <child> + <widget class="GtkHBox" id="hbox3023"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </widget> + </child> + <child> + <widget class="GtkHBox" id="hbox3013"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkButton" id="emoticons_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Click to insert an emoticon (Alt+M)</property> + <property name="response_id">0</property> + <child> + <widget class="GtkHBox" id="hbox3014"> + <property name="visible">True</property> + <child> + <widget class="GtkImage" id="emoticons_button_image"> + <property name="visible">True</property> + <property name="xpad">2</property> + <property name="stock">None</property> + </widget> + </child> + <child> + <widget class="GtkArrow" id="arrow5"> + <property name="visible">True</property> + <property name="arrow_type">GTK_ARROW_DOWN</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="muc_window_actions_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <child> + <widget class="GtkAlignment" id="alignment104"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="gc_actions_hbox"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image1344"> + <property name="visible">True</property> + <property name="stock">gtk-execute</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label376"> + <property name="visible">True</property> + <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Actions</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkArrow" id="arrow6"> + <property name="visible">True</property> + <property name="arrow_type">GTK_ARROW_DOWN</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkVSeparator" id="vseparator6"> + <property name="visible">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="padding">2</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="send_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <child> + <widget class="GtkAlignment" id="alignment105"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox3016"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image1345"> + <property name="visible">True</property> + <property name="stock">gtk-jump-to</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label377"> + <property name="visible">True</property> + <property name="label" translatable="yes" comments="Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)">_Send</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkEventBox" id="muc_tab_ebox"> + <property name="visible">True</property> + <property name="visible_window">False</property> + <child> + <widget class="GtkHBox" id="hbox3017"> + <property name="visible">True</property> + <property name="spacing">4</property> + <child> + <widget class="GtkImage" id="image1346"> + <property name="visible">True</property> + <property name="stock">None</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label378"> + <property name="visible">True</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="button34"> + <property name="width_request">20</property> + <property name="height_request">20</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="response_id">0</property> + <child> + <widget class="GtkImage" id="image1347"> + <property name="visible">True</property> + <property name="ypad">6</property> + <property name="stock">gtk-close</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> </glade-interface> diff --git a/data/glade/passphrase_dialog.glade b/data/glade/passphrase_dialog.glade index 6d42454b01..bc49f3475a 100644 --- a/data/glade/passphrase_dialog.glade +++ b/data/glade/passphrase_dialog.glade @@ -19,6 +19,7 @@ <property name="focus_on_map">True</property> <property name="urgency_hint">False</property> <property name="has_separator">True</property> + <signal name="destroy" handler="on_passphrase_dialog_destroy" last_modification_time="Sun, 11 Mar 2007 11:32:38 GMT"/> <child internal-child="vbox"> <widget class="GtkVBox" id="dialog-vbox4"> diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index 8e59548411..831599d4b1 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -1,3678 +1,2268 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> <glade-interface> - -<widget class="GtkWindow" id="preferences_window"> - <property name="border_width">6</property> - <property name="title" translatable="yes">Preferences</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">False</property> - <property name="resizable">True</property> - <property name="destroy_with_parent">False</property> - <property name="role">preferences</property> - <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> - <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="focus_on_map">True</property> - <property name="urgency_hint">False</property> - <signal name="key_press_event" handler="on_preferences_window_key_press_event"/> - <signal name="destroy" handler="on_preferences_window_destroy"/> - - <child> - <widget class="GtkVBox" id="vbox13"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkNotebook" id="preferences_notebook"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="show_tabs">True</property> - <property name="show_border">False</property> - <property name="tab_pos">GTK_POS_TOP</property> - <property name="scrollable">False</property> - <property name="enable_popup">False</property> - - <child> - <widget class="GtkVBox" id="vbox41"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkCheckButton" id="trayicon_checkbutton"> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Use t_rayicon (aka. notification area icon)</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_trayicon_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="save_position_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Save _position and size for roster and chat windows</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_save_position_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="show_avatars_in_roster_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will display avatars of contacts in roster window and in group chats</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Display a_vatars of contacts in roster</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_show_avatars_in_roster_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="show_status_msgs_in_roster_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Display status _messages of contacts in roster</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_show_status_msgs_in_roster_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="sort_by_show_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Sort contacts by status</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_sort_by_show_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="frame35"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment73"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">4</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox95"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkHBox" id="hbox2901"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label174"> - <property name="visible">True</property> - <property name="label" translatable="yes">Default status _iconset:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">iconset_combobox</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="iconset_combobox"> - <property name="visible">True</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_iconset_combobox_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="transports_iconsets_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">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...)</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Use _transports iconsets</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_transports_iconsets_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox2956"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label249"> - <property name="visible">True</property> - <property name="label" translatable="yes">T_heme:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">theme_combobox</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="theme_combobox"> - <property name="visible">True</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_theme_combobox_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="manage_theme_button"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Configure color and font of the interface</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Ma_nage...</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_manage_theme_button_clicked"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label326"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Interface Customization</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">12</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label74"> - <property name="visible">True</property> - <property name="label" translatable="yes">General</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox58"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkHBox" id="hbox3018"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkLabel" id="label379"> - <property name="visible">True</property> - <property name="label" translatable="yes">One message _window:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">1</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">one_window_type_combobox</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="one_window_type_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">Never + <widget class="GtkWindow" id="preferences_window"> + <property name="border_width">6</property> + <property name="title" translatable="yes">Preferences</property> + <property name="role">preferences</property> + <signal name="key_press_event" handler="on_preferences_window_key_press_event"/> + <signal name="destroy" handler="on_preferences_window_destroy"/> + <child> + <widget class="GtkVBox" id="vbox13"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkNotebook" id="preferences_notebook"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="show_border">False</property> + <child> + <widget class="GtkVBox" id="vbox41"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">6</property> + <child> + <widget class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">6</property> + <child> + <widget class="GtkCheckButton" id="show_avatars_in_roster_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">If checked, Gajim will display avatars of contacts in roster window and in group chats</property> + <property name="label" translatable="yes">Display a_vatars of contacts in roster</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_show_avatars_in_roster_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="show_status_msgs_in_roster_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats</property> + <property name="label" translatable="yes">Display status _messages of contacts in roster</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_show_status_msgs_in_roster_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="sort_by_show_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Sort contacts by status</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_sort_by_show_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>Roster Appearance</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkTable" id="table1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="n_rows">6</property> + <property name="n_columns">2</property> + <property name="column_spacing">6</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkEventBox" id="eventbox5"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons</property> + <child> + <widget class="GtkLabel" id="label381"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">1</property> + <property name="label" translatable="yes">Emoticons:</property> + </widget> + </child> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="emoticons_combobox"> + <property name="visible">True</property> + <signal name="changed" handler="on_emoticons_combobox_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="speller_checkbutton"> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Highlight misspelled words</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_speller_checkbutton_toggled"/> + </widget> + <packing> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="xhtml_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text.</property> + <property name="label" translatable="yes">Ignore rich content in incoming messages</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_xhtml_checkbutton_toggled"/> + </widget> + <packing> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="compact_view_checkbutton"> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Hides buttons in chatwindows to </property> + <property name="label" translatable="yes">_Make message windows compact</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_compact_view_checkbutton_toggled"/> + </widget> + <packing> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="one_window_type_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">Never Always Per account Per type</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_one_window_type_combo_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="compact_view_checkbutton"> - <property name="tooltip" translatable="yes">Hides buttons in chatwindows to </property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Make message windows compact</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_compact_view_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="xhtml_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text.</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Ignore rich content in incoming messages</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_xhtml_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="speller_checkbutton"> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Highlight misspelled words</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_speller_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox3024"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">4</property> - - <child> - <widget class="GtkLabel" id="label387"> - <property name="visible">True</property> - <property name="label" translatable="yes">Treat all incoming messages as:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">1</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="treat_incoming_messages_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">Determined by sender + <signal name="changed" handler="on_one_window_type_combo_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="treat_incoming_messages_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">Determined by sender Chat message Single message</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_treat_incoming_messages_combobox_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox2947"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkEventBox" id="eventbox5"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkLabel" id="label381"> - <property name="visible">True</property> - <property name="label" translatable="yes">Emoticons:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">1</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="emoticons_combobox"> - <property name="visible">True</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_emoticons_combobox_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="frame24"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment53"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox62"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkHBox" id="hbox2944"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="label219"> - <property name="visible">True</property> - <property name="label" translatable="yes">Print time:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="time_always_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">On every _message</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_time_always_radiobutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="time_sometimes_radiobutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Also known as iChat style</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">E_very 5 minutes</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">time_always_radiobutton</property> - <signal name="toggled" handler="on_time_sometimes_radiobutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="time_never_radiobutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Never</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">time_always_radiobutton</property> - <signal name="toggled" handler="on_time_never_radiobutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkTable" id="table25"> - <property name="visible">True</property> - <property name="n_rows">4</property> - <property name="n_columns">4</property> - <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - - <child> - <widget class="GtkCheckButton" id="default_chat_font"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Use system _default</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_default_chat_font_toggled"/> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">4</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox3021"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="font_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Font:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">conversation_fontbutton</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkFontButton" id="conversation_fontbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="show_style">True</property> - <property name="show_size">True</property> - <property name="use_font">False</property> - <property name="use_size">False</property> - <property name="focus_on_click">True</property> - <signal name="font_set" handler="on_conversation_fontbutton_font_set"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options"></property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox3022"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label383"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="reset_colors_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">False</property> - <signal name="clicked" handler="on_reset_colors_button_clicked"/> - - <child> - <widget class="GtkAlignment" id="alignment52"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox2936"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image439"> - <property name="visible">True</property> - <property name="stock">gtk-revert-to-saved</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label217"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Reset to Default Colors</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">4</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options"></property> - </packing> - </child> - - <child> - <widget class="GtkColorButton" id="url_msg_colorbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="use_alpha">False</property> - <property name="focus_on_click">True</property> - <signal name="color_set" handler="on_url_msg_colorbutton_color_set"/> - </widget> - <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label371"> - <property name="visible">True</property> - <property name="label" translatable="yes">_URL:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">url_msg_colorbutton</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkColorButton" id="status_msg_colorbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="use_alpha">False</property> - <property name="focus_on_click">True</property> - <signal name="color_set" handler="on_status_msg_colorbutton_color_set"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label71"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Status message:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">status_msg_colorbutton</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkColorButton" id="outgoing_msg_colorbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="use_alpha">False</property> - <property name="focus_on_click">True</property> - <signal name="color_set" handler="on_outgoing_msg_colorbutton_color_set"/> - </widget> - <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label70"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Outgoing message:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">outgoing_msg_colorbutton</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkColorButton" id="incoming_msg_colorbutton"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="can_focus">True</property> - <property name="has_focus">True</property> - <property name="use_alpha">False</property> - <property name="focus_on_click">True</property> - <signal name="color_set" handler="on_incoming_msg_colorbutton_color_set"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label72"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Incoming message:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">incoming_msg_colorbutton</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label228"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Format of a line</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label218"> - <property name="visible">True</property> - <property name="label" translatable="yes">Chat</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox42"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkFrame" id="frame29"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment58"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox67"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkFrame" id="frame25"> - <property name="border_width">2</property> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment54"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox2949"> - <property name="border_width">3</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkRadioButton" id="notify_on_new_message_radiobutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Gajim will notify you for new events via a popup in the bottom right of the screen</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Notify me about it</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_on_new_message_radiobutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="popup_new_message_radiobutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Gajim will automatically show new events by popping up the relevant window</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Pop it up</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">notify_on_new_message_radiobutton</property> - <signal name="toggled" handler="on_popup_new_message_radiobutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkRadioButton" id="only_in_roster_radiobutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Gajim will only change the icon of the contact that triggered the new event</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Show only in _roster</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <property name="group">notify_on_new_message_radiobutton</property> - <signal name="toggled" handler="on_only_in_roster_radiobutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkEventBox" id="eventbox"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">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</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkLabel" id="label233"> - <property name="visible">True</property> - <property name="label" translatable="yes">When new event is received</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - </child> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox2950"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="label241"> - <property name="visible">True</property> - <property name="label" translatable="yes">Notify me about contacts that: </property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="notify_on_signin_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Sign _in</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_on_signin_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="notify_on_signout_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Sign _out</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_on_signout_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="auto_popup_away_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow popup/notifications when I'm _away/na/busy/invisible</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_auto_popup_away_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="anc_hbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkButton" id="button1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_open_advanced_notifications_button_clicked"/> - - <child> - <widget class="GtkAlignment" id="alignment90"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox3019"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image1371"> - <property name="visible">True</property> - <property name="stock">gtk-open</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label382"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Advanced Notifications Control...</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <placeholder/> - </child> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label240"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Visual Notifications</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="ignore_events_from_unknown_contacts_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, because it blocks all messages from any contact that is not in the roster</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Ignore events from contacts not in the roster</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_ignore_events_from_unknown_contacts_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox2991"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkEventBox" id="eventbox4"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">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.</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkLabel" id="label354"> - <property name="visible">True</property> - <property name="label" translatable="yes">Outgoing Chat state noti_fications:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="outgoing_chat_states_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">All chat states + <signal name="changed" handler="on_treat_incoming_messages_combobox_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label379"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">1</property> + <property name="label" translatable="yes">Use only one message _window:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">one_window_type_combobox</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label387"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">1</property> + <property name="label" translatable="yes">Treat all incoming messages as:</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>Chat Appearance</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkTable" id="table2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="n_rows">3</property> + <property name="n_columns">4</property> + <property name="column_spacing">6</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="transports_iconsets_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">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...)</property> + <property name="label" translatable="yes">Use _transports iconsets</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_transports_iconsets_checkbutton_toggled"/> + </widget> + <packing> + <property name="right_attach">4</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="iconset_combobox"> + <property name="visible">True</property> + <signal name="changed" handler="on_iconset_combobox_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label174"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Status _iconset:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">iconset_combobox</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="theme_combobox"> + <property name="visible">True</property> + <signal name="changed" handler="on_theme_combobox_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="manage_theme_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Configure color and font of the interface</property> + <property name="label" translatable="yes">Ma_nage...</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_manage_theme_button_clicked"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label249"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">T_heme:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">theme_combobox</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>Themes</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label74"> + <property name="visible">True</property> + <property name="label" translatable="yes">General</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox58"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">6</property> + <child> + <widget class="GtkFrame" id="frame4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkTable" id="table3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">6</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkCheckButton" id="ignore_events_from_unknown_contacts_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, because it blocks all messages from any contact that is not in the roster</property> + <property name="label" translatable="yes">_Ignore events from contacts not in the roster</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_ignore_events_from_unknown_contacts_checkbutton_toggled"/> + </widget> + <packing> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="displayed_chat_states_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">All chat states Composing only Disabled</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_outgoing_chat_states_combobox_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox3023"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkEventBox" id="eventbox7"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">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 display in chat windows.</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkLabel" id="label386"> - <property name="visible">True</property> - <property name="label" translatable="yes">Displayed Chat state noti_fications:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="displayed_chat_states_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">All chat states + <signal name="changed" handler="on_displayed_chat_states_combobox_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkEventBox" id="eventbox7"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">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 display in chat windows.</property> + <child> + <widget class="GtkLabel" id="label386"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Display chat state notifications:</property> + <property name="use_underline">True</property> + </widget> + </child> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkEventBox" id="eventbox4"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">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.</property> + <child> + <widget class="GtkLabel" id="label354"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Send chat state notifications:</property> + <property name="use_underline">True</property> + </widget> + </child> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="outgoing_chat_states_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">All chat states Composing only Disabled</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_displayed_chat_states_combobox_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkExpander" id="expander2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="expanded">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkVBox" id="vbox65"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkHBox" id="hbox2946"> - <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkCheckButton" id="play_sounds_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Play _sounds</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_play_sounds_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="soundplayer_hbox"> - <property name="homogeneous">False</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkLabel" id="label189"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Player:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">soundplayer_entry</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="soundplayer_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â—</property> - <property name="activates_default">False</property> - <signal name="changed" handler="on_soundplayer_entry_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="sounds_scrolledwindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="sounds_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">True</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - <signal name="cursor_changed" handler="on_treeview_sounds_cursor_changed"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="browse_sounds_hbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkEntry" id="sounds_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â—</property> - <property name="activates_default">False</property> - <signal name="changed" handler="on_sounds_entry_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="browse_for_sounds_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label">...</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_browse_for_sounds_button_clicked"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="play_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_play_button_clicked"/> - - <child> - <widget class="GtkImage" id="image1370"> - <property name="visible">True</property> - <property name="stock">gtk-media-play</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label385"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Sounds</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label76"> - <property name="visible">True</property> - <property name="label" translatable="yes">Events</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="status_vbox"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkTable" id="autoaway_table"> - <property name="visible">True</property> - <property name="n_rows">2</property> - <property name="n_columns">4</property> - <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - - <child> - <widget class="GtkEntry" id="auto_xa_message_entry"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">The auto not available status message</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â—</property> - <property name="activates_default">False</property> - <signal name="changed" handler="on_auto_xa_message_entry_changed"/> - </widget> - <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="auto_away_message_entry"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">The auto away status message</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â—</property> - <property name="activates_default">False</property> - <signal name="changed" handler="on_auto_away_message_entry_changed"/> - </widget> - <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="alignment34"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkSpinButton" id="auto_xa_time_spinbutton"> - <property name="width_request">50</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">False</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">20 1 1440 1 10 10</property> - <signal name="value_changed" handler="on_auto_xa_time_spinbutton_value_changed"/> - </widget> - </child> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="alignment33"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkSpinButton" id="auto_away_time_spinbutton"> - <property name="width_request">50</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="climb_rate">1</property> - <property name="digits">0</property> - <property name="numeric">False</property> - <property name="update_policy">GTK_UPDATE_ALWAYS</property> - <property name="snap_to_ticks">False</property> - <property name="wrap">False</property> - <property name="adjustment">12 1 720 1 10 10</property> - <signal name="value_changed" handler="on_auto_away_time_spinbutton_value_changed"/> - </widget> - </child> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label78"> - <property name="visible">True</property> - <property name="label" translatable="yes">minutes</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label77"> - <property name="visible">True</property> - <property name="label" translatable="yes">minutes</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="auto_xa_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Auto _not available after:</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_auto_xa_checkbutton_toggled"/> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="auto_away_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Auto _away after:</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_auto_away_checkbutton_toggled"/> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox2934"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="label214"> - <property name="visible">True</property> - <property name="label" translatable="yes">Ask status message when I:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox2934"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">14</property> - - <child> - <widget class="GtkCheckButton" id="prompt_online_status_message_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Sign _in</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_prompt_online_status_message_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="prompt_offline_status_message_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Sign _out</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_prompt_offline_status_message_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="set_status_msg_from_current_music_track_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Works for Rhythmbox and Muine players. For more players, please visit http://trac.gajim.org/wiki/GajimAndMusicPlayer</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Set status message to reflect currently playing _music track</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="set_status_msg_from_current_music_track_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkEventBox" id="default_status_eventbox"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">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</property> - <property name="visible_window">True</property> - <property name="above_child">False</property> - - <child> - <widget class="GtkExpander" id="default_status_expander"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="expanded">False</property> - <property name="spacing">0</property> - <signal name="activate" handler="on_default_status_expander_activate"/> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow24"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="default_msg_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">True</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label384"> - <property name="visible">True</property> - <property name="label" translatable="yes">Default Status Messages</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="frame22"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment49"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox56"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkHBox" id="hbox2933"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow22"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="msg_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - <signal name="key_press_event" handler="on_msg_treeview_key_press_event"/> - <signal name="cursor_changed" handler="on_msg_treeview_cursor_changed"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVButtonBox" id="vbuttonbox3"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_START</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkButton" id="new_msg_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-new</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_new_msg_button_clicked"/> - </widget> - </child> - - <child> - <widget class="GtkButton" id="delete_msg_button"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-delete</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_delete_msg_button_clicked"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow23"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTextView" id="msg_textview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="overwrite">False</property> - <property name="accepts_tab">True</property> - <property name="justification">GTK_JUSTIFY_LEFT</property> - <property name="wrap_mode">GTK_WRAP_NONE</property> - <property name="cursor_visible">True</property> - <property name="pixels_above_lines">0</property> - <property name="pixels_below_lines">0</property> - <property name="pixels_inside_wrap">0</property> - <property name="left_margin">0</property> - <property name="right_margin">0</property> - <property name="indent">0</property> - <property name="text" translatable="yes"></property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label213"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Preset Status Messages</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label80"> - <property name="visible">True</property> - <property name="label" translatable="yes">Status</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox45"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkFrame" id="applications_frame"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment89"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox50"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkComboBox" id="applications_combobox"> - <property name="visible">True</property> - <property name="items" translatable="yes">Autodetect on every Gajim startup + <signal name="changed" handler="on_outgoing_chat_states_combobox_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>Privacy</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame24"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment53"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox62"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <widget class="GtkTable" id="table25"> + <property name="visible">True</property> + <property name="n_rows">4</property> + <property name="n_columns">4</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkLabel" id="label72"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Incoming message:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">True</property> + <property name="mnemonic_widget">incoming_msg_colorbutton</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkColorButton" id="incoming_msg_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="response_id">0</property> + <signal name="color_set" handler="on_incoming_msg_colorbutton_color_set"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label70"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Outgoing message:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">True</property> + <property name="mnemonic_widget">outgoing_msg_colorbutton</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkColorButton" id="outgoing_msg_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="color_set" handler="on_outgoing_msg_colorbutton_color_set"/> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label71"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Status message:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">True</property> + <property name="mnemonic_widget">status_msg_colorbutton</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkColorButton" id="status_msg_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="color_set" handler="on_status_msg_colorbutton_color_set"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label371"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_URL:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">url_msg_colorbutton</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkColorButton" id="url_msg_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="color_set" handler="on_url_msg_colorbutton_color_set"/> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox3022"> + <property name="visible">True</property> + <child> + <widget class="GtkLabel" id="label383"> + <property name="visible">True</property> + </widget> + <packing> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="reset_colors_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_reset_colors_button_clicked"/> + <child> + <widget class="GtkAlignment" id="alignment52"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox2936"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image439"> + <property name="visible">True</property> + <property name="stock">gtk-revert-to-saved</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label217"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Reset to Default Colors</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="right_attach">4</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox3021"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkLabel" id="font_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Font:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">conversation_fontbutton</property> + </widget> + </child> + <child> + <widget class="GtkFontButton" id="conversation_fontbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="font_set" handler="on_conversation_fontbutton_font_set"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="default_chat_font"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Use system _default</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_default_chat_font_toggled"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">4</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label228"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Format of a line</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label218"> + <property name="visible">True</property> + <property name="label" translatable="yes">Privacy</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox42"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">12</property> + <child> + <widget class="GtkFrame" id="frame29"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment58"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox67"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">6</property> + <child> + <widget class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">When new event is received:</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="on_event_combobox"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="items" translatable="yes">Pop it up +Notify me about it +Show only in roster</property> + <signal name="changed" handler="on_on_event_combobox_changed"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkCheckButton" id="notify_on_signin_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Notify me about contacts that sign _in</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_notify_on_signin_checkbutton_toggled"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="notify_on_signout_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out</property> + <property name="label" translatable="yes">Notify me about contacts that sign _out</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_notify_on_signout_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="auto_popup_away_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Allow popup/notifications when I'm _away/na/busy/invisible</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_auto_popup_away_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="anc_hbox"> + <property name="visible">True</property> + <property name="no_show_all">True</property> + <child> + <widget class="GtkButton" id="button1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_open_advanced_notifications_button_clicked"/> + <child> + <widget class="GtkAlignment" id="alignment90"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox3019"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image1371"> + <property name="visible">True</property> + <property name="stock">gtk-open</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label382"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Advanced Notifications Control...</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label240"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Visual Notifications</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame5"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment5"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox65"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkHBox" id="hbox2946"> + <property name="visible">True</property> + <property name="spacing">6</property> + <property name="homogeneous">True</property> + <child> + <widget class="GtkCheckButton" id="play_sounds_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Play _sounds</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_play_sounds_checkbutton_toggled"/> + </widget> + </child> + <child> + <widget class="GtkHBox" id="soundplayer_hbox"> + <property name="spacing">5</property> + <child> + <widget class="GtkLabel" id="label189"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Player:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">soundplayer_entry</property> + </widget> + </child> + <child> + <widget class="GtkEntry" id="soundplayer_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_soundplayer_entry_changed"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="sounds_scrolledwindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="sounds_treeview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="cursor_changed" handler="on_treeview_sounds_cursor_changed"/> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="browse_sounds_hbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkEntry" id="sounds_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_sounds_entry_changed"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="browse_for_sounds_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label">...</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_browse_for_sounds_button_clicked"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="play_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_play_button_clicked"/> + <child> + <widget class="GtkImage" id="image1370"> + <property name="visible">True</property> + <property name="stock">gtk-media-play</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label8"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>Sounds</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label76"> + <property name="visible">True</property> + <property name="label" translatable="yes">Events</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="status_vbox"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">12</property> + <child> + <widget class="GtkTable" id="autoaway_table"> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">4</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkCheckButton" id="auto_away_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Auto _away after:</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_auto_away_checkbutton_toggled"/> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="auto_xa_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Auto _not available after:</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_auto_xa_checkbutton_toggled"/> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label77"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">minutes</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label78"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">minutes</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkAlignment" id="alignment33"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="xscale">0</property> + <child> + <widget class="GtkSpinButton" id="auto_away_time_spinbutton"> + <property name="width_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">12 1 720 1 10 10</property> + <property name="climb_rate">1</property> + <signal name="value_changed" handler="on_auto_away_time_spinbutton_value_changed"/> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkAlignment" id="alignment34"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="xscale">0</property> + <child> + <widget class="GtkSpinButton" id="auto_xa_time_spinbutton"> + <property name="width_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">20 1 1440 1 10 10</property> + <property name="climb_rate">1</property> + <signal name="value_changed" handler="on_auto_xa_time_spinbutton_value_changed"/> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="auto_away_message_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">The auto away status message</property> + <signal name="changed" handler="on_auto_away_message_entry_changed"/> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="auto_xa_message_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">The auto not available status message</property> + <signal name="changed" handler="on_auto_xa_message_entry_changed"/> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox2934"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkLabel" id="label214"> + <property name="visible">True</property> + <property name="label" translatable="yes">Ask status message when I:</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox2934"> + <property name="visible">True</property> + <property name="spacing">14</property> + <child> + <widget class="GtkCheckButton" id="prompt_online_status_message_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Sign _in</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_prompt_online_status_message_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="prompt_offline_status_message_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Sign _out</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_prompt_offline_status_message_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="set_status_msg_from_current_music_track_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">Works for Rhythmbox and Muine players. For more players, please visit http://trac.gajim.org/wiki/GajimAndMusicPlayer</property> + <property name="label" translatable="yes">Set status message to reflect currently playing _music track</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="set_status_msg_from_current_music_track_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkEventBox" id="default_status_eventbox"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">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</property> + <child> + <widget class="GtkExpander" id="default_status_expander"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="activate" handler="on_default_status_expander_activate"/> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow24"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">6</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="default_msg_treeview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label384"> + <property name="visible">True</property> + <property name="label" translatable="yes">Default Status Messages</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame22"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment49"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox56"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkHBox" id="hbox2933"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow22"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">5</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="msg_treeview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <signal name="key_press_event" handler="on_msg_treeview_key_press_event"/> + <signal name="cursor_changed" handler="on_msg_treeview_cursor_changed"/> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkVButtonBox" id="vbuttonbox3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_START</property> + <child> + <widget class="GtkButton" id="new_msg_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="border_width">5</property> + <property name="label">gtk-new</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_new_msg_button_clicked"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="delete_msg_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="border_width">5</property> + <property name="label">gtk-delete</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_delete_msg_button_clicked"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow23"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">5</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTextView" id="msg_textview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label213"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Preset Status Messages</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label80"> + <property name="visible">True</property> + <property name="label" translatable="yes">Status</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox45"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">6</property> + <child> + <widget class="GtkFrame" id="applications_frame"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment89"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox50"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkComboBox" id="applications_combobox"> + <property name="visible">True</property> + <property name="items" translatable="yes">Autodetect on every Gajim startup Always use GNOME default applications Always use KDE default applications -Always use XFCE4 default applications +Always use Xfce default applications Custom</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_applications_combobox_changed"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="custom_apps_frame"> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment43"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkTable" id="table22"> - <property name="visible">True</property> - <property name="n_rows">3</property> - <property name="n_columns">2</property> - <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - - <child> - <widget class="GtkEntry" id="custom_file_manager_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â—</property> - <property name="activates_default">False</property> - <signal name="changed" handler="on_custom_file_manager_entry_changed"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label355"> - <property name="visible">True</property> - <property name="label" translatable="yes">_File manager:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">custom_file_manager_entry</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="custom_browser_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â—</property> - <property name="activates_default">False</property> - <signal name="changed" handler="on_custom_browser_entry_changed"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="custom_mail_client_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â—</property> - <property name="activates_default">False</property> - <signal name="changed" handler="on_custom_mail_client_entry_changed"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label200"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Mail client:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">custom_mail_client_entry</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label199"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Browser:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">custom_browser_entry</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label198"> - <property name="visible">True</property> - <property name="label" translatable="yes" comments="a header for custom browser/client/file manager. so translate sth like: Custom Settings"><b>Custom</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label355"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Applications</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="frame_gmail"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment_gmail"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox_gmail"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkCheckButton" id="notify_gmail_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Notify on new _GMail email</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_gmail_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="notify_gmail_extra_checkbutton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">If checked, Gajim will also include information about the sender of the new emails</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Display _extra email details</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_notify_gmail_extra_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="gmail_options_label"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>GMail Options</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="frame27"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment56"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox66"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkCheckButton" id="log_show_changes_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Log status changes of contacts</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_log_show_changes_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="send_os_info_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Allow _OS information to be sent</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_send_os_info_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="check_default_client_checkbutton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Always check to see if Gajim is the _default Jabber client on startup</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_check_default_client_checkbutton_toggled"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label235"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Miscellaneous</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="frame31"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment64"> - <property name="border_width">6</property> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">335</property> - - <child> - <widget class="GtkButton" id="open_advanced_editor_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_open_advanced_editor_button_clicked"/> - - <child> - <widget class="GtkAlignment" id="alignment70"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox2962"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image597"> - <property name="visible">True</property> - <property name="stock">gtk-open</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label296"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Open...</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label247"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Advanced Configuration Editor</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label169"> - <property name="visible">True</property> - <property name="label" translatable="yes">Advanced</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox96"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkFrame" id="frame36"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment91"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox97"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkCheckButton" id="pub_mood"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Publish Mood</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_pub_mood_toggled" last_modification_time="Thu, 09 Aug 2007 19:58:35 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="pub_activity"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Publish Activity</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_pub_activity_toggled" last_modification_time="Thu, 09 Aug 2007 19:58:29 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="pub_tune"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Publish Tune</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_pub_tune_toggled" last_modification_time="Thu, 09 Aug 2007 19:58:23 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label389"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Publish Personal Events</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkFrame" id="frame37"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment92"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkVBox" id="vbox98"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkCheckButton" id="sub_mood"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Subscribe Mood</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_sub_mood_toggled" last_modification_time="Thu, 09 Aug 2007 19:57:37 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="sub_activity"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Subscribe Activity</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">True</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_sub_activity_toggled" last_modification_time="Thu, 09 Aug 2007 19:58:03 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkCheckButton" id="sub_tune"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Subscribe Tune</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">True</property> - <property name="inconsistent">False</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_sub_tune_toggled" last_modification_time="Thu, 09 Aug 2007 19:58:12 GMT"/> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label390"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Subscribe Personal Events</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label388"> - <property name="visible">True</property> - <property name="label" translatable="yes">Personal Events</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.449999988079</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHButtonBox" id="hbuttonbox7"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <property name="spacing">15</property> - - <child> - <widget class="GtkButton" id="close_button"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_close_button_clicked"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> -</widget> - + <signal name="changed" handler="on_applications_combobox_changed"/> + </widget> + </child> + <child> + <widget class="GtkFrame" id="custom_apps_frame"> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment43"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkTable" id="table22"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <widget class="GtkLabel" id="label199"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Browser:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">custom_browser_entry</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label200"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Mail client:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">custom_mail_client_entry</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="custom_mail_client_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_custom_mail_client_entry_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="custom_browser_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_custom_browser_entry_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label355"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_File manager:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">custom_file_manager_entry</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="custom_file_manager_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_custom_file_manager_entry_changed"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label198"> + <property name="visible">True</property> + <property name="label" translatable="yes" comments="a header for custom browser/client/file manager. so translate sth like: Custom Settings"><b>Custom</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label355"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Applications</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame_gmail"> + <property name="visible">True</property> + <property name="no_show_all">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment_gmail"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox_gmail"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkCheckButton" id="notify_gmail_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Notify on new _GMail email</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_notify_gmail_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="notify_gmail_extra_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip" translatable="yes">If checked, Gajim will also include information about the sender of the new emails</property> + <property name="label" translatable="yes">Display _extra email details</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_notify_gmail_extra_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="gmail_options_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>GMail Options</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame27"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment56"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox66"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkCheckButton" id="log_show_changes_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Log status changes of contacts</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_log_show_changes_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="send_os_info_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Allow _OS information to be sent</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_send_os_info_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="check_default_client_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Always check to see if Gajim is the _default Jabber client on startup</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_check_default_client_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label235"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Miscellaneous</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame31"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment64"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="yscale">0</property> + <property name="left_padding">12</property> + <property name="right_padding">335</property> + <child> + <widget class="GtkButton" id="open_advanced_editor_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_open_advanced_editor_button_clicked"/> + <child> + <widget class="GtkAlignment" id="alignment70"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox2962"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image597"> + <property name="visible">True</property> + <property name="stock">gtk-open</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label296"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Open...</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label247"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Advanced Configuration Editor</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label169"> + <property name="visible">True</property> + <property name="label" translatable="yes">Advanced</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">4</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">6</property> + <child> + <widget class="GtkFrame" id="frame6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkCheckButton" id="publish_mood_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Publish _Mood</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_publish_mood_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="publish_activity_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Publish _Activity</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_publish_activity_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="publish_tune_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Publish _Tune</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_publish_tune_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>Publish Personal Events</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame7"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment7"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkCheckButton" id="subscribe_mood_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Subscribe to M_ood</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_subscribe_mood_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="subscribe_activity_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Subscribe to A_ctivity</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_subscribe_activity_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="subscribe_tune_checkbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Subscribe to T_une</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_subscribe_tune_checkbutton_toggled"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><b>Subscribe to Personal Events</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">5</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Personal Events</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">5</property> + <property name="tab_fill">False</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox7"> + <property name="visible">True</property> + <property name="spacing">15</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="close_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_close_button_clicked"/> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> </glade-interface> diff --git a/data/glade/roster_contact_context_menu.glade b/data/glade/roster_contact_context_menu.glade index 0d35d74a62..f873e7f773 100644 --- a/data/glade/roster_contact_context_menu.glade +++ b/data/glade/roster_contact_context_menu.glade @@ -20,7 +20,7 @@ <child> <widget class="GtkImageMenuItem" id="send_single_message_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">Send Single _Message</property> + <property name="label" translatable="yes">Send Single _Message...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1703"> @@ -34,12 +34,12 @@ <child> <widget class="GtkImageMenuItem" id="send_file_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">Send _File</property> + <property name="label" translatable="yes">Send _File...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1706"> <property name="visible">True</property> - <property name="stock">gtk-floppy</property> + <property name="stock">gtk-save</property> <property name="icon_size">1</property> </widget> </child> @@ -103,7 +103,7 @@ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <child> <widget class="GtkImageMenuItem" id="rename_menuitem"> - <property name="label" translatable="yes">_Rename</property> + <property name="label" translatable="yes">_Rename...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1705"> @@ -116,7 +116,7 @@ </child> <child> <widget class="GtkImageMenuItem" id="edit_groups_menuitem"> - <property name="label" translatable="yes">Edit _Groups</property> + <property name="label" translatable="yes">Edit _Groups...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="menu-item-image21"> @@ -130,13 +130,13 @@ </child> <child> <widget class="GtkImageMenuItem" id="assign_openpgp_key_menuitem"> - <property name="label" translatable="yes">Assign Open_PGP Key</property> + <property name="label" translatable="yes">Assign Open_PGP Key...</property> <property name="use_underline">True</property> <signal name="activate" handler="on_assign_openpgp_key_menuitem_activate"/> <child internal-child="image"> <widget class="GtkImage" id="image1707"> <property name="visible">True</property> - <property name="stock">gtk-missing-image</property> + <property name="stock">gtk-dialog-authentication</property> <property name="icon_size">1</property> </widget> </child> @@ -146,7 +146,7 @@ <widget class="GtkImageMenuItem" id="set_custom_avatar_menuitem"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Set Custom _Avatar</property> + <property name="label" translatable="yes">Set Custom _Avatar...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="menu-item-image20"> @@ -160,9 +160,8 @@ </child> <child> <widget class="GtkImageMenuItem" id="add_special_notification_menuitem"> - <property name="visible">True</property> <property name="no_show_all">True</property> - <property name="label" translatable="yes">Add Special _Notification</property> + <property name="label" translatable="yes">Add Special _Notification...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1708"> @@ -269,26 +268,26 @@ </widget> </child> <child> - <widget class="GtkImageMenuItem" id="remove_from_roster_menuitem"> - <property name="label" translatable="yes">_Remove</property> + <widget class="GtkImageMenuItem" id="add_to_roster_menuitem"> + <property name="label" translatable="yes">_Add to Roster...</property> <property name="use_underline">True</property> <child internal-child="image"> - <widget class="GtkImage" id="image1717"> + <widget class="GtkImage" id="image1716"> <property name="visible">True</property> - <property name="stock">gtk-remove</property> + <property name="stock">gtk-add</property> <property name="icon_size">1</property> </widget> </child> </widget> </child> <child> - <widget class="GtkImageMenuItem" id="add_to_roster_menuitem"> - <property name="label" translatable="yes">_Add to Roster</property> + <widget class="GtkImageMenuItem" id="remove_from_roster_menuitem"> + <property name="label" translatable="yes">_Remove</property> <property name="use_underline">True</property> <child internal-child="image"> - <widget class="GtkImage" id="image1716"> + <widget class="GtkImage" id="image1717"> <property name="visible">True</property> - <property name="stock">gtk-add</property> + <property name="stock">gtk-remove</property> <property name="icon_size">1</property> </widget> </child> diff --git a/data/glade/roster_window.glade b/data/glade/roster_window.glade index 1f1f10fb57..dc482bb8a2 100644 --- a/data/glade/roster_window.glade +++ b/data/glade/roster_window.glade @@ -31,7 +31,7 @@ <child> <widget class="GtkImageMenuItem" id="new_chat_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">_Start Chat</property> + <property name="label" translatable="yes">_Start Chat...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1605"> @@ -42,10 +42,23 @@ </child> </widget> </child> + <child> + <widget class="GtkImageMenuItem" id="send_single_message_menuitem"> + <property name="label" translatable="yes">_Send Single Message...</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="menu-item-image5"> + <property name="visible">True</property> + <property name="stock">gtk-new</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> <child> <widget class="GtkImageMenuItem" id="join_gc_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">_Group Chat</property> + <property name="label" translatable="yes">Join _Group Chat...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1606"> @@ -64,7 +77,7 @@ <child> <widget class="GtkImageMenuItem" id="add_new_contact_menuitem"> <property name="visible">True</property> - <property name="label" translatable="yes">Add _Contact</property> + <property name="label" translatable="yes">Add _Contact...</property> <property name="use_underline">True</property> <child internal-child="image"> <widget class="GtkImage" id="image1607"> @@ -232,7 +245,24 @@ <child internal-child="image"> <widget class="GtkImage" id="image1613"> <property name="visible">True</property> - <property name="stock">gtk-missing-image</property> + <property name="stock">gtk-save</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="history_menuitem"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">_History</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_history_menuitem_activate"/> + <child internal-child="image"> + <widget class="GtkImage" id="menu-item-image14"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="stock">gtk-justify-fill</property> <property name="icon_size">1</property> </widget> </child> @@ -341,6 +371,7 @@ <signal name="row_expanded" handler="on_roster_treeview_row_expanded"/> <signal name="key_press_event" handler="on_roster_treeview_key_press_event"/> <signal name="row_activated" handler="on_roster_treeview_row_activated"/> + <signal name="button_release_event" handler="on_roster_treeview_button_release_event"/> <signal name="scroll_event" handler="on_roster_treeview_scroll_event"/> <signal name="style_set" handler="on_roster_treeview_style_set"/> </widget> diff --git a/data/glade/service_discovery_window.glade b/data/glade/service_discovery_window.glade index 197b18a9aa..5c0ff24d55 100644 --- a/data/glade/service_discovery_window.glade +++ b/data/glade/service_discovery_window.glade @@ -62,16 +62,22 @@ Agent JID - node</property> <placeholder/> </child> <child> - <widget class="GtkLabel" id="label224"> + <widget class="GtkComboBoxEntry" id="address_comboboxentry"> <property name="visible">True</property> - <property name="label" translatable="yes">_Address:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">address_comboboxentry</property> + <property name="items" translatable="yes"></property> + <signal name="changed" handler="on_address_comboboxentry_changed"/> + <signal name="key_press_event" handler="on_address_comboboxentry_key_press_event"/> + <child internal-child="entry"> + <widget class="GtkEntry" id="comboboxentry-entry1"> + </widget> + </child> </widget> <packing> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -127,22 +133,16 @@ Agent JID - node</property> </packing> </child> <child> - <widget class="GtkComboBoxEntry" id="address_comboboxentry"> + <widget class="GtkLabel" id="label224"> <property name="visible">True</property> - <property name="items" translatable="yes"></property> - <signal name="changed" handler="on_address_comboboxentry_changed"/> - <signal name="key_press_event" handler="on_address_comboboxentry_key_press_event"/> - <child internal-child="entry"> - <widget class="GtkEntry" id="comboboxentry-entry1"> - </widget> - </child> + <property name="label" translatable="yes">_Address:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">address_comboboxentry</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options">GTK_FILL</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> </widget> @@ -171,41 +171,6 @@ Agent JID - node</property> <property name="position">2</property> </packing> </child> - <child> - <widget class="GtkHBox" id="filter_hbox"> - <property name="visible">True</property> - <property name="no_show_all">True</property> - <property name="spacing">6</property> - <child> - <widget class="GtkLabel" id="label361"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Filter:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">filter_entry</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkEntry" id="filter_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> - <signal name="changed" handler="on_filter_entry_changed"/> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> <child> <widget class="GtkHBox" id="hbox2994"> <property name="visible">True</property> @@ -260,7 +225,7 @@ Agent JID - node</property> <packing> <property name="expand">False</property> <property name="padding">2</property> - <property name="position">4</property> + <property name="position">3</property> </packing> </child> </widget> diff --git a/data/glade/single_message_window.glade b/data/glade/single_message_window.glade index 6c3f06641b..67feb0147c 100644 --- a/data/glade/single_message_window.glade +++ b/data/glade/single_message_window.glade @@ -8,6 +8,7 @@ <property name="default_height">280</property> <signal name="key_press_event" handler="on_single_message_window_key_press_event"/> <signal name="delete_event" handler="on_single_message_window_delete_event"/> + <signal name="destroy" handler="on_single_message_window_destroy"/> <child> <widget class="GtkVBox" id="vbox97"> <property name="visible">True</property> diff --git a/data/glade/zeroconf_contact_context_menu.glade b/data/glade/zeroconf_contact_context_menu.glade index 4ad215baa0..e69c426685 100644 --- a/data/glade/zeroconf_contact_context_menu.glade +++ b/data/glade/zeroconf_contact_context_menu.glade @@ -9,7 +9,7 @@ <property name="label" translatable="yes">Start _Chat</property> <property name="use_underline">True</property> <child internal-child="image"> - <widget class="GtkImage" id="image1534"> + <widget class="GtkImage" id="image1701"> <property name="visible">True</property> <property name="stock">gtk-jump-to</property> <property name="icon_size">1</property> @@ -18,74 +18,103 @@ </widget> </child> <child> - <widget class="GtkImageMenuItem" id="rename_menuitem"> - <property name="label" translatable="yes">_Rename</property> + <widget class="GtkImageMenuItem" id="send_file_menuitem"> + <property name="visible">True</property> + <property name="label" translatable="yes">Send _File</property> <property name="use_underline">True</property> <child internal-child="image"> - <widget class="GtkImage" id="image1535"> + <widget class="GtkImage" id="image1706"> <property name="visible">True</property> - <property name="stock">gtk-refresh</property> + <property name="stock">gtk-save</property> <property name="icon_size">1</property> </widget> </child> </widget> </child> - <child> - <widget class="GtkMenuItem" id="edit_groups_menuitem"> - <property name="label" translatable="yes">Edit _Groups</property> - <property name="use_underline">True</property> - </widget> - </child> <child> <widget class="GtkSeparatorMenuItem" id="above_send_file_separator"> <property name="visible">True</property> </widget> </child> <child> - <widget class="GtkImageMenuItem" id="send_file_menuitem"> + <widget class="GtkImageMenuItem" id="manage_contact"> <property name="visible">True</property> - <property name="label" translatable="yes">Send _File</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">_Manage Contact</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="image1536"> + <child> + <widget class="GtkMenu" id="menu2"> <property name="visible">True</property> - <property name="stock">gtk-missing-image</property> - <property name="icon_size">1</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkImageMenuItem" id="rename_menuitem"> + <property name="label" translatable="yes">_Rename</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1705"> + <property name="visible">True</property> + <property name="stock">gtk-refresh</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="edit_groups_menuitem"> + <property name="label" translatable="yes">Edit _Groups</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="menu-item-image21"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="stock">gtk-edit</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="assign_openpgp_key_menuitem"> + <property name="label" translatable="yes">Assign Open_PGP Key</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_assign_openpgp_key_menuitem_activate"/> + <child internal-child="image"> + <widget class="GtkImage" id="image1707"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-authentication</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="add_special_notification_menuitem"> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">Add Special _Notification</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1708"> + <property name="visible">True</property> + <property name="stock">gtk-info</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> </widget> </child> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="assign_openpgp_key_menuitem"> - <property name="label" translatable="yes">Assign Open_PGP Key</property> - <property name="use_underline">True</property> - <signal name="activate" handler="on_assign_openpgp_key_menuitem_activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image1537"> - <property name="visible">True</property> - <property name="stock">gtk-missing-image</property> - <property name="icon_size">1</property> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="add_special_notification_menuitem"> - <property name="visible">True</property> - <property name="no_show_all">True</property> - <property name="label" translatable="yes">Add Special _Notification</property> - <property name="use_underline">True</property> <child internal-child="image"> - <widget class="GtkImage" id="image1538"> + <widget class="GtkImage" id="menu-item-image19"> <property name="visible">True</property> - <property name="stock">gtk-info</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="stock">gtk-properties</property> <property name="icon_size">1</property> </widget> </child> </widget> </child> <child> - <widget class="GtkSeparatorMenuItem" id="above_information_separator"> + <widget class="GtkSeparatorMenuItem" id="separator6"> <property name="visible">True</property> </widget> </child> @@ -101,7 +130,7 @@ <property name="label" translatable="yes">_History</property> <property name="use_underline">True</property> <child internal-child="image"> - <widget class="GtkImage" id="image1539"> + <widget class="GtkImage" id="image1718"> <property name="visible">True</property> <property name="stock">gtk-justify-fill</property> <property name="icon_size">1</property> diff --git a/data/glade/zeroconf_context_menu.glade b/data/glade/zeroconf_context_menu.glade index f2928cf048..349383017b 100644 --- a/data/glade/zeroconf_context_menu.glade +++ b/data/glade/zeroconf_context_menu.glade @@ -1,49 +1,41 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> <glade-interface> - -<widget class="GtkMenu" id="zeroconf_context_menu"> - - <child> - <widget class="GtkImageMenuItem" id="status_menuitem"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Status</property> - <property name="use_underline">True</property> - - <child internal-child="image"> - <widget class="GtkImage" id="image1258"> - <property name="visible">True</property> - <property name="stock">gtk-network</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkImageMenuItem" id="zeroconf_properties_menuitem"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Modify Account...</property> - <property name="use_underline">True</property> - - <child internal-child="image"> - <widget class="GtkImage" id="image1259"> - <property name="visible">True</property> - <property name="stock">gtk-preferences</property> - <property name="icon_size">1</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - </child> - </widget> - </child> -</widget> - + <widget class="GtkMenu" id="zeroconf_context_menu"> + <child> + <widget class="GtkImageMenuItem" id="status_menuitem"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Status</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1258"> + <property name="visible">True</property> + <property name="stock">gtk-network</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="zeroconf_properties_menuitem"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Modify Account...</property> + <property name="use_underline">True</property> + <child internal-child="image"> + <widget class="GtkImage" id="image1259"> + <property name="visible">True</property> + <property name="stock">gtk-preferences</property> + <property name="icon_size">1</property> + </widget> + </child> + </widget> + </child> + </widget> </glade-interface> diff --git a/data/nibs/Gajim.nib/classes.nib b/data/nibs/Gajim.nib/classes.nib new file mode 100644 index 0000000000..b9b4b09f6b --- /dev/null +++ b/data/nibs/Gajim.nib/classes.nib @@ -0,0 +1,4 @@ +{ + IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); + IBVersion = 1; +} \ No newline at end of file diff --git a/data/nibs/Gajim.nib/info.nib b/data/nibs/Gajim.nib/info.nib new file mode 100644 index 0000000000..9cb6b534dc --- /dev/null +++ b/data/nibs/Gajim.nib/info.nib @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IBDocumentLocation</key> + <string>82 255 356 240 0 0 1280 832 </string> + <key>IBEditorPositions</key> + <dict> + <key>29</key> + <string>476 296 342 44 0 0 1280 832 </string> + </dict> + <key>IBFramework Version</key> + <string>446.1</string> + <key>IBOldestOS</key> + <integer>4</integer> + <key>IBOpenObjects</key> + <array> + <integer>289</integer> + <integer>29</integer> + </array> + <key>IBSystem Version</key> + <string>8S165</string> +</dict> +</plist> diff --git a/data/nibs/Gajim.nib/keyedobjects.nib b/data/nibs/Gajim.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..f13f467bfe6fadf16da4c85320890c42da20822f GIT binary patch literal 7184 zcmcgwd3+RAwm$b(?_J$pTeB|_!lDL9Lck=7m;?d=k{CK0Ng#BRB5Bg;4&5Dg;uVoy z1Ox;`jKDAq<0vwS4#V&qL`76afpHr}MMOm0_my|5DjjecfA6o?{p+q<Rrj9tJKwog zHO;|5G?tuv3J6f(zyxNnfE65*68(|dhQLfUQl5x^(Lgv<oEQr?mnVj6rmMBFXtm%e z@QqjJsC8NG6D1&v+g=14*eB;@4>qRN`D1=Y9uocmPT(O0hCv401UZlk<DdX4U@A1j zESL>*pcQTb28&=REQ6JBC)@>h!&bNt+F(2U3HHDvupb_U1Mola6g&;b;9u}EyaKPn zYw#wVgZJP(d<b8_m+%#QM+l*WBR1k80ujm8<Qj4<8B9{hbtIkKKt_-o$w-n-a>y9c zL}rr(q?O!4ZYRsgYO;phMYiDiy<{8NLH<Z~k%!1W@(6i?JV#EE*U4G(F8K)We@%h3 zQbNsS2p-*3rk!aoIsnH5=@6PhGieTvN6|c*Pm5^@Eu#zQVtOZCP1n%1bUocjH`9A* z8-0NTj&PLYI1^{)ES#0IadytZIXRwlac<7T37p7DoXjblm+QoJ=DKiQxo%u{t_RnX z>&5lv61c0lK3rcek?Y6x=LT>CxvRNrxNEs2ZV;Eu4dsTHB!*go!8Zj7T;K)|2q1z4 zGAQ7MPS6>;Kv(Dn-Ju8cgkI1a65uN61AQS8`aypf00ZG_xCX9;Bp3vPVF)DanJ+X@ zQ0fo1sECEG1-`7>S~VIC)C7Wo*qoejD1;~pM+}_g1pU#d8Z~BD6!;1Qby37lw6efg z;BQj(@#F$u`!wy&uSIHW3;|V!fVgg<z*ibT#X+?!5ULB$ik2qUYWg&Rh8YN6?Mzo? ztirQ)4-93Ue_{U>2IfZ4!dc-+Bd*B}hhq8ukiTAyOhS3;>=;fgE$~eYhhyv(_BXbS zEoY1^Wq)TYn3Wx5c6KWp#||(H1CjJ&^aO@H6^23@daiq`*~H9@I|0M-)^(7MatB9a zkwB;(^<_0<eb)M8=m0aFfK0d^Zh#TxhJR|b!We{5#&#G1H^N9gH~B3wKSsl+ODQk# zbqoxb4LMnmy$!Nq<P<cdB^nDi#cyhMjDqxPLCDL_3D<`G9Rbix7=w4mLLTO@y~3ky z%w|X&4->Y-1jvVxn4q`~YODkeP-Di*LYVX?xEYFIBKV*fN}v?Vpqx2a7uJ*YWdm3e zOJ->-o#mZ`O4L*ZlVJ)}mlgOX_-oXl=1aIGQme8~tTS`I0)D80TBrjRra?W<Z-4+y zheilO6NDg)naNi}Ef~oBklGXu1!^aRYpVrOC$7;mS^_ik!*%)oXd@~p4#a{g2EQ<r z*M#{+2N4<i9L<}+Y_(3m&UopTOP4N5SVq8H%){JFX5Le1!wl3PfhfeF1!kgVEwh+q z&49d^+7x9GHk0{StUNyu3N!`gszpsFVJ<F8g?TU^7GNSKs!`oN9TXyyn1F`qYK^?2 zsGJ71wz0_{X*6PfD=gd&3*j~`^H>K)CgWnz(|*6a7FT(@rjjX|4t=F&rtYOL=8vg{ z@a3>#8?1nl7>l?U22AhJ;2}4wk!j&blje>;))GOFGUFg!4QsZ;8d$5D<;740YOoSx zk#Mks7tmYdszDR+bg#p7Z(uzzyIucVb~j;m@6oc$c-9RQ&|OPFwIF3{HItAP3?{_F z3Aqu}ce7#b{hGBNe<b1$)vI|S{T5n!3U;((EE#s9+Fb~fQED_62pRQ8Ssyf`*RRdk zt%K~(XvSZ3GkUWGG~=qD<KSV~i#XWFCbL>h`jm>ImOw0FjDLEdsc42_)?<)f5mO^g znm#RZSK4zB?K#9K>yH*BzO2LiGRQUk|Lh1tZ`Lm!gvzX%a7()uL&s6g^`7BKof^^I z#^i?T{E<3+;?4e$8vKRg=TPx+RD3Ne9{Ag?zX&H#`6<J73EKy-tI>jMH2*8d2I|y= z!dL_D7>XLIg-#84uAg4PWYNqkU40!jo<@yBP~)KA);JyBzO0cAjw`FsmFY1p(e(UG z>;)8i5ycKgu_^ye?8jF`F*P2=a$iGumWCrVza^vz#_`Y0kAwAV)bTC54mAw>wFZNV ze(2D^v*B?K#TDUjQ&oHUXyeP46B9AR6k=sJu(2pN<JWR^^brRH3Ez&sOq6@Q7X2Vn zYeeTlRX>K18&!xV^e;+!ok&C`3h|Ooq%-M4x{_|BJ9HvFNKev>^d<@9D$<AaC5faT z=}!ibfjUbX{nQtm6I3;p)Je#=mhG=?#BxKv#PauH>0|L2cXS@@IMaI^5~y)+B5n!r z#8(?p)sS|gt@qE?)_2S)4XCs5a#?Y1&|j}@5VQ-r7=aTg8_jNHBiRTxisiB_sd+Y{ zZw$MsTIe!wURqj4QbJlr+JdBnc|(UMCncn&B`;V|a&ttT7S+pvBtbe7s*Zb&sj$<L zA&_3IX<(+4B$W(BIvz}hk>R?lT7O3_Z4QU9esH1Q2pO<!mQyV#^X8=_C8YdZna-Oe zgJf<endEvHiETg=j$U-gK|-824~<LKR;Hw;<1l?_>VgFo^HNiWqQKOQ1=T{gc|!-M zC8wsRs@D!pPfEDrWPzdLCX%&{WVN$?d*Ick<{(nZ<aS`?1jA7^)0jSrjNVR0lU%*s zx3}gjB*Z!Bm44LQGZ{;Q4+(t{gX73}G6B9NR@e=vNfDU{he$CgA*G}Yjw3`WNF}Kv zlgSilAXAB-)R0<IM^xBF>fs`6fNIi+2p-RhStT3BGFWdmh)rNMERj{QMmCGpvw<v& zm9ZA)XN7DkGI<eeW^<X!s@Z(ji_KsutSfV}5NmzSX!0a<xy_R>DbhF?4T!|+i)f(n zwbV3WAH!`zR;|8gnt;;t<7LMRF1P82$y{h5^O2qxAU)TW8S|r4qJ{+H6w9)XFoZ;e zM94y%zewv^;jETeSPf}AES7J_)!1fmS40-Wr2ENKbR_Q=giR(xfUJlciWW_bTU4xV z42%q|1^+hmbmVWki&@aztsooXQpi0R(=t{Pm&8iTeQIQ80Jq>BPLi$UJ~aA%R?aHW z%t;2|w?KOPK92kWCbh9VgnG5MMKe}wjs91pLyC3%mwl+Z?8D_4?a^cOSJt2fWqOHD z%tmPT!=yhWg6fEsOhIH-!D%=S7ZFvv5E0dgkEw_hKVoDc=Dh~<pZBVf^(%6I#0Ubm z{`U4y79z{!MSW_sKjOzH4Gc*4csT6;r}h8uE2=QiS|?GpC>x<U2a|SU@r)y7SYGv{ z6iZ+{mPaF&z$}*cn`kh=kKuT@BNSg@b@fItx9^77wBK2Xg}kR@;U!#H#Tq&m28u`5 z1&qx)r5d0oU<Lo48KjZg;?k%KrG;3qLt0Y@IH*kn2bEY*14mf*ohq6FKNf!8uMyYy z3&e#kBkp&6!v}z9hc*4t8XkAu@t{OY4WcxZUk#IXKs9n)C2lyK$WkrHIB`!k+|gv? zp@JM~f2=^{p%ePnlPtu3l@}cqh-x%YhiVXdc4I4QpMqI7G)1*M|Bkt&hK}ekHyh2J z%Vu|&JEwT88f?BC!4Y}{$FkX41m_t}jME~hB4z$Y1Z#c~!MT?sScw+q`vV~ZhWJ!T zOG)lFtvwiG%k@40$%wSwSo;n5UyFE4#@}uPYLWKEk%^4g?~TK8J(6)F_6O~H4gT<m z_ZmnE?!h!{R$+{KBe;9xd2jsI<5lh38~a4Des4UEXCOO<5ct~lx%ktLJboKlt6^Cy z3GT!$V@2IXXkR6AMFvWkfKprHbC%#7x|A-X%jpWblHS1<vfJ1qb~{_lmax|16#V#7 zQd3IweSl7i^e#v*j|ZfEXFxYVdR1;9s1ArG6wV5%k@oBON-9pE^d1syi)-C_#rS?L zeuJ>A`(d{<=^eC^jKjy>oAJSSH}c?kC?%@Kf5?SCWX8!*hRj%u9@Ucx_;`%HR_~(? zP>u+liv84z?C;0;He&p1FpgQsl{e^JwFL<y2_K<*Vyvn$mdOYQjYIwTK%I#3Ohb09 z!uZU<O74P>*o}H`<?$hV7&a>>#;*)Za2CeB9%J4f=NEMk=m~m~o}&MzFVUCjEA&<R z8vPG_oxVX&(>Li`^lf^EzC+K_cj-C$9z9Rrrx)l4^dkL`endZ}pU_X~XY_OW1^tqK zMZc!s&~NE?^n3aP{gM8}R<b+TDt0GZ&DOBB>@K#Bt!Eq9-E1S<#5S{g*cNs#+sf`^ zZR~!wjcsQ;*dN$V_D8mh{fX^ne`XJ`zpw|{Lu?OwnC)eMW&7A8Y(IOHJ;qvvbdmHC z)`;XPVX@Fts1k`RY!vzlD})T;qHvqANhH05^}<qNwXjOa6p12yBHSsG&H@o+k#rFT z2x~>sRoEbyg)SmV6h0P-SLiI<Dl8O9caiiENjH&n5=l=TlH6duiyGsU%OK#=+Q(R4 z+;v>~HZEP?edT2vFIq<7n^CagySKiOgfB)j@y$sQlp^s=Bkz#+X&TL?H8e(VK@4xA zkI=)Ih1W5@-{4Ea1bn%d$&KR1bNO5$SH$_a60VG!#8q;WxoXbO)p9CV&jq+fF2pr+ zbGX~NCEPM@Ew_c+%{{<9!X4tC;a=d*a364Aa6g);Ni=mc4KfWerJHh0qfEJ`LQ|=! z))X*BOt+hsn3kDVnC>v$X<B2t%e3Bfw`r4Ur|Ch{qo%)^{%-n*>9pxx)8}TZ*<<c% zPBf>OhnmyPBg`YsS>_z`X!96zxw+chXl^ox%`?nV^L%rwd4+kid5d|gxy`)Ge8BvK z`Iz|)^QY#YEMTD)lclpI!P3u?Y{{?`T8b<c7QbbVWvOMo<!;L+%RQEZmP3}uEr%^f zEKgaETHdgnw!CNg*7CiTw|2Aku=cVhSo>IWtfQ@Cta;Y))_iNBb*i<-T4$YRZLmhI zE!I}+GV2QK7VB1Pn{}IYhxMP<C#+9epSC_@eb)NC^;PQ`8?~8iUR!5dS6g>mPuq>Q zn{1<PV{Cc0@wR+hp{>$3**4R*#J0?~!gh!4PTL;aUfVv~e%oWV1Ga;<r)|&MPTStH zow1#@owHl*cDvK=vU}{JUAFhI53^_6N7-}jW9<QZqrJ%<w$HFf?Jf4X_9ga>_RaP! z_O13d`#<eZ*q^jNZGXo8to?cWIs17>SH~d7NJpNd%%M6Wj$0hd92*>Mjt3kMI`%mB zI`%pCJ05c!a2#|Tay;R9(($z8jN`oHQ^&WC@0}*6-RX38abDw0b*4FoJJX$o&T?n9 zbDA^aT<%=&-0S?i^Ks`%=iAN;&QE#ZZM?`=@KyX2ekxzX*YVT%27Wpp<U@QjAK_#C zOnx>$m!HqKA|)^67x9bvrTlV!CBKSa&9CLx@f-M!{APX&zm;#}xAD*N|K?BgZ}DgN zv-~;!Jb!_|$bZCNauFBjGP|rUkE@q!i0ekzO|C3gj%&25z*Xe(xk_9SSIjljHQP1U zHQ&|hy3MuHwZ?V8b<lOl^|<S>>xk<q*HPCo*Gbn|*E!dD*9F%_*O#uZ-QXr}&h2#% zcc;5E-8Z;zbl>F8cKh5V?oxNTyTU!y9dI-ELiZx~V)s(_a`#I2D)(ylTK78l2KPqy zKito{pLhSu{i6G%``_-D-LJTRbYJoi59cv^tRB0^;Thsd@eK70^IYf2@Lcb?!Q=PT zdQ?xnC*W!HG<iavd7ed{HJ-aX>pgdSHhJ#x-0Qi|bJTOp^PK0n=LOFR&neGKo>!1z zIAj&8U>BT%OYjJy&`Ibm^brz;{z9QpB>039p-h-0R0@;vwOq3h5u!qiFiT)aTek~K zgk8dJ;Q`@6VUMs^*eARpyeYgbyd%6TyeGUbd?0)%d?EZOT11=Z5P8up3Sx$sD~=V% zi4(+pu}~}$ePXd#E3On*iL1r6;yQ7IxKZ3JZV~Sn_lo<(N5n_Pzln#%C&j15XT%HQ zMe!r?6Y(?g3-K$7N=`|Tx=J-toit5qkfuvPDI_&Z5h*6klx9nFrTJ2;#H5ANB5AR- zR9Y^rlvYWrrM1#JX@j&;+AM96wn}Z%Hfe{nQ`#l%mi{U|E*+MRNKZ*erDM`_(sAi! z>8x~4Ixk(2E=nIspGcocUrXQ1M0Uus?3H`T*UE$B;c~j1C1=Z{<b1h6zFD3m@0TBw z56B1QL-OPDVfl#slzdb^CO;=1mtT-i$fx9&<X7a^<k#iX@>}v5`K)|SJ}+O8FUlXu zpU9udU&vp{-^ky|Kgd5Rpisr6SQMM$P<X|y2#Tb1S7s}7mHA4m!jy%|B4x3%R9UX9 zR8}dgm9@$`WrMO&*{p0)wkmDPHf4vhQ`x2LRvu6uRQ4!)m3_*7<uT=ea!@&>Jgyv8 zjwnwlN0npBbINh$1?7ZtN_k0nRr!x{T6s%3qnuUVQ{GoTP(D;XRz6ieSH4ufQNB}t zP=4})mwL@!tJm)3y>74ImAzhXXKy!e4{tATg14`?pLd}58gG(!us6k<=Dp6F=^f$C l^^Wo8c_(^(-V*N=Z?)I&o$d{T{=u!i{^2r=WBlLS`oEoa5(xkR literal 0 HcmV?d00001 diff --git a/data/other/cacerts.pem b/data/other/cacerts.pem index 26a90f1501..163f6c74c6 100644 --- a/data/other/cacerts.pem +++ b/data/other/cacerts.pem @@ -476,7 +476,42 @@ zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD -----END CERTIFICATE----- - +CAcert_org_-_class3_CA +-----BEGIN CERTIFICATE----- +MIIGCDCCA/CgAwIBAgIBATANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wNTEwMTQwNzM2NTVaFw0zMzAzMjgwNzM2NTVaMFQxFDAS +BgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5v +cmcxHDAaBgNVBAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCrSTURSHzSJn5TlM9Dqd0o10Iqi/OHeBlYfA+e2ol9 +4fvrcpANdKGWZKufoCSZc9riVXbHF3v1BKxGuMO+f2SNEGwk82GcwPKQ+lHm9WkB +Y8MPVuJKQs/iRIwlKKjFeQl9RrmK8+nzNCkIReQcn8uUBByBqBSzmGXEQ+xOgo0J +0b2qW42S0OzekMV/CsLj6+YxWl50PpczWejDAz1gM7/30W9HxM3uYoNSbi4ImqTZ +FRiRpoWSR7CuSOtttyHshRpocjWr//AQXcD0lKdq1TuSfkyQBX6TwSyLpI5idBVx +bgtxA+qvFTia1NIFcm+M+SvrWnIl+TlG43IbPgTDZCciECqKT1inA62+tC4T7V2q +SNfVfdQqe1z6RgRQ5MwOQluM7dvyz/yWk+DbETZUYjQ4jwxgmzuXVjit89Jbi6Bb +6k6WuHzX1aCGcEDTkSm3ojyt9Yy7zxqSiuQ0e8DYbF/pCsLDpyCaWt8sXVJcukfV +m+8kKHA4IC/VfynAskEDaJLM4JzMl0tF7zoQCqtwOpiVcK01seqFK6QcgCExqa5g +eoAmSAC4AcCTY1UikTxW56/bOiXzjzFU6iaLgVn5odFTEcV7nQP2dBHgbbEsPyyG +kZlxmqZ3izRg0RS0LKydr4wQ05/EavhvE/xzWfdmQnQeiuP43NJvmJzLR5iVQAX7 +6QIDAQABo4G/MIG8MA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEEUTBPMCMG +CCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEFBQcwAoYc +aHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBBMD8GCCsGAQQB +gZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5w +aHA/aWQ9MTAwDQYJKoZIhvcNAQEEBQADggIBAH8IiKHaGlBJ2on7oQhy84r3HsQ6 +tHlbIDCxRd7CXdNlafHCXVRUPIVfuXtCkcKZ/RtRm6tGpaEQU55tiKxzbiwzpvD0 +nuB1wT6IRanhZkP+VlrRekF490DaSjrxC1uluxYG5sLnk7mFTZdPsR44Q4Dvmw2M +77inYACHV30eRBzLI++bPJmdr7UpHEV5FpZNJ23xHGzDwlVks7wU4vOkHx4y/CcV +Bc/dLq4+gmF78CEQGPZE6lM5+dzQmiDgxrvgu1pPxJnIB721vaLbLmINQjRBvP+L +ivVRIqqIMADisNS8vmW61QNXeZvo3MhN+FDtkaVSKKKs+zZYPumUK5FQhxvWXtaM +zPcPEAxSTtAWYeXlCmy/F8dyRlecmPVsYGN6b165Ti/Iubm7aoW8mA3t+T6XhDSU +rgCvoeXnkm5OvfPi2RSLXNLrAWygF6UtEOucekq9ve7O/e0iQKtwOIj1CodqwqsF +YMlIBdpTwd5Ed2qz8zw87YC8pjhKKSRf/lk7myV6VmMAZLldpGJ9VzZPrYPvH5JT +oI53V93lYRE9IwCQTDz6o2CTBKOvNfYOao9PSmCnhQVsRqGP9Md246FZV/dxssRu +FFxtbUFm3xuTsdQAw+7Lzzw9IYCpX2Nl/N3gX6T0K/CFcUHUZyX7GrGXrtaZghNB +0m6lG5kngOcLqagA +-----END CERTIFICATE----- Certum_Root_CA diff --git a/data/pixmaps/gajim.icns b/data/pixmaps/gajim.icns new file mode 100644 index 0000000000000000000000000000000000000000..37516d5e80152b50a41bbf8885ac9ee0960585eb GIT binary patch literal 42918 zcmeEv2UrwI*KSWF&XCRSnpR!It^spE*GL*8sDNY;5D^s2p?d;R3`m+G4G0EQkeu@X z0um*tV9o(^4(mPDGlQ7-yLZ3;KF@vb><ZI$-t(SQr>m>GPE{Aqc5WLn?8sqfyN!b} z3|mMmR=A?}So)vd``v$kgpc0)UtdfAQ+xa~x%0;H<1mcs#l;xulG0L1x;LhfQ+D~; zgNtQ30!%@2^ZlEbPcKXOm{MZt%XjZzKYv)7$cOR=Z{EIscDoG9hs9<+eet|AGj<q( z8BH`^85ld?-*<61cct+}Yz`;5A?1`=*q-^q;1j+}<`~7bM0rLLOXqGq;1Yb4Z)9xh zeCmK#aKfSe>--6;6^2luZINqToYy$o@3%G}Fcm|`!%j|cWE;H9kc%lTO>%Uwx3jeg zHsWDQM)BL-9Bo}Zy~%@3dk%yIdvCKh1j!UbV<ST&V`D=-9D|Ali({h2!B8=gxcpLU ziC6>`i>-b6;QGa~Sg3$W^v%bQ?p$e$Hi3%8w%&bk`*N)q%DtlFE?vLU78C6S727R} zksNl9iu8)fixKX|4hX9r-n>qv9^Y8oaK13&fT-b7M_tE}P43b41$C_jLQ(Xw)~4Fl z3+Eb&%X8wRg%}ocs=1=PtfVmSbaV(*EHvSKX-RQmUUrQr6b?-y+6xQvbF;H*!c3r^ z!shbA-0a+fl5nU^czStN?U}N?W9T3tEL<pr|HFhhb`YcWpFB{}7h~ua@6;c~^uZXm z2e>xVwc*QT#|>ta)Zk06nG2^4)Zk+(bnTVKG5Gc%W5XVF9Q%V|lfH9T%Gvr89_CyV z6^!ncXWiGzG$?N6@;(+jIdr<l$be-7mU*}@>9@$Rzcy$nFL2b-)YMQ{TRE7@#VEgf z;Tm*xH8m?u9!6nvado<ynz|JOTx59Z4$x8W|A!GB4rtR%%&jbqW(=nBF$#^rrDHS# z+c<gMS`4EoLIcLIU-RC-%lno5ihhiF4sH1F=VRmrji^O`{MaZvrhSkef1t?<Zb^@C z$_`mMB;Z313l*@F-@TQ}-@Hp^V`E>ulOCa;?_P{;Aukts(cdkZuiwe&KYo1w?0pu7 z8NZNApRJ<+;h?VL=Yx;|S{LCvsY5sAc$q_oWrXhzBRGcj@Xv04@vbAsUmFhe=WyU6 zmc;={6|O)$USpWvd+ER3e`DB}|KzfdA2Hg;kHu;qKR*8T<Hy%};IjN5lwYBI{D^<+ z9|n3|{}5OAkHVGzEB2jTQ76RAt-=(9CFNzM<t4&kOsTl6?Z%_~*ILSogD`4Qc_;py z@$AXtyX8guF;;fjgO_jLzkKoR$)j6k+50e7*}0eRKD>YP>cz9i4_nHhp#0A3_aENB zef<(3*UO=x^y%w&??1eI^YZzVNB2viK=SbA>$mUTz6O$qw~>nE;)_?WU%z_!{ORL| z7bN>IT3-2+=lBce^QWLup0^)UIZ^fa*|VolA3wTx`ovyLW40m3<QS3j`0=BMNn4KC z85_>_!xZ(5O?`9fPY860$%?w$LNku@R~zYhV?7O*9;#2>>*aA^?%~*oee=B?>^BA; z-M_++kM%a*QgM8fyT=BPqch!o{Vb<PLMLZq%ZuA!%*B{Se95kLZtHP(ji}u&26|50 z!yN2wZLBSA!d#395LcGuod|Qo*K6#E-?r9av)Ic4I!KqDf}ju(_cgS3bl904v(|Op zI<L^f3Bm3_ZM`LCr<=X80T1grcb=j3aT{0Hwb1E8KMTw&eXR@^%=5u$dP~ynaTir* zX}O)P#Xb`~e~fCBv=(<(aax1GV8}AaH~^z^#9qW2Wk+d|wSzxd7PJd@RB>>yM=)zE z*WFM^GsL|eaC>DtJ6lv{>EU4r+J>Hc2s>p|0!6DgIYAkHzGINBEpDTPiY!-KY_*yn zfN2adiS#43Zg8=)c3ivOa|?I*uX`{xgOyGmJGj1qf&3kwPF5!RdolX3nez+{2_w3p z;hgEe9mY_zijIwm5l5qD6(P>8KG%FYLmUCkDl)zezrwiGalY<QBs8mFam$UTFK%4B z+;Of(91Kk&Cja`=SI_U<ymskAYgP;t#5LZ1{_^pIJ2x)3w^hbLLG;DDPaZ$%ymRA9 zds|~P6vUppap(Snd$+G&Zf~s>LxH&T+RfW{Zr!+g@q9}@DhQA3xO(mSwJR4dv^B+r z@5iW7i5KuojE)O!jYp%PSqZ~MQAxfT7tWt+J;^(f0Np(_D_^()-FS2@+JSIVbO>p> z+*S}L@`Yv<9@+fx#`&g(eD~7Ayp#<m3-XF<S|!n;Jgl#YDC5qR`nvjt`g1P9$4_`W zpDD=8$;y;8CWo6q(-0QisjI3vQ&(5pUa;R|?VhZ&NSu+DcIJ2(65qOg^UArJnlm-^ z?Ql0LX_3JFDKn>3QdJcW;_yR96Z5W~FF##%y1Mnk`Lktk`${jW%T78H4z_#39V)gZ zwX(9JTv7)2x%|AGg#4JWgZq6jEq~$poN_2e_rHR?-0Tx2B7c9Vbz4Chl$8{bg;`0Z z;c&)9^(7_6#YM8RjPybww3mp=a=cKbpdcTVvog}NvPDoR%&WrlRr2z3b5L1oZZaS> zgehlob8~XCv$HaxEG7RKDhxSR2L)M~P?VOMl3WlU0);kF4W}g~1v#1Nnb|pc`9+Z? z(6oZ1kEa!uN-9s6=4YKqhz#0`u~zO52nh`f4-X3s_TRqjFm?}PsP!G#n?(u16ltTU zO`kIMx1LOBWn-5n6msTH{7s7zgemtnI$VCrcKMt!{gn=2DwHuUsX6;LS{qFo#0KGX zmxw_B&32qAL)73%cag2T*IM(1x&u_<sPCMm7M81wXN>I42*Q*oV`t7^ICt6~zp#Tb zMaJ+kWB(Y|PmOW_Q=>6hzb={8x0j~UM6+K8(rE#h0z+fb{!^Q*<B2$hcx#J5+_)dj z2kS{y^-RI%_10M}zIyp$Tb#AJ`tT*&S8G%G7@aXQVe<e&M}2)nUQ<(QloQ<A*&1^< zO`<^;#Ndd>XlZNXIvO^UjP^w=nqY;bY?hY&NVuCb=*J=tZd*ZUYm9Ik+edrMx?xD# zfBHfT2L?10>VRQG<{og=*4EM*xXROW#jolhp5Q)j>~Bn(0He_c@ilNQTvJIy0|{8B zgK5yqu=Z<kH7Obz<YNWPN)vhnx=&wCO#(_7$hJKb&N*Yl2ttEUXQF~$E9g){x17vV z$JH3%+~5VMfTlkeS0~hPHl4*9H3=d^rA}VNRU_Cqi#mP;bq_`vx`Gb}G*#6pzXW1x z8qP*~y1)0=Qtvb9_c0Uat3eT6d-%8+^Ng39ESNEVXn!^OK8!-83Fs6W^$6xlKFQFf zPcq%_r2hxsmHDUNygtoW{tkuNv)AYu<MlJMZvw1eA}RX3wEhNQ$aAR>{d_*;Yd}cX z1JK8hA40yCw|-Lp__6hC`TOqjFP<(C`hIu${jc@Yx;>Kpo%*$WO4kF}$B!?jd@aY) zWe<EGKfX=>N<5f<_ia}NKfJrkM`Nh2Prs6vU5|58H{ZP~=_eOc++TL7eyYTWSMKP! z5S|3f$<y*lBLDWfoP072dLu9R^7rc?P^UiqviQ^SQz`&9zk2cX)u%G~x3^E9{_TzI zW7sc~e7gll3V0E`V3gE9gy_}PHstCrd!h2K&sPRsb&1F?9dbSS?~c#qneuY^@66BT zKHbhPf_(7#TyFJ61zuQvE}!~El%7oeOit73I{8uu-u6<U%d1aiD5<Kay?W8*!r#wd zrs`<0l$p{ecZ{Z}qNb_qB5Jwy^xfZ2Z?{ITo77WVT~$FQMwTcvx`L95DjPZ+ma2*p zlTMYfJKH%yQ=%@EyF<HzzNx{ZJUqz5Lp(gj!(%sk@Wz2f{<9dG4Lrh=Kd*e}CrAO` z^;60~KETV$VE}+e3@~Uy^wOt(P*6bMuaG|<0|Y?be*z^)v0q`(08jki`U#v+4nL** zKlu3=#w{=ik^hv|4x@m}-~aso_<TD)&Q53~r23{5V+e~&%8LpTFy*|;>T_3bUT&={ zPZVP`p`_+M{*?Iy1|63wE21%4VnxR@{JA2GOP)M_bic7Y3Zs@^dCq;I_#Bly>})ED zz%)x6pTBqs<DZu>WP;Jm!~3UC2{A@u<<pn1-rygU-@u^f8H{>5uS=k~xDBxH@ee9* zUcY*Q20xvhRe9l<cKN**uik$6@b`zeBpzrwTMMAP^6|@8?@;->H?M&Qm0vDJ<xgL{ zf+5%Y_n+`rB~V^*|HaEUZ(->5iT`|IIL0Wu`uydq*Z3P1GzKHx>1-@R<+abAzkEr& zQj$5}`JhsSX;waX_WZ?*moHw(>e+drOoY)3s-HZAa41W|(b;)Nk{E$eOX{C+pDLo5 zJ?wl?l`p~=a}AdSm3ML<D?v%;jiL=4{Rtsh?>~(ed&HETh>gDR=+Q$E+)Iew7kyk{ zxyS&X+x}eSC@eVU>*2B6Z#KS?y<&x_{>&g(2gjYF=&dG3f!M%d#ttdTdp2&^xWPlT z!7Oaw-o1goev3Bo(Ll)&j|^C5<c}%LF^x{$y58Lb-_YA5+I4XtfL+&YGhVZo98OtV zc?#DX>-k^`hMu{BFzj>Zdh`~pv+~%x-OXdmY9}v}3=N%Z_yH^C3oyk6#HsbJ09?;? z@3Sj(?Yi0auD0`CT*6&te3q+M+aEBS0I4nO?6qhZ=*C~)n;X5$#l^wJnH#<iVC47= z23Zz10UREtIDh*o|6QJd<h%7=w>~gDJT&aUPT6n|Szc{nzUF`l0EaBu=o1>Bp6JJ4 z*IPP-B*%&}!;aep{sCJ}jRcs=<azqWix!J^+1fj-#a(-%!6rhY;iBDYvz2T1I-40A z=}!p27!zEBEG_McwHhuY1X+dPSuJ0_eRU8<UlnU<=}5R}fHpY*MV4%BOqL6lfN;?f zOUpHcGw#GjV^dkRR+xAjBUzk{<r=P&I!NRq8|#%TcNqj>G~=Lkmb^9Uq=1YC)Nz%q z=X?-xc5SodIpPj1Z~}q^0xL5YCq0lXbn~&|!AMpW%B2EJGtbqKkQ;9vWW}?`?NrHP zP_SHWwtZPJMqMPd;@eTWjcHe#?c_i?C(N1;16>su=%SG>1b3S;D)x8c+u+tJvO)`U zYj=GpHrV0Dx5lk-OGQ9hn43ASnG=lBr>ymMv*AK1zM5iTftynuHmwT9dMt3<jQjfT z-0J1A&c)TueS_z=tsagmW`<*$qh~HKHn+5OaB_9BwKO+1oHuod7-MP-95sIQAeE0; z42Jrjh^Rx65zzk#6B6?)s>`wy;&zKMmM|`{`QpWn_6z6R%Hrdo|1mjKav8s(c=^)B z_VaCLQ{$pA+M&uT*YN8~*I<wVWz8uu&;v!KUcG+f&huBduA|a(Elmjrg_xE}{H5zR z??Tq)9xCqu@aY60rY+2aA@lQBuU_7}bMrbHC$}^o6++Ju-*o-f!xyh!J%4Z)@Rxw5 zISZ91v|qpV7&?zfFz&t~EiV(J@{3UZ^!ek5pYY{zsJ!Lc&3l~>9^C)LpBDk;v6WY^ z!&v?9-P<r+C*5g21w4$<lb1n&-%`GL{Tk_g^VxXlY!0<tz6uppmRGd7Kn$h9$J#GJ zM3kiwX=$#F+Z}<?Vv^cB@QX@h;98oSj)Xxcv@bmR$nh5Zg39^xZLQ7CRSDvVFz*no z&u(E<M)SREwZf{lw$@fa9~RZLoG(5c5oQ8OirvvC8t+_dtFLc5=C*SezLT|Mqiaz~ zettz`Q+Biv#;pUrq7pA(KiAOE*jRs|0MAZKO-)HUxw)_!4VZJv8_S}?{jnhj#7)=h z&p>tnQ0>K=Q)6PHMWL~tS#{*FIy1eXE=4Hx!G?;`uD3v%pcds3>d%+%3{Opnh>GF+ zN$IjO)6>$*N~47WOzB|GmD8uIssW4F^{s7cE;#5G7~;P^B&Vqu#{Xzoo|bYdtuoe| zj}1?_R#8z&g3r{}o~da(SD7XBi_9!<DuFzL9GiTqL<l)#VfN+5+G>R6*7T{as%ma+ zZaUjoMJ5FxpMgg9r;^f6M?#mhE-Jm`Oxu-9XYs23)c`$BCLkcwP$bP3!0^6UA}Py^ zfjNMoyMu)hk&%tX898~Cr=_V1ghYw>oaAFi5=)Q8ioy?iL$~C8s_x{;9K1qHmbX9{ zh-F$#bVjVn0j$rVwxpy&kV#MmgJdA{5V0`@k<j}@v?nDM5oH>X-1sEROb{0eK^WDR zda4*N)kHEWEz~|U<H(_$Fp!GQ<eVxZiZzf3nIvWD$Bw0iKqn+DEKMPbGz&?QT$YxY zd>nXb`%_P+a0}G)^HEAfs+N|Tm~jaDC}Bcf8j-I70#bq^2#Jv6xslMpL^h^zbMYJ& zN|0ob<)@D4L)wfgYDgz?@NBlM928C^AI}jXNo6)KOAXQ~8R>`z%9D~)LO>wQ&nGhR z3^o*_CU`12Iq76d;vVR*wx6uX%OKL(WO>Rd&^UQAC07i6R$yXUfuy3O2&JO3vU75B z^K(-Yqj!X1T1u;T?hh5mB_tj{nRw(-OjK~dmL<?>jW@J%F`G9Sby`m_CY8?8P*<iV zU`os(BS#Dy+`k8l5{s!)dQX@<W%7hEBL?+i(_=6eWx({m<}X|@XU4?QgL<jPU~DzL zg^L{1DpncHo-}HJwn7x-RHo`LbFDmc#@)nFZ~U-6s!^DF&$)}OPL)@bxL7TlKV{S} z8ng&ZgZ9TlQ{UX;(xV$3R~pXvbD$Oj6;9M&5t5Rf>$}Ox%xLDALE21IIC-IIXnbPe zu8rN0)Ia7fS?{yib3+$rB&PQ34E^P+?HuhbO$}#(X%={+G(k^)vB?V4C7&Fm4xKP# z&I0{~b7xK*J-C-DB^qPVhmV;sW$KiPV@C|?twtAPDhh*#jTkv{_>f<Euo*F!CS6fW zp=ZDT{rdFKP=+xjU7bM<!+Oz~W7bA*o;|KVo2{xy!>BVx={xT>>P@ExVXDkQc0n7a z^w9akB=+C|e81|x@L0<}>Y9@r*3Mwl_F@diVE&Fdz3?7v9gDt)I?kUz2R*XzPd$`^ z(V6LDs!9#OnC!K@q1rk+2xO-zJXc>|S5sNLzxNUV;cVJy$1!wYNCQndppR?wbXXR> zw@S`6ovEogwTk3XfK(1kV}Xg54@NiS_0iJ8wYfU1(W`nIMrD_$N6hYT+Xsj!Y%+(_ z)1s#UqxRpYjca*pt4?s3&}WAA<i4}4`>M+^bX8StQzqoQW^w0_9fWHMv=w_UgnOx_ z$#_j%ouURV;Vc04Tdf9DfJ&1%HXHpn|3zAbBoz+nC*-w4uPOS=P4v|0KA0kv#!z;c zp`oeC)gnlMG8!GShOQpfn@NRa^yrlu8k)EkSEfv7tE$fF4VSi-tGc=dkIZP12`g2V zMapp9(!JExxtd%^Ye~~ss*51?M`NtlP!niyN#itC^@VV5XtY&B)Ok>bvRgEkYX7Nl zX)|X}RL3>=@{E`2?<3$k9Hp-&Q0D@QU{Q4YLV@-wHLf}jl3)ajs;Z|7B@8>Zw;C6Y zArCf(0R?nx0Pxsc6bsf&8Y)@b*9VRXRjST-DjZYweiN{H=vbxy@KB64YT<9{J}j;( zjn#Kzk5Ej9F?`yBMaI)7j2Ss}z~G@HMvt93ef)535vES1GkW(QIP~{XzYqDPmo}Y7 z{fJd#PGllY>EB7DF^t#lbud6#lYjF0rRFwDiaoiTqWTZu44=CICO_|PnEX_MdA57r z=Xv<g6cW0_KYn~@{$mBB2Xbd*zi;*Vkpiu2dQz_TcixZi`cLGzuHU!RexMNB1?&3q zobv;`qzm@xi^mV}^`Br}-?%@(pX@?)eR;Fu2l$;`$)PU%{qaA*54zKZlYhDT!)8|{ zhsl4x+3^E<3>(?i*klS<e$qyrKF^TdAMr!_-?z1)>GrPAhbPqzTHn)9-*x3dcd%6J z{oS+H%x|cuAG-HhF1X7EB$e*%`BH-w_NW`+tFQ0xuKg^mV{d)!$mdG$>(K<e?6dsq zX8buCj{d$qTn?Y|c?`dT$_j4CBX#3@h|kOaPLvuL{_yki?;hQg;uV_jJ^NX8f#dnD zD0u}mXWH*Cc=COn_jk`E?3gEaU#6vX@4Jp%@0J3U+rY5zSG)WZsN1)5-{lYMhWhk1 z>wEYQcAr4qzWIC)|M>GPv0TOEi)3+^`n_&VM-GPHe{^;sKK~+Ld(sVyzAE4T9M*Mo z;R~Sr@M;(0^Dnt_z!$&Ieh%w83itviKm0~-h;-h5r$?l0`F0EH94k+$%ZVZLO=l{q zOnuztLiaCs*(!>VDgOk9#|;G~Rknr}zw_~zCO&lDGt<&wt12llK55W^oTa9z-Lv1^ z4apa8cRuKR{QNNt-*2|YJ5BE0Q(IGw1tvb>F$!HlS(UA>sokSjpMJmmI(mlTD*b6A zfBmIjpI$w*HPwNhN&BJ_6sUrd3X83#p{WIPo$%4p($s(_Ib{U~ts8Z>YLH(k6e^WU zLmw)YLivL9OYqN+ojp+kSg#NvKg#|~#wgiEL<yy|6n+$C--i)geo0AygjQ0LFT9CS z4-}W;5>~~zi&t;nef03|jVm3k6}W_2T72Ltrm(xXR3fQ4f1CdVe~dp;e0bwrwM0@{ zy!#Ty$S;vd&fE|@B}kFN!-rREB$AT+4vbM!BB{Cdl=qAaGRkAn17YXoYDr1Sd5jSQ zBj^iH{hr}ZaZpqyGo=sOB$DEoR*acaDyg{s?3vGV0_2n@U4YKZ<&x5rW{jR#DyhED zdrrLIKF7a++^Uw8CZ5G;C6cPg_;bG(I3SdsK7E4nwvdj+J8Ac-BqdFd5SCOtcn%bT zm&6Oo^RH01DkNnMkP4QR--hKo{x5N0QbFr>x-ngoNDAt}n_|foz~GQwX1sn2x$0N= zOUettqXaU-Bf~@|twU0rSPPkPNj>D85t{P)E%$@=TS!r%4D|Ev>_jKER#JQhV`P>{ z?jkhh)hqlp_KyDnf2IBzTt<FFQj%GNDV0c?Q9}DAiGDBmpapA@KGDm3=XO$?Bqh}t zE2*UXkre&<^_zFzAMn>2BwFT+G-TlU-SU#8DonLVf@T1KTZ-0s|E3#zS51MvK~hwO zsgy{rlH`DX<MRQ~ayUs(`ttB0pf5^FPGhQvN+pj0E+yxFp#1$e{y_)Q`$&nbFc}`w zB`$a*DLqt)sT4^XWFEbFOMKw{-Q$By<CQd`;1sFB>!j96iYhVHVo8VGr+4p(5BT4` zK74rp?k&tBpg56dL0%EiIWH+Db*{;E-ouOr_wSxk6_|NIo<VK8sazyg$|SdCDsN>f z?@24)RJkT811qJH2Qrm+a?iTyeCgRONhwsnRPsbt{dezhaIMeZFj4aEtLn%@aF0|f zk-(e>c^2Qk<G$|;^_QxABhV0n2S^8;dxV-5oSe7sK#6#Vzt#HeY?5()_z)D}%#fbl zm$kz;Zw2p&x7xCkFKg$rlMnD)k`fYr>$%Lp8=trMn@`QQ+a(0(YlvLAL~@awwjo=& zPdBji5+bY1@1$Np)aZ(MMsmNz;R@ouAzq_P=_Lz1>AK(^J_L9pI&;eTlGD$+@ZPUM z=OtU_w5%;5>}g5vY1GHuhG`;nslW7lMR^H*gle~|m?XU}DXYThC6YEYp#(_cCI1xx zKvp*(^bSDTEGenN7&($kSRDwR)(c;<%b~ylOw^IHPJp7_uaFc}W3*C9`%~!op7UN{ zFZs~ZkT3<=<&D_ROG;``?^W>#aKv-(7X;Z;c7xFF0o56dS}JM9pAygfptGesh2EG! zhVP-EliDIFsm18f!QXs>Kjl8-KIf6$br*mJXCnvtKj>;7!qk}0GlJ~QDUTlEq^qzN zssXuL`v`v$K;9s_M75H#MvQ*4RMPmE`-K0LN8UV;7X3lJq&TGsV`hWw;p4}CPl(6F zBg#YYhkn07Qkn&#`35dIlG=xRK!8Iz^KOkK&&6PVEk^spz|aWiFsw2pmDe75Kjwkl zyOVz9v?SdM=g^D{4gRQrHHrF008(7$7oAyCDUqD>dqe<A>Hb-`rR5ztxO*vr8tLm5 zW7P4m0+6F>zc;O}0rJ)rd1blh{U7>tvhGL6mYzyMY0;cGt`)(d8XAtz!+Op(Fye5Q zY=|goY;0)AjSkrAzTPi$*3K&aL%+^mcMcipp4{Z<;Iut34&_ph_^w&Z;TRdr&cf6e z8iJz3k%p$m#+p;XTRc1ncLgGAg|6=M$O{426fcI))771w>IJh%>h|`|xF`h@rKx)@ zK;3X*DyBXRsW0VaH#Id%js|#c*g$wN+}*bxJ+}RzE@PsuWqh0)4)aXvc6JV14kSXp zROp6G8xBjtRP;gBMtHiZsrIOV4~jbO;>3e%btl>{nl(#r=FAy0rca+XZR%8fvcjwt z^L4HFC4?X<+zz)@@eE2%ITgRd1gP|nW2}Y1<et>n)Knbq<pEQZ*hXRl?!n%5BEi+! zK-WJqB0?k*3h{6aSoRjQKQO@0M^D$@UVPZYK}N{3u~{QHoSbyRe>G4pJc6mrhKe~P zH8s^I`?%vkiEo5|9x7pp{?5+kx;rAmLqfR0ng@dp>;pPqZ|)>rduu_$9yuXyqiSul zMR@XLqQDfYJ3Agzg6f)y8=C54HsakFsd2|P;m$PObwXeM22FQ2R~IKodnevD-Dx(~ z>*K>e@!{6WRt|oNiSb((L#1OemA{NQ%MP4rsz17A{dxiz1>m1j;<0tk&YN^C!}szw zXvx@Y*X&-eYh+{X5Fgc@4!2Tr4Lx==avjw8uV_qpo*~Dxrl~P?mm93cMJ}RqA|)hr zIiUx+8?@zw)=t~)b<MxQsBCHJ8FA#uK~s+5yhu#Zz-VzuLu0=8IvgkocLL(b^%&wF zcg)M#IY4*j!Qg$qo*wJht#w`lD|c-@wrp9c>-1H%aVx@7VS7wM%vxx&LQJ`zA;&zW zv0mi14rmGR)Ys!TclWSFKWAsZ>AIc=gM#+$kWo5q*}B<vfv$(m=cfiIry!MAueJ@0 zKeT%>$FN@*OjvW=B@N{~SAt|E+yx%E`=DLNp#?ePx|63a;splyZgpSl;=X0uCX1<) zCR*EClPw6hC!j^*FxiRbHSyI77Td(J2h2Ezp%~MEv$eh<Z6ofAuOq<K0QW)bV~!nk za$3t@s;fKEis#KIcJJK2Wv#xhE@!=+4Qk?_pCLquTQHqM#UgW#K`^FZVB}cUkgyh} zp^=~5^?vSs*00}k^k^WOQTDU~*5!5^ykJH_S9h^Hc*XFGk6ZUGP6hMT0nx!Lj9?0x zvA}3mQQcvJBqe~9@6KDVj2}N5<cubqH*y5J%G1|6z>Ki{zWBpl@{90Om2nG2bMw`E zqV_H~T5tek8ZJ(&%XD?Y*Ah@~u3O-G1!z%6k4EoULpUnBI<8tUd6A8?6K>0}*%BEa zx0#S#gWdUXbB5)<2w#rjeoSE@$E&W)!^MRFJ_7js)^ptyHi{FE3U@n0w}j%aXzQ>u zEdGedl|07nh;HWthY4k-nPsrhfwOQQ#xUf>)rC3ZGB!TcR^ZkPRuy<B96NeA%zM-N zwf2rKZeIM5_=F>|I4&dnbb<*uABfP*OGt1GNy5Z4VQUGJkh?C>jk`|C)r~7UcJ%0x z!-t6k=HbIfj)d%V#vQ+1Puz^|9u|O@*hZXKm^UcSI(aC3AAb|nmbcE=jkk{L%3kZf zdyg>s(9xrDQDJ^NT=6w>zdo<1GMokHP5xnFn>a@M;5=}a2PRil6IJ+WW@$?70b;%D z0bqkTy5P=)6JqJ^69LUvef4U~HJ-bC4?=et9=ZiC4OlIz2lp(cMV4;c{X*lC$}8~- zdU;`lmunz!aZ$x#%>p6w=+mX3ZE5MT!zU;L^}XRC-rHQE+cz{k080Q2jRYK}C6*g~ zqcS9te7HEg*9kr&k~>AfHO02Fa^OWqM@0z30=B!`ujF#5Mh3rzU<xDV>KnpKQbt^G z%{{sFu%(TiqZ8qRtwCH|a0*qBkhKpjTU%>$v=ZN9mFcR0$OxX7v&CYZ!!&~XvVq}v zF{TXDY3L4WQ&MOnu*96XuKaE!a))R(X3Ljzm(e$c1(|VhBbuSXytyYZ#yq1%X~pZI zVOUb(RRnKP<brh+5~PSiLbb6n!I$I97`Skak-_*hjBdn<D<=4sn7#K}o(zthCCJ+w zZiB5raGJl+!YBiQ_ZRI4uoG`BAHZDTmV;3PpqiNgJKZEWd<jAua&{Mr`IdezJQ-5% z1z|&7O(HEq_i+pXsn2mONa9&yHr_6Lz;c0AiX~aCtxSmJbjMI0M?V8&=yO)(<ydpA zFk7yRw=+)$M*d3MAZCi2FqV6SZ6?w4IZIOV)^jZ}J3kW31!95>1v;rx?Dnv=ocWn# zC~|iJ)WO@C@5Ecv9ZFbZD+v=CKh(-73svkuP5=bi%E}RU_9dZQk`;MCSW~T5fe*C6 z5EDZH8*zwiA+S37I`P-=z&sbsOM%L;493*N#4Kn(2hkdE)@L1oiaGL~yaCCTA(5lF z6=sH;((Quy9D^*>cdX7#fx8jr7yv*X*yaKy0uoZ7YtU8>7-uZtEKf>b3x$rpYxn@< z%76qgD#3ykQxmVCb({r&oXS}&PTNXY@z?kOjt4$+fsg<~z^yPf-F48GGc_AkCn!yT zTVhrLjslWS4x>V&#!YG72UZy6AQ(3_h_Lbn5YL_m&T&aD+)}~9)O6*Zy^8>(Xvo=c zD%#T0${KeJaNvV$Tp0}Rv*s&SSO*F?hQMXOu{o7USRn|{jt5?G!7Bn*?pUl?;S{)y zV*peJ9Mj{;YpkrSy&Zh)`7$DSEVWdEImwkPJoc<7Ve>dkqfTzLw6qSi7XXL{P9YGw zS*}>Ib&msQ9_iMi11EL^mp_2`;1aUOwIo&}r|>=I9K&2p0V;T6kCl}T-`<bJ@Z=Z^ zi<K*V1C|)&p*#7;#8BV~v=e|SE@_Gj-8N(8YF|FbkVH5fiv@(QosTUa5Ik^(yPB|I ztZ?w%h7d}IoRtYj?VwY!3$zv3@PGq(!nI(UuUzNnPLk+zmWz(KSy}G^0G|YK0ia-R zzS7fs4M!i$%;hZEdw83bjgPG_Ab3E5j1cCGRoi@4bLIk~AJiv7U}e3}Mj(@OLC!Q= z$@N}t)Gr_P;hqWmAS5<E)_f}-=u72h76Kl}umEEiaa<0CS_y3YtpzeM*BovscKodz zBM=*Ktm7iA_JNRZ$pc-kIblY3<Za*>fN%k4Wo(R<zqN0dkZZ<R<;rvAEClH+&az0c z{Q)a)P~?Fk*NnMpl{?RY^A`xmau)52=I#X{Unay?G0e8(7Mwo|F(m_zQ*@Lt5chQA zS@~HC0Ko&Nl+A6{xOwd)aL+{sMVR^&BaZVvA$l?o_aU~pJ6Q<;$p@sGrK6kI4la+! zC3bIjH8q-E3@@2L-)v&L0pAxMj)(OR4cYI_-LYk(n~Ni?ptH8JSZ!r(V`uN+yw1aG z>kdMo!sl_fxjR~zEaDjIm11;-S@R6gJ#4Y9>t@{VVDQ0%cn}850r0(eAZ<@TfIsf1 z;_Kt%E#TvuT<uoDoq=woKVMI=5~FKQouhBa<McDNc69aFyo2C-`}q0=?D6*z@Q7X8 zH@UBMv@u)8MfkZ>H5)L-Z&T*ZUuY=gFpLc5|21`ZJEkyb%;cG~=PlI74QPfiroauA z^bPd&=gplpbu6s<`1(IlS6MQwR*Q^^j*5y#|Dqy=D03=|jtUUdqN0T;bGj}n8W*$T za*8X?G_<ugR7;Ao;&3rFI%?fjOi3>?S}Z=6U)SD2w5wgXfEG8jwN~XE6^o-I^&ovJ ziV};D*KjWq9qR4vq#RajwUi$di=#vxu<9pTeC)K~5`Iymql1(q^_G^>BjV@?$fE8B z?ShNmm+?zlu$&GdNdA_Vv)Mqf8&awJqs4L6moNKV>2dk;rAuhd9bnEQlIG^pIC1oT z$fkOLk!Jjg&()q+u8=5T>H^h(DUY)lJz9LE{R)1SxQ1QlUh8@FDhWk4!6b6Ixw+x6 zIJyZ_h!V%QUb%Yh8gZStfnV3Sb`7w=Du=eV;LWr%hs040n4(Y|TYnYaV!Mvt;NHY< zXkNb#XdnhKSrwoKa7C<GScfU?juuw{?e!Zs@SA;Z-MaJW`RnJmZ`=SKxeD^6wS{P= z6^WyF*J4VM;v}g8EV`rKe)x)bt^N4sO{oUy5$QY9pdJ@Tp264$qQy<%&W)QlZ{5Cq z=Na#{_N!aBZh{RkK|0lC;j}pVKn=!<5@*WsckVnRUK6jh@7x9r(y7lhsHx&8NVs}O z#kQj=fPp)Ao_HfTiT}z#eQcCBWLzV}siXmb-+ko$O6SF0;70~z3Q~u-&D3OZ1i+)k zmB@WWe*dN5RgafX?;(Xxc(TSVfQJx4&UJS*=?+r3`xJl4d)4#h!+TN{xrMG6(dr?p zm6%$j_>|nGPL!|&r5CUU@{=8O_PYE!DUJl4C~+~;A<ZBi?yFuepM0itxw}%XII0p; zj}o80dX22iJ!$@qc-89#EWL*HmY=HB%~Ubc8XYaJlWBEI(|E5Sef;DHY8B#WQmq9% zM1gqxRHpaxIa=s_|5L>-U+QM92C1>4#po@}8?fB-@zbY}kL&m1#WPatd+}%>two71 z$zu5E$rDh7WFT58-Yp{C+Z&v&CZwhkExsUAd-xcCLVfz|Dc;!=EkNz=qdbtjW@^1G zjxBIKqGoaL(WA$YpFAQS^t=x`Un#-G14?AY*iqs-nbPh1;2Q6KPiPlkX`t&3RLBs* z#ZYotu5<eiewVn{6Ex7d`l9`jI{C;qR)jd6)Ir|ex{ZSten%T!5^@z;V`^>TH&au@ zB2WnvCtUiZL)@m^xr5)<hKqt!`Rqakodj_Rv~y?_m*qM)y>Dp)7A_(AMJH>mP?1V; zbQPu?CC&j0P?c-YF$r#JNjn+D{HbXJb%r<+z@g$p7cL=kw1`)5LyPRgx?{-@(V7m4 zgR3#6C~@IMDH^}Vzm8v1Cp%Ipuk@M$Vrc#_lM^mJbpGNc<OqJ1e+|E?Chc+2>6IgC zjfceHXE0{8IJ@KG#Y^~Q{0i?Xenm~*)k}e7>@vhrwHPxjN?g;?aS^{nTqdp%m)YbU zK}HCE@}aX8M~Bv7j0o}JwhmZo%)NwN=3QdRZ!XfV9$-y}Q3tLNEk1F+y}hHu_afe* zOx~YR7fcd09T$rmF@=C=aq5K&?d`rDc)ODP{)YhcvnS#1(}dB5QQ}i=_ywPK{DLBR zdjv<2yeS!6X~GnP!T@oi?fiM~3&eRQ-2adPK{K=dm^exp76e(}jlu9hB4S3wh~q2I zofDkL&*5z}00D|FNf5_G;38Uhc<@HZ{rZL=sB%nY%e7mnVsTDe8}A&^hPP4>Sg9#Z zEKa@LR$UlPYJ~Vg3RoBxMu^x+)mI;)iMIO{aglkgtwbBQ6>srwW}OuV#T8#7?{Q~~ zjuIkjSeOtVT=#{Bi$qb`XYatQr}FJfZ4I@xg%K`+Mcyqw%_@yYH#mgn6c!X#)V1PQ zlrFbPlF;*4=)NpWAw&p@$rm2sk2N0NY;S~Rj&-%QXC)gQ9JU-f9Z=h^I(EH-gG-qN zt=7%YE2wPhfJWI-c^LGCA*q;x7t)U|xsE@k-M@CO5pTfj8Fh6HS3C9|bWmC2u)U?N zgw)K#b6I7z=b<sxr6S`(uOy5W0=h>V?!)^n*IFAIaL`sm4qUp_l;W^v|Bm(RA%nDz zPQIjpI}dR3@Y&=LSl!wrB_x*tXBXFAXur^$7Ymdj$6@(DFs66lj~I8ME)5ObMm3a2 zuRD9~LP_y@hm(*$$8(9C;pEHKr;<+|U+)l;*>t`X)lIst7*-JHRJK5SmylIFf(?be zOGJt7a4xR5)Ya7kX(MEuQNF#tzWs7tN%3ZfIJD}QmpLK>))7N8Iq|5I!}0X;*1FGF zA%R|84~-QzatRL$h{qJ6@^MX_j~-scYZbeQ@kSORzI?Hwq<FVONNy58W>j<}q(MT1 zLypBdIHjlOww(Qv7hWc>Y->B49SJdr#k2y2qNqyfL$B1GfmP~KYHlN&48*mL(&Azt z2mhQ@Ud*3SkfR9=Id~u>A<V%&Jw3Cz<!k2jwA|X(mbz1rNe_(1*umkVl)DcfUT=Um z?13Dwqtw?68dM>~B=dgQwIPEWGd2ob2?OT+A#wX0wtbg6Ej7Qsx%qUAC_Fe4(-ekB zRCYeR)l^koEoHB(!|S=wpyt%oK|qR&qa55aGSiY`V`TI}2O?s{d<XCE1Vy@jyQtx8 zeG;@cA*SvTCW<}Z*?InSmCOWQOR1~#uE*;X+b`7>7o|Emi13U_X$fS!gARm<V`C0_ zI*8K0bu!ViakM@>CAG4tF*iaK<`IUehKZ7Iblz=%_X)rPUPC!^28S4N>xsI#wM|#g zmlPH4b#QXoc`W7B$+*byu*lfhXm7~;@5o61sue<ekz0V3=7kN7<#D30P)s3AlzzYS zT6HCUnjx(Q4mP~&h}t<9FE+w@dl6i^Yy6KLPds`!K2996$-%)RAT2$;s<rW3Czq@N z@F!=~)YpK4VAxF}{OIk@4tUR@5>*4QrqtBnXSlTlm|&baQ-7tSo+zAtVmnwN_KKo{ zy*(WqHXcID=qp>=ihpP$DY?A9GA2AY2vgh}F23@hqr9R5ucUREA<lT$5@%Funy$1r z6ruM6#2x~N;ZFN9AQqX`E$1cOFZ?XD6+-tACF4nqiaK~pWG}q+79P>|;95mF7^s9u zQBXbb8vipy4YTobM{8w40iHi4!hgHlnvMLhWW-e5(0Z<1+R1fw1Ya6RN;;WbSz9QA z%`X&#MXC31S4zsu@d_G>6b=@M8gH<GSF6-?T)J@fG`#r$RCo?0I~&hpm({hLZ-K2N zWD&x1`pdR+_^b|K;$%`)%~26-<3SG-HQsN<B{WnGypn>95Y_%QL^WPDyYV8tj?`FP zR#cFan^#a&S=Z8b{v5nq(q(|$KjNzxA^sC5a%%EKVPHTgx^NE+;N=u#00(|<HNS=n zxnos0DGle~@e_KiwpP52dH#I+*{b3qyl}X@20t>8RZ}Vw?!&0zqBi`V!maC<+S|@H zR3j5al|RrEr+<MrS5DV8wVl6k5q1!1sjn&{H_YgAAJ5VHR($Xzg^XNDO?8ea9Fp*1 zB5_s6UBNwtJ6GFV8mdm8=0OE`zz&uw@Nyb@vjs1ObwP+5FVy;$>v)<Hx{6O_<`qk- z@iUB?>Z~Y4PT3cRixeY{rWI7ypSygAdzX6a{2BbTAFvZ7J4GVF%V?$WdJJBy0B^dG zuH$*y()&`k=9yPqUX9nO)WXX^g_$SGJMVs&6ozLAfk-L(Xjb{z>v!+mtPBKR0=y=9 zVbv5~!jOgpFHrh)d&09crOh(4tf8^tOm$^(X7XV%R|Jm@R*)axeGvBffQ>%5B8`Zw zD|cE>re^1tlu62ADGEe~^c&818A(qmF2;)(a=&|!ey5#4FT<QX8XuQmdnWJHu{d~? zVG6^Ap&_9{$d?Bqc9AIQ_Kjr0NvxDt$pwcIAzlj0x)2`?@!|Ol>FpHH);bo0@)(hk zrzDl|UJ^X5ga!*wU<&)fBd*@gJb99vgr(t?yb7Y6AZaKloHP_pynu$Pjpr(nEiE11 z^oqu#7@1W^!^4D-OAi;FyH&<d!gBc)T$v9z=u*&`rlB*9=P{(`0?$%DBu45{`PFgZ zkO2=9)!nKiPU1<_l8Op`IhVBDrA$E;ph>S?1+oz)#>5cOw9@LxFi;K^mEJtZOTtd^ z%Xy$kz=@Js?edt0JjSzBGEa$--9zQ&qEOOo`pwIrndT$mLd1wqdKBa>4S9=aGf>k> zjm5=`n8eBg5tw9zijLg4p2khaGI<hS8JDz(LpAXNQjvms85;5w&!l9;5n_7s>2zd~ z5h#keaw88Evwc7f8T?X>?3@^=NgV={^o*JlqCim83lp8cE&;_nZW+In3yQ=idw8y_ zf^4!W9*&ER73bC*3e$tMzED(u{S4^kdxI8NW)6qi;kgu4I~uATo}rX}EDqF)tD}Wk zFiH?ft~Dno<EOAfywn@iq{h0bQBd7fQGbv0;w2TLFv#HxMcLQdxu7K|;T3biK?2TP zmnl+*l97R@D<&R_i#t|cC<0>;%;Q%trxKv$Tg)pWAczF$kTJxwKj~1?PT+^=$(5O+ zP*6H3io19v2b7BV#rz^}mmwUgglADumFVbpeG+uiPbY~Ef{vdks_k+Kamo+yTyTtl z7$7`p1J9tOr{iggC*uzt%Beac@`G%DxTxXsX(EMRBmg{eiuejoNln7zX$4g=;gG5i z7nNVCCsKS1c?H}qb{qmFBd4aOp2QPqrR5QTRtyv6UTir9&nw(QZ@_cOCt>7$7amVl zNJ@x5R#qem19qV(`C>bs0<E=x4`}2I@i|&CB{?A>S&}Uh0)2?+@P&@dl$5jp0CV9X z8&MO`9wGjC8lI|@l9F`zaGE4V6ar|WD7K}eFf}#ZJD;D&1GJo43RXt%;~h@ODnCYY zhl(QW+a)O}>HdJ_l34VLo)oJBSO6c+hX<rkm@5buRbHqDW<j0+u-t3{DoBu6N@^;e zf}dh09XV1gi42ECe7Gq8d;?(pa``0k6DtBLBqtv^R#GIAB2&+|q@`tWbA57n*<7d@ z4zB{DiXkMP%s7%%l1(DRL`U1srKe{2=I{Z>C2bQjoD#fDm~=F?G*uJ^)<Z>y8ryPH zGxornhzQr64<2TYW|k(3LIEcf#hhs?PRsDg766V*;s}{tJc)VoSZ+zY2u6Vl9^nxc zt>vj10a<(!hRhPAdvM=`MJa`)QQ;miy&x17wAQ3$3bMR2c^TYvB2CIhz#|mEP9zo= ziG&5{vdn0yOUv-j<O7HcAUPL)l6m4pa#4;b3?>CaMJJmZ)A^ac8N4nKV!}`2C+I0f z&=CP>pXl(}vuXYr0)TLVhk%d~B!qE1y*Np905IO7xW=Z8z3DtaZ~-AF!H?53i;jtW z0b(bLsBV(@rhBLHx**VxpCFFY^9m1%>|qw-peU)a5gsQBvV7C{0OA6V)RIziYGzJ; zQDIs{P!SAV!$l{`Yhlz`&!{LX%FhBYUj}BLJei!9nOi{K*YmSaMu)k>WW+AG@kJj_ z$uF<1<JOL>E-!<9Fk#~{81%tQqVQj8Dm0HQc=fXoJrlsKJ0~SEE?OiC+YWOPzxo6Q z!}A0);z&|vfdrlu;dvA$=!r@UZeAGNMifd*3NoelTYC7xKwcl1g&5=M8x+P9^%EaC zaVkAKzo?|F6dpJ$V5>oRAvZ58E&2G7xG1iO9(KUbb1ck4Ec4>-f#ijV8FnyGuxXXz z1+1^Jz1J?j|GuDu!6BicLKr}V9E8P7dwlWD&IVskLVUzNO+z5*ad-!nrJ<$MqgM}2 zwz49l6VqgB^!shdkii27z^e3~I+|**(aar;qR<~7sWD>2@56`wHhAE#Akl^$Y80q9 zFe>wxKe=Nx{`_O~s1d`54jK4M-(EVJY!wCCHH_Y4?0DS?_(ZJ<6LiOo{d4rl;X?-x z=-(SGf%r1K6gz0bq{&mJ64SJ%PMJJWcifoKBZdtb*uM{Qg-N}L4Nw?0dFu3;db4KD zo(&7fW=xwhNq5|zqlW)B@E3$pVo=&KMdtXaGxTQ9nLCe|uRU+>U$bUTpE7a$m{Gs~ zHn4wh*hNQ?egPXy8#7(+FPOj4hlv_PLj(N<^XAN&Ic<{en9&H<OIuw<fqD*8ri`31 zd+vOFL)a4nU(#doB3PERaNb{f(<keW88v*!fWAGE&2!jqgV4N>A!qT@<tC<%A=ypo z=8KFC7R;GN0*4L$rH>Bm&O>d*hO%bNo~LiLc$vwHRpx$YnjoVfT)u>32+(Ph#{W5D z=)iuxwAf1YR!rp&02(h@zQWAHDiN>m1sR&t7N$!V0aS15#Id7?5B?QMRhX1!Y`C`G z+=WI<majCovOSJQ(KXdor)|tkmo0*csTosrN!p&8EJfN`IJcAjT41<%`AQ3GJ25<% z_k!2XB{r63rb{{c^JYyWiGS&>t)|R4i?K9j&DG~DTVZZ(e}Ei~^oA|+avg0gSD7p} zTJYD5$>aa{eTdA9CQS7=L~LSaX}6)Uw2Ub44cq2LJ3H7|tX#&?pQ|?&y<Iu5Uk?q4 zLnAhlGG)#}<E1MsY#a|27MGNkk$dd%*E!i)nVBp$oIiW|q_Lxh4eH+udEJPy*?Myg z7A;?8X}3Ekzo4iDFYR4Yl<Bn|rsOPEEFpav2NC%N#SY*jf0;E8xngA>mzfO%rDE8s zuOMs_>|SEKdgW5%g>z;i*9SvAA=CgLGJC$^VpDVLb;+q2S-Eh{6&Ie`wPhoCV~L!f zGjj^6DGCb-A1Q<Ljwhw0XQAFDci+y>;JV%6V`l-oiMe&~;bSL~Q(+Il>_fzk%^TJ^ zfiufE;LPXj6JZ8((Q-4Zkl6SmppcRh&)c=l3(Y=StN`E1utQaQqh<oWPu4@{Xyxjl zh?v+zhmR)45<9nT+TiAFZ*6Y6#0UivA_IZcA_F;c{EWXA7%ee1_YVn&tr21)cWvFW zX~X)p5SUfV7a5Q(U=*AtXf5Pv`eXWR<jqR=y$244h6^@&dT#V^Tf4^2%G{KUBWhf~ z4d@GJl}TyDMhu%e6He<A6Z7qUf*l*sRxhx~agCidv;k;~q%Y87$mZ3AvHMO!?3|^h zW~<SP9^AQ?(;5d`D~pxO7aKuXP>VrL09CXJ8=*d7%FMs!8!lREy2`@J#?}t)wqm{7 zeC6^b#`<$-O`n8L5$TBn6}ai+CQj3vv%rwE)C8`e)r4ga3-eW`%N85!&zlXG1j$VL z(TuSMkDoLhum;A9mztQa#8>rPxx#e$l0`-f=gkHu#*QX=Q9}f*<`~_{0ERAsvv|o; zVp)%+ix(LgESNic#?*=9{($Qj`VKW^bXBsbBLF*XCh9*7jEr$k4`X9P=so7lnlXih z4uW1m172f?UO{KnnDLXyPHWzRg$wl;E?h8wF6xgaPZ;;d$YFzjMg5F2gVKtrQiqQE zbKC^f2hN)P7cocsui1KJCph*G*g^nsT54p+HJCko<R4?kPna}i+VmMSV1e!QX;V>u z`sb+MhXM@xH!yqwQ|<%rHvchZobH54lZeThlO|3W51sOe;lB-nJ{w`^?U*ucz>s0T zj~xByn6cyV@mk}?jUDp`>er#)hAv-S75dx`=yQJ^G-T-T5hF)&M{A54IpX(Wa8LN9 zU+*4TYO0D1$|X!uvH!0F2M-xKbQnHdW7x2vzYQ5g-c7VM;FT*n<qF1B=nbzw4H(EB z#2yGYn*M!z!<|MQZYcE2m@*Y!R${;lQhodNBl@%Y_3hJJ`f`+tB7^FS!Fx>&7==d1 znF<UFMqz2|^x*YW>7k<yFGaD?)@KwSz%Xzog-)x2x54RvR8ir$_(%N?JAtWdXb_sp zu%)9KOH~=({-VGp)x-C1v;0dHhdmnT)Kb_(kxnrC{<6$F8SNPnYe-X3P=Qy?S*ofk z%1Vk%28|+svpsn@O-}%uZH6A)u%Isiwx|VI4;r1xR2<_Fjt1C!Z2tO9N1Lq{YCV)t zU@(~sI*kImqB3R&#`k8atLuzgygmr-)7uvRrod#<X*sY-0%-rbDFp^Vi90z1c{)nt z{@NKI@2jt+qT;8lz%~qtj}MtQjH}L8>oLvFcmKY<ek*lAm7WgnfU3&;eK2^6cGK%E z(4h_X*lc<*o^d$d({o)v0^Yi3X^dI1b5DSu<7i}#nhb3Vbo$vJ&dfOBK2e9;gQuft zzu9DPd_r0JaUzj8h96Zq0_z-4<fp`QOuftqb-tP^d*mvCpRd;}HljFzDMPi!5*e8p z;U@iX9bOMYM`7d^kDglo@y*<eybgBz1(>*LKHGF6eoPN{ufYVoxR0}yd(PkDEg+Wk zf{+}8ZMf;o!Mx0jl$}$#I(%SITE2OKmX=q1?Zplr%-*nJ|Ctt`XgD0-Uwwg>G2-B| zmDR@E^LV?B)gW-NqXyKZhkIIPifv!Mlw-~2VOm<Y@#P(D{Cf4eTDU=0R#Y~eiH}rQ zAL?n1IQVR3RuALd_~sdCue><eB9+NneKI3;!ysInPgX_Ab8{~(t;O*L9p`xU8i)kl zJ1gqS<Gt0@dwQ;svfwPmLDsu=t{u%}(!`hoojElrGlMspt1W<SCEyg2Bs1eP+AnbH zHS5mQz`ifA!EE`NqIh?b1&6TmVe<lo(azhqTdOnaQJ4aiuH=xBac~-6d#}#GHJgWO zX$_A*egXC?YN+pGI9*en9lt_d4XPuh;IS0dCcAI-7zNc4q3ZP7laabw8@7=M)KOf% zdA^pGT10#$enID4BN>kJvhwPhs?rnj<J8q4u2K>{OHozJWb>v4@D^e?#-uYR9!@_r znE;YKIs->;hEuCGJO1#IjI-xjo9n9~e+U)IIg*gz0__=2u$%-}WlrAUY1NZShn3P) z=Ir!zp8;Ih_aZ=NfVSOc6L@{`Pdq+8p|I&}Q)4|uwlpa|o^PnBt}bh5d^R6;Z(t6v z+u+iRNezL0T!)`bU$4yv3SS*un>NT}voWrvt~tOhKK^i4ab<OB&dK<AVkn_bGbWom ziYXs<d|<Gbt+&^r2SZhQM5k`h)D&p>pwp{OAGdk4Ne@DkGKMdRr$*?b?Oe4@JvR;` z)CHi+WAQ=P#BDX39)u~-l=h_t^gzlX+Vrs-Ham^uYAQ}Oao-bzTh8o5sME(gd%2C| zl4p_+noJdSGglKP?Epq+PD_pbg&;MVzc_5(WILq?uF2O>gm_J{_42aq&FiM6qHg0d zl(`?H)0mzq<~&Vrt%KS<wX~<XZQkT%Id9aUzM9&72aTF*>FMR=I!Vx_h^x@YIU6u( zkSwJ$cP5)_b2WXm_G@#s=shP{Y})MWMfWt*)rPG%_-X=(3SSizMz1kt!gjGNI&*E( z$rF)*J6tV{rv2uvwMW}Wi`94B0t*LMFydf7Z%l7o<C7^x_CVdGYaAybT?HCbWjPNf zA@F00up&B|>%`IR#e?|zX?bf3z#IxBpQWbC>OV$rkrmn)&3?K9leQnWcOjT+y++P3 zwshMSmk=L+C@#!$P$;Q|ObOUHOOrifnvuB+xgDGRlG%SMLWcvJVnYWlU@9r}9LI6- zixnRn6bwq<GE-_SR*(5EZtK>%IIWs9afr48bjmbpI4DtRIGx9&jl`q3;u;j#s#gos z^wshOCy_Y{n?<lypnKP{ShtQdV`LvioQcz^G%Di|Y@tG>F_}FhMLGfvxrP8~a8*@Q zRHnOHLlcK>LZCN=zS}!u1Tbp(Y5I`7IGYPCLB(+G?{sQ9lCKl#@ij2mj3t0X2%s;- zpqVpNR93n4p+oMF&NLO8@YVOr!~}@pN>Wi#UE`#J<TU2Yu(f>ky_&un-Vj|bo1%)& zWiKZSCJn??=FrgHeDy$?7`8}Jr4L(U#H2#Xj;R)WK$EMEX#{Bck;>5LsM02^na+e1 z8&iRQa0n9mYWi#VsC&bCLypnrIF3eQ@H}V=67w|!NwEOwF1GJaCxxc_jkszDHGDx& z0D2%=ZKoy`>Fu-Tss)iEZ<3O(WoN-eG8*&uy`EgP{ThCt=FO(Cz#e^ojS-UuNi_yj zYmYZ<GZU!cukHg<90^BT&0sPhfyPwA{eLCY12h6i85crCn_~4R6S7%Mg|&X;2z4Kg zKy_bG;~~*J%K=CPq4k|dsKFN7q=?UA!rgqag%%xTur-bM3PLSd-4B!mAW>nNtx|*= zGDt=WoC&ockod5@S#T<PuQFyzB|Z7u3AKId0U+@~lHXS8Aqj)ZRNBGqjjQcZ-=pRW zA_ZtEV^@r2QggvUMJIeDuI8)0PbLD{bkiZsJP<LL@1B9H5$eHeexQY;X0gDe2NKbl zvv)1R*`XltmA03q%T?%k7?Z{vy~B#l4ps{Q4IXG{FN1D?6!hNi&SnRJz?UU}z%H9f zmQ$H3o3?4Q_o)R!xwk5P<Pz{JAH~#R%g{Y)``CUgA61&}qTiSWD4I(*PZX#HL!qxK zU1cVx4=SZIXKk7<V*5iGc(~A*O(zTg@G=c!2S6dTM>XSxOlj$Wjn*OTJy1%h(0d!s zAWLb?9vjviVDDx5sd8250}RG9X}~~bs(QEuviCzNUxhwQe<YJyh~nk4zK1tEnB}i3 zP@#=pIG9<4B4xU6b_5i8tI%09=J$azWg2s+>sp7UdZYWYgIIgOoU*FUfRPhs&7U_# zkzNcNWix-bKpQ)*aWI@cVR%0^KUScsnu<pM;p1n*K2;0m&!7FL2E7!U3gl{oCM+;> zAa_-?UTH9A`h-7*!MI;XO9P&M$k+D!4jeXm+@u+hMKFLT_nG5{_EA%S$B;6NMx~)g z&EFLVj-EPy>1y(?1DKnwS_Q)kQ<LS(mn~bmbjjkyi;Uqfz!=P%GHQU163zq-8nqgu z!s9HD*-xY2kdfo2=*@@m182$7Wia|*IDd}b<Z&a0z;0n&cs!-SK!XO4wR9nLQ5ZZ% z!#2M(I*muim|Qx8Mx(<k|KCdaL}H%gE=IHdon4H6zFENkNBln*f#F{JkCnE+dDC8c zY`<66jx_%>)nv@xd!hTr9Unhl*gKo?KVuuljBa1<bwv7d*G=Jn!UMYPmCvjG>FA0r z{lD(PjPLC&L%Pv9<G<{H>-V<8kwxLH>wnV$Me(O#fA5?4zt^Ysy!1Vz-ODfa{4a$- z>8m}#x|{v<y-Ml7;sEvdClf#ZcAWa(aKQJ+M!QRW{|ojx-3|Qg`;WG=```0TRrcr0 zer8!Jzx9*N-~MwSxc|(s9L4?5E&NcU-&cQ-LT>5XzhCzIA>Ds0jQh5k@0Z5?$0mNH zp!LO{8~MInx#Zm!o3{Ok{pT_pIqg6HZS!;1e~w7|=XT}Dw13Y2QzZL4f3Zbw>s!BH zvwuqaj{z&cW#DIJEB`V5Pl4V)v-K^x_fKj6G2kEE_P_Q({Ez8>3e5YO{pTe=+%NT~ zCO-pw_P3ONZdr=>#@}4}jPyS^`1W>vKXC;9&da~``FyL}pV*a)-~3zFG3@KjTjfT6 z@cZ_^XTR+SX1*)>7tep`ca8i&Q1b89Kj;T$zAHk1EbCwTSbf*X4+NI~l5wCJ@dGp8 z6~XN4zxMg+&v|{<YM0<5Od9`dA3+!GKmNl1*Ng+vsDEs>3pn!Mw2u{Z@&3avMgOXK zZ00{S+Xb8X@7l)-yO{scm;8U(JT~G#dIWqk>fg4HZT&~}mVvhX>*g`)Kg>QL56=8I z5&%8^QT7Fy|1V`=hW~Kqab#Hfc`)qXk3RfuzlpnwzPC@h+%oz5L*cH8|7PEdDx<O} z@_Tz!e`Z^La6595%D)zbeoh%*{kciGq3{2GmErVn<N%ai^S^K7XOeu^@BMAoe;Ax$ z2mjd)^WSyk>B0Z~#z-~J`TKvhcQv6=9%0z%n%#{in?$plWV2Z*UaBYs1;JV?*o$BZ z_<z_QB30={!5_qm3LfmC9_+z-5_>3RK}+kY6zxfgf|644Cl|#cq6hI{AXKfZ&pW%{ zX7+n$cITb_){}FZdB1nw=b3l@zWIJ;tcIO0l>YqEYc%NG$Bv+I#tbPw-q-2q@2c9& zQBivj0kY(iQJD``-DD=36x>`@EnCA#z8FEhhxwL@`G&wsVdh@1<z5(%r(f=Msf6rx zo--=R^=v~ItoB-Kx)OZa=(cRP_(7v9bXo89?s^_b7G>6aw2St)BW;#*4}4(kd49D{ z&PVN;qP%j{QUxO|==CPvr4b{6#Z69iCMdJ)g>h|m+pOFQ>1~4p*0uu3W^*kk@E*F} zG@ByF_j<-PZBZ7x$MIV{@YV8r&GE--HCmgx#_<<CYAvL0{pm*>e@1M}U*R*#^gPkU zZ|$;vA~1LP)^E@LasN$pV7jGO6Th7(EOS^Av}IRrJA6aW+FZPJ>FklORu8+}{%95R zNknca?ehFI$oip;%o`82GKr#IuYEW-?-xO*xh)^bX;Gmy<vl)VJkK7@q$s+M+wzgD z6M<^V3w_Xdo`sr8Q8X6GLg=OcM`@AF$%eVs)e9H7Gv$(tu4r8Eq#TXsILYn0N_KK< za>-6tG_JQsj>dDW;dWgmgWQ^2GU$rN_1Y%oaN!)2*5w|@W0LW(HF<iR85Ia3SQHp; z_1y^wzdAE{=eRo>*DRPU%47v@)m^eehGo)T;f}^NdrTH(vL0?#Ah91c>d2yUG^zly zM)j&Aj8*MwjX81RoYk=7g>z!anhc`1jwVWnYRrif8%;JPvW;TMnhZ-MSSH;iHRi;L zWRq*KH}<EUZd`0f&6>(;kp1h1V%KVN4d%V}!V6dYY#NK5F%(K5IzzvsithjvH2%Ac z#}fwxU<TFw@p$`eY<1vH0^2#viV=1qne3P|XRE=eK(q;aG$a!h4i1OjD)4p!2lm{~ zuCAp5FoWviu1@^aiG3ol%L2KfepQsw;|W41@KkqC?-hepXVGQsYtcm%z<|6^m%+5- z2^|Lv1AX57^-YWb|9^p#iNOGWQ<r_9nu5g#1RqoNt_q(j!}p~}y`PLuZSI?|2!KIA zfPSzv69}A7%?{2F;M17}2Y;RrznUoB{b_$Lja^789w2<x5bNTb%Ae^U7|bpzoVwz? z7?>LSq3|&_Ny!B8q4HZsJ9GW_rPGSR&`|!f?cbgMyY5?(|L*+${f^J`YKxYPR{E;@ zY1b1AJj6j2=<Oe8T=%6jL;?H1<Z{FLPe;B!eCn4=<M$psem42)?bP!p4=4T^yYS<& zZ#JwP&gFnjMOS4n``)$v6R$D@t^cDLP%i)nxS@Z5SYR8P9Ej)v>7k)4ArJJ!?eII* zd(io&`+uFXSG`iLhRPU(rl?3L7N9}SKp4;i2~cDJD`W*-?sh@XukZLOcqI~Ws0_li z-3>;gR5zT_)7y)4$15j~<M446NB}vmc6X;}#G&1B$}L`vy*O|@4AD5P%|bL6U_i#c zJ75AT2q`@%39jHev^uD(C4!m92U;gb6Ox*dFfCw0#Ndq35e_88HE6VBq^E(_tIRqu gi{sRG_ylY)P$J9@f=WS(Yox;ReGq)`fW-sv09~3DIRF3v literal 0 HcmV?d00001 diff --git a/debian/changelog b/debian/changelog index 63c700cb2e..e545122905 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,52 @@ +gajim (0.11.4-1) unstable; urgency=low + + * New upstream release. + * Fix tab switching. Closes: #452257 + * update to 3.7.3 Debian Policy + * Add Homepage, Vcs-Svn, Vcs-Browser fields to control file + + -- Yann Leboulanger <asterix@lagaule.org> Wed, 05 Dec 2007 22:23:30 +0100 + +gajim (0.11.3-1) unstable; urgency=low + + * New upstream release. + * Fix depand list so that Gajim will work when python2.5 will be the + default. Closes: #445275 + * Fix focus bug. Closes: #447985 + * Depend on dnsutils to use SRV records. Closes: #434690 + + -- Yann Leboulanger <asterix@lagaule.org> Fri, 16 Nov 2007 19:01:54 +0100 + +gajim (0.11.2-1) unstable; urgency=low + + * New upstream release. + * Don't optionaly depend on python2.5. Closes: #418252 + * Better handle gnome-keyring. Closes: #433315, #424293 + * Handle dbus restart. Closes: #434993 + * Don't allow bookmark creation on server that don't support that. + Closes: #438620 + * Fix list_contact dbus signature. Closes: #440225 + * Remove changelog.gz from /usr/share/doc/gajim. Closes: #412632 + + -- Yann Le Boulanger <asterix@lagaule.org> Sun, 22 Sep 2007 22:22:34 +0100 + +gajim (0.11.1-1) unstable; urgency=low + + * New upstream release. + * Don't depend on python2.4 specifically + * Don't recommand libdbus, python-dbus does + * Tooltips in chat window are now correctly destroyed. Closes: #404693 + + -- Yann Le Boulanger <asterix@lagaule.org> Sun, 18 Feb 2007 22:15:57 +0100 + +gajim (0.11-2) unstable; urgency=low + + * Add missing build depends to get gajim-remote. Closes: #405969 + * Update recommands to support dbus. Closes: #402355 + * Make python-gnupginterface a recommanded package. Closes: #405808 + + -- Yann Le Boulanger <asterix@lagaule.org> Tue, 09 Jan 2007 18:32:26 +0100 + gajim (0.11-1) unstable; urgency=low * New upstream release. Closes: #403806 diff --git a/debian/control b/debian/control index 16602afc5b..760ac75428 100644 --- a/debian/control +++ b/debian/control @@ -2,17 +2,20 @@ Source: gajim Section: net Priority: optional Maintainer: Yann Le Boulanger <asterix@lagaule.org> -Build-Depends: debhelper (>= 5.0.37.2), cdbs (>= 0.4.43), python-support (>= 0.3), python-dev, libgtk2.0-dev, python-gtk2-dev, libgtkspell-dev, gettext, libxss-dev, intltool, imagemagick, python-central (>= 0.5), libdbus-1-dev +Build-Depends: debhelper (>= 5.0.37.2), cdbs (>= 0.4.43), python-support (>= 0.7.1), python-dev, libgtk2.0-dev, python-gtk2-dev, libgtkspell-dev, gettext, libxss-dev, intltool, imagemagick, python-central (>= 0.5), libdbus-1-dev Build-Conflicts: python2.3 XS-Python-Version: >= 2.4 -Standards-Version: 3.7.2 +Standards-Version: 3.7.3 +Homepage: http://www.gajim.org +Vcs-Svn: svn://svn.gajim.org/gajim/ +Vcs-Browser: http://trac.gajim.org/browser Package: gajim Architecture: any XB-Python-Version: ${python:Versions} -Depends: ${python:Depends}, python-glade2 (>= 2.6.0), python-gtk2 (>= 2.6.0), python-pysqlite2 | python2.5 -Recommends: dnsutils, python2.4-dbus, notification-daemon, python-gnupginterface, python-pyopenssl -Suggests: python-gnome2, nautilus-sendto, avahi-daemon, python-avahi, network-manager +Depends: python (>= 2.4), python-support (>= 0.7.1), python-glade2 (>= 2.8.0), python-gtk2 (>= 2.8.0), python-pysqlite2 | python (>= 2.5), dnsutils +Recommends: dbus, python-dbus, notification-daemon, python-gnupginterface, python-pyopenssl +Suggests: python-gnome2, nautilus-sendto, avahi-daemon, python-avahi, network-manager, libgtkspell0, aspell-en, python-gnome2-desktop (>= 2.16.0) Description: Jabber client written in PyGTK Gajim is a Jabber client. It has a tabbed user interface with normal chats, group chats, and has many features such as, TLS, GPG, SSL, multiple accounts, diff --git a/debian/gajim.menu b/debian/gajim.menu index f1efc22e2a..cd7a318f36 100644 --- a/debian/gajim.menu +++ b/debian/gajim.menu @@ -1,6 +1,6 @@ ?package(gajim): \ needs="X11" \ - section="Apps/Net" \ + section="Applications/Network/Communication" \ command="/usr/bin/gajim" \ icon="/usr/share/pixmaps/gajim.xpm" \ title="Gajim" \ diff --git a/gajim.iss b/gajim.iss index 5bab0137c5..00ec90cc93 100644 --- a/gajim.iss +++ b/gajim.iss @@ -1,6 +1,7 @@ [Setup] AppName=Gajim -AppVerName=Gajim version 0.11-1 +AppVerName=Gajim version 0.11.4 +OutputBaseFilename=gajim-0.11.4-1 DefaultDirName={pf}\Gajim DefaultGroupName=Gajim UninstallDisplayIcon={app}\src\Gajim.exe @@ -27,6 +28,8 @@ Source: "dist\history_manager.exe"; DestDir: "{app}\src"; components: main Source: "data\*"; DestDir: "{app}\data"; Flags: recursesubdirs Source: "po\*.mo"; DestDir: "{app}\po"; Flags: recursesubdirs ;Source: "gtk\*"; DestDir: "{app}\src\gtk"; Flags: recursesubdirs +;Source: "gtk\bin\xmlparse.dll"; DestDir: "{app}\src" +;Source: "gtk\bin\xmltok.dll"; DestDir: "{app}\src" [Icons] Name: "{group}\Gajim"; Filename: "{app}\src\Gajim.exe"; WorkingDir: "{app}\src" diff --git a/launch.sh b/launch.sh index 08b9110a0f..7a3f8b5f62 100755 --- a/launch.sh +++ b/launch.sh @@ -1,3 +1,14 @@ #!/bin/bash -cd `dirname $0`/src +BASE=`pwd`/`dirname $0` +OS=`uname -s` + +if [ "x${OS}" == "xDarwin" ]; then + export RESOURCEPATH="${BASE}/dist/Gajim.app/Contents/Resources" + GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current" + export PATH="${GTK_DIR}/bin:$PATH" + export PYTHONPATH="${GTK_DIR}/lib/python2.5/site-packages:${GTK_DIR}/lib/python2.5/site-packages/gtk-2.0:${PYTHONPATH}" + unset GTK_DIR +fi + +cd ${BASE}/src exec -a gajim python -OOt gajim.py $@ diff --git a/po/LINGUAS b/po/LINGUAS index 0bf5641a28..476281bef8 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,2 +1,30 @@ # available languages -fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN br eo hr en_GB be sr gl_ES +fr +pt +el +pl +es +ru +bg +de +nb +cs +nl +pt_BR +sv +it +eu +sk +no +zh_CN +br +eo +hr +en_GB +be +be@latin +sr +sr@Latn +gl +lt +da diff --git a/po/cs.po b/po/cs.po index dcbedded6e..f56c61c845 100644 --- a/po/cs.po +++ b/po/cs.po @@ -14,11 +14,15 @@ # Petr Mensik <pihhan@seznam.cz>, 2005. # Pihhan <pihhan@seznam.cz>, 2005, 2006. # +#: ../src/gajim-remote.py:212 ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:245 ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:252 ../src/gajim-remote.py:253 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:255 msgid "" msgstr "" "Project-Id-Version: gajim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-06 12:50+0100\n" +"POT-Creation-Date: 2007-08-25 00:27+0200\n" "PO-Revision-Date: 2007-02-06 21:51+0100\n" "Last-Translator: Petr MenÅ¡Ãk <pihhan@seznam.cz>\n" "Language-Team: <cs@li.org>\n" @@ -43,46 +47,53 @@ msgid "Jabber IM Client" msgstr "Jabber IM klient" #: ../data/glade/account_context_menu.glade.h:1 -msgid "Send Single _Message..." -msgstr "Odeslat jednoduchou _zprávu..." +#: ../data/glade/chat_context_menu.glade.h:1 +#: ../data/glade/roster_window.glade.h:8 +msgid "Join _Group Chat" +msgstr "Vstoupit do _Diskuze" #: ../data/glade/account_context_menu.glade.h:2 -msgid "_Add Contact..." -msgstr "PÅ™id_at kontakt..." +#, fuzzy +msgid "_Add Contact" +msgstr "PÅ™idat _kontakt" # FIXME: chtelo by to cesky vyraz pro service discovery #: ../data/glade/account_context_menu.glade.h:3 -msgid "_Discover Services..." -msgstr "_ProhlÞet služby..." +#: ../data/glade/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_ProhlÞet služby" -#: ../data/glade/account_context_menu.glade.h:4 -#: ../src/disco.py:1145 -msgid "_Execute Command..." +#: ../data/glade/account_context_menu.glade.h:4 ../src/disco.py:1143 +#, fuzzy +msgid "_Execute Command" msgstr "Spustit _pÅ™Ãkaz..." #: ../data/glade/account_context_menu.glade.h:5 -#: ../data/glade/roster_window.glade.h:16 -#: ../data/glade/systray_context_menu.glade.h:6 -msgid "_Group Chat" -msgstr "_Diskuze" - -#: ../data/glade/account_context_menu.glade.h:6 #: ../data/glade/zeroconf_context_menu.glade.h:1 msgid "_Modify Account..." msgstr "Upravit úÄ_et..." -#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/account_context_menu.glade.h:6 msgid "_Open Gmail Inbox" msgstr "_OtevÅ™i schránku Gmailu" +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:22 +#: ../data/glade/subscription_request_popup_menu.glade.h:1 +#: ../data/glade/systray_context_menu.glade.h:7 +msgid "_Start Chat" +msgstr "_ZaÄÃt rozhovor" + #: ../data/glade/account_context_menu.glade.h:8 #: ../data/glade/zeroconf_context_menu.glade.h:2 msgid "_Status" msgstr "_Stav" #: ../data/glade/account_creation_wizard_window.glade.h:1 +#, fuzzy msgid "" -"<b>Account is being created</b>\n" +"<b>Connecting to server</b>\n" "\n" "Please wait..." msgstr "" @@ -99,115 +110,131 @@ msgid "<b>Please fill in the data for your new account</b>" msgstr "<b>ProsÃm vyplňte údaje pro Váš nový úÄet</b>" #: ../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ů" +msgid "<b>Please select a server</b>" +msgstr "" #: ../data/glade/account_creation_wizard_window.glade.h:7 +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:8 msgid "Connect when I press Finish" msgstr "PÅ™ipojit když stisknu DokonÄit" -#: ../data/glade/account_creation_wizard_window.glade.h:8 +#: ../data/glade/account_creation_wizard_window.glade.h:9 msgid "Gajim: Account Creation Wizard" msgstr "Gajim: Průvodce vytvářenà úÄtu" -#: ../data/glade/account_creation_wizard_window.glade.h:9 +#: ../data/glade/account_creation_wizard_window.glade.h:10 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 +#: ../data/glade/account_creation_wizard_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:22 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:7 -msgid "Pass_word:" -msgstr "He_slo:" - #: ../data/glade/account_creation_wizard_window.glade.h:13 -#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "Spravovat..." + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +#, fuzzy +msgid "Prox_y:" +msgstr "Proxy:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:48 msgid "Save pass_word" msgstr "Uložit _heslo" -#: ../data/glade/account_creation_wizard_window.glade.h:14 +#: ../data/glade/account_creation_wizard_window.glade.h:16 msgid "Servers Features" msgstr "Vlastnosti serveru" -#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_creation_wizard_window.glade.h:17 msgid "Set my profile when I connect" msgstr "Nastavit profil, když se pÅ™ipojuji" -#: ../data/glade/account_creation_wizard_window.glade.h:16 +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "PoužÃt vlastnà jméno poÄÃtaÄe/port" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 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 +#: ../data/glade/account_creation_wizard_window.glade.h:21 msgid "Your JID:" msgstr "VaÅ¡e JID:" -#: ../data/glade/account_creation_wizard_window.glade.h:19 -#: ../data/glade/roster_window.glade.h:11 +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 msgid "_Advanced" msgstr "_RozÅ¡ÃÅ™ené" -#: ../data/glade/account_creation_wizard_window.glade.h:20 +#: ../data/glade/account_creation_wizard_window.glade.h:23 msgid "_Finish" msgstr "_DokonÄit" -#: ../data/glade/account_creation_wizard_window.glade.h:21 -#: ../data/glade/manage_proxies_window.glade.h:10 -msgid "_Host:" -msgstr "_PoÄÃtaÄ:" +#: ../data/glade/account_creation_wizard_window.glade.h:24 +#, fuzzy +msgid "_Hostname:" +msgstr "PoÄÃtaÄ: " -#: ../data/glade/account_creation_wizard_window.glade.h:22 -#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 msgid "_Password:" msgstr "_Heslo:" -#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/account_creation_wizard_window.glade.h:26 #: ../data/glade/manage_proxies_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:27 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/account_creation_wizard_window.glade.h:28 #: ../data/glade/manage_proxies_window.glade.h:12 msgid "_Username:" msgstr "_Uživatel:" #: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 #: ../data/glade/preferences_window.glade.h:8 msgid "<b>Miscellaneous</b>" msgstr "<b>PÅ™ÃsluÅ¡enstvÃ</b>" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "<b>OpenPGP</b>" msgstr "<b>OpenPGP</b>" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "<b>Personal Information</b>" msgstr "<b>Osobnà údaje</b>" #: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 msgid "Account" msgstr "ÚÄet" @@ -216,227 +243,344 @@ msgid "Account Modification" msgstr "Úprava úÄtu" #: ../data/glade/account_modification_window.glade.h:6 +#: ../data/glade/accounts_window.glade.h:5 +#, fuzzy +msgid "Administration operations" +msgstr "Seznam správců" + +#: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 msgid "Auto-reconnect when connection is lost" msgstr "Automaticky se znovu pÅ™ipojit pÅ™i ztrátÄ› spojenÃ" -#: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 #: ../data/glade/zeroconf_properties_window.glade.h:3 msgid "C_onnect on Gajim startup" msgstr "_PÅ™ipojit po startu Gajimu" -#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_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 +#: ../data/glade/accounts_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:11 +#: ../data/glade/accounts_window.glade.h:10 #: ../data/glade/zeroconf_properties_window.glade.h:4 msgid "Choose _Key..." msgstr "Vyberte _klÃÄ..." -#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_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 +#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 msgid "Connection" msgstr "SpojenÃ" -#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 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:458 -#: ../src/notify.py:480 -#: ../src/notify.py:492 -#: ../src/common/helpers.py:914 +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:470 +#: ../src/notify.py:492 ../src/notify.py:504 ../src/common/helpers.py:964 +#: ../src/common/helpers.py:976 msgid "Gajim" msgstr "Gajim" -#: ../data/glade/account_modification_window.glade.h:15 +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 #: ../data/glade/preferences_window.glade.h:51 #: ../data/glade/zeroconf_properties_window.glade.h:7 -#: ../src/roster_window.py:346 -#: ../src/roster_window.py:1224 -#: ../src/roster_window.py:1435 -#: ../src/roster_window.py:2111 -#: ../src/roster_window.py:2153 -#: ../src/common/contacts.py:284 +#: ../src/roster_window.py:358 ../src/roster_window.py:623 +#: ../src/roster_window.py:1354 ../src/roster_window.py:1722 +#: ../src/roster_window.py:2112 ../src/roster_window.py:2628 +#: ../src/roster_window.py:2746 ../src/common/contacts.py:309 msgid "General" msgstr "Obecné" -#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 msgid "Hostname: " msgstr "PoÄÃtaÄ: " -#: ../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 "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 to prevent 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ůsobeném vyprÅ¡enÃm spojenÃ" - -#: ../data/glade/account_modification_window.glade.h:20 -#: ../data/glade/zeroconf_properties_window.glade.h:8 -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/accounts_window.glade.h:21 +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:21 -#: ../data/glade/zeroconf_properties_window.glade.h:9 -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/accounts_window.glade.h:23 +msgid "" +"If checked, Gajim will send keep-alive packets to prevent 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ůsobeném vyprÅ¡enÃm spojenÃ" #: ../data/glade/account_modification_window.glade.h:22 -#: ../data/glade/zeroconf_properties_window.glade.h:10 -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/accounts_window.glade.h:24 +#: ../data/glade/zeroconf_properties_window.glade.h:8 +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:23 -msgid "Information about you, as stored in the server" -msgstr "Informace o Vás, jak jsou uloženy na serveru" +#: ../data/glade/accounts_window.glade.h:25 +#: ../data/glade/zeroconf_properties_window.glade.h:9 +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:24 -msgid "Manage..." -msgstr "Spravovat..." +#: ../data/glade/accounts_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:10 +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:25 -#: ../data/glade/zeroconf_properties_window.glade.h:16 -#: ../src/config.py:1608 -#: ../src/config.py:3405 +#: ../data/glade/accounts_window.glade.h:29 +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:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1589 +#: ../src/config.py:2075 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:1188 -#: ../src/config.py:1193 -#: ../src/config.py:1377 -#: ../src/config.py:1598 -#: ../src/config.py:1607 -#: ../src/config.py:1667 -#: ../src/config.py:1741 -#: ../src/config.py:3395 -#: ../src/config.py:3404 -#: ../src/dialogs.py:281 -#: ../src/dialogs.py:283 +#. GPG Key +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1175 +#: ../src/config.py:1246 ../src/config.py:1495 ../src/config.py:1500 +#: ../src/config.py:1971 ../src/config.py:2058 ../src/config.py:2074 +#: ../src/config.py:3167 ../src/config.py:3213 ../src/dialogs.py:285 +#: ../src/dialogs.py:287 ../src/roster_window.py:1826 +#: ../src/roster_window.py:1833 ../src/roster_window.py:1840 msgid "None" msgstr "Žádný" -#: ../data/glade/account_modification_window.glade.h:28 +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 #: ../data/glade/profile_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:17 msgid "Personal Information" msgstr "Osobnà údaje" -#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 msgid "Port: " msgstr "Port: " -#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 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:33 +#: ../data/glade/accounts_window.glade.h:40 +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 +#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 msgid "Priority will change automatically according to your status." msgstr "Priorita se automaticky zmÄ›nà podle vaÅ¡eho stavu." -#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 msgid "Proxy:" msgstr "Proxy:" -#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 msgid "Resour_ce:" msgstr "Zd_roj: " -#: ../data/glade/account_modification_window.glade.h:35 -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:37 +#: ../data/glade/accounts_window.glade.h:45 +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:36 +#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/accounts_window.glade.h:46 #: ../data/glade/zeroconf_properties_window.glade.h:18 msgid "Save _passphrase (insecure)" msgstr "Uložit _heslo (nebezpeÄné)" -#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:47 #: ../data/glade/zeroconf_properties_window.glade.h:19 msgid "Save conversation _logs for all contacts" msgstr "Uložit _historii pro vÅ¡echny kontakty" -#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:49 msgid "Send keep-alive packets" msgstr "OdesÃlat keep-alive pakety" -#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:50 #: ../data/glade/zeroconf_properties_window.glade.h:20 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:41 +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:51 +#, fuzzy +msgid "Synchronise contacts" +msgstr "Zobrazit _odpojené kontakty" + +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 msgid "Use _SSL (legacy)" msgstr "PoužÃt _SSL (staré)" -#: ../data/glade/account_modification_window.glade.h:42 -msgid "Use custom hostname/port" -msgstr "PoužÃt vlastnà jméno poÄÃtaÄe/port" - -#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 msgid "Use file transfer proxies" msgstr "Použij proxy pÅ™i pÅ™enosu souborů" -#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 msgid "_Adjust to status" msgstr "N_astavit podle stavu" -#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 msgid "_Jabber ID:" msgstr "_Jabber ID:" -#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/account_modification_window.glade.h:49 msgid "_Name:" msgstr "_Jméno: " -#: ../data/glade/accounts_window.glade.h:1 -msgid "Accounts" -msgstr "ÚÄty" +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "E-Mail:" -#: ../data/glade/accounts_window.glade.h:2 +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Povolit" + +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "KÅ™estnÃ:" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 msgid "" -"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.\n" -"This is only available if python-avahi is installed and avahi-daemon is running." +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." msgstr "" -"Pokud je zaÅ¡krtnuto, vÅ¡echny mÃstnà kontakty použÃvajÃcà Bonjour-kompatibilnÃho klienta (iChat, Trillian nebo Gaim) se zobrazà v rosteru. NemusÃÅ¡ být pÅ™ipojený(á) k jabber serveru, aby to fungovalo.\n" -"Je to dostupné pouze v pÅ™ÃpadÄ›, že je nainstalováno python-avahi a avahi-daemon běžÃ." +"Pokud výchozà port použitý k pÅ™ijÃmánà zpráv nevyhovuje tvému nastavenÃ, " +"můžeÅ¡ si zvolit jiný.\n" +"MůžeÅ¡ také zvážit zmÄ›nu nastavenà firewallu." -#: ../data/glade/accounts_window.glade.h:4 -msgid "If you have 2 or more accounts and this 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:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:452 +msgid "Jabber ID:" +msgstr "Jabber ID:" -#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "PÅ™ÃjmenÃ:" + +#: ../data/glade/accounts_window.glade.h:33 msgid "Mer_ge accounts" msgstr "_Spojit úÄty" -#: ../data/glade/accounts_window.glade.h:6 -msgid "_Enable link-local messaging" -msgstr "_Povolit lokálnà zprávy" +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2698 +msgid "Re_name" +msgstr "PÅ™ejme_novat" -#: ../data/glade/accounts_window.glade.h:7 -msgid "_Modify" -msgstr "_Upravit" +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "PoužÃt vlastnà port:" -#: ../data/glade/accounts_window.glade.h:8 -#: ../data/glade/remove_account_window.glade.h:4 -msgid "_Remove" -msgstr "Odst_ranit" +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:60 +msgid "gtk-close" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "" #: ../data/glade/add_new_contact_window.glade.h:1 msgid "A_ccount:" @@ -535,7 +679,9 @@ msgstr "<b>Popis</b>" #: ../data/glade/advanced_configuration_window.glade.h:2 msgid "<b>NOTE:</b> You should restart Gajim for some settings to take effect" -msgstr "<b>POZNÃMKA:</b> MÄ›l(a) by jste restartovat gajim, aby se projevila vÅ¡echna nastavenÃ" +msgstr "" +"<b>POZNÃMKA:</b> 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" @@ -554,45 +700,41 @@ msgid "Deletes Message of the Day" msgstr "Smaže zprávu dne" #: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Edit _Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 msgid "Sends a message to users currently connected 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 +#: ../data/glade/advanced_menuitem_menu.glade.h:5 msgid "Set MOTD" msgstr "Nastavit MOTD" -#: ../data/glade/advanced_menuitem_menu.glade.h:5 +#: ../data/glade/advanced_menuitem_menu.glade.h:6 msgid "Sets Message of the Day" msgstr "Nastavà Zprávu dne" -#: ../data/glade/advanced_menuitem_menu.glade.h:6 +#: ../data/glade/advanced_menuitem_menu.glade.h:7 msgid "Show _XML Console" msgstr "Zobrazit _XML konzoli" -#: ../data/glade/advanced_menuitem_menu.glade.h:7 +#: ../data/glade/advanced_menuitem_menu.glade.h:8 msgid "Update MOTD" msgstr "Upravit MOTD" -#: ../data/glade/advanced_menuitem_menu.glade.h:8 +#: ../data/glade/advanced_menuitem_menu.glade.h:9 msgid "Updates Message of the Day" msgstr "Upravà Zprávu dne" -#: ../data/glade/advanced_menuitem_menu.glade.h:9 +#: ../data/glade/advanced_menuitem_menu.glade.h:10 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 "okno/žáložka otevÅ™ená s tÃmto kontaktem" @@ -623,8 +765,7 @@ msgid "All statuses" msgstr "VÅ¡echny stavy" #: ../data/glade/advanced_notifications_window.glade.h:8 -#: ../src/common/commands.py:91 -#: ../src/common/helpers.py:243 +#: ../src/common/commands.py:91 ../src/common/helpers.py:246 msgid "Away" msgstr "PryÄ" @@ -641,7 +782,7 @@ msgid "Have " msgstr "Má" #: ../data/glade/advanced_notifications_window.glade.h:12 -#: ../src/common/helpers.py:253 +#: ../src/common/helpers.py:256 msgid "Invisible" msgstr "Neviditelný" @@ -650,7 +791,7 @@ msgid "Launch a command" msgstr "Provést pÅ™Ãkaz" #: ../data/glade/advanced_notifications_window.glade.h:14 -#: ../src/common/helpers.py:226 +#: ../src/common/helpers.py:229 msgid "Not Available" msgstr "Nedostupný" @@ -691,8 +832,10 @@ msgid "When " msgstr "Když" #: ../data/glade/advanced_notifications_window.glade.h:27 -msgid "_Activate window manager's UrgencyHint to make chat window in taskbar flash" -msgstr "_Aktivuj UrgencyHint window manageru pro blikánà okna rozhovoru v liÅ¡tÄ› úloh" +msgid "" +"_Activate window manager's UrgencyHint to make chat window in taskbar flash" +msgstr "" +"_Aktivuj UrgencyHint window manageru pro blikánà okna rozhovoru v liÅ¡tÄ› úloh" #: ../data/glade/advanced_notifications_window.glade.h:28 msgid "_Disable auto opening chat window" @@ -741,7 +884,8 @@ msgid "" "everybody" msgstr "" "kontakty\n" -"skupiny\vÅ¡ichni" +"skupiny\n" +"Å¡ichni" #: ../data/glade/advanced_notifications_window.glade.h:41 msgid "for " @@ -771,6 +915,82 @@ msgstr "PÅ™ijat nový záznam" msgid "You have received new entry:" msgstr "Dostal(a) jste novou položku: " +#: ../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 "<b>Type your new status message</b>" +msgstr "<b>NapiÅ¡te nový popis stavu</b>" + +#: ../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:2 +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:12 +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_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 +msgid "Invite _Friends" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:4 +msgid "Send _File" +msgstr "Odeslat _Soubor" + +#: ../data/glade/chat_control_popup_menu.glade.h:4 +msgid "Toggle Open_PGP Encryption" +msgstr "PÅ™epnout Open_PGP Å¡ifrovánÃ" + +#: ../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:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2567 +msgid "_History" +msgstr "_Historie" + #: ../data/glade/data_form_window.glade.h:1 msgid "Fill in the form." msgstr "Vyplňte formulář." @@ -824,15 +1044,18 @@ msgid "Shows a list of file transfers between you and others" 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" +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:769 +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:774 msgid "_Continue" msgstr "_PokraÄovat" @@ -840,8 +1063,7 @@ msgstr "_PokraÄovat" 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 +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:186 msgid "_Open Containing Folder" msgstr "_OtevÅ™Ãt obsahujÃcà složku" @@ -948,62 +1170,57 @@ msgid "Configure _Room" msgstr "Nastavit _mÃstnost" #: ../data/glade/gc_control_popup_menu.glade.h:5 -msgid "_Bookmark This Room" +#, fuzzy +msgid "_Bookmark" msgstr "_PÅ™idej do záložek" #: ../data/glade/gc_control_popup_menu.glade.h:6 -#: ../data/glade/chat_control_popup_menu.glade.h:5 -msgid "_Compact View Alt+C" -msgstr "_ZjednoduÅ¡ený pohled Alt+C" +msgid "_Destroy Room" +msgstr "" -#: ../data/glade/gc_control_popup_menu.glade.h:7 -#: ../data/glade/gc_occupants_menu.glade.h:5 -#: ../data/glade/chat_control_popup_menu.glade.h:6 -#: ../data/glade/roster_contact_context_menu.glade.h:13 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:6 -msgid "_History" -msgstr "_Historie" +#: ../data/glade/gc_control_popup_menu.glade.h:8 +#, fuzzy +msgid "_Manage Room" +msgstr "Spravuj záložky" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "" #: ../data/glade/gc_occupants_menu.glade.h:1 msgid "Mo_derator" msgstr "Mo_derátor" #: ../data/glade/gc_occupants_menu.glade.h:2 -#: ../data/glade/chat_context_menu.glade.h:2 -#: ../data/glade/chat_control_popup_menu.glade.h:4 -#: ../data/glade/roster_contact_context_menu.glade.h:10 -msgid "_Add to Roster" -msgstr "PÅ™id_at do Seznamu" +#, fuzzy +msgid "Occupant Actions" +msgstr "_Akce úÄastnÃků" -#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:5 msgid "_Admin" msgstr "_Správce" -#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:6 msgid "_Ban" msgstr "_Zakázat" -#: ../data/glade/gc_occupants_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:8 msgid "_Kick" msgstr "Vy_kopnout" -#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:9 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 +#: ../data/glade/gc_occupants_menu.glade.h:10 msgid "_Owner" msgstr "_VlastnÃk" -#: ../data/glade/gc_occupants_menu.glade.h:10 +#: ../data/glade/gc_occupants_menu.glade.h:11 msgid "_Send Private Message" msgstr "_Odeslat soukromou zprávu" -#: ../data/glade/gc_occupants_menu.glade.h:11 +#: ../data/glade/gc_occupants_menu.glade.h:12 msgid "_Voice" msgstr "_Hlas" @@ -1011,14 +1228,12 @@ msgstr "_Hlas" msgid "Create new post" msgstr "VytvoÅ™ nový zápis" -#: ../data/glade/groups_post_window.glade.h:2 -#: ../src/common/helpers.py:268 +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:271 msgid "From" msgstr "OdesÃlatel" #. holds subject -#: ../data/glade/groups_post_window.glade.h:3 -#: ../src/history_manager.py:142 +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:142 #: ../src/history_manager.py:173 msgid "Subject" msgstr "PÅ™edmÄ›t" @@ -1030,14 +1245,16 @@ msgid "" "You can select logs from the left and/or search database from below.\n" "\n" "<b>WARNING:</b>\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." msgstr "" "<big><b>VÃtejte do Gajimova Správce Historie</b></big>\n" "\n" "Můžete zvolit záznamy nalevo a/nebo prohledat databázi dole.\n" "\n" "<b>VAROVÃNÃ:</b>\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." +"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" @@ -1073,75 +1290,14 @@ msgid "Search" msgstr "NajÃt" #: ../data/glade/history_window.glade.h:5 +#: ../data/glade/zeroconf_information_window.glade.h:10 +msgid "_Log conversation history" +msgstr "_Zaznamenat historii konverzace" + +#: ../data/glade/history_window.glade.h:6 ../src/disco.py:1173 msgid "_Search" msgstr "_NajÃt" -#: ../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 "<b>Type your new status message</b>" -msgstr "<b>NapiÅ¡te nový popis stavu</b>" - -#: ../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: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:20 -#: ../data/glade/subscription_request_popup_menu.glade.h:1 -#: ../data/glade/systray_context_menu.glade.h:7 -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:8 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:4 -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/invitation_received_dialog.glade.h:1 msgid "Accept" msgstr "PÅ™ijmout" @@ -1155,8 +1311,7 @@ msgstr "OdmÃtnout" msgid "Invitation Received" msgstr "PÅ™ijata pozvánka" -#: ../data/glade/join_groupchat_window.glade.h:1 -#: ../src/dialogs.py:1148 +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1264 msgid "Join Group Chat" msgstr "PÅ™ipojit se do diskuze" @@ -1165,14 +1320,14 @@ msgid "Join this room automatically when I connect" msgstr "PÅ™ipoj se do této mÃstnosti automaticky po pÅ™ipojenÃ" #: ../data/glade/join_groupchat_window.glade.h:3 -#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:5 #: ../data/glade/profile_window.glade.h:24 -#: ../data/glade/vcard_information_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:31 msgid "Nickname:" msgstr "PÅ™ezdÃvka:" #: ../data/glade/join_groupchat_window.glade.h:4 -#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:6 msgid "Password:" msgstr "Heslo:" @@ -1181,13 +1336,12 @@ msgid "Recently:" msgstr "Nedávno:" #: ../data/glade/join_groupchat_window.glade.h:6 -#: ../data/glade/manage_bookmarks_window.glade.h:7 +#: ../data/glade/manage_bookmarks_window.glade.h:8 msgid "Room:" msgstr "MÃstnost:" -#: ../data/glade/join_groupchat_window.glade.h:7 -#: ../src/disco.py:1163 -#: ../src/disco.py:1546 +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1161 +#: ../src/disco.py:1616 msgid "_Join" msgstr "_Vstoupit" @@ -1207,15 +1361,19 @@ msgstr "Pokud je zaÅ¡krtnuto, Gajim se pÅ™ipojà do této mÃstnosti pÅ™i spuÅ¡t msgid "Manage Bookmarks" msgstr "Spravuj záložky" -#: ../data/glade/manage_bookmarks_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 msgid "Print status:" msgstr "VypiÅ¡ stav:" -#: ../data/glade/manage_bookmarks_window.glade.h:8 +#: ../data/glade/manage_bookmarks_window.glade.h:9 msgid "Server:" msgstr "Server:" -#: ../data/glade/manage_bookmarks_window.glade.h:9 +#: ../data/glade/manage_bookmarks_window.glade.h:10 msgid "Title:" msgstr "Titul:" @@ -1241,10 +1399,14 @@ msgstr "Spravuj profily Proxy" #: ../data/glade/manage_proxies_window.glade.h:6 #: ../data/glade/profile_window.glade.h:23 -#: ../data/glade/vcard_information_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:30 msgid "Name:" msgstr "Jméno:" +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "He_slo:" + #: ../data/glade/manage_proxies_window.glade.h:8 msgid "Type:" msgstr "Typ:" @@ -1253,18 +1415,21 @@ msgstr "Typ:" msgid "Use authentication" msgstr "Použij autentifikaci" +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_PoÄÃtaÄ:" + #: ../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:1113 +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1206 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:10 +#: ../data/glade/roster_window.glade.h:12 #: ../data/glade/subscription_request_window.glade.h:6 msgid "_Actions" msgstr "_Akce" @@ -1272,7 +1437,7 @@ 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:253 +#: ../src/filetransfers_window.py:243 msgid "_Send" msgstr "Ode_slat" @@ -1333,7 +1498,8 @@ msgstr "Povolit odeslánà informace o _OS" #: ../data/glade/preferences_window.glade.h:17 msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Povolit popup/upozornÄ›nà pokud jsem _pryÄ/nedostupný/neruÅ¡it/neviditelný" +msgstr "" +"Povolit popup/upozornÄ›nà pokud jsem _pryÄ/nedostupný/neruÅ¡it/neviditelný" #: ../data/glade/preferences_window.glade.h:18 msgid "Also known as iChat style" @@ -1344,8 +1510,13 @@ msgid "Always check to see if Gajim is the _default Jabber client on startup" msgstr "Vždy pÅ™i startu zkontroluj, zda je Gajim _výchozà Jabber klient" #: ../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 "PÅ™Ãklad: Pokud povolÃÅ¡ stavovou zprávu pro pryÄ, Gajim se nadále nebude ptát na text zprávy když se pÅ™epneÅ¡ do pryÄ; použije tady uvedenou zprávu" +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 "" +"PÅ™Ãklad: Pokud povolÃÅ¡ stavovou zprávu pro pryÄ, Gajim se nadále nebude ptát " +"na text zprávy když se pÅ™epneÅ¡ do pryÄ; použije tady uvedenou zprávu" #: ../data/glade/preferences_window.glade.h:21 msgid "Ask status message when I:" @@ -1374,13 +1545,18 @@ msgstr "" "VlastnÃ" #: ../data/glade/preferences_window.glade.h:29 -#: ../src/chat_control.py:856 msgid "Chat" msgstr "Rozhovor" #: ../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, because 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 rosteru. Použijte s rozvahou, protože tato volba zakáže vÅ¡echny zprávy od kontaktů, které jeÅ¡tÄ› nemáte v rosteru" +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, because 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 rosteru. Použijte s " +"rozvahou, protože tato volba zakáže vÅ¡echny zprávy od kontaktů, které jeÅ¡tÄ› " +"nemáte v rosteru" #: ../data/glade/preferences_window.glade.h:31 msgid "Configure color and font of the interface" @@ -1433,66 +1609,122 @@ msgid "Events" msgstr "Události" #: ../data/glade/preferences_window.glade.h:44 -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 display in chat windows." -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 zobrazovat v oknech rozhovoru." +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 " +"display in chat windows." +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 zobrazovat v oknech rozhovoru." #: ../data/glade/preferences_window.glade.h:45 -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." +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:46 -msgid "Gajim will automatically show new events by popping up the relevant window" +msgid "" +"Gajim will automatically show new events by popping up the relevant window" msgstr "Gajim automaticky zobrazà nové události vyskoÄenÃm pÅ™ÃsluÅ¡ného okna" #: ../data/glade/preferences_window.glade.h:47 -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" +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:48 -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" +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:49 -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" +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:50 -msgid "Gajim will only change the icon of the contact that triggered the new event" +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:52 -msgid "If checked, Gajim will also include information about the sender of the new emails" -msgstr "Pokud zaÅ¡krtnuto, Gajim uvede také informaci o odesilateli zprávy nového emailu" +#, fuzzy +msgid "Hides buttons in chatwindows to " +msgstr "Skryje tlaÄÃtka v oknÄ› diskuze." #: ../data/glade/preferences_window.glade.h:53 -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" +msgid "" +"If checked, Gajim will also include information about the sender of the new " +"emails" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim uvede také informaci o odesilateli zprávy nového " +"emailu" #: ../data/glade/preferences_window.glade.h:54 -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" +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:55 -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Ã" +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:56 -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...)" +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:57 -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" +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:58 +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:59 msgid "Ignore rich content in incoming messages" msgstr "Ignoruj formátovánà v pÅ™ÃchozÃch zprávách" -#: ../data/glade/preferences_window.glade.h:59 +#: ../data/glade/preferences_window.glade.h:60 msgid "Ma_nage..." msgstr "Sp_ravovat..." -#: ../data/glade/preferences_window.glade.h:60 +#: ../data/glade/preferences_window.glade.h:61 msgid "" "Never\n" "Always\n" @@ -1504,183 +1736,205 @@ msgstr "" "Podle úÄtu\n" "Podle typu" -#: ../data/glade/preferences_window.glade.h:64 +#: ../data/glade/preferences_window.glade.h:65 msgid "Notify me about contacts that: " msgstr "Upozorni mÄ› na kontakty které se: " -#: ../data/glade/preferences_window.glade.h:65 +#: ../data/glade/preferences_window.glade.h:66 msgid "Notify on new _GMail email" msgstr "Upozorni pÅ™i novém _GMail emailu" -#: ../data/glade/preferences_window.glade.h:66 +#: ../data/glade/preferences_window.glade.h:67 msgid "On every _message" msgstr "PÅ™i každé _zprávÄ›" -#: ../data/glade/preferences_window.glade.h:67 +#: ../data/glade/preferences_window.glade.h:68 msgid "One message _window:" msgstr "_Okno jednoduché zprávy:" -#: ../data/glade/preferences_window.glade.h:68 +#: ../data/glade/preferences_window.glade.h:69 msgid "Outgoing Chat state noti_fications:" msgstr "Odchozà události stavu rozhovoru:" -#: ../data/glade/preferences_window.glade.h:69 +#: ../data/glade/preferences_window.glade.h:70 msgid "Play _sounds" msgstr "PÅ™ehrávat _zvuky" -#: ../data/glade/preferences_window.glade.h:70 +#: ../data/glade/preferences_window.glade.h:71 msgid "Preferences" msgstr "NastavenÃ" -#: ../data/glade/preferences_window.glade.h:71 +#: ../data/glade/preferences_window.glade.h:72 msgid "Print time:" msgstr "ÄŒas tisku:" -#: ../data/glade/preferences_window.glade.h:72 +#: ../data/glade/preferences_window.glade.h:73 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:73 +#: ../data/glade/preferences_window.glade.h:74 msgid "Set status message to reflect currently playing _music track" -msgstr "Nastav stavouvou zprávu, aby odrážela momentálnÄ› pÅ™ehrávanou _hudebnà stopu" +msgstr "" +"Nastav stavouvou zprávu, aby odrážela momentálnÄ› pÅ™ehrávanou _hudebnà stopu" -#: ../data/glade/preferences_window.glade.h:74 +#: ../data/glade/preferences_window.glade.h:75 msgid "Show only in _roster" msgstr "Zobrazit pouze v _Seznamu" -#: ../data/glade/preferences_window.glade.h:75 +#: ../data/glade/preferences_window.glade.h:76 msgid "Sign _in" msgstr "_PÅ™ihlásÃ" -#: ../data/glade/preferences_window.glade.h:76 +#: ../data/glade/preferences_window.glade.h:77 msgid "Sign _out" msgstr "_OdhlásÃ" -#: ../data/glade/preferences_window.glade.h:77 -msgid "Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text." -msgstr "NÄ›které zprávy mohou obsahovat formátovánà (odsazenÃ, barvy aj.). Pokud je zaÅ¡krtnuto, Gajim zobrazà pouze Äistý text." - #: ../data/glade/preferences_window.glade.h:78 +msgid "" +"Some messages may include rich content (formatting, colors etc). If checked, " +"Gajim will just display the raw message text." +msgstr "" +"NÄ›které zprávy mohou obsahovat formátovánà (odsazenÃ, barvy aj.). Pokud je " +"zaÅ¡krtnuto, Gajim zobrazà pouze Äistý text." + +#: ../data/glade/preferences_window.glade.h:79 msgid "Status" msgstr "Stav" -#: ../data/glade/preferences_window.glade.h:79 +#: ../data/glade/preferences_window.glade.h:80 msgid "T_heme:" msgstr "_Téma:" -#: ../data/glade/preferences_window.glade.h:80 +#: ../data/glade/preferences_window.glade.h:81 msgid "The auto away status message" msgstr "Text stavu automaticky pryÄ" -#: ../data/glade/preferences_window.glade.h:81 +#: ../data/glade/preferences_window.glade.h:82 msgid "The auto not available status message" msgstr "Text stavu nedostupný" -#: ../data/glade/preferences_window.glade.h:82 +#: ../data/glade/preferences_window.glade.h:83 msgid "Treat all incoming messages as:" msgstr "Považovat vÅ¡echny pÅ™Ãchozà zprávy za: " -#: ../data/glade/preferences_window.glade.h:83 +#: ../data/glade/preferences_window.glade.h:84 msgid "Use _transports iconsets" msgstr "PoužÃvej ikony _transportů" -#: ../data/glade/preferences_window.glade.h:84 +#: ../data/glade/preferences_window.glade.h:85 msgid "Use system _default" msgstr "Použij nastavenà _systému" -#: ../data/glade/preferences_window.glade.h:85 +#: ../data/glade/preferences_window.glade.h:86 msgid "Use t_rayicon (aka. notification area icon)" msgstr "_Ikona v systrayi (jinak Å™eÄeno v oznamovacà oblasti)" -#: ../data/glade/preferences_window.glade.h:86 -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:87 -msgid "When new event is received" -msgstr "Když je pÅ™ijata nová zpráva" +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:88 -msgid "Works for Rhythmbox and Muine players. For more players, please visit http://trac.gajim.org/wiki/GajimAndMusicPlayer" -msgstr "Pracuje s Rhythmbox a Munie pÅ™ehrávaÄi. Pro jiné pÅ™ehrávaÄe, navÅ¡tivte http://trac.gajim.org/wiki/GajimAndMusicPlayer" +msgid "When new event is received" +msgstr "Když je pÅ™ijata nová zpráva" #: ../data/glade/preferences_window.glade.h:89 +msgid "" +"Works for Rhythmbox and Muine players. For more players, please visit http://" +"trac.gajim.org/wiki/GajimAndMusicPlayer" +msgstr "" +"Pracuje s Rhythmbox a Munie pÅ™ehrávaÄi. Pro jiné pÅ™ehrávaÄe, navÅ¡tivte " +"http://trac.gajim.org/wiki/GajimAndMusicPlayer" + +#: ../data/glade/preferences_window.glade.h:90 msgid "_Advanced Notifications Control..." msgstr "_Správa pokroÄilých notifikacÃ..." -#: ../data/glade/preferences_window.glade.h:90 +#: ../data/glade/preferences_window.glade.h:91 msgid "_Browser:" msgstr "_ProhlÞeÄ:" -#: ../data/glade/preferences_window.glade.h:91 +#: ../data/glade/preferences_window.glade.h:92 msgid "_File manager:" msgstr "_Správce souborů:" -#: ../data/glade/preferences_window.glade.h:92 +#: ../data/glade/preferences_window.glade.h:93 msgid "_Font:" msgstr "_PÃsmo:" -#: ../data/glade/preferences_window.glade.h:93 +#: ../data/glade/preferences_window.glade.h:94 msgid "_Highlight misspelled words" msgstr "Zvýrazňovat _slova s pÅ™eklepy" -#: ../data/glade/preferences_window.glade.h:94 +#: ../data/glade/preferences_window.glade.h:95 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:95 +#: ../data/glade/preferences_window.glade.h:96 msgid "_Incoming message:" msgstr "_PÅ™Ãchozà zpráva:" -#: ../data/glade/preferences_window.glade.h:96 +#: ../data/glade/preferences_window.glade.h:97 msgid "_Log status changes of contacts" msgstr "Zaznamenávat zmÄ›ny _stavu kontaktů" -#: ../data/glade/preferences_window.glade.h:97 +#: ../data/glade/preferences_window.glade.h:98 msgid "_Mail client:" msgstr "E-_mailový klient:" -#: ../data/glade/preferences_window.glade.h:98 +#: ../data/glade/preferences_window.glade.h:99 +#, fuzzy +msgid "_Make message windows compact" +msgstr "_Okno jednoduché zprávy:" + +#: ../data/glade/preferences_window.glade.h:100 msgid "_Never" msgstr "_Nikdy" -#: ../data/glade/preferences_window.glade.h:99 +#: ../data/glade/preferences_window.glade.h:101 msgid "_Notify me about it" msgstr "_Upozornit mÄ›" -#: ../data/glade/preferences_window.glade.h:100 +#: ../data/glade/preferences_window.glade.h:102 msgid "_Open..." msgstr "_OtevÅ™Ãt..." -#: ../data/glade/preferences_window.glade.h:101 +#: ../data/glade/preferences_window.glade.h:103 msgid "_Outgoing message:" msgstr "_Odchozà zpráva:" -#: ../data/glade/preferences_window.glade.h:102 +#: ../data/glade/preferences_window.glade.h:104 msgid "_Player:" msgstr "_PÅ™ehrávaÄ:" -#: ../data/glade/preferences_window.glade.h:103 +#: ../data/glade/preferences_window.glade.h:105 msgid "_Pop it up" msgstr "Zobrazit o_kno se zprávou" -#: ../data/glade/preferences_window.glade.h:104 +#: ../data/glade/preferences_window.glade.h:106 msgid "_Reset to Default Colors" msgstr "_Vrátit k výchozÃm barvám" -#: ../data/glade/preferences_window.glade.h:105 +#: ../data/glade/preferences_window.glade.h:107 msgid "_Sort contacts by status" msgstr "_SeÅ™adit podle stavu" -#: ../data/glade/preferences_window.glade.h:106 +#: ../data/glade/preferences_window.glade.h:108 msgid "_Status message:" msgstr "_Stav:" -#: ../data/glade/preferences_window.glade.h:107 +#: ../data/glade/preferences_window.glade.h:109 msgid "_URL:" msgstr "_URL:" -#: ../data/glade/preferences_window.glade.h:108 +#: ../data/glade/preferences_window.glade.h:110 msgid "minutes" msgstr "minutách" @@ -1724,8 +1978,7 @@ msgstr "Jabber ID" msgid "Order:" msgstr "PoÅ™adÃ:" -#: ../data/glade/privacy_list_window.glade.h:11 -#: ../src/dialogs.py:1862 +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2097 msgid "Privacy List" msgstr "" @@ -1802,111 +2055,104 @@ msgid "Company:" msgstr "SpoleÄnost:" #: ../data/glade/profile_window.glade.h:9 -#: ../data/glade/vcard_information_window.glade.h:13 +#: ../data/glade/vcard_information_window.glade.h:14 msgid "Country:" msgstr "ZemÄ›:" #: ../data/glade/profile_window.glade.h:10 -#: ../data/glade/vcard_information_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:15 msgid "Department:" msgstr "OddÄ›lenÃ:" -#: ../data/glade/profile_window.glade.h:11 -#: ../data/glade/vcard_information_window.glade.h:15 -#: ../data/glade/zeroconf_information_window.glade.h:2 -#: ../data/glade/zeroconf_properties_window.glade.h:5 -msgid "E-Mail:" -msgstr "E-Mail:" - #: ../data/glade/profile_window.glade.h:12 -#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:17 msgid "Extra Address:" msgstr "DalÅ¡Ã adresa:" #. Family Name #: ../data/glade/profile_window.glade.h:14 -#: ../data/glade/vcard_information_window.glade.h:18 +#: ../data/glade/vcard_information_window.glade.h:19 msgid "Family:" msgstr "PÅ™ÃjmenÃ:" #. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) #: ../data/glade/profile_window.glade.h:16 -#: ../data/glade/vcard_information_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:21 msgid "Format: YYYY-MM-DD" msgstr "Formát: RRRR-MM-DD" -#. Given Name -#: ../data/glade/profile_window.glade.h:18 +#: ../data/glade/profile_window.glade.h:17 #: ../data/glade/vcard_information_window.glade.h:22 +#, fuzzy +msgid "Full Name" +msgstr "Jméno" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 msgid "Given:" msgstr "KÅ™estnÃ:" -#: ../data/glade/profile_window.glade.h:19 -#: ../data/glade/vcard_information_window.glade.h:23 +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 msgid "Homepage:" msgstr "Dom. stránka:" #. Middle Name -#: ../data/glade/profile_window.glade.h:21 -#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 msgid "Middle:" msgstr "StÅ™ednÃ:" -#: ../data/glade/profile_window.glade.h:22 -#: ../data/glade/vcard_information_window.glade.h:27 -msgid "More" -msgstr "VÃce" - #: ../data/glade/profile_window.glade.h:25 -#: ../data/glade/vcard_information_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:34 msgid "Personal Info" msgstr "Osobnà údaje" #: ../data/glade/profile_window.glade.h:27 -#: ../data/glade/vcard_information_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:35 msgid "Phone No.:" msgstr "Telefon:" #: ../data/glade/profile_window.glade.h:28 -#: ../data/glade/vcard_information_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:36 msgid "Position:" msgstr "Pozice:" #: ../data/glade/profile_window.glade.h:29 -#: ../data/glade/vcard_information_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:37 msgid "Postal Code:" msgstr "PSÄŒ:" #. Prefix in Name #: ../data/glade/profile_window.glade.h:31 -#: ../data/glade/vcard_information_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:39 msgid "Prefix:" msgstr "Titul:" #: ../data/glade/profile_window.glade.h:32 -#: ../data/glade/vcard_information_window.glade.h:38 -#: ../src/vcard.py:273 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:302 msgid "Role:" msgstr "PostavenÃ:" #: ../data/glade/profile_window.glade.h:33 -#: ../data/glade/vcard_information_window.glade.h:39 +#: ../data/glade/vcard_information_window.glade.h:42 msgid "State:" msgstr "Stát:" #: ../data/glade/profile_window.glade.h:34 -#: ../data/glade/vcard_information_window.glade.h:41 +#: ../data/glade/vcard_information_window.glade.h:44 msgid "Street:" msgstr "Ulice:" #. Suffix in Name #: ../data/glade/profile_window.glade.h:36 -#: ../data/glade/vcard_information_window.glade.h:45 +#: ../data/glade/vcard_information_window.glade.h:48 msgid "Suffix:" msgstr "Za jménem:" #: ../data/glade/profile_window.glade.h:37 -#: ../data/glade/vcard_information_window.glade.h:46 +#: ../data/glade/vcard_information_window.glade.h:50 msgid "Work" msgstr "Práce" @@ -1922,6 +2168,16 @@ msgstr "Odstranit úÄet _pouze z Gajimu" msgid "Remove account from Gajim and from _server" msgstr "Odstranit úÄet z Gajimu i ze _serveru" +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2524 ../src/roster_window.py:2734 +#: ../src/roster_window.py:2870 +msgid "_Remove" +msgstr "Odst_ranit" + #: ../data/glade/roster_contact_context_menu.glade.h:1 msgid "A_sk to see his/her status" msgstr "Požádat o zobrazenà je(jÃ)ho _stavu" @@ -1936,58 +2192,81 @@ msgstr "PÅ™idat zvláštnà _upozornÄ›nÃ" msgid "Assign Open_PGP Key" msgstr "PÅ™iÅ™adit Open_PGP klÃÄ" +#. Edit Groups #: ../data/glade/roster_contact_context_menu.glade.h:4 #: ../data/glade/zeroconf_contact_context_menu.glade.h:3 -#: ../src/roster_window.py:2075 +#: ../src/roster_window.py:2497 msgid "Edit _Groups" msgstr "Upravit _skupiny" +#. Execute Command #: ../data/glade/roster_contact_context_menu.glade.h:5 -#: ../src/roster_window.py:2210 +#: ../src/roster_window.py:2827 msgid "Execute Command..." msgstr "Provést pÅ™Ãkaz..." +#. Invite to Groupchat #: ../data/glade/roster_contact_context_menu.glade.h:6 -#: ../src/roster_window.py:2033 +#: ../src/roster_window.py:2440 msgid "In_vite to" msgstr "_Pozvat do" +#. Send Custom Status #: ../data/glade/roster_contact_context_menu.glade.h:7 +#: ../src/roster_window.py:2664 ../src/roster_window.py:2798 +#, fuzzy +msgid "Send Cus_tom Status" +msgstr "Poslat vlastnà XML" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 #: ../data/glade/systray_context_menu.glade.h:2 msgid "Send Single _Message" msgstr "Odeslat jednoduchou _zprávu" -#: ../data/glade/roster_contact_context_menu.glade.h:9 +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:11 #: ../data/glade/zeroconf_contact_context_menu.glade.h:5 msgid "Start _Chat" msgstr "ZaÄÃt _rozhovor" -#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/roster_contact_context_menu.glade.h:13 msgid "_Allow him/her to see my status" msgstr "_Dovol kontaktu vidÄ›t můj stav" -#: ../data/glade/roster_contact_context_menu.glade.h:12 -msgid "_Forbid him/her to see my status" -msgstr "_Zakaž mu/jà vidÄ›t můj stav" - -#. Remove group #: ../data/glade/roster_contact_context_menu.glade.h:14 -#: ../src/roster_window.py:2027 -#: ../src/roster_window.py:2124 -#: ../src/roster_window.py:2231 -msgid "_Remove from Roster" -msgstr "Odst_ranit ze Seznamu" +#: ../src/roster_window.py:2514 ../src/roster_window.py:2725 +msgid "_Block" +msgstr "" #: ../data/glade/roster_contact_context_menu.glade.h:15 +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:17 #: ../data/glade/zeroconf_contact_context_menu.glade.h:7 -#: ../src/roster_window.py:2219 +#, fuzzy +msgid "_Manage Contact" +msgstr "PÅ™ejmenovat kontakt" + +#. Rename +#: ../data/glade/roster_contact_context_menu.glade.h:19 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2854 msgid "_Rename" msgstr "_PÅ™ejmenovat" -#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_contact_context_menu.glade.h:20 msgid "_Subscription" msgstr "_Autorizace" +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2508 ../src/roster_window.py:2719 +msgid "_Unblock" +msgstr "" + #: ../data/glade/roster_window.glade.h:1 msgid "A_ccounts" msgstr "ÚÄ_ty" @@ -1997,61 +2276,63 @@ msgid "Add _Contact" msgstr "PÅ™idat _kontakt" #: ../data/glade/roster_window.glade.h:3 +#, fuzzy +msgid "Fea_tures" +msgstr "Vlastnosti serveru" + +#: ../data/glade/roster_window.glade.h:4 msgid "File _Transfers" msgstr "_PÅ™enosy souborů" -#: ../data/glade/roster_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:5 msgid "Frequently Asked Questions (online)" msgstr "ÄŒasto kladené dotazy - FAQ (online)" -#: ../data/glade/roster_window.glade.h:6 +#: ../data/glade/roster_window.glade.h:7 msgid "Help online" msgstr "NápovÄ›da online" -#: ../data/glade/roster_window.glade.h:7 +#: ../data/glade/roster_window.glade.h:9 msgid "Profile, A_vatar" msgstr "Profil, A_vatar" -#: ../data/glade/roster_window.glade.h:8 +#: ../data/glade/roster_window.glade.h:10 msgid "Show Trans_ports" msgstr "Zobrazuj trans_porty" -#: ../data/glade/roster_window.glade.h:9 +#: ../data/glade/roster_window.glade.h:11 msgid "Show _Offline Contacts" msgstr "Zobrazit _odpojené kontakty" -#: ../data/glade/roster_window.glade.h:12 +#: ../data/glade/roster_window.glade.h:14 msgid "_Contents" msgstr "_Obsah" -# FIXME: chtelo by to cesky vyraz pro service discovery -#: ../data/glade/roster_window.glade.h:13 -msgid "_Discover Services" -msgstr "_ProhlÞet služby" - -#: ../data/glade/roster_window.glade.h:14 -#: ../src/disco.py:1284 -#: ../src/roster_window.py:2202 +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1349 msgid "_Edit" msgstr "_Úpravy" -#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/roster_window.glade.h:17 msgid "_FAQ" msgstr "_FAQ" -#: ../data/glade/roster_window.glade.h:17 +#: ../data/glade/roster_window.glade.h:18 msgid "_Help" msgstr "_NápovÄ›da" -#: ../data/glade/roster_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:19 msgid "_Preferences" msgstr "_NastavenÃ" -#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:20 msgid "_Quit" msgstr "_Konec" #: ../data/glade/roster_window.glade.h:21 +msgid "_Send Single Message" +msgstr "Ode_slat jednoduchou zprávu" + +#: ../data/glade/roster_window.glade.h:23 msgid "_View" msgstr "_Zobraz" @@ -2128,7 +2409,9 @@ msgid "Authorize contact so he or she can know when you're connected" msgstr "Autorizovat kontakt, aby vÄ›dÄ›l kdy jsi pÅ™ipojený(á)" #: ../data/glade/subscription_request_window.glade.h:3 -msgid "Deny authorization from contact so he or she cannot know when you're connected" +msgid "" +"Deny authorization from contact so he or she cannot know when you're " +"connected" msgstr "OdmÃtne autorizaci od kontaktu, takže nezjistà kdy jste pÅ™ipojen(a)" #: ../data/glade/subscription_request_window.glade.h:4 @@ -2155,6 +2438,10 @@ msgstr "Zobrazit _Seznam" msgid "Sta_tus" msgstr "S_tav" +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "_Diskuze" + #. Given Name #: ../data/glade/vcard_information_window.glade.h:5 msgid "Ask:" @@ -2169,44 +2456,46 @@ msgid "Comments" msgstr "Vlastnà poznámky" #: ../data/glade/vcard_information_window.glade.h:11 +#, fuzzy +msgid "Configured avatar:" +msgstr "Nastavit _mÃstnost" + +#: ../data/glade/vcard_information_window.glade.h:12 #: ../data/glade/zeroconf_information_window.glade.h:1 msgid "Contact" msgstr "Kontakt" -#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:13 msgid "Contact Information" msgstr "Informace o kontaktu" -#: ../data/glade/vcard_information_window.glade.h:24 -#: ../data/glade/zeroconf_information_window.glade.h:4 -#: ../data/glade/zeroconf_properties_window.glade.h:13 -#: ../src/dialogs.py:416 -msgid "Jabber ID:" -msgstr "Jabber ID:" +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "VÃce" -#: ../data/glade/vcard_information_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:33 msgid "OS:" msgstr "OS:" -#: ../data/glade/vcard_information_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:40 #: ../data/glade/zeroconf_information_window.glade.h:8 msgid "Resource:" msgstr "Zdroj:" -#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/vcard_information_window.glade.h:43 #: ../data/glade/zeroconf_information_window.glade.h:9 msgid "Status:" msgstr "Stav:" #. Family Name -#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/vcard_information_window.glade.h:46 msgid "Subscription:" msgstr "Autorizace:" -#: ../data/glade/vcard_information_window.glade.h:47 -#: ../data/glade/zeroconf_information_window.glade.h:10 -msgid "_Log conversation history" -msgstr "_Zaznamenat historii konverzace" +#: ../data/glade/vcard_information_window.glade.h:49 +#, fuzzy +msgid "User avatar:" +msgstr "Avatar:" #: ../data/glade/xml_console_window.glade.h:1 msgid "<b>Jabber Traffic</b>" @@ -2216,11 +2505,6 @@ msgstr "<b>Provoz Jabberu</b>" msgid "<b>XML Input</b>" msgstr "<b>Vstup XML</b>" -#. 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" @@ -2239,16 +2523,6 @@ msgstr "_Zpráva" msgid "_Presence" msgstr "_Status" -#: ../data/glade/zeroconf_information_window.glade.h:3 -#: ../data/glade/zeroconf_properties_window.glade.h:6 -msgid "First Name:" -msgstr "KÅ™estnÃ:" - -#: ../data/glade/zeroconf_information_window.glade.h:5 -#: ../data/glade/zeroconf_properties_window.glade.h:14 -msgid "Last Name:" -msgstr "PÅ™ÃjmenÃ:" - #: ../data/glade/zeroconf_information_window.glade.h:6 msgid "Local jid:" msgstr "Lokálnà jid: " @@ -2257,22 +2531,10 @@ msgstr "Lokálnà jid: " msgid "Personal" msgstr "OsobnÃ" -#: ../data/glade/zeroconf_properties_window.glade.h:11 -msgid "" -"If the default port that is used for incoming messages is unfitting for your setup you can select another one here.\n" -"You might consider to change possible firewall settings." -msgstr "" -"Pokud výchozà port použitý k pÅ™ijÃmánà zpráv nevyhovuje tvému nastavenÃ, můžeÅ¡ si zvolit jiný.\n" -"MůžeÅ¡ také zvážit zmÄ›nu nastavenà firewallu." - #: ../data/glade/zeroconf_properties_window.glade.h:15 msgid "Modify Account" msgstr "Upravit úÄet" -#: ../data/glade/zeroconf_properties_window.glade.h:21 -msgid "Use custom port:" -msgstr "PoužÃt vlastnà port:" - #. For i18n #: ../src/advanced.py:51 msgid "Activated" @@ -2302,303 +2564,505 @@ msgstr "Barva" msgid "Preference Name" msgstr "Název volby" -#: ../src/advanced.py:71 -msgid "Value" -msgstr "Hodnota" +#: ../src/advanced.py:71 +msgid "Value" +msgstr "Hodnota" + +#: ../src/advanced.py:79 +msgid "Type" +msgstr "Typ" + +#. we talk about option description in advanced configuration editor +#: ../src/advanced.py:136 +msgid "(None)" +msgstr "(Žádný)" + +#. we talk about password +#: ../src/advanced.py:239 +msgid "Hidden" +msgstr "Skryté" + +#. 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"}" +#: ../src/chat_control.py:54 +msgid "English" +msgstr "AngliÄtina" + +#: ../src/chat_control.py:54 +msgid "Belarusian" +msgstr "BÄ›loruÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Bulgarian" +msgstr "BulharÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Breton" +msgstr "BretonÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Czech" +msgstr "ÄŒeÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "German" +msgstr "NÄ›mÄina" + +#: ../src/chat_control.py:54 +msgid "Greek" +msgstr "ŘeÄtina" + +#: ../src/chat_control.py:54 +msgid "British" +msgstr "BritÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Esperanto" +msgstr "Esperanto" + +#: ../src/chat_control.py:54 +msgid "Spanish" +msgstr "Å panÄ›lÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Basque" +msgstr "BaskiÄtina" + +#: ../src/chat_control.py:54 +msgid "French" +msgstr "FrancouzÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Croatian" +msgstr "ChorvatÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Italian" +msgstr "ItalÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Norwegian (b)" +msgstr "NorÅ¡tina (b)" + +#: ../src/chat_control.py:54 +msgid "Dutch" +msgstr "HolandÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Norwegian" +msgstr "NorÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Polish" +msgstr "PolÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Portuguese" +msgstr "PortugalÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Brazilian Portuguese" +msgstr "Brazilská portugalÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Russian" +msgstr "RuÅ¡tina" + +#: ../src/chat_control.py:54 +#, fuzzy +msgid "Serbian" +msgstr "NÄ›mÄina" + +#: ../src/chat_control.py:54 +msgid "Slovak" +msgstr "SlovenÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Swedish" +msgstr "Å védÅ¡tina" + +#: ../src/chat_control.py:54 +msgid "Chinese (Ch)" +msgstr "ÄŒÃnÅ¡tina" + +#: ../src/chat_control.py:282 +msgid "Spelling language" +msgstr "Kontrola jazyka" + +#. we are not connected +#: ../src/chat_control.py:305 ../src/chat_control.py:511 +msgid "A connection is not available" +msgstr "Spojenà nenà dostupné" + +#: ../src/chat_control.py:306 ../src/chat_control.py:512 +msgid "Your message can not be sent until you are connected." +msgstr "Va¹e zpráva nemù¾e být odeslána dokud se nepøipojÃte." + +#: ../src/chat_control.py:1132 +#, python-format +msgid "%(nickname)s from group chat %(room_name)s" +msgstr "%(nickname)s z diskuze %(room_name)s" + +#. we talk about a contact here +#: ../src/chat_control.py:1220 +#, python-format +msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" +msgstr "%s nerozesÃlá svůj OpenPGP klÃÄ nebo nemá žádný pÅ™iÅ™azen" + +#: ../src/chat_control.py:1259 ../src/groupchat_control.py:1394 +#, 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/chat_control.py:1266 ../src/groupchat_control.py:1417 +#, python-format +msgid "Commands: %s" +msgstr "PÅ™Ãkazy: %s" + +#: ../src/chat_control.py:1269 ../src/groupchat_control.py:1431 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "PoužitÃ: /%s, smaže zprávy v oknÄ›." + +#: ../src/chat_control.py:1272 ../src/groupchat_control.py:1436 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "PoužitÃ: /%s, skryje tlaÄÃtka rozhovoru." + +#: ../src/chat_control.py:1275 ../src/groupchat_control.py:1452 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"PoužitÃ: /%s <akce>, poÅ¡le akci do aktuálnà mÃstnosti. Použijte tÅ™età osobu " +"(napÅ™Ãklad /%s explodoval.)" + +#: ../src/chat_control.py:1279 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "" + +#: ../src/chat_control.py:1282 +#, fuzzy, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "PoužitÃ: /%s, skryje tlaÄÃtka rozhovoru." + +#: ../src/chat_control.py:1285 ../src/groupchat_control.py:1475 +#, python-format +msgid "No help info for /%s" +msgstr "Žádná dalÅ¡Ã nápovÄ›da pro /%s" + +#: ../src/chat_control.py:1422 +msgid "Encryption enabled" +msgstr "Å ifrovánà zapnuto" + +#: ../src/chat_control.py:1427 +msgid "Encryption disabled" +msgstr "Å ifrovánà vypnuto" -#: ../src/advanced.py:79 -msgid "Type" -msgstr "Typ" +#. add_to_roster_menuitem +#: ../src/chat_control.py:1575 ../src/conversation_textview.py:559 +#: ../src/dialogs.py:673 ../src/gajim.py:887 ../src/gajim.py:888 +#: ../src/gajim.py:1357 ../src/roster_window.py:344 +#: ../src/roster_window.py:428 ../src/roster_window.py:1784 +#: ../src/roster_window.py:1794 ../src/roster_window.py:2039 +#: ../src/roster_window.py:2277 ../src/roster_window.py:3125 +#: ../src/roster_window.py:3332 ../src/roster_window.py:4682 +#: ../src/roster_window.py:4684 ../src/common/contacts.py:84 +#: ../src/common/helpers.py:44 ../src/common/helpers.py:258 +msgid "Not in Roster" +msgstr "nenà v seznamu" -#. we talk about option description in advanced configuration editor -#: ../src/advanced.py:136 -msgid "(None)" -msgstr "(Žádný)" +#. %s is being replaced in the code with JID +#: ../src/chat_control.py:1717 +#, python-format +msgid "You just received a new message from \"%s\"" +msgstr "PrávÄ› jsi obdržela novou zprávu od \"%s\"" -#. we talk about password -#: ../src/advanced.py:239 -msgid "Hidden" -msgstr "Skryté" +#: ../src/chat_control.py:1718 +msgid "" +"If you close this tab and you have history disabled, this message will be " +"lost." +msgstr "" +"Pokud zavÅ™ete toto okno a historie je vypnutá, tato zpráva bude ztracena." -#: ../src/config.py:137 -#: ../src/config.py:586 +#: ../src/config.py:136 ../src/config.py:593 msgid "Disabled" msgstr "Vypnuto" -#: ../src/config.py:231 +#: ../src/config.py:228 #, python-format msgid "Every %s _minutes" msgstr "Každých %s _minut" -#: ../src/config.py:351 +#: ../src/config.py:348 msgid "Active" msgstr "AktivnÃ" -#: ../src/config.py:359 +#: ../src/config.py:356 msgid "Event" msgstr "Událost" -#: ../src/config.py:682 -#: ../src/gajim.py:2231 +#: ../src/config.py:710 ../src/dialogs.py:957 #, python-format msgid "Dictionary for lang %s not available" msgstr "SlovnÃk pro jazyk %s nenà dostupný" -#: ../src/config.py:683 -#: ../src/gajim.py:2232 +#: ../src/config.py:711 #, python-format -msgid "You have to install %s dictionary to use spellchecking, or choose another language by setting the speller_language option." -msgstr "MusÃÅ¡ nainstalovat %s slovnÃk k použità kontroly pravopisu, nebo vybrat jiný jazyk nastavenÃm volby speller_language." +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option." +msgstr "" +"MusÃÅ¡ nainstalovat %s slovnÃk k použità kontroly pravopisu, nebo vybrat jiný " +"jazyk nastavenÃm volby speller_language." -#: ../src/config.py:1000 +#: ../src/config.py:1034 msgid "status message title" msgstr "titulek stavu" -#: ../src/config.py:1000 +#: ../src/config.py:1034 msgid "status message text" msgstr "text stavu" -#: ../src/config.py:1036 +#: ../src/config.py:1070 msgid "First Message Received" msgstr "Prvnà zpráva pÅ™ijata" -#: ../src/config.py:1037 +#: ../src/config.py:1071 msgid "Next Message Received" msgstr "DalÅ¡Ã zpráva pÅ™ijata" -#: ../src/config.py:1038 +#: ../src/config.py:1072 msgid "Contact Connected" msgstr "Kontakt se pÅ™ipojil" -#: ../src/config.py:1039 +#: ../src/config.py:1073 msgid "Contact Disconnected" msgstr "Kontakt se odpojil" -#: ../src/config.py:1040 +#: ../src/config.py:1074 msgid "Message Sent" msgstr "Zpráva odeslána" -#: ../src/config.py:1041 +#: ../src/config.py:1075 msgid "Group Chat Message Highlight" msgstr "ZvýraznÄ›nà zprávy v diskuzi" -#: ../src/config.py:1042 +#: ../src/config.py:1076 msgid "Group Chat Message Received" msgstr "PÅ™ijetà zprávy v diskuzi" -#: ../src/config.py:1049 +#: ../src/config.py:1083 msgid "GMail Email Received" msgstr "PÅ™iÅ¡el GMail Email" -#: ../src/config.py:1252 +#. Name column +#: ../src/config.py:1352 ../src/dialogs.py:1396 ../src/dialogs.py:1460 +#: ../src/disco.py:737 ../src/disco.py:1560 ../src/disco.py:1806 +#: ../src/history_window.py:78 +msgid "Name" +msgstr "Jméno" + +#: ../src/config.py:1460 ../src/common/config.py:373 +msgid "Be right back." +msgstr "Hned jsem zpÄ›t." + +#: ../src/config.py:1464 +msgid "Relogin now?" +msgstr "PÅ™ipojit se teÄ znovu?" + +#: ../src/config.py:1465 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "Pokud chcete, aby se zmÄ›ny projevily ihned, musÃte se znovu pÅ™ihlásit." + +#: ../src/config.py:1560 ../src/config.py:1659 msgid "OpenPGP is not usable in this computer" msgstr "OpenPGP nenà použitelné na tomto poÄÃtaÄi" -#: ../src/config.py:1298 +#: ../src/config.py:1695 ../src/config.py:1739 +msgid "Unread events" +msgstr "NepÅ™eÄtené zprávy" + +#: ../src/config.py:1696 +msgid "Read all pending events before removing this account." +msgstr "PÅ™eÄtÄ›te si vÅ¡echny ÄekajÃcà zprávy, než smažete tento úÄet." + +#: ../src/config.py:1725 +#, python-format +msgid "You have opened chat in account %s" +msgstr "OtevÅ™el(a) jsi rozhovor z úÄtu %s" + +#: ../src/config.py:1726 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "" +"VÅ¡echna okna rozhovorů a diskuzà budou zavÅ™ena. Opravdu chceÅ¡ pokraÄovat?" + +#: ../src/config.py:1735 msgid "You are currently connected to the server" msgstr "Nejste přávÄ› pÅ™ipojen(a) k serveru" -#: ../src/config.py:1299 +#: ../src/config.py:1736 msgid "To change the account name, you must be disconnected." msgstr "Ke zmÄ›nÄ› jména úÄtu se musite odpojit." -#: ../src/config.py:1302 -#: ../src/config.py:1901 -msgid "Unread events" -msgstr "NepÅ™eÄtené zprávy" - -#: ../src/config.py:1303 +#: ../src/config.py:1740 msgid "To change the account name, you must read all pending events." msgstr "PÅ™ed zmÄ›nou jména úÄtu si musÃte pÅ™eÄÃst vÅ¡echny ÄekajÃcà zprávy." -#: ../src/config.py:1307 +#: ../src/config.py:1746 msgid "Account Name Already Used" msgstr "Jméno úÄtu už existuje" -#: ../src/config.py:1308 -msgid "This name is already used by another of your accounts. Please choose another name." +#: ../src/config.py:1747 +msgid "" +"This name is already used by another of your accounts. Please choose another " +"name." msgstr "Toto jméno je už použito pro jiný úÄet. Zvolte jiné, prosÃm." -#: ../src/config.py:1312 -#: ../src/config.py:1316 +#: ../src/config.py:1751 ../src/config.py:1755 msgid "Invalid account name" msgstr "Neplatné jméno úÄtu" -#: ../src/config.py:1313 +#: ../src/config.py:1752 msgid "Account name cannot be empty." msgstr "Jméno úÄtu nemůže být prázdné." -#: ../src/config.py:1317 +#: ../src/config.py:1756 msgid "Account name cannot contain spaces." msgstr "Jméno úÄtu nesmà obsahovat mezery." -#: ../src/config.py:1325 -#: ../src/config.py:1331 -#: ../src/config.py:1341 -#: ../src/config.py:3004 +#: ../src/config.py:1820 +#, fuzzy +msgid "Rename Account" +msgstr "Spravuj úÄty" + +#: ../src/config.py:1821 +#, fuzzy, python-format +msgid "Enter a new name for account %s" +msgstr "Zadej nové jméno pro skupinu %s." + +#: ../src/config.py:1839 ../src/config.py:1847 ../src/config.py:1887 +#: ../src/config.py:3106 msgid "Invalid Jabber ID" msgstr "Neplatné Jabber ID" -#: ../src/config.py:1332 +#: ../src/config.py:1848 msgid "A Jabber ID must be in the form \"user@servername\"." msgstr "Jabber ID musà být ve tvaru \"uživatel@jménoserveru\"." -#: ../src/config.py:1391 +#: ../src/config.py:2033 ../src/config.py:3177 msgid "Invalid entry" msgstr "Neplatný záznam" -#: ../src/config.py:1392 +#: ../src/config.py:2034 ../src/config.py:3178 msgid "Custom port must be a port number." msgstr "Vlastnà port musà být ÄÃslo portu." -#: ../src/config.py:1520 -#: ../src/common/config.py:366 -msgid "Be right back." -msgstr "Hned jsem zpÄ›t." +#: ../src/config.py:2055 +msgid "Failed to get secret keys" +msgstr "Selhalo zÃskánà privátnÃho klÃÄe" -#: ../src/config.py:1530 -msgid "Relogin now?" -msgstr "PÅ™ipojit se teÄ znovu?" +#: ../src/config.py:2056 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "Nastala chyba pÅ™i zÃskávánà VaÅ¡ich OpenPGP privátnÃch klÃÄů." -#: ../src/config.py:1531 -msgid "If you want all the changes to apply instantly, you must relogin." -msgstr "Pokud chcete, aby se zmÄ›ny projevily ihned, musÃte se znovu pÅ™ihlásit." +#: ../src/config.py:2059 +msgid "OpenPGP Key Selection" +msgstr "VýbÄ›r OpenPGP klÃÄe" + +#: ../src/config.py:2060 +msgid "Choose your OpenPGP key" +msgstr "Vyberte Váš OpenPGP klÃÄ" -#: ../src/config.py:1557 +#: ../src/config.py:2117 msgid "No such account available" msgstr "Takový úÄet nenà dostupný" -#: ../src/config.py:1558 +#: ../src/config.py:2118 msgid "You must create your account before editing your personal information." msgstr "MusÃte vytvoÅ™it úÄet pÅ™ed úpravou vaÅ¡ich osobnÃch údajů." -#: ../src/config.py:1565 -#: ../src/dialogs.py:1130 -#: ../src/dialogs.py:1316 -#: ../src/disco.py:419 -#: ../src/profile_window.py:323 +#: ../src/config.py:2125 ../src/dialogs.py:1243 ../src/dialogs.py:1384 +#: ../src/dialogs.py:1564 ../src/disco.py:420 ../src/profile_window.py:325 msgid "You are not connected to the server" msgstr "Nejste pÅ™ipojen(a) k serveru" -#: ../src/config.py:1566 +#: ../src/config.py:2126 msgid "Without a connection, you can not edit your personal information." msgstr "Bez pÅ™ipojenà nemůžete upravovat osobnà údaje." -#: ../src/config.py:1570 +#: ../src/config.py:2130 msgid "Your server doesn't support Vcard" msgstr "Váš server nepodporuje vizitky." -#: ../src/config.py:1571 +#: ../src/config.py:2131 msgid "Your server can't save your personal information." msgstr "Váš server neumà uložit VaÅ¡e osobnà informace." -#: ../src/config.py:1595 -#: ../src/config.py:3392 -msgid "Failed to get secret keys" -msgstr "Selhalo zÃskánà privátnÃho klÃÄe" - -#: ../src/config.py:1596 -#: ../src/config.py:3393 -msgid "There was a problem retrieving your OpenPGP secret keys." -msgstr "Nastala chyba pÅ™i zÃskávánà VaÅ¡ich OpenPGP privátnÃch klÃÄů." - -#: ../src/config.py:1599 -#: ../src/config.py:3396 -msgid "OpenPGP Key Selection" -msgstr "VýbÄ›r OpenPGP klÃÄe" - -#: ../src/config.py:1600 -#: ../src/config.py:3397 -msgid "Choose your OpenPGP key" -msgstr "Vyberte Váš OpenPGP klÃÄ" - -#. Name column -#: ../src/config.py:1835 -#: ../src/disco.py:740 -#: ../src/disco.py:1495 -#: ../src/disco.py:1733 -#: ../src/history_window.py:78 -msgid "Name" -msgstr "Jméno" - -#: ../src/config.py:1838 -msgid "Server" -msgstr "Server" - -#: ../src/config.py:1902 -msgid "Read all pending events before removing this account." -msgstr "PÅ™eÄtÄ›te si vÅ¡echny ÄekajÃcà zprávy, než smažete tento úÄet." - -#: ../src/config.py:1939 -#, python-format -msgid "You have opened chat in account %s" -msgstr "OtevÅ™el(a) jsi rozhovor z úÄtu %s" - -#: ../src/config.py:1940 -msgid "All chat and groupchat windows will be closed. Do you want to continue?" -msgstr "VÅ¡echna okna rozhovorů a diskuzà budou zavÅ™ena. Opravdu chceÅ¡ pokraÄovat?" - -#: ../src/config.py:1999 +#: ../src/config.py:2162 msgid "Account Local already exists." msgstr "ÚÄet Local už existuje." -#: ../src/config.py:2000 +#: ../src/config.py:2163 msgid "Please rename or remove it before enabling link-local messaging." msgstr "ProsÃm pÅ™ejmenujte nebo odstraňte pÅ™ed povolenÃm lokálnÃch zpráv." -#: ../src/config.py:2234 +#: ../src/config.py:2339 #, python-format msgid "Edit %s" msgstr "Uprav %s" -#: ../src/config.py:2236 +#: ../src/config.py:2341 #, python-format msgid "Register to %s" msgstr "Registrovat k %s" #. list at the beginning -#: ../src/config.py:2302 +#: ../src/config.py:2377 msgid "Ban List" msgstr "Ban List" -#: ../src/config.py:2303 +#: ../src/config.py:2378 msgid "Member List" msgstr "Seznam Älenů" -#: ../src/config.py:2304 +#: ../src/config.py:2379 msgid "Owner List" msgstr "Seznam vlastnÃků" -#: ../src/config.py:2305 +#: ../src/config.py:2380 msgid "Administrator List" msgstr "Seznam správců" #. Address column #. holds JID (who said this) -#: ../src/config.py:2338 -#: ../src/disco.py:747 -#: ../src/history_manager.py:155 +#: ../src/config.py:2429 ../src/disco.py:744 ../src/history_manager.py:155 msgid "JID" msgstr "JID" -#: ../src/config.py:2346 +#: ../src/config.py:2437 msgid "Reason" msgstr "Důvod" -#: ../src/config.py:2351 +#: ../src/config.py:2442 msgid "Nick" msgstr "PÅ™ezdÃvka" -#: ../src/config.py:2355 +#: ../src/config.py:2446 msgid "Role" msgstr "PostavenÃ" -#: ../src/config.py:2376 +#: ../src/config.py:2471 msgid "Banning..." msgstr "Zakazuji..." #. You can move '\n' before user@domain if that line is TOO BIG -#: ../src/config.py:2378 +#: ../src/config.py:2473 msgid "" "<b>Whom do you want to ban?</b>\n" "\n" @@ -2606,37 +3070,37 @@ msgstr "" "<b>Koho chcete zakázat?</b>\n" "\n" -#: ../src/config.py:2380 +#: ../src/config.py:2475 msgid "Adding Member..." msgstr "PÅ™idávám Älena..." -#: ../src/config.py:2381 +#: ../src/config.py:2476 msgid "" "<b>Whom do you want to make a member?</b>\n" "\n" msgstr "<b>Kdo se má stát Älenem?</b>\n" -#: ../src/config.py:2383 +#: ../src/config.py:2478 msgid "Adding Owner..." msgstr "PÅ™idávám vlastnÃka..." -#: ../src/config.py:2384 +#: ../src/config.py:2479 msgid "" "<b>Whom do you want to make an owner?</b>\n" "\n" msgstr "<b>Kdo se má stát vlastnÃkem?</b>\n" -#: ../src/config.py:2386 +#: ../src/config.py:2481 msgid "Adding Administrator..." msgstr "PÅ™idávám správce..." -#: ../src/config.py:2387 +#: ../src/config.py:2482 msgid "" "<b>Whom do you want to make an administrator?</b>\n" "\n" msgstr "<b>Kdo se má stát správcem?</b>\n" -#: ../src/config.py:2388 +#: ../src/config.py:2483 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -2649,779 +3113,777 @@ 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:2493 +#: ../src/config.py:2587 #, python-format msgid "Removing %s account" msgstr "Odstraňuju úÄet %s" -#: ../src/config.py:2510 -#: ../src/roster_window.py:2734 +#: ../src/config.py:2604 ../src/gajim.py:1300 ../src/roster_window.py:3391 msgid "Password Required" msgstr "Vyžadováno heslo" -#: ../src/config.py:2511 -#: ../src/roster_window.py:2730 +#: ../src/config.py:2605 ../src/roster_window.py:3387 #, python-format msgid "Enter your password for account %s" msgstr "Zadejte heslo pro úÄet %s" -#: ../src/config.py:2512 -#: ../src/roster_window.py:2735 +#: ../src/config.py:2606 ../src/roster_window.py:3392 msgid "Save password" msgstr "Uložit heslo" -#: ../src/config.py:2526 +#: ../src/config.py:2620 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "ÚÄet \"%s\" se pÅ™ipojil k serveru" -#: ../src/config.py:2527 +#: ../src/config.py:2621 msgid "If you remove it, the connection will be lost." msgstr "Pokud jej smažete, pÅ™ipojenà bude ztraceno." -#: ../src/config.py:2612 +#: ../src/config.py:2714 msgid "Default" msgstr "VýchozÃ" -#: ../src/config.py:2612 +#: ../src/config.py:2714 msgid "?print_status:All" msgstr "?print_status:VÅ¡echny" -#: ../src/config.py:2613 +#: ../src/config.py:2715 msgid "Enter and leave only" msgstr "" -#: ../src/config.py:2614 +#: ../src/config.py:2716 msgid "?print_status:None" msgstr "?print_status:Žádný" -#: ../src/config.py:2682 +#: ../src/config.py:2785 msgid "New Group Chat" msgstr "Nová diskuze" -#: ../src/config.py:2715 +#: ../src/config.py:2818 msgid "This bookmark has invalid data" msgstr "Tato záložka má neplatná data" -#: ../src/config.py:2716 -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:2819 +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:2979 +#: ../src/config.py:3089 msgid "Invalid username" msgstr "Neplatné uživatelské jméno" -#: ../src/config.py:2980 +#: ../src/config.py:3091 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:2990 -#: ../src/dialogs.py:1335 -msgid "Invalid password" -msgstr "Neplatné heslo" - -#: ../src/config.py:2991 -msgid "You must enter a password for the new account." -msgstr "MusÃte zadat heslo pro nový úÄet." - -#: ../src/config.py:2995 -#: ../src/dialogs.py:1340 -msgid "Passwords do not match" -msgstr "Hesla se neshodujÃ" - -#: ../src/config.py:2996 -#: ../src/dialogs.py:1341 -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:3015 +#: ../src/config.py:3117 msgid "Duplicate Jabber ID" msgstr "Dvakrát použité Jabber ID" -#: ../src/config.py:3016 +#: ../src/config.py:3118 msgid "This account is already configured in Gajim." msgstr "Tento úÄet už je nastaven v Gajimu." -#: ../src/config.py:3033 +#: ../src/config.py:3135 msgid "Account has been added successfully" msgstr "ÚÄet byl úspěšnÄ› pÅ™idán" -#: ../src/config.py:3034 -#: ../src/config.py:3069 -msgid "You can set advanced account options by pressing the Advanced button, or later by choosing the Accounts menuitem under the Edit menu from the main window." -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:3136 ../src/config.py:3281 +msgid "" +"You can set advanced account options by pressing the Advanced button, or " +"later by choosing the Accounts menuitem under the Edit menu from the main " +"window." +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:3068 -msgid "Your new account has been created successfully" -msgstr "Váš úÄet byl úspěšnÄ› vytvoÅ™en" +#: ../src/config.py:3153 +#, fuzzy +msgid "Invalid server" +msgstr "Neplatné uživatelské jméno" -#: ../src/config.py:3086 +#: ../src/config.py:3154 +#, fuzzy +msgid "Please provide a server on which you want to register." +msgstr "ProsÃm zadejte novou pÅ™ezdÃvku, kterou chcete použÃvat:" + +#: ../src/config.py:3260 ../src/config.py:3299 msgid "An error occurred during account creation" msgstr "Nastala chyba pÅ™i vytvářenà úÄtu" -#: ../src/config.py:3144 +#: ../src/config.py:3280 +msgid "Your new account has been created successfully" +msgstr "Váš úÄet byl úspěšnÄ› vytvoÅ™en" + +#: ../src/config.py:3385 msgid "Account name is in use" msgstr "Jméno úÄtu se použÃvá" -#: ../src/config.py:3145 +#: ../src/config.py:3386 msgid "You already have an account using this name." msgstr "Již máte úÄet s tÃmto jménem." -#: ../src/conversation_textview.py:273 -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 Äarou oznaÄuje to, co bylo Å™eÄeno po poslednÃm Ätenà této diskuze" +#: ../src/conversation_textview.py:334 +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 Äarou oznaÄuje to, co bylo Å™eÄeno po poslednÃm Ätenà této " +"diskuze" -#: ../src/conversation_textview.py:342 +#: ../src/conversation_textview.py:406 #, python-format msgid "_Actions for \"%s\"" msgstr "_Akce pro \"%s\"" -#: ../src/conversation_textview.py:354 +#: ../src/conversation_textview.py:418 msgid "Read _Wikipedia Article" msgstr "ÄŒÃst Älánkek na _Wikipedia" -#: ../src/conversation_textview.py:359 +#: ../src/conversation_textview.py:423 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:375 +#: ../src/conversation_textview.py:439 #, 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:388 +#: ../src/conversation_textview.py:452 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL pro hledánà na webu chybà \"%s\"" -#: ../src/conversation_textview.py:391 +#: ../src/conversation_textview.py:455 msgid "Web _Search for it" msgstr "_Hledat na Webu" -#: ../src/conversation_textview.py:397 +#: ../src/conversation_textview.py:461 msgid "Open as _Link" msgstr "OtevÅ™Ãt jako _Odkaz" -#. add_to_roster_menuitem -#: ../src/conversation_textview.py:495 -#: ../src/dialogs.py:629 -#: ../src/gajim.py:850 -#: ../src/gajim.py:851 -#: ../src/gajim.py:1195 -#: ../src/chat_control.py:1412 -#: ../src/roster_window.py:332 -#: ../src/roster_window.py:410 -#: ../src/roster_window.py:1497 -#: ../src/roster_window.py:1507 -#: ../src/roster_window.py:1683 -#: ../src/roster_window.py:1889 -#: ../src/roster_window.py:2474 -#: ../src/roster_window.py:2675 -#: ../src/roster_window.py:3906 -#: ../src/roster_window.py:3908 -#: ../src/common/contacts.py:73 -#: ../src/common/helpers.py:43 -#: ../src/common/helpers.py:255 -msgid "Not in Roster" -msgstr "nenà v seznamu" - -#: ../src/conversation_textview.py:754 +#: ../src/conversation_textview.py:925 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:758 +#: ../src/conversation_textview.py:929 #, python-format msgid "%i days ago" msgstr "pÅ™ed %i dny" #. if we have subject, show it too! -#: ../src/conversation_textview.py:792 +#: ../src/conversation_textview.py:963 #, python-format msgid "Subject: %s\n" msgstr "PÅ™edmÄ›t: %s\n" -#: ../src/dialogs.py:59 +#: ../src/dialogs.py:63 #, python-format msgid "Contact name: <i>%s</i>" msgstr "Jméno kontaktu: <i>%s</i>" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:65 #, python-format msgid "Jabber ID: <i>%s</i>" msgstr "Jabber ID: <i>%s</i>" -#: ../src/dialogs.py:211 +#: ../src/dialogs.py:215 msgid "Group" msgstr "Skupina" -#: ../src/dialogs.py:218 +#: ../src/dialogs.py:222 msgid "In the group" msgstr "Ve skupinÄ›" -#: ../src/dialogs.py:269 +#: ../src/dialogs.py:273 msgid "KeyID" msgstr "ID klÃÄe" -#: ../src/dialogs.py:272 +#: ../src/dialogs.py:276 msgid "Contact name" msgstr "Jméno kontaktu" -#: ../src/dialogs.py:318 +#: ../src/dialogs.py:322 #, python-format msgid "%s Status Message" msgstr "Text stavu %s" -#: ../src/dialogs.py:320 +#: ../src/dialogs.py:324 msgid "Status Message" msgstr "Text stavu" -#: ../src/dialogs.py:395 +#: ../src/dialogs.py:424 msgid "Save as Preset Status Message" msgstr "Uložit jako pÅ™ednastavený stav" -#: ../src/dialogs.py:396 +#: ../src/dialogs.py:425 msgid "Please type a name for this status message" msgstr "NapiÅ¡te jméno pro tento stav" -#: ../src/dialogs.py:417 +#: ../src/dialogs.py:436 +#, fuzzy +msgid "Overwrite Status Message?" +msgstr "Text stavu" + +#: ../src/dialogs.py:437 +#, fuzzy +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "Toto jméno je už použito pro jiný úÄet. Zvolte jiné, prosÃm." + +#: ../src/dialogs.py:453 msgid "AIM Address:" msgstr "AIM adresa:" -#: ../src/dialogs.py:418 +#: ../src/dialogs.py:454 msgid "GG Number:" msgstr "GG ÄÃslo: " -#: ../src/dialogs.py:419 +#: ../src/dialogs.py:455 msgid "ICQ Number:" msgstr "ICQ ÄÃslo: " -#: ../src/dialogs.py:420 +#: ../src/dialogs.py:456 msgid "MSN Address:" msgstr "MSN adresa:" -#: ../src/dialogs.py:421 +#: ../src/dialogs.py:457 msgid "Yahoo! Address:" msgstr "Yahoo! adresa:" -#: ../src/dialogs.py:457 +#: ../src/dialogs.py:493 #, 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:459 +#: ../src/dialogs.py:495 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" -#: ../src/dialogs.py:609 -#: ../src/dialogs.py:615 +#: ../src/dialogs.py:653 ../src/dialogs.py:659 msgid "Invalid User ID" msgstr "Neplatný identifikátor uživatele" -#: ../src/dialogs.py:616 +#: ../src/dialogs.py:660 msgid "The user ID must not contain a resource." msgstr "User ID nesmà obsahovat zdroj." -#: ../src/dialogs.py:630 +#: ../src/dialogs.py:674 msgid "Contact already in roster" msgstr "Kontakt už je v Seznamu" -#: ../src/dialogs.py:631 +#: ../src/dialogs.py:675 msgid "This contact is already listed in your roster." msgstr "Tento kontakt už je obsažen ve VaÅ¡em seznamu." -#: ../src/dialogs.py:668 +#: ../src/dialogs.py:711 msgid "User ID:" msgstr "Uživatel:" -#: ../src/dialogs.py:731 +#: ../src/dialogs.py:773 msgid "A GTK+ jabber client" msgstr "GTK+ Jabber client" -#: ../src/dialogs.py:732 +#: ../src/dialogs.py:774 msgid "GTK+ Version:" msgstr "GTK+ verze: " -#: ../src/dialogs.py:733 +#: ../src/dialogs.py:775 msgid "PyGTK Version:" msgstr "PyGTK verze: " -#: ../src/dialogs.py:747 +#: ../src/dialogs.py:789 msgid "Current Developers:" msgstr "Aktivnà vývojáři:" -#: ../src/dialogs.py:749 +#: ../src/dialogs.py:791 msgid "Past Developers:" msgstr "Vysloužilà vývojáři:" -#: ../src/dialogs.py:759 +#: ../src/dialogs.py:801 msgid "THANKS:" msgstr "DÃKY:" #. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:765 +#: ../src/dialogs.py:807 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 <someone@somewhere> -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:820 msgid "translator-credits" msgstr "Petr MenÅ¡Ãk <pihhan@seznam.cz>" -#: ../src/dialogs.py:908 +#: ../src/dialogs.py:950 #, python-format msgid "Unable to bind to port %s." msgstr "Nemohu naslouchat na portu %s." -#: ../src/dialogs.py:909 -msgid "Maybe you have another running instance of Gajim. File Transfer will be cancelled." +#: ../src/dialogs.py:951 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"cancelled." msgstr "Možná máš puÅ¡tÄ›nou jinou instanci Gajimu. PÅ™enos souborů bude zruÅ¡en." -#: ../src/dialogs.py:1060 +#: ../src/dialogs.py:958 +#, fuzzy, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"MusÃÅ¡ nainstalovat %s slovnÃk k použità kontroly pravopisu, nebo vybrat jiný " +"jazyk nastavenÃm volby speller_language." + +#: ../src/dialogs.py:1172 #, python-format msgid "Subscription request for account %s from %s" msgstr "Žádost o autorizaci pro úÄet %s od %s" -#: ../src/dialogs.py:1063 +#: ../src/dialogs.py:1175 #, python-format msgid "Subscription request from %s" msgstr "Žádost o autorizaci od %s" -#: ../src/dialogs.py:1123 -#: ../src/roster_window.py:686 +#: ../src/dialogs.py:1236 ../src/roster_window.py:762 #, python-format msgid "You are already in group chat %s" msgstr "Už jsi v mÃstnosti %s" -#: ../src/dialogs.py:1131 +#: ../src/dialogs.py:1244 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:1146 +#: ../src/dialogs.py:1262 #, python-format msgid "Join Group Chat with account %s" msgstr "Vstoupit do diskuze z úÄtu %s" -#: ../src/dialogs.py:1214 -#: ../src/dialogs.py:1220 +#: ../src/dialogs.py:1332 ../src/dialogs.py:1338 +#: ../src/groupchat_control.py:1639 msgid "Invalid group chat Jabber ID" msgstr "Neplatné Jabber ID diskuznà mÃstnosti" -#: ../src/dialogs.py:1215 -#: ../src/dialogs.py:1221 +#: ../src/dialogs.py:1333 ../src/dialogs.py:1339 +#: ../src/groupchat_control.py:1640 msgid "The group chat Jabber ID has not allowed characters." msgstr "Jabber ID diskuze obsahuje nepÅ™ijatelné znaky." -#: ../src/dialogs.py:1227 +#: ../src/dialogs.py:1345 msgid "This is not a group chat" msgstr "Tohle nenà diskuze" -#: ../src/dialogs.py:1228 +#: ../src/dialogs.py:1346 #, python-format msgid "%s is not the name of a group chat." msgstr "%s nenà jméno diskuze." -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1385 +#, fuzzy +msgid "Without a connection, you can not synchronise your contacts." +msgstr "Nemůžete mÄ›nit heslo, pokud nejste pÅ™ipojen(a)." + +#: ../src/dialogs.py:1399 +msgid "Server" +msgstr "Server" + +#: ../src/dialogs.py:1432 +#, fuzzy +msgid "This account is not connected to the server" +msgstr "ÚÄet \"%s\" se pÅ™ipojil k serveru" + +#: ../src/dialogs.py:1433 +#, fuzzy +msgid "You cannot synchronize with an account unless it is connected." +msgstr "Nemůžete vstoupit do diskuze pokud nejste pÅ™ipojen(a)." + +#: ../src/dialogs.py:1457 +msgid "Synchronise" +msgstr "" + +#: ../src/dialogs.py:1515 #, python-format msgid "Start Chat with account %s" msgstr "ZaÄÃt rozhovor z úÄtu %s" -#: ../src/dialogs.py:1269 +#: ../src/dialogs.py:1517 msgid "Start Chat" msgstr "ZaÄÃt rozhovor" -#: ../src/dialogs.py:1270 +#: ../src/dialogs.py:1518 msgid "" "Fill in the nickname or the Jabber ID of the contact you would like\n" "to send a chat message to:" -msgstr "Vyplňte Jabber ID nebo pÅ™ezdÃvku kontaktu, se kterým chcete zaÄÃt rozhovor:" +msgstr "" +"Vyplňte Jabber ID nebo pÅ™ezdÃvku kontaktu, se kterým chcete zaÄÃt rozhovor:" #. if offline or connecting -#: ../src/dialogs.py:1295 -#: ../src/dialogs.py:1654 -#: ../src/dialogs.py:1785 +#: ../src/dialogs.py:1543 ../src/dialogs.py:1889 ../src/dialogs.py:2020 msgid "Connection not available" msgstr "Spojenà nenà dostupné" -#: ../src/dialogs.py:1296 -#: ../src/dialogs.py:1655 -#: ../src/dialogs.py:1786 +#: ../src/dialogs.py:1544 ../src/dialogs.py:1890 ../src/dialogs.py:2021 #, 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:1305 -#: ../src/dialogs.py:1308 +#: ../src/dialogs.py:1553 ../src/dialogs.py:1556 msgid "Invalid JID" msgstr "Neplatné JID" -#: ../src/dialogs.py:1308 +#: ../src/dialogs.py:1556 #, python-format msgid "Unable to parse \"%s\"." msgstr "Nemůžu dekódovat \"%s\"." -#: ../src/dialogs.py:1317 +#: ../src/dialogs.py:1565 msgid "Without a connection, you can not change your password." msgstr "Nemůžete mÄ›nit heslo, pokud nejste pÅ™ipojen(a)." -#: ../src/dialogs.py:1336 +#: ../src/dialogs.py:1583 +msgid "Invalid password" +msgstr "Neplatné heslo" + +#: ../src/dialogs.py:1584 msgid "You must enter a password." msgstr "MusÃte zadat heslo." +#: ../src/dialogs.py:1588 +msgid "Passwords do not match" +msgstr "Hesla se neshodujÃ" + +#: ../src/dialogs.py:1589 +msgid "The passwords typed in both fields must be identical." +msgstr "Hesla zadaná v obou polÃÄkách musà být identická." + #. img to display #. default value -#: ../src/dialogs.py:1383 -#: ../src/notify.py:212 -#: ../src/notify.py:416 +#: ../src/dialogs.py:1631 ../src/notify.py:218 ../src/notify.py:428 msgid "Contact Signed In" msgstr "Kontakt se pÅ™ihlásil" -#: ../src/dialogs.py:1385 -#: ../src/notify.py:220 -#: ../src/notify.py:418 +#: ../src/dialogs.py:1633 ../src/notify.py:226 ../src/notify.py:430 msgid "Contact Signed Out" msgstr "Kontakt se odhlásil" #. chat message -#: ../src/dialogs.py:1387 -#: ../src/notify.py:239 -#: ../src/notify.py:420 +#: ../src/dialogs.py:1635 ../src/notify.py:249 ../src/notify.py:432 msgid "New Message" msgstr "Nová zpráva" #. single message -#: ../src/dialogs.py:1387 -#: ../src/notify.py:224 -#: ../src/notify.py:420 +#: ../src/dialogs.py:1635 ../src/notify.py:230 ../src/notify.py:432 msgid "New Single Message" msgstr "Nová jednoduché zpráva" #. private message -#: ../src/dialogs.py:1388 -#: ../src/notify.py:231 -#: ../src/notify.py:421 +#: ../src/dialogs.py:1636 ../src/notify.py:237 ../src/notify.py:433 msgid "New Private Message" msgstr "Nová soukromá zpráva" -#: ../src/dialogs.py:1388 -#: ../src/gajim.py:1290 -#: ../src/notify.py:429 +#: ../src/dialogs.py:1636 ../src/gajim.py:1453 ../src/notify.py:441 msgid "New E-mail" msgstr "Nový E-mail" -#: ../src/dialogs.py:1390 -#: ../src/gajim.py:1443 -#: ../src/notify.py:423 +#: ../src/dialogs.py:1638 ../src/gajim.py:1606 ../src/notify.py:435 msgid "File Transfer Request" msgstr "Žádost o pÅ™enos souboru" -#: ../src/dialogs.py:1392 -#: ../src/gajim.py:1262 -#: ../src/gajim.py:1419 -#: ../src/notify.py:425 +#: ../src/dialogs.py:1640 ../src/gajim.py:1425 ../src/gajim.py:1582 +#: ../src/notify.py:437 msgid "File Transfer Error" msgstr "Chyba pÅ™enosu souboru" -#: ../src/dialogs.py:1394 -#: ../src/gajim.py:1482 -#: ../src/gajim.py:1504 -#: ../src/gajim.py:1521 -#: ../src/notify.py:427 +#: ../src/dialogs.py:1642 ../src/gajim.py:1645 ../src/gajim.py:1667 +#: ../src/gajim.py:1684 ../src/notify.py:439 msgid "File Transfer Completed" msgstr "PÅ™enos souboru dokonÄen" -#: ../src/dialogs.py:1395 -#: ../src/gajim.py:1485 -#: ../src/notify.py:427 +#: ../src/dialogs.py:1643 ../src/gajim.py:1648 ../src/notify.py:439 msgid "File Transfer Stopped" msgstr "PÅ™enos souboru zastaven" -#: ../src/dialogs.py:1397 -#: ../src/gajim.py:1159 -#: ../src/notify.py:431 +#: ../src/dialogs.py:1645 ../src/gajim.py:1321 ../src/notify.py:443 msgid "Groupchat Invitation" msgstr "Skupinová pozvánka" -#: ../src/dialogs.py:1399 -#: ../src/notify.py:204 -#: ../src/notify.py:433 +#: ../src/dialogs.py:1647 ../src/notify.py:210 ../src/notify.py:445 msgid "Contact Changed Status" msgstr "Kontakt zmÄ›nil stav" -#: ../src/dialogs.py:1516 -#: ../src/chat_control.py:208 -msgid "" -"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" -"\n" -"Highlighting misspelled words feature will not be used" -msgstr "" -"Pokud to nenà Váš jazyk, pro který chcete zvýrazňovat slova s pÅ™eklepy, potom prosÃm nastavte promÄ›nnou $LANG na správnou. NapÅ™Ãklad. pro ÄŒeÅ¡tinu spusÅ¥te export LANG=cs_CZ nebo export LANG=cs_CZ zapiÅ¡te do ~/.bash_profile nebo pro nastavenà globálnÄ› do /etc/profile.\n" -"\n" -"Vlastnost zvýrazňovánà pÅ™eklepů nebude použita" - -#: ../src/dialogs.py:1584 +#: ../src/dialogs.py:1819 #, python-format msgid "Single Message using account %s" msgstr "Jednoduchá zpráva z úÄtu %s" -#: ../src/dialogs.py:1586 +#: ../src/dialogs.py:1821 #, python-format msgid "Single Message in account %s" msgstr "Jednoduchá zpráva z úÄtu %s" -#: ../src/dialogs.py:1588 +#: ../src/dialogs.py:1823 msgid "Single Message" msgstr "Jednoduchá zpráva" #. prepare UI for Sending -#: ../src/dialogs.py:1591 +#: ../src/dialogs.py:1826 #, python-format msgid "Send %s" msgstr "Odeslat %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1614 +#: ../src/dialogs.py:1849 #, 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:1686 +#: ../src/dialogs.py:1921 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1687 +#: ../src/dialogs.py:1922 #, python-format msgid "%s wrote:\n" msgstr "%s napsal(a):\n" -#: ../src/dialogs.py:1731 +#: ../src/dialogs.py:1966 #, python-format msgid "XML Console for %s" msgstr "XML Konzole pro %s" -#: ../src/dialogs.py:1733 +#: ../src/dialogs.py:1968 msgid "XML Console" msgstr "XML Konzole" -#: ../src/dialogs.py:1856 +#: ../src/dialogs.py:2091 #, python-format msgid "Privacy List <b><i>%s</i></b>" msgstr "" -#: ../src/dialogs.py:1860 +#: ../src/dialogs.py:2095 #, python-format msgid "Privacy List for %s" msgstr "" -#: ../src/dialogs.py:1908 +#: ../src/dialogs.py:2152 #, python-format msgid "Order: %s, action: %s, type: %s, value: %s" msgstr "PoÅ™adÃ: %s, akce: %s, typ: %s, hodnota: %s" -#: ../src/dialogs.py:1911 +#: ../src/dialogs.py:2155 #, python-format msgid "Order: %s, action: %s" msgstr "PoÅ™adÃ: %s, akce: %s" -#: ../src/dialogs.py:1953 +#: ../src/dialogs.py:2197 msgid "<b>Edit a rule</b>" msgstr "<b>Upravit pravidlo</b>" -#: ../src/dialogs.py:2040 +#: ../src/dialogs.py:2284 msgid "<b>Add a rule</b>" msgstr "<b>PÅ™idat pravidlo</b>" -#: ../src/dialogs.py:2136 +#: ../src/dialogs.py:2380 #, python-format msgid "Privacy Lists for %s" msgstr "" -#: ../src/dialogs.py:2138 +#: ../src/dialogs.py:2382 msgid "Privacy Lists" msgstr "" -#: ../src/dialogs.py:2208 +#: ../src/dialogs.py:2452 msgid "Invalid List Name" msgstr "Neplatné jméno seznamu" -#: ../src/dialogs.py:2209 +#: ../src/dialogs.py:2453 msgid "You must enter a name to create a privacy list." msgstr "MusÃte zadat jméno pro vytvoÅ™enà privacy listu." -#. Don't translate $Contact -#: ../src/dialogs.py:2243 +#: ../src/dialogs.py:2490 +#, fuzzy +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact Vás pozval(a) do mÃstnosti %(room_jid)s" + +#: ../src/dialogs.py:2492 #, python-format msgid "$Contact has invited you to group chat %(room_jid)s" msgstr "$Contact Vás pozval(a) do mÃstnosti %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:2255 +#: ../src/dialogs.py:2504 #, python-format msgid "Comment: %s" msgstr "Komentář: %s" -#: ../src/dialogs.py:2317 +#: ../src/dialogs.py:2570 msgid "Choose Sound" msgstr "Vyberte zvuk" -#: ../src/dialogs.py:2327 -#: ../src/dialogs.py:2372 +#: ../src/dialogs.py:2580 ../src/dialogs.py:2628 msgid "All files" msgstr "VÅ¡echny soubory" -#: ../src/dialogs.py:2332 +#: ../src/dialogs.py:2585 msgid "Wav Sounds" msgstr "Waw soubory" -#: ../src/dialogs.py:2362 +#: ../src/dialogs.py:2618 msgid "Choose Image" msgstr "Vyberte obrázek" -#: ../src/dialogs.py:2377 +#: ../src/dialogs.py:2633 msgid "Images" msgstr "Obrázky" -#: ../src/dialogs.py:2434 +#: ../src/dialogs.py:2697 #, python-format msgid "When %s becomes:" msgstr "Kdy %s může být:" -#: ../src/dialogs.py:2436 +#: ../src/dialogs.py:2699 #, python-format msgid "Adding Special Notification for %s" msgstr "PÅ™idávám zvláštnà notifikaci pro %s" #. # means number -#: ../src/dialogs.py:2507 +#: ../src/dialogs.py:2770 msgid "#" msgstr "Ä." -#: ../src/dialogs.py:2513 +#: ../src/dialogs.py:2776 msgid "Condition" msgstr "PodmÃnka" -#: ../src/dialogs.py:2634 +#: ../src/dialogs.py:2894 msgid "when I am " msgstr "když jsem " -#: ../src/disco.py:103 +#: ../src/disco.py:104 msgid "Others" msgstr "OstatnÃ" -#: ../src/disco.py:104 -#: ../src/disco.py:105 -#: ../src/disco.py:1281 -#: ../src/gajim.py:604 -#: ../src/roster_window.py:271 -#: ../src/roster_window.py:329 -#: ../src/roster_window.py:368 -#: ../src/roster_window.py:450 -#: ../src/roster_window.py:482 -#: ../src/roster_window.py:484 -#: ../src/roster_window.py:3902 -#: ../src/roster_window.py:3904 -#: ../src/common/contacts.py:267 -#: ../src/common/contacts.py:282 -#: ../src/common/helpers.py:43 +#: ../src/disco.py:105 ../src/disco.py:106 ../src/disco.py:1346 +#: ../src/gajim.py:638 ../src/roster_window.py:281 ../src/roster_window.py:341 +#: ../src/roster_window.py:381 ../src/roster_window.py:489 +#: ../src/roster_window.py:521 ../src/roster_window.py:523 +#: ../src/roster_window.py:4678 ../src/roster_window.py:4680 +#: ../src/common/contacts.py:290 ../src/common/contacts.py:305 +#: ../src/common/helpers.py:44 msgid "Transports" msgstr "Transporty" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:107 +#: ../src/disco.py:108 msgid "Conference" msgstr "Diskuze" -#: ../src/disco.py:420 +#: ../src/disco.py:421 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:496 #, python-format msgid "Service Discovery using account %s" msgstr "Procházenà služeb s použitÃm úÄtu %s" -#: ../src/disco.py:501 +#: ../src/disco.py:498 msgid "Service Discovery" msgstr "Service Discovery" -#: ../src/disco.py:641 +#: ../src/disco.py:638 msgid "The service could not be found" msgstr "Tato služba nebyla nalezena" -#: ../src/disco.py:642 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Služba na zadané adrese neexistuje, nebo neodpovÃdá. Zkontrolujte adresu a opakujte znovu." +#: ../src/disco.py:639 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Služba na zadané adrese neexistuje, nebo neodpovÃdá. Zkontrolujte adresu a " +"opakujte znovu." -#: ../src/disco.py:646 -#: ../src/disco.py:927 +#: ../src/disco.py:643 ../src/disco.py:924 msgid "The service is not browsable" msgstr "Službu nelze prohlÞet" -#: ../src/disco.py:647 +#: ../src/disco.py:644 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:727 +#: ../src/disco.py:724 #, python-format msgid "Browsing %s using account %s" msgstr "ProcházÃm %s pomocà úÄtu %s" -#: ../src/disco.py:766 +#: ../src/disco.py:763 msgid "_Browse" msgstr "_ProhlÞet" -#: ../src/disco.py:928 +#: ../src/disco.py:925 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:1155 -#: ../src/disco.py:1286 +#: ../src/disco.py:1153 ../src/disco.py:1351 msgid "Re_gister" msgstr "Re_gistrace" # FIXME: tohle je blbe prelozene, najit v kontextu a vymyslet lepsi oznaceni -#: ../src/disco.py:1323 +#: ../src/disco.py:1388 #, python-format msgid "Scanning %d / %d.." msgstr "Skenuji %d / %d.." #. Users column -#: ../src/disco.py:1504 +#: ../src/disco.py:1570 msgid "Users" msgstr "Uživatelé" #. Description column -#: ../src/disco.py:1511 +#: ../src/disco.py:1578 msgid "Description" msgstr "Popis" #. Id column -#: ../src/disco.py:1518 +#: ../src/disco.py:1586 msgid "Id" msgstr "Ä." -#: ../src/disco.py:1741 +#: ../src/disco.py:1815 msgid "Subscribed" msgstr "Autorizován" -#: ../src/disco.py:1767 +#: ../src/disco.py:1823 +#, fuzzy +msgid "Node" +msgstr "Žádný" + +#: ../src/disco.py:1880 msgid "New post" msgstr "Nový záznam" -#: ../src/disco.py:1773 +#: ../src/disco.py:1886 msgid "_Subscribe" msgstr "_Žádat autorizaci" -#: ../src/disco.py:1779 +#: ../src/disco.py:1892 msgid "_Unsubscribe" msgstr "_ZruÅ¡it autorizaci" @@ -3437,142 +3899,132 @@ msgstr "ÄŒas" msgid "Progress" msgstr "PrůbÄ›h" -#: ../src/filetransfers_window.py:163 -#: ../src/filetransfers_window.py:223 +#: ../src/filetransfers_window.py:159 ../src/filetransfers_window.py:213 #, python-format msgid "Filename: %s" msgstr "Soubor: %s" -#: ../src/filetransfers_window.py:164 -#: ../src/filetransfers_window.py:298 +#: ../src/filetransfers_window.py:160 ../src/filetransfers_window.py:288 #, 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:173 -#: ../src/filetransfers_window.py:183 +#: ../src/filetransfers_window.py:169 ../src/filetransfers_window.py:179 #: ../src/history_manager.py:463 msgid "You" msgstr "Vy" -#: ../src/filetransfers_window.py:174 +#: ../src/filetransfers_window.py:170 #, python-format msgid "Sender: %s" msgstr "OdesÃlatel: %s" -#: ../src/filetransfers_window.py:175 -#: ../src/filetransfers_window.py:572 -#: ../src/tooltips.py:573 +#: ../src/filetransfers_window.py:171 ../src/filetransfers_window.py:577 +#: ../src/tooltips.py:586 msgid "Recipient: " msgstr "PÅ™Ãjemce: " -#: ../src/filetransfers_window.py:186 +#: ../src/filetransfers_window.py:182 #, python-format msgid "Saved in: %s" msgstr "Uloženo do: %s" -#: ../src/filetransfers_window.py:188 +#: ../src/filetransfers_window.py:184 msgid "File transfer completed" msgstr "PÅ™enos soubor dokonÄen" -#: ../src/filetransfers_window.py:204 -#: ../src/filetransfers_window.py:212 +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:204 msgid "File transfer cancelled" msgstr "PÅ™enos souboru zruÅ¡en" -#: ../src/filetransfers_window.py:204 -#: ../src/filetransfers_window.py:213 +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:205 msgid "Connection with peer cannot be established." msgstr "Spojenà s protistranou se nepodaÅ™ilo navázat." -#: ../src/filetransfers_window.py:224 +#: ../src/filetransfers_window.py:214 #, python-format msgid "Recipient: %s" msgstr "PÅ™Ãjemce: %s" -#: ../src/filetransfers_window.py:226 +#: ../src/filetransfers_window.py:216 #, python-format msgid "Error message: %s" msgstr "Chybová zpráva: %s" -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:217 msgid "File transfer stopped by the contact at the other end" msgstr "PÅ™enos souboru byl ukonÄen protistranou" -#: ../src/filetransfers_window.py:244 +#: ../src/filetransfers_window.py:234 msgid "Choose File to Send..." msgstr "Vyber soubor k odeslánÃ..." -#: ../src/filetransfers_window.py:263 +#: ../src/filetransfers_window.py:253 msgid "Gajim cannot access this file" msgstr "Gajim nemůže otevÅ™Ãt tento soubor" -#: ../src/filetransfers_window.py:264 +#: ../src/filetransfers_window.py:254 msgid "This file is being used by another process." msgstr "Tento soubor je použÃván jiným procesem." -#: ../src/filetransfers_window.py:296 +#: ../src/filetransfers_window.py:286 #, python-format msgid "File: %s" msgstr "Soubor: %s" -#: ../src/filetransfers_window.py:301 +#: ../src/filetransfers_window.py:291 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:303 +#: ../src/filetransfers_window.py:293 #, python-format msgid "Description: %s" msgstr "Popis: %s" -#: ../src/filetransfers_window.py:304 +#: ../src/filetransfers_window.py:294 #, python-format msgid "%s wants to send you a file:" msgstr "%s Vám chce poslat soubor:" -#: ../src/filetransfers_window.py:318 -#: ../src/gtkgui_helpers.py:748 +#: ../src/filetransfers_window.py:308 ../src/gtkgui_helpers.py:766 #, python-format msgid "Cannot overwrite existing file \"%s\"" msgstr "Nemohu pÅ™epsat existujÃcà soubor \"%s\"" -#: ../src/filetransfers_window.py:319 -#: ../src/gtkgui_helpers.py:750 -msgid "A file with this name already exists and you do not have permission to overwrite it." +#: ../src/filetransfers_window.py:309 ../src/gtkgui_helpers.py:768 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." msgstr "Soubor tohoto jména již existuje a ty nemáš oprávnÄ›nà k jeho pÅ™epsánÃ." -#: ../src/filetransfers_window.py:326 -#: ../src/gtkgui_helpers.py:754 +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:772 msgid "This file already exists" msgstr "Tento soubor už existuje" -#: ../src/filetransfers_window.py:326 -#: ../src/gtkgui_helpers.py:754 +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:772 msgid "What do you want to do?" msgstr "Co by jste rád(a) dÄ›lal(a)?" -#: ../src/filetransfers_window.py:338 -#: ../src/gtkgui_helpers.py:764 +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:782 #, python-format msgid "Directory \"%s\" is not writable" msgstr "Adresář \"%s\" nenà zapisovatelný" -#: ../src/filetransfers_window.py:338 -#: ../src/gtkgui_helpers.py:765 +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:783 msgid "You do not have permission to create files in this directory." msgstr "Nemáš oprávnÄ›nà k vytvářenà souborů v tomto adresáři." -#: ../src/filetransfers_window.py:348 +#: ../src/filetransfers_window.py:338 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:429 +#: ../src/filetransfers_window.py:419 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -3580,97 +4032,104 @@ 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:505 +#: ../src/filetransfers_window.py:508 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:544 -#: ../src/filetransfers_window.py:547 +#: ../src/filetransfers_window.py:547 ../src/filetransfers_window.py:550 msgid "Invalid File" msgstr "Neplatný soubor" -#: ../src/filetransfers_window.py:544 +#: ../src/filetransfers_window.py:547 msgid "File: " msgstr "Soubor: " -#: ../src/filetransfers_window.py:548 +#: ../src/filetransfers_window.py:551 msgid "It is not possible to send empty files" msgstr "Nenà možné posÃlat prázdné soubory" -#: ../src/filetransfers_window.py:568 -#: ../src/tooltips.py:563 +#: ../src/filetransfers_window.py:573 ../src/tooltips.py:576 msgid "Name: " msgstr "Jméno: " -#: ../src/filetransfers_window.py:570 -#: ../src/tooltips.py:567 +#: ../src/filetransfers_window.py:575 ../src/tooltips.py:580 msgid "Sender: " msgstr "OdesÃlatel: " -#: ../src/filetransfers_window.py:758 +#: ../src/filetransfers_window.py:763 msgid "Pause" msgstr "Pauza" -#: ../src/gajim.py:47 +#: ../src/gajim.py:49 #, python-format msgid "%s is not a valid loglevel" msgstr "%s nenà platný loglevel" -#: ../src/gajim.py:122 +#: ../src/gajim.py:138 msgid "Gajim needs X server to run. Quiting..." msgstr "Gajim vyžaduje k bÄ›hu X server. KonÄÃm..." -#: ../src/gajim.py:126 +#: ../src/gajim.py:142 msgid "Gajim needs PyGTK 2.8 or above" msgstr "Gajim vyžaduje PyGTK 2.8 nebo novÄ›jÅ¡Ã" -#: ../src/gajim.py:127 +#: ../src/gajim.py:143 msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." msgstr "Gajim vyžaduje PyGTK 2.8 nebo novÄ›jÅ¡Ã. KonÄÃm..." -#: ../src/gajim.py:129 +#: ../src/gajim.py:145 msgid "Gajim needs GTK 2.8 or above" msgstr "Gajim potÅ™ebuje GTK 2.8 nebo novÄ›jÅ¡Ã" -#: ../src/gajim.py:130 +#: ../src/gajim.py:146 msgid "Gajim needs GTK 2.8 or above to run. Quiting..." msgstr "Gajim vyžaduje GTK 2.8 nebo novÄ›jÅ¡Ã. KonÄÃm..." # FIXME: runtime je jak? -#: ../src/gajim.py:135 +#: ../src/gajim.py:151 msgid "GTK+ runtime is missing libglade support" msgstr "GTK+ runtime vyžaduje podporu libglade" # FIXME: runtime? -#: ../src/gajim.py:137 +#: ../src/gajim.py:153 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "ProsÃm odinstalujte stávajÃcà GTK+ runtime a nainstalujte poslednà stabilnà verzi z %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"ProsÃm odinstalujte stávajÃcà GTK+ runtime a nainstalujte poslednà stabilnà " +"verzi z %s" -#: ../src/gajim.py:139 -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:155 +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:144 +#: ../src/gajim.py:160 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim vyžaduje PySQLite2" -#: ../src/gajim.py:152 +#: ../src/gajim.py:168 msgid "Gajim needs pywin32 to run" msgstr "Gajim potÅ™ebuje k bÄ›hu pywin32" -#: ../src/gajim.py:153 +#: ../src/gajim.py:169 #, python-format -msgid "Please make sure that Pywin32 is installed on your system. You can get it at %s" -msgstr "ProsÃm ujistÄ›te se, že Pywin32 je nainstalován na vaÅ¡em poÄÃtaÄi. Můžete jej zÃskat na %s" +msgid "" +"Please make sure that Pywin32 is installed on your system. You can get it at " +"%s" +msgstr "" +"ProsÃm ujistÄ›te se, že Pywin32 je nainstalován na vaÅ¡em poÄÃtaÄi. Můžete jej " +"zÃskat na %s" #. set the icon to all newly opened wind -#: ../src/gajim.py:300 +#: ../src/gajim.py:311 msgid "Gajim is already running" msgstr "Gajim již běžÃ" -#: ../src/gajim.py:301 +#: ../src/gajim.py:312 msgid "" "Another instance of Gajim seems to be running\n" "Run anyway?" @@ -3678,89 +4137,138 @@ msgstr "" "Jiná instance Gajimu pravdÄ›podobnÄ› již běžÃ\n" "PÅ™esto spustit?" -#: ../src/gajim.py:408 -#, python-format -msgid "HTTP (%s) Authorization for %s (id: %s)" -msgstr "HTTP (%s) Autorizace pro %s (id: %s)" +#: ../src/gajim.py:335 ../src/common/connection_handlers.py:897 +#: ../src/common/connection_handlers.py:1538 +#: ../src/common/connection_handlers.py:1566 +#: ../src/common/connection_handlers.py:1577 +#: ../src/common/connection_handlers.py:1596 +#: ../src/common/connection_handlers.py:1755 +#: ../src/common/connection_handlers.py:1867 ../src/common/connection.py:913 +msgid "Disk Write Error" +msgstr "" -#: ../src/gajim.py:409 +#: ../src/gajim.py:428 msgid "Do you accept this request?" msgstr "Chcete pÅ™ijmout tuto žádost?" -#: ../src/gajim.py:455 -#: ../src/notify.py:435 +#: ../src/gajim.py:431 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "HTTP (%s) Autorizace pro %s (id: %s)" + +#: ../src/gajim.py:478 ../src/notify.py:447 msgid "Connection Failed" msgstr "Spojenà selhalo" -#: ../src/gajim.py:775 +#: ../src/gajim.py:810 #, python-format msgid "Subject: %s" msgstr "PÅ™edmÄ›t: %s" #. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) -#: ../src/gajim.py:820 -#: ../src/gajim.py:833 +#: ../src/gajim.py:857 ../src/gajim.py:870 #, python-format msgid "error while sending %s ( %s )" msgstr "chyba pÅ™i odesÃlánà %s ( %s )" -#: ../src/gajim.py:866 +#: ../src/gajim.py:903 msgid "Authorization accepted" msgstr "Autorizace pÅ™ijata" -#: ../src/gajim.py:867 +#: ../src/gajim.py:904 #, 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:875 +#: ../src/gajim.py:912 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakt \"%s\" Vám odebral autorizaci" # FIXME: hrozna veta -#: ../src/gajim.py:876 +#: ../src/gajim.py:913 msgid "You will always see him or her as offline." msgstr "UvidÃte jej nebo ji vždy jako odpojenou." -#: ../src/gajim.py:919 +#: ../src/gajim.py:957 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kontakt s \"%s\" nebyl navázán" -#: ../src/gajim.py:920 -#: ../src/common/connection.py:423 +#: ../src/gajim.py:958 ../src/common/connection.py:463 msgid "Check your connection or try again later." msgstr "Ověřte spojenà nebo zkuste pozdÄ›ji." -#: ../src/gajim.py:1069 -#: ../src/roster_window.py:1217 +#: ../src/gajim.py:1129 ../src/roster_window.py:1342 #, python-format msgid "%s is now %s (%s)" msgstr "%s je nynà %s (%s)" #. No status message -#: ../src/gajim.py:1072 -#: ../src/groupchat_control.py:952 -#: ../src/roster_window.py:1220 +#: ../src/gajim.py:1132 ../src/groupchat_control.py:1100 +#: ../src/roster_window.py:1345 #, python-format msgid "%s is now %s" msgstr "%s je nynà %s" -#: ../src/gajim.py:1169 +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1252 ../src/groupchat_control.py:912 +msgid "Any occupant is allowed to see your full JID" +msgstr "" + +#: ../src/gajim.py:1254 +msgid "Room now shows unavailable member" +msgstr "" + +#: ../src/gajim.py:1256 +msgid "room now does not show unavailable members" +msgstr "" + +#: ../src/gajim.py:1259 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1262 +msgid "Room logging is now enabled" +msgstr "" + +#: ../src/gajim.py:1264 +msgid "Room logging is now disabled" +msgstr "" + +#: ../src/gajim.py:1266 +msgid "Room is now non-anonymous" +msgstr "" + +#: ../src/gajim.py:1268 +msgid "Room is now semi-anonymous" +msgstr "" + +#: ../src/gajim.py:1270 +msgid "Room is now fully-anonymous" +msgstr "" + +#: ../src/gajim.py:1301 +#, fuzzy, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "Pro pÅ™ipojenà do této mÃstnosti je vyžadováno heslo." + +#: ../src/gajim.py:1331 msgid "Your passphrase is incorrect" msgstr "VaÅ¡e heslo je neplatné" -#: ../src/gajim.py:1170 +#: ../src/gajim.py:1332 msgid "You are currently connected without your OpenPGP key." msgstr "MomentálnÄ› jste pÅ™ipojen(a) bez vaÅ¡eho OpenPGP klÃÄe." -#: ../src/gajim.py:1273 +#: ../src/gajim.py:1436 #, python-format msgid "New mail on %(gmail_mail_address)s" msgstr "Nový E-mail pro %(gmail_mail_address)s" -#: ../src/gajim.py:1275 +#: ../src/gajim.py:1438 #, python-format msgid "You have %d new mail conversation" msgid_plural "You have %d new mail conversations" @@ -3771,7 +4279,7 @@ msgstr[2] "Máte %d nepÅ™eÄtených E-mailů" #. 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 -#: ../src/gajim.py:1284 +#: ../src/gajim.py:1447 #, python-format msgid "" "\n" @@ -3780,53 +4288,85 @@ msgstr "" "\n" "Od: %(from_address)s" -#: ../src/gajim.py:1440 +#: ../src/gajim.py:1603 #, python-format msgid "%s wants to send you a file." msgstr "%s Vám chce poslat soubor." -#: ../src/gajim.py:1505 +#: ../src/gajim.py:1668 #, python-format msgid "You successfully received %(filename)s from %(name)s." msgstr "Soubor %(filename)s od %(name)s byl úspÄ›snÄ› pÅ™ijat." #. ft stopped -#: ../src/gajim.py:1509 +#: ../src/gajim.py:1672 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." msgstr "PÅ™enos souboru %(filename)s od %(name)s byl zastaven." -#: ../src/gajim.py:1522 +#: ../src/gajim.py:1685 #, python-format msgid "You successfully sent %(filename)s to %(name)s." msgstr "Soubor %(filename)s byl uspěšnÄ› odeslán %(name)s." #. ft stopped -#: ../src/gajim.py:1526 +#: ../src/gajim.py:1689 #, python-format msgid "File transfer of %(filename)s to %(name)s stopped." msgstr "PÅ™enos souboru %(filename)s pro %(name)s byl zastaven." -#: ../src/gajim.py:1639 +#: ../src/gajim.py:1823 msgid "Username Conflict" msgstr "Konflikt uživatelských jmen" -#: ../src/gajim.py:1640 +#: ../src/gajim.py:1824 msgid "Please type a new username for your local account" msgstr "ProsÃm zadejte nové uživatelské jméno pro lokálnà úÄet" +#: ../src/gajim.py:1841 +msgid "Ping?" +msgstr "" + +#: ../src/gajim.py:1849 +#, python-format +msgid "Pong! (%s s.)" +msgstr "" + +#: ../src/gajim.py:1855 +msgid "Error." +msgstr "" + +#: ../src/gajim.py:1880 +#, fuzzy +msgid "Resource Conflict" +msgstr "Konflikt uživatelských jmen" + +#: ../src/gajim.py:1881 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" + # 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:1981 +#: ../src/gajim.py:2241 msgid "Could not save your settings and preferences" msgstr "Nelze uložit VaÅ¡e nastavenÃ" -#: ../src/gajim.py:2179 +#. sorted alphanum +#: ../src/gajim.py:2376 ../src/common/config.py:85 ../src/common/config.py:393 +#: ../src/common/optparser.py:193 ../src/common/optparser.py:411 +#: ../src/common/optparser.py:445 +#, fuzzy +msgid "default" +msgstr "VýchozÃ" + +#: ../src/gajim.py:2462 msgid "Network Manager support not available" msgstr "Podpora Network Manageru nenà dostupná" -#: ../src/gajim.py:2258 +#: ../src/gajim.py:2563 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Podpora Správce sezenà nenà dostupná (scházà gnome.ui modul)" @@ -3852,22 +4392,20 @@ msgid "Pops up a window with the next pending event" msgstr "Zobrazà okno s dalÅ¡Ã nepÅ™eÄtenou událostÃ" #: ../src/gajim-remote.py:81 -msgid "Prints a list of all contacts in the roster. Each contact appears on a separate line" -msgstr "Vytiskne seznam vÅ¡ech kontaktů v rosteru. Každý kontakt se objevà na samostatném řádku" - -#: ../src/gajim-remote.py:84 -#: ../src/gajim-remote.py:99 -#: ../src/gajim-remote.py:109 -#: ../src/gajim-remote.py:122 -#: ../src/gajim-remote.py:136 -#: ../src/gajim-remote.py:157 -#: ../src/gajim-remote.py:187 -#: ../src/gajim-remote.py:196 -#: ../src/gajim-remote.py:203 -#: ../src/gajim-remote.py:210 -#: ../src/gajim-remote.py:221 -#: ../src/gajim-remote.py:237 -#: ../src/gajim-remote.py:246 +msgid "" +"Prints a list of all contacts in the roster. Each contact appears on a " +"separate line" +msgstr "" +"Vytiskne seznam vÅ¡ech kontaktů v rosteru. Každý kontakt se objevà na " +"samostatném řádku" + +#: ../src/gajim-remote.py:84 ../src/gajim-remote.py:99 +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:122 +#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:145 +#: ../src/gajim-remote.py:166 ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:205 ../src/gajim-remote.py:212 +#: ../src/gajim-remote.py:219 ../src/gajim-remote.py:230 +#: ../src/gajim-remote.py:246 ../src/gajim-remote.py:255 msgid "account" msgstr "úÄet" @@ -3890,11 +4428,11 @@ msgstr "stav" #: ../src/gajim-remote.py:97 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:98 -#: ../src/gajim-remote.py:119 -#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:98 ../src/gajim-remote.py:119 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:144 msgid "message" msgstr "zpráva" @@ -3903,8 +4441,12 @@ msgid "status message" msgstr "text stavu" #: ../src/gajim-remote.py:99 -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 "zmÄ›nit stav úÄtu \"account\". Pokud nenà uveden, zkuste zmÄ›nit stav vÅ¡ech úÄtů které majà povolenu volbu \"sync with global status\" " +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 "" +"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:105 msgid "Shows the chat dialog so that you can send messages to a contact" @@ -3914,43 +4456,51 @@ msgstr "Zobrazte okno rozhovoru, aby jste mohl(a) poslat zprávu kontaktu" msgid "JID of the contact that you want to chat with" msgstr "JID kontaktu, se kterým chcete komunikovat" -#: ../src/gajim-remote.py:109 -#: ../src/gajim-remote.py:187 +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:196 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:114 -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 "Poslat nový rozhovor kontaktu v Seznamu. Obojà OpenPGP klÃÄ a úÄet jsou volitelné. Pokud chcete nastavit pouze 'account' bez 'OpenPGP key', nastavte prostÄ› 'OpenPGP key' na ''." +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 "" +"Poslat nový rozhovor 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:118 -#: ../src/gajim-remote.py:131 +#: ../src/gajim-remote.py:118 ../src/gajim-remote.py:131 msgid "JID of the contact that will receive the message" msgstr "JID kontaktu, který obdržà zprávu" -#: ../src/gajim-remote.py:119 -#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:144 msgid "message contents" msgstr "TÄ›lo zprávy" -#: ../src/gajim-remote.py:120 -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 msgid "pgp key" msgstr "pgp klÃÄ" -#: ../src/gajim-remote.py:120 -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 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:122 -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:122 ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:145 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:127 -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 prostou 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 ''." +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 prostou 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:132 msgid "subject" @@ -3961,151 +4511,163 @@ msgid "message subject" msgstr "pÅ™edmÄ›t zprávy" #: ../src/gajim-remote.py:141 +msgid "Sends new message to a groupchat you've joined." +msgstr "" + +#: ../src/gajim-remote.py:143 +#, fuzzy +msgid "JID of the room that will receive the message" +msgstr "JID kontaktu, který obdržà zprávu" + +#: ../src/gajim-remote.py:150 msgid "Gets detailed info on a contact" msgstr "ZÃskej detailnà informace o kontaktu" -#: ../src/gajim-remote.py:143 -#: ../src/gajim-remote.py:156 -#: ../src/gajim-remote.py:186 -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:152 ../src/gajim-remote.py:165 +#: ../src/gajim-remote.py:195 ../src/gajim-remote.py:204 msgid "JID of the contact" msgstr "JID kontaktu" -#: ../src/gajim-remote.py:147 +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a account" msgstr "ZÃskej detailnà informace o úÄtu" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:158 msgid "Name of the account" msgstr "Jméno úÄtu" -#: ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:162 msgid "Sends file to a contact" msgstr "PoÅ¡le soubor kontaktu" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:164 msgid "file" msgstr "soubor" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:164 msgid "File path" msgstr "Cesta k souboru" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:166 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:162 +#: ../src/gajim-remote.py:171 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:166 +#: ../src/gajim-remote.py:175 msgid "Sets value of 'key' to 'value'." msgstr "Nastavà hodnotu klÃÄe 'key' na hodnotu 'value'" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:177 msgid "key=value" msgstr "klÃÄ=hodnota" # FIXME: opet -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:177 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:173 +#: ../src/gajim-remote.py:182 msgid "Deletes a preference item" msgstr "Smaže položku nastavenÃ" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:184 msgid "key" msgstr "klÃÄ" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:184 msgid "name of the preference to be deleted" msgstr "jméno volby, která bude smazána" -#: ../src/gajim-remote.py:179 +#: ../src/gajim-remote.py:188 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:184 +#: ../src/gajim-remote.py:193 msgid "Removes contact from roster" msgstr "Odstranà kontakt ze Seznamu" -#: ../src/gajim-remote.py:193 +#: ../src/gajim-remote.py:202 msgid "Adds contact to roster" msgstr "PÅ™idat kontakt do Seznamu" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:204 msgid "jid" msgstr "jid" -#: ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:205 msgid "Adds new contact to this account" msgstr "PÅ™idá nový kontakt do tohoto úÄtu" -#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:210 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:208 -msgid "Returns current status message(the global one unless account is specified)" +#: ../src/gajim-remote.py:217 +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:215 +#: ../src/gajim-remote.py:224 msgid "Returns number of unread messages" msgstr "Vracà poÄet nepÅ™eÄtených zpráv" -#: ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:228 msgid "Opens 'Start Chat' dialog" msgstr "OtevÅ™e dialog 'ZaÄÃt rozhovor'" -#: ../src/gajim-remote.py:221 +#: ../src/gajim-remote.py:230 msgid "Starts chat, using this account" msgstr "ZaÄÃt rozhovor z tohoto úÄtu" -#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:234 msgid "Sends custom XML" msgstr "Poslat vlastnà XML" -#: ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:236 msgid "XML to send" msgstr "XML k odeslánÃ" -#: ../src/gajim-remote.py:228 -msgid "Account in which the xml will be sent; if not specified, xml will be sent to all accounts" -msgstr "ÚÄet, ze kterého bude xml odesláno; pokud nebude uvedeno, xml bude odeslánà ze vÅ¡ech úÄtů" +#: ../src/gajim-remote.py:237 +msgid "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" +msgstr "" +"ÚÄet, ze kterého bude xml odesláno; pokud nebude uvedeno, xml bude odeslánà " +"ze vÅ¡ech úÄtů" -#: ../src/gajim-remote.py:234 +#: ../src/gajim-remote.py:243 msgid "Handle a xmpp:/ uri" msgstr "Obsluhovat xmpp:/ uri" -#: ../src/gajim-remote.py:236 +#: ../src/gajim-remote.py:245 msgid "uri" msgstr "uri" -#: ../src/gajim-remote.py:241 +#: ../src/gajim-remote.py:250 msgid "Join a MUC room" msgstr "_Vstoupit do mÃstnosti MUC" -#: ../src/gajim-remote.py:243 +#: ../src/gajim-remote.py:252 msgid "room" msgstr "mÃstnost" -#: ../src/gajim-remote.py:244 +#: ../src/gajim-remote.py:253 msgid "nick" msgstr "pÅ™ezdÃvka" -#: ../src/gajim-remote.py:245 +#: ../src/gajim-remote.py:254 msgid "password" msgstr "heslo" -#: ../src/gajim-remote.py:268 +#: ../src/gajim-remote.py:277 msgid "Missing argument \"contact_jid\"" msgstr "Chybà parametry \"contact_jid\"" -#: ../src/gajim-remote.py:287 +#: ../src/gajim-remote.py:296 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -4114,11 +4676,11 @@ 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:290 +#: ../src/gajim-remote.py:299 msgid "You have no active account" msgstr "Nemáte aktivnà úÄet" -#: ../src/gajim-remote.py:354 +#: ../src/gajim-remote.py:363 #, python-format msgid "" "Usage: %s %s %s \n" @@ -4127,16 +4689,16 @@ msgstr "" "PoužitÃ: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:357 +#: ../src/gajim-remote.py:366 msgid "Arguments:" msgstr "Parametry:" -#: ../src/gajim-remote.py:361 +#: ../src/gajim-remote.py:370 #, python-format msgid "%s not found" msgstr "%s nebyl nalezen" -#: ../src/gajim-remote.py:365 +#: ../src/gajim-remote.py:374 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -4145,7 +4707,7 @@ msgstr "" "PoužitÃ: %s pÅ™Ãkaz [parametry]\n" "PÅ™Ãkaz je jeden z:\n" -#: ../src/gajim-remote.py:438 +#: ../src/gajim-remote.py:447 #, python-format msgid "" "Too many arguments. \n" @@ -4154,7 +4716,7 @@ msgstr "" "PÅ™ÃliÅ¡ mnoho parametrů. \n" "NapiÅ¡te \"%s help %s\" pro vÃce informacÃ" -#: ../src/gajim-remote.py:442 +#: ../src/gajim-remote.py:451 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -4163,269 +4725,313 @@ msgstr "" "Parametry \"%s\" nebyl uveden. \n" "NapiÅ¡te \"%s help %s\" pro vÃce informacÃ" -#: ../src/gajim-remote.py:460 +#: ../src/gajim-remote.py:469 msgid "Wrong uri" msgstr "Nesprávné uri" -#: ../src/gajim_themes_window.py:60 +#: ../src/gajim_themes_window.py:61 msgid "Theme" msgstr "Téma" +#: ../src/gajim_themes_window.py:99 +#, fuzzy +msgid "You cannot make changes to the default theme" +msgstr "Nemůžete smazat právÄ› použÃvané téma" + +#: ../src/gajim_themes_window.py:100 +msgid "Please create a clean new theme with your desired name." +msgstr "" + #. don't confuse translators -#: ../src/gajim_themes_window.py:155 +#: ../src/gajim_themes_window.py:174 msgid "theme name" msgstr "jméno tématu" -#: ../src/gajim_themes_window.py:172 +#: ../src/gajim_themes_window.py:191 msgid "You cannot delete your current theme" msgstr "Nemůžete smazat právÄ› použÃvané téma" -#: ../src/gajim_themes_window.py:173 +#: ../src/gajim_themes_window.py:192 msgid "Please first choose another for your current theme." msgstr "Vyberte prosÃm napÅ™ed jiné téma." -#: ../src/groupchat_control.py:106 -msgid "Private Chat" -msgstr "Soukromý rozhovor" - -#: ../src/groupchat_control.py:106 -msgid "Private Chats" -msgstr "Soukromé rozhovory" - -#: ../src/groupchat_control.py:123 +#: ../src/groupchat_control.py:133 msgid "Sending private message failed" msgstr "OdesÃlánà soukromé zprávy selhalo" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:125 +#: ../src/groupchat_control.py:135 #, python-format msgid "You are no longer in group chat \"%s\" or \"%s\" has left." msgstr "Už nejsi v mÃstnosti \"%s\" nebo \"%s\" odeÅ¡el(a)." -#: ../src/groupchat_control.py:144 -msgid "Group Chat" -msgstr "Diskuze" - -#: ../src/groupchat_control.py:144 -msgid "Group Chats" -msgstr "Diskuze" - -#: ../src/groupchat_control.py:318 +#: ../src/groupchat_control.py:341 msgid "Insert Nickname" msgstr "Vložit pÅ™ezdÃvku" +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:915 +msgid "Room logging is enabled" +msgstr "" + +#: ../src/groupchat_control.py:917 +#, fuzzy +msgid "A new room has been created" +msgstr "Váš úÄet byl úspěšnÄ› vytvoÅ™en" + +#: ../src/groupchat_control.py:920 +msgid "The server has assigned or modified your roomnick" +msgstr "" + #. do not print 'kicked by None' -#: ../src/groupchat_control.py:837 +#: ../src/groupchat_control.py:926 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s byli vyhozeni: %(reason)s" -#: ../src/groupchat_control.py:841 +#: ../src/groupchat_control.py:930 #, 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:848 +#: ../src/groupchat_control.py:937 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s byli zakázáni: %(reason)s" -#: ../src/groupchat_control.py:852 +#: ../src/groupchat_control.py:941 #, 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:860 +#. Someone changed his or her nick +#. We changed our nick +#: ../src/groupchat_control.py:948 #, python-format msgid "You are now known as %s" msgstr "Jste nynà znám(a) jako %s" -#: ../src/groupchat_control.py:862 +#: ../src/groupchat_control.py:950 #, python-format msgid "%s is now known as %s" msgstr "%s se pÅ™ejmenoval na %s" -#: ../src/groupchat_control.py:945 +#: ../src/groupchat_control.py:983 ../src/groupchat_control.py:987 +#: ../src/groupchat_control.py:992 +#, fuzzy, python-format +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s byli vyhozeni od %(who)s: %(reason)s" + +#: ../src/groupchat_control.py:984 +#, fuzzy +msgid "affiliation changed" +msgstr "PÅ™idruženÃ:" + +#: ../src/groupchat_control.py:989 +msgid "room configuration changed to members-only" +msgstr "" + +#: ../src/groupchat_control.py:994 +msgid "system shutdown" +msgstr "" + +#: ../src/groupchat_control.py:1093 #, python-format msgid "%s has left" msgstr "%s odeÅ¡el(a)" -#: ../src/groupchat_control.py:950 +#: ../src/groupchat_control.py:1098 #, python-format msgid "%s has joined the group chat" msgstr "%s vstoupil do mÃstnosti" -#: ../src/groupchat_control.py:1072 -#: ../src/groupchat_control.py:1090 -#: ../src/groupchat_control.py:1183 -#: ../src/groupchat_control.py:1200 +#: ../src/groupchat_control.py:1229 ../src/groupchat_control.py:1247 +#: ../src/groupchat_control.py:1340 ../src/groupchat_control.py:1357 #, python-format msgid "Nickname not found: %s" msgstr "PÅ™ezdÃvka nenalezena: %s" -#: ../src/groupchat_control.py:1106 +#: ../src/groupchat_control.py:1263 msgid "This group chat has no subject" msgstr "MÃstnost nemá žádné téma" -#: ../src/groupchat_control.py:1119 +#: ../src/groupchat_control.py:1276 #, 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:1126 -#: ../src/groupchat_control.py:1154 +#: ../src/groupchat_control.py:1283 ../src/groupchat_control.py:1311 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s nevypadá jako platné JID" -#: ../src/groupchat_control.py:1237 -#, 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:1260 -#, python-format -msgid "Commands: %s" -msgstr "PÅ™Ãkazy: %s" - -#: ../src/groupchat_control.py:1262 -#, python-format -msgid "Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the group chat, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "PoužitÃ: /%s <pÅ™ezdÃvka|JID> [důvod], zakáže JID pÅ™Ãstup do mÃstnosti. 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:1269 -#, python-format -msgid "Usage: /%s <nickname>, opens a private chat window with the specified occupant." -msgstr "PoužitÃ: /%s <pÅ™ezdÃvka>, otevÅ™e okno soukromého rozhovoru uvedenému nájemnÃkovi." - -#: ../src/groupchat_control.py:1273 -#, python-format -msgid "Usage: /%s, clears the text window." -msgstr "PoužitÃ: /%s, smaže zprávy v oknÄ›." - -#: ../src/groupchat_control.py:1275 +#: ../src/groupchat_control.py:1420 #, python-format -msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." -msgstr "PoužitÃ: /%s [důvod], uzavÅ™e toto okno nebo záložku, a vypÃÅ¡e důvod, pokud byl uveden." +msgid "" +"Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " +"nickname of an occupant may be substituted, but not if it contains \"@\". If " +"the JID is currently in the group chat, he/she/it will also be kicked. Does " +"NOT support spaces in nickname." +msgstr "" +"PoužitÃ: /%s <pÅ™ezdÃvka|JID> [důvod], zakáže JID pÅ™Ãstup do mÃstnosti. " +"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:1278 +#: ../src/groupchat_control.py:1427 #, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "PoužitÃ: /%s, skryje tlaÄÃtka rozhovoru." +msgid "" +"Usage: /%s <nickname>, opens a private chat window with the specified " +"occupant." +msgstr "" +"PoužitÃ: /%s <pÅ™ezdÃvka>, otevÅ™e okno soukromého rozhovoru uvedenému " +"nájemnÃkovi." -#: ../src/groupchat_control.py:1281 +#: ../src/groupchat_control.py:1433 #, python-format -msgid "Usage: /%s <JID> [reason], invites JID to the current group chat, optionally providing a reason." -msgstr "PoužitÃ: /%s <JID> [důvod], pozve JID do této mÃstnosti, pÅ™ÃpadnÄ› s uvedeným důvodem." +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +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:1285 +#: ../src/groupchat_control.py:1439 #, python-format -msgid "Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally using specified nickname." -msgstr "PoužitÃ: /%s <mÃstnost>@<server>[/pÅ™ezdÃvka], nabÃzà vstup do mÃstnosti mÃstnost@server, pÅ™ÃpadnÄ› s uvedenou pÅ™ezdÃvkou." +msgid "" +"Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "" +"PoužitÃ: /%s <JID> [důvod], pozve JID do této mÃstnosti, pÅ™ÃpadnÄ› s uvedeným " +"důvodem." -#: ../src/groupchat_control.py:1289 +#: ../src/groupchat_control.py:1443 #, python-format -msgid "Usage: /%s <nickname> [reason], removes the occupant specified by nickname from the group chat and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "PoužitÃ: /%s <pÅ™ezdÃvka> [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." +msgid "" +"Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"PoužitÃ: /%s <mÃstnost>@<server>[/pÅ™ezdÃvka], nabÃzà vstup do mÃstnosti " +"mÃstnost@server, pÅ™ÃpadnÄ› s uvedenou pÅ™ezdÃvkou." -#: ../src/groupchat_control.py:1294 +#: ../src/groupchat_control.py:1447 #, python-format -msgid "Usage: /%s <action>, sends action to the current group chat. Use third person. (e.g. /%s explodes.)" -msgstr "PoužitÃ: /%s <akce>, poÅ¡le akci do aktuálnà mÃstnosti. Použijte tÅ™età osobu (napÅ™Ãklad /%s explodoval.)" +msgid "" +"Usage: /%s <nickname> [reason], removes the occupant specified by nickname " +"from the group chat and optionally displays a reason. Does NOT support " +"spaces in nickname." +msgstr "" +"PoužitÃ: /%s <pÅ™ezdÃvka> [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:1298 +#: ../src/groupchat_control.py:1456 #, python-format -msgid "Usage: /%s <nickname> [message], opens a private message window and sends message to the occupant specified by nickname." -msgstr "PoužitÃ: /%s <pÅ™ezdÃvka> [zpráva], otevÅ™e okno se soukromou zprávou a odeÅ¡le zprávu nájemnÃkovi urÄeném pÅ™ezdÃvkou." +msgid "" +"Usage: /%s <nickname> [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"PoužitÃ: /%s <pÅ™ezdÃvka> [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:1303 +#: ../src/groupchat_control.py:1461 #, python-format msgid "Usage: /%s <nickname>, changes your nickname in current group chat." msgstr "PoužitÃ: /%s <pÅ™ezdÃvka>, zmÄ›nà VaÅ¡i pÅ™ezdÃvku v aktuálnà mÃstnosti" -#: ../src/groupchat_control.py:1307 +#: ../src/groupchat_control.py:1465 #, python-format msgid "Usage: /%s , display the names of group chat occupants." msgstr "PoužitÃ: /%s , zobrazà jména nájemnÃků v mÃstnosti." -#: ../src/groupchat_control.py:1311 +#: ../src/groupchat_control.py:1469 #, python-format msgid "Usage: /%s [topic], displays or updates the current group chat 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:1314 +#: ../src/groupchat_control.py:1472 #, python-format -msgid "Usage: /%s <message>, sends a message without looking for other commands." +msgid "" +"Usage: /%s <message>, sends a message without looking for other commands." msgstr "PoužitÃ: /%s <zpráva>, odeÅ¡le zprávu bez hledánà jiných pÅ™Ãkazů." -#: ../src/groupchat_control.py:1317 -#, python-format -msgid "No help info for /%s" -msgstr "Žádná dalÅ¡Ã nápovÄ›da pro /%s" - -#: ../src/groupchat_control.py:1380 +#: ../src/groupchat_control.py:1561 #, python-format msgid "Are you sure you want to leave group chat \"%s\"?" msgstr "Jste si jistý(á), že chcete opustit mÃstnost \"%s\"?" -#: ../src/groupchat_control.py:1382 -msgid "If you close this window, you will be disconnected from this group chat." +#: ../src/groupchat_control.py:1563 +msgid "" +"If you close this window, you will be disconnected from this group chat." msgstr "Pokud zavÅ™ete toto okno, budete odpojen(a) z této mÃstnosti." -#: ../src/groupchat_control.py:1386 -#: ../src/roster_window.py:4042 +#: ../src/groupchat_control.py:1567 ../src/roster_window.py:4826 msgid "Do _not ask me again" msgstr "PÅ™ÃÅ¡tÄ› _nezobrazovat" -#: ../src/groupchat_control.py:1420 +#: ../src/groupchat_control.py:1601 msgid "Changing Subject" msgstr "MÄ›nÃm Téma" -#: ../src/groupchat_control.py:1421 +#: ../src/groupchat_control.py:1602 msgid "Please specify the new subject:" msgstr "ProsÃm zadejte nové téma:" -#: ../src/groupchat_control.py:1430 +#: ../src/groupchat_control.py:1611 msgid "Changing Nickname" msgstr "MÄ›nÃm pÅ™ezdÃvku" -#: ../src/groupchat_control.py:1431 +#: ../src/groupchat_control.py:1612 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:1456 +#. Ask for a reason +#: ../src/groupchat_control.py:1627 +#, fuzzy, python-format +msgid "Destroying %s" +msgstr "Popis: %s" + +#: ../src/groupchat_control.py:1628 +msgid "" +"You are going to definitively destroy this room.\n" +"You may specify a reason below:" +msgstr "" + +#: ../src/groupchat_control.py:1630 +msgid "You may also enter an alternate venue:" +msgstr "" + +#: ../src/groupchat_control.py:1661 msgid "Bookmark already set" msgstr "Záložka je už nastavena" -#: ../src/groupchat_control.py:1457 +#: ../src/groupchat_control.py:1662 #, python-format msgid "Group Chat \"%s\" is already in your bookmarks." msgstr "Diskuze \"%s\" už je ve VaÅ¡ich záložkách." -#: ../src/groupchat_control.py:1466 +#: ../src/groupchat_control.py:1671 msgid "Bookmark has been added successfully" msgstr "Záložka byla úspěšnÄ› pÅ™idána" -#: ../src/groupchat_control.py:1467 +#: ../src/groupchat_control.py:1672 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:1595 +#: ../src/groupchat_control.py:1824 #, python-format msgid "Kicking %s" msgstr "Vyhazuji %s" -#: ../src/groupchat_control.py:1596 -#: ../src/groupchat_control.py:1879 +#: ../src/groupchat_control.py:1825 ../src/groupchat_control.py:2125 msgid "You may specify a reason below:" msgstr "Můžete uvést důvod nÞe:" #. ask for reason -#: ../src/groupchat_control.py:1878 +#: ../src/groupchat_control.py:2124 #, python-format msgid "Banning %s" msgstr "Zakazuji %s" @@ -4436,7 +5042,9 @@ msgid "A programming error has been detected" msgstr "Byla objevena chyba v programu" #: ../src/gtkexcepthook.py:42 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." +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:48 @@ -4448,8 +5056,7 @@ msgid "Details" msgstr "Detaily" #. we talk about file -#: ../src/gtkgui_helpers.py:156 -#: ../src/gtkgui_helpers.py:171 +#: ../src/gtkgui_helpers.py:156 ../src/gtkgui_helpers.py:171 #, python-format msgid "Error: cannot open %s for reading" msgstr "Chyba: nemůžu otevÅ™Ãt %s pro ÄtenÃ" @@ -4470,32 +5077,33 @@ msgid "Could not write to %s. Session Management support will not work" msgstr "Nemůžu zapsat do %s. Podpora správy sezenà nebude fungovat" #. xmpp: is currently handled by another program, so ask the user -#: ../src/gtkgui_helpers.py:692 +#: ../src/gtkgui_helpers.py:710 msgid "Gajim is not the default Jabber client" msgstr "Gajim nenà výchozà Jabber klient" -#: ../src/gtkgui_helpers.py:693 +#: ../src/gtkgui_helpers.py:711 msgid "Would you like to make Gajim the default Jabber client?" msgstr "Chcete nastavit Gajim jako výchozà Jabber klient?" -#: ../src/gtkgui_helpers.py:694 +#: ../src/gtkgui_helpers.py:712 msgid "Always check to see if Gajim is the default Jabber client on startup" msgstr "Vždy zkontroluj pÅ™i startu, zda je Gajim výchozà Jabber klient." -#: ../src/gtkgui_helpers.py:793 +#: ../src/gtkgui_helpers.py:811 msgid "Extension not supported" msgstr "RozÅ¡ÃÅ™enà nenà podporováno" -#: ../src/gtkgui_helpers.py:794 +#: ../src/gtkgui_helpers.py:812 #, python-format msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" -msgstr "Obrázek nelze uložit ve formátu %(type)s. Uložit jako %(new_filename)s?" +msgstr "" +"Obrázek nelze uložit ve formátu %(type)s. Uložit jako %(new_filename)s?" -#: ../src/gtkgui_helpers.py:803 +#: ../src/gtkgui_helpers.py:821 msgid "Save Image as..." msgstr "Uložit obrázek jako..." -#: ../src/history_manager.py:65 +#: ../src/history_manager.py:68 msgid "Cannot find history logs database" msgstr "Nemůžu nalézt databázi s historiÃ" @@ -4505,36 +5113,39 @@ msgid "Contacts" msgstr "Kontakty" #. holds time -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:161 +#: ../src/history_manager.py:121 ../src/history_manager.py:161 #: ../src/history_window.py:86 msgid "Date" msgstr "Datum" #. holds nickname -#: ../src/history_manager.py:127 -#: ../src/history_manager.py:179 +#: ../src/history_manager.py:127 ../src/history_manager.py:179 msgid "Nickname" msgstr "PÅ™ezdÃvka" #. holds message -#: ../src/history_manager.py:135 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:135 ../src/history_manager.py:167 #: ../src/history_window.py:94 msgid "Message" msgstr "Zpráva" #: ../src/history_manager.py:187 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" +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: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" +"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 "" -"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" +"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" "\n" "V pÅ™ÃpadÄ› kliknutà na ANO prosÃm vyÄkejte..." @@ -4554,8 +5165,7 @@ 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:518 -#: ../src/history_manager.py:554 +#: ../src/history_manager.py:518 ../src/history_manager.py:554 msgid "This is an irreversible operation." msgstr "Tato operace je nevratná." @@ -4566,222 +5176,97 @@ msgstr[0] "VážnÄ› chcete smazat vybranou zprávu?" msgstr[1] "VážnÄ› chcete smazat vybrané zprávy?" msgstr[2] "" -#: ../src/history_window.py:103 -#: ../src/history_window.py:105 -#, python-format -msgid "Conversation History with %s" -msgstr "Historie rozhovorů s %s" - -#: ../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:262 -#: ../src/notify.py:199 -#, python-format -msgid "%(nick)s is now %(status)s" -msgstr "%(nick)s je nynà %(status)s" - -#: ../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:271 -#, python-format -msgid "Status is now: %(status)s" -msgstr "Status je nynà %(status)s" - -#. 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"}" -#: ../src/chat_control.py:52 -msgid "English" -msgstr "AngliÄtina" - -#: ../src/chat_control.py:52 -msgid "Belarusian" -msgstr "BÄ›loruÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Bulgarian" -msgstr "BulharÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Breton" -msgstr "BretonÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Czech" -msgstr "ÄŒeÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "German" -msgstr "NÄ›mÄina" - -#: ../src/chat_control.py:52 -msgid "Greek" -msgstr "ŘeÄtina" - -#: ../src/chat_control.py:52 -msgid "British" -msgstr "BritÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Esperanto" -msgstr "Esperanto" - -#: ../src/chat_control.py:52 -msgid "Spanish" -msgstr "Å panÄ›lÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Basque" -msgstr "BaskiÄtina" - -#: ../src/chat_control.py:52 -msgid "French" -msgstr "FrancouzÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Croatian" -msgstr "ChorvatÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Italian" -msgstr "ItalÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Norwegian (b)" -msgstr "NorÅ¡tina (b)" - -#: ../src/chat_control.py:52 -msgid "Dutch" -msgstr "HolandÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Norwegian" -msgstr "NorÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Polish" -msgstr "PolÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Portuguese" -msgstr "PortugalÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Brazilian Portuguese" -msgstr "Brazilská portugalÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Russian" -msgstr "RuÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Slovak" -msgstr "SlovenÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Swedish" -msgstr "Å védÅ¡tina" - -#: ../src/chat_control.py:52 -msgid "Chinese (Ch)" -msgstr "ÄŒÃnÅ¡tina" - -#: ../src/chat_control.py:247 -msgid "Spelling language" -msgstr "Kontrola jazyka" - -#. we are not connected -#: ../src/chat_control.py:270 -#: ../src/chat_control.py:476 -msgid "A connection is not available" -msgstr "Spojenà nenà dostupné" +#: ../src/history_window.py:103 ../src/history_window.py:105 +#, python-format +msgid "Conversation History with %s" +msgstr "Historie rozhovorů s %s" -#: ../src/chat_control.py:271 -#: ../src/chat_control.py:477 -msgid "Your message can not be sent until you are connected." -msgstr "Va¹e zpráva nemù¾e být odeslána dokud se nepøipojÃte." +#: ../src/history_window.py:266 +#, python-format +msgid "%(nick)s is now %(status)s: %(status_msg)s" +msgstr "%(nick)s je nynà %(status)s: %(status_msg)s" -#: ../src/chat_control.py:856 -msgid "Chats" -msgstr "Rozhovory" +#: ../src/history_window.py:270 ../src/notify.py:205 +#, python-format +msgid "%(nick)s is now %(status)s" +msgstr "%(nick)s je nynà %(status)s" -#: ../src/chat_control.py:1038 +#: ../src/history_window.py:276 #, python-format -msgid "%(nickname)s from group chat %(room_name)s" -msgstr "%(nickname)s z diskuze %(room_name)s" +msgid "Status is now: %(status)s: %(status_msg)s" +msgstr "Status je nynà %(status)s: %(status_msg)s" -#. we talk about a contact here -#: ../src/chat_control.py:1127 +#: ../src/history_window.py:279 #, python-format -msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" -msgstr "%s nerozesÃlá svůj OpenPGP klÃÄ nebo nemá žádný pÅ™iÅ™azen" +msgid "Status is now: %(status)s" +msgstr "Status je nynà %(status)s" -#: ../src/chat_control.py:1263 -msgid "Encryption enabled" -msgstr "Å ifrovánà zapnuto" +#: ../src/htmltextview.py:583 ../src/htmltextview.py:594 +#, fuzzy +msgid "Timeout loading image" +msgstr "NezdaÅ™ilo se naÄtenà obrázku" -#: ../src/chat_control.py:1268 -msgid "Encryption disabled" -msgstr "Å ifrovánà vypnuto" +#: ../src/htmltextview.py:604 +msgid "Image is too big" +msgstr "" -#. %s is being replaced in the code with JID -#: ../src/chat_control.py:1556 -#, python-format -msgid "You just received a new message from \"%s\"" -msgstr "PrávÄ› jsi obdržela novou zprávu od \"%s\"" +#: ../src/message_window.py:287 +msgid "Chats" +msgstr "Rozhovory" + +#: ../src/message_window.py:289 +msgid "Group Chats" +msgstr "Diskuze" -#: ../src/chat_control.py:1557 -msgid "If you close this tab and you have history disabled, this message will be lost." -msgstr "Pokud zavÅ™ete toto okno a historie je vypnutá, tato zpráva bude ztracena." +#: ../src/message_window.py:291 +msgid "Private Chats" +msgstr "Soukromé rozhovory" -#: ../src/message_window.py:273 +#: ../src/message_window.py:293 msgid "Messages" msgstr "Zprávy" -#: ../src/message_window.py:274 +#: ../src/message_window.py:294 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/notify.py:197 +#: ../src/notify.py:203 #, python-format msgid "%(nick)s Changed Status" msgstr "%(nick)s ZmÄ›nil(a) stav" -#: ../src/notify.py:207 +#: ../src/notify.py:213 #, python-format msgid "%(nickname)s Signed In" msgstr "%(nickname)s se pÅ™ihlásil" -#: ../src/notify.py:215 +#: ../src/notify.py:221 #, python-format msgid "%(nickname)s Signed Out" msgstr "%(nickname)s se odhlásil" -#: ../src/notify.py:227 +#: ../src/notify.py:233 #, python-format msgid "New Single Message from %(nickname)s" msgstr "Nová jednoduché zpráva od %(nickname)s" -#: ../src/notify.py:235 +#: ../src/notify.py:241 #, python-format msgid "New Private Message from group chat %s" msgstr "Nová soukromá zpráva z mÃstnosti %s" -#: ../src/notify.py:236 +#: ../src/notify.py:243 #, python-format msgid "%(nickname)s: %(message)s" msgstr "%(nickname)s: %(message)s" -#: ../src/notify.py:242 +#: ../src/notify.py:246 +#, fuzzy, python-format +msgid "Messaged by %(nickname)s" +msgstr "Nová zpráva od %(nickname)s" + +#: ../src/notify.py:252 #, python-format msgid "New Message from %(nickname)s" msgstr "Nová zpráva od %(nickname)s" @@ -4790,255 +5275,340 @@ msgstr "Nová zpráva od %(nickname)s" msgid "Retrieving profile..." msgstr "Stahuji profil..." +#: ../src/profile_window.py:123 ../src/roster_window.py:1876 +#, fuzzy +msgid "File is empty" +msgstr "Cesta k souboru" + +#: ../src/profile_window.py:126 ../src/roster_window.py:1879 +#, fuzzy +msgid "File does not exist" +msgstr "Taková diskuze neexistuje." + #. keep identation -#: ../src/profile_window.py:143 +#. unknown format +#: ../src/profile_window.py:140 ../src/profile_window.py:156 +#: ../src/roster_window.py:1881 ../src/roster_window.py:1892 msgid "Could not load image" msgstr "NezdaÅ™ilo se naÄtenà obrázku" -#: ../src/profile_window.py:255 +#: ../src/profile_window.py:257 msgid "Information received" msgstr "Informace pÅ™ijata" -#: ../src/profile_window.py:324 +#: ../src/profile_window.py:326 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/profile_window.py:336 +#: ../src/profile_window.py:338 msgid "Sending profile..." msgstr "OdesÃlám profil..." -#: ../src/profile_window.py:351 +#: ../src/profile_window.py:353 msgid "Information NOT published" msgstr "Informace NEBYLY zveÅ™ejnÄ›ny" -#: ../src/profile_window.py:358 +#: ../src/profile_window.py:360 msgid "vCard publication failed" msgstr "publikovánà vizitky se nezdaÅ™ilo" -#: ../src/profile_window.py:359 -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." +#: ../src/profile_window.py:361 +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." -#: ../src/roster_window.py:171 -#: ../src/roster_window.py:226 +#: ../src/roster_window.py:181 ../src/roster_window.py:236 msgid "Merged accounts" msgstr "Spojené úÄty" -#: ../src/roster_window.py:344 -#: ../src/common/helpers.py:43 +#: ../src/roster_window.py:356 ../src/roster_window.py:621 +#: ../src/roster_window.py:2110 ../src/common/contacts.py:307 +#: ../src/common/helpers.py:44 msgid "Observers" msgstr "PÅ™ihlÞejÃcÃ" -#: ../src/roster_window.py:691 -#: ../src/roster_window.py:3207 +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:440 ../src/roster_window.py:445 +#: ../src/roster_window.py:1935 ../src/roster_window.py:1938 +#: ../src/roster_window.py:2607 ../src/roster_window.py:2610 +#: ../src/roster_window.py:2635 ../src/roster_window.py:4686 +#: ../src/roster_window.py:4688 ../src/common/commands.py:194 +#: ../src/common/contacts.py:97 ../src/common/helpers.py:44 +msgid "Groupchats" +msgstr "Diskuze" + +#: ../src/roster_window.py:770 ../src/roster_window.py:3947 msgid "You cannot join a group chat while you are invisible" msgstr "Nemůžete vstoupit do diskuze, pokud jste neviditelný(á)" #. new chat +#. single message #. for chat_with #. for single message -#: ../src/roster_window.py:883 -#: ../src/systray.py:187 -#: ../src/systray.py:192 +#. join gc +#: ../src/roster_window.py:983 ../src/roster_window.py:993 +#: ../src/roster_window.py:1002 ../src/systray.py:207 ../src/systray.py:212 +#: ../src/systray.py:218 #, python-format msgid "using account %s" msgstr "pomocà úÄtu %s" -#. the 'manage gc bookmarks' item is shown -#. below to avoid duplicate code #. add -#: ../src/roster_window.py:908 +#: ../src/roster_window.py:1009 #, python-format msgid "to %s account" msgstr "do úÄtu %s" #. disco -#: ../src/roster_window.py:913 +#: ../src/roster_window.py:1014 #, python-format msgid "using %s account" msgstr "pomocà úÄtu %s" +#: ../src/roster_window.py:1095 +msgid "_Manage Bookmarks..." +msgstr "Spravovat _záložky..." + #. profile, avatar -#: ../src/roster_window.py:988 +#: ../src/roster_window.py:1114 #, python-format msgid "of account %s" msgstr "úÄtu %s" -#: ../src/roster_window.py:1008 -msgid "_Manage Bookmarks..." -msgstr "Spravovat _záložky..." - -#: ../src/roster_window.py:1037 +#: ../src/roster_window.py:1154 #, python-format msgid "for account %s" msgstr "pro úÄet %s" #. History manager -#: ../src/roster_window.py:1058 +#: ../src/roster_window.py:1175 msgid "History Manager" msgstr "Správce historie" -#: ../src/roster_window.py:1067 +#: ../src/roster_window.py:1184 msgid "_Join New Group Chat" msgstr "_PÅ™ipojit se do diskuze" -#: ../src/roster_window.py:1397 -#: ../src/roster_window.py:3400 -#: ../src/roster_window.py:3407 +#: ../src/roster_window.py:1538 ../src/roster_window.py:4145 +#: ../src/roster_window.py:4152 msgid "You have unread messages" msgstr "Máte nepÅ™eÄtené zprávy" -#: ../src/roster_window.py:1398 +#: ../src/roster_window.py:1539 msgid "You must read them before removing this transport." msgstr "MusÃÅ¡ si je pÅ™eÄÃst pÅ™ed smazánÃm transportu." -#: ../src/roster_window.py:1401 +#: ../src/roster_window.py:1542 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" bude smazán" -#: ../src/roster_window.py:1402 -msgid "You will no longer be able to send and receive messages from contacts using this transport." -msgstr "Už vÃce nebudete moci posÃlat i pÅ™ijÃmat zprávy od kontaktů z tohoto transportu." +#: ../src/roster_window.py:1543 +msgid "" +"You will no longer be able to send and receive messages from contacts using " +"this transport." +msgstr "" +"Už vÃce nebudete moci posÃlat i pÅ™ijÃmat zprávy od kontaktů z tohoto " +"transportu." -#: ../src/roster_window.py:1405 +#: ../src/roster_window.py:1546 msgid "Transports will be removed" msgstr "Transport bude smazán" -#: ../src/roster_window.py:1410 +#: ../src/roster_window.py:1551 #, python-format -msgid "You will no longer be able to send and receive messages to contacts from these transports:%s" -msgstr "Už vÃce nebudete moci posÃlat i pÅ™ijÃmat zprávy od kontaktů z tÄ›chto transportů:%s" +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"these transports:%s" +msgstr "" +"Už vÃce nebudete moci posÃlat i pÅ™ijÃmat zprávy od kontaktů z tÄ›chto " +"transportů:%s" #. it's jid -#: ../src/roster_window.py:1430 +#: ../src/roster_window.py:1717 msgid "Rename Contact" msgstr "PÅ™ejmenovat kontakt" -#: ../src/roster_window.py:1431 +#: ../src/roster_window.py:1718 #, python-format msgid "Enter a new nickname for contact %s" msgstr "Zadej novou pÅ™ezdÃvku pro kontakt %s." -#: ../src/roster_window.py:1438 +#: ../src/roster_window.py:1725 msgid "Rename Group" msgstr "PÅ™ejmenovat skupinu" -#: ../src/roster_window.py:1439 +#: ../src/roster_window.py:1726 #, python-format msgid "Enter a new name for group %s" msgstr "Zadej nové jméno pro skupinu %s." -#: ../src/roster_window.py:1514 +#: ../src/roster_window.py:1801 msgid "Remove Group" msgstr "Odstranit skupinu" -#: ../src/roster_window.py:1515 +#: ../src/roster_window.py:1802 #, python-format msgid "Do you want to remove group %s from the roster?" msgstr "ChceÅ¡ smazat skupinu %s z rosteru?" -#: ../src/roster_window.py:1516 +#: ../src/roster_window.py:1803 msgid "Remove also all contacts in this group from your roster" msgstr "Odstranit také vÅ¡echny kontakty v této skupinÄ› z VaÅ¡eho rosteru" -#: ../src/roster_window.py:1545 +#: ../src/roster_window.py:1834 msgid "Assign OpenPGP Key" msgstr "PÅ™iÅ™adit OpenPGP klÃÄ" -#: ../src/roster_window.py:1546 +#: ../src/roster_window.py:1835 msgid "Select a key to apply to the contact" msgstr "Vybrat klÃÄ k použÃtà s kontaktem" -#: ../src/roster_window.py:1781 -#: ../src/roster_window.py:2042 -msgid "_New group chat" -msgstr "_Nová diskuze" +#: ../src/roster_window.py:2156 +#, fuzzy +msgid "_New Group Chat" +msgstr "Nová diskuze" -#: ../src/roster_window.py:1912 +#: ../src/roster_window.py:2298 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:2087 -#: ../src/roster_window.py:2134 +#. Send Group Message +#: ../src/roster_window.py:2432 ../src/roster_window.py:2644 msgid "Send Group M_essage" msgstr "Ode_slat skupinovou zprávu" -#: ../src/roster_window.py:2113 -msgid "Re_name" -msgstr "PÅ™ejme_novat" +#: ../src/roster_window.py:2451 +msgid "_New group chat" +msgstr "_Nová diskuze" + +#. Manage Transport submenu +#: ../src/roster_window.py:2489 +#, fuzzy +msgid "_Manage Contacts" +msgstr "PÅ™ejmenovat kontakt" + +#: ../src/roster_window.py:2550 +msgid "_Maximize" +msgstr "" -#: ../src/roster_window.py:2140 +#: ../src/roster_window.py:2557 +#, fuzzy +msgid "_Disconnect" +msgstr "Kontakt se odpojil" + +#: ../src/roster_window.py:2636 +msgid "_Maximize All" +msgstr "" + +#: ../src/roster_window.py:2652 msgid "To all users" msgstr "VÅ¡em uživatelům" -#: ../src/roster_window.py:2143 +#: ../src/roster_window.py:2655 msgid "To all online users" msgstr "VÅ¡em dostupným uživatelům" -#: ../src/roster_window.py:2179 +#. Log Off +#: ../src/roster_window.py:2772 +#, fuzzy +msgid "_Log off" +msgstr "_Odhlásit" + +#. Log on +#: ../src/roster_window.py:2778 msgid "_Log on" msgstr "PÅ™ih_lásit" -#: ../src/roster_window.py:2189 -msgid "Log _off" -msgstr "_Odhlásit" +#. Send single message +#: ../src/roster_window.py:2790 +#, fuzzy +msgid "Send Single Message" +msgstr "Ode_slat jednoduchou zprávu" + +#. Manage Transport submenu +#: ../src/roster_window.py:2837 +#, fuzzy +msgid "_Manage Transport" +msgstr "Transporty" + +#. Modify Transport +#: ../src/roster_window.py:2845 +#, fuzzy +msgid "_Modify Transport" +msgstr "Zobrazuj trans_porty" + +#. Information +#: ../src/roster_window.py:2882 +#, fuzzy +msgid "_Information" +msgstr "Informace o kontaktu" -#: ../src/roster_window.py:2311 -#: ../src/roster_window.py:2382 +#: ../src/roster_window.py:2959 ../src/roster_window.py:3033 msgid "_Change Status Message" msgstr "Z_mÄ›nit popis stavu" -#: ../src/roster_window.py:2454 +#: ../src/roster_window.py:3105 msgid "Authorization has been sent" msgstr "Autorizace byla odeslána" -#: ../src/roster_window.py:2455 +#: ../src/roster_window.py:3106 #, python-format msgid "Now \"%s\" will know your status." msgstr "Nynà bude \"%s\" znát váš status." -#: ../src/roster_window.py:2475 +#: ../src/roster_window.py:3126 msgid "Subscription request has been sent" msgstr "Žádost o autorizaci byla odeslána" -#: ../src/roster_window.py:2476 +#: ../src/roster_window.py:3127 #, 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:2488 +#: ../src/roster_window.py:3139 msgid "Authorization has been removed" msgstr "Autorizace byla zruÅ¡ena" -#: ../src/roster_window.py:2489 +#: ../src/roster_window.py:3140 #, 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:2681 +#: ../src/roster_window.py:3338 #, 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:2685 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "SmazánÃm kontaktu také zruÅ¡Ãte autorizaci. Kontakt Vás tak vždy uvidà jako odpojeného." +#: ../src/roster_window.py:3342 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"SmazánÃm kontaktu také zruÅ¡Ãte autorizaci. Kontakt Vás tak vždy uvidà jako " +"odpojeného." -#: ../src/roster_window.py:2690 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "SmazánÃm kontaktu také zruÅ¡Ãte autorizaci. Kontakt Vás tak vždy uvidà jako odpojeného." +#: ../src/roster_window.py:3347 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"SmazánÃm kontaktu také zruÅ¡Ãte autorizaci. Kontakt Vás tak vždy uvidà jako " +"odpojeného." -#: ../src/roster_window.py:2693 +#: ../src/roster_window.py:3350 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Ã" #. several contact to remove at the same time -#: ../src/roster_window.py:2697 +#: ../src/roster_window.py:3354 msgid "Contacts will be removed from your roster" msgstr "Kontakty budou smazány z VaÅ¡eho rosteru" -#: ../src/roster_window.py:2701 +#: ../src/roster_window.py:3358 #, python-format msgid "" "By removing these contacts:%s\n" @@ -5047,194 +5617,228 @@ msgstr "" "SmazánÃm tÄ›chto kontaktů:%s\n" "také zruÅ¡Ãte autorizaci. Kontakty Vás tak vždy uvidà jako odpojeného." -#: ../src/roster_window.py:2733 -msgid "Gnome Keyring is installed but not correctly started (environment variable probably not correctly set)" -msgstr "Gnome Keyring je nainstalován ale nenà správnÄ› spuÅ¡tÄ›n (promÄ›ná prostÅ™edà nenà asi správnÄ› nastavena)" +#: ../src/roster_window.py:3390 +msgid "" +"Gnome Keyring is installed but not correctly started (environment variable " +"probably not correctly set)" +msgstr "" +"Gnome Keyring je nainstalován ale nenà správnÄ› spuÅ¡tÄ›n (promÄ›ná prostÅ™edà " +"nenà asi správnÄ› nastavena)" + +#: ../src/roster_window.py:3417 +msgid "GPG is not usable" +msgstr "" -#. TODO: make this string translatable #. %s is the account name here -#: ../src/roster_window.py:2761 -#: ../src/common/connection.py:677 -#: ../src/common/zeroconf/connection_zeroconf.py:158 +#: ../src/roster_window.py:3417 ../src/common/connection.py:681 +#: ../src/common/zeroconf/connection_zeroconf.py:165 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Budete pÅ™ipojen(a) k %s bez OpenPGP." -#: ../src/roster_window.py:2778 +#: ../src/roster_window.py:3434 msgid "Passphrase Required" msgstr "Heslo Vyžadováno" -#: ../src/roster_window.py:2779 +#: ../src/roster_window.py:3435 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Zadej heslo GPG klÃÄe pro úÄet %s." -#: ../src/roster_window.py:2784 +#: ../src/roster_window.py:3440 msgid "Save passphrase" msgstr "Uložit heslo" -#: ../src/roster_window.py:2792 +#: ../src/roster_window.py:3448 msgid "Wrong Passphrase" msgstr "Nesprávné heslo" -#: ../src/roster_window.py:2793 +#: ../src/roster_window.py:3449 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:2850 -#: ../src/roster_window.py:2910 +#: ../src/roster_window.py:3532 ../src/roster_window.py:3609 msgid "You are participating in one or more group chats" msgstr "ÚÄinkujete v jedné nebo vÃce diskuzÃch" -#: ../src/roster_window.py:2851 -#: ../src/roster_window.py:2911 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -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:3533 ../src/roster_window.py:3610 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +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:2868 +#: ../src/roster_window.py:3567 msgid "No account available" msgstr "Žádný úÄet nenà dostupný" -#: ../src/roster_window.py:2869 +#: ../src/roster_window.py:3568 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:2967 +#: ../src/roster_window.py:3696 #, python-format msgid "\"%(title)s\" by %(artist)s" msgstr "\"%(title)s\" od %(artist)s" -#: ../src/roster_window.py:3401 -#: ../src/roster_window.py:3408 -msgid "Messages will only be available for reading them later if you have history enabled." -msgstr "Zprávy bude možné ÄÃst pozdÄ›ji pouze v pÅ™ÃpadÄ›, budete-li mÃt povolenou historii." +#: ../src/roster_window.py:4146 ../src/roster_window.py:4153 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Zprávy bude možné ÄÃst pozdÄ›ji pouze v pÅ™ÃpadÄ›, budete-li mÃt povolenou " +"historii." -#: ../src/roster_window.py:3992 +#: ../src/roster_window.py:4772 msgid "Metacontacts storage not supported by your server" msgstr "Uloženà metakontaktů nenà podporováno serverem" -#: ../src/roster_window.py:3994 -msgid "Your server does not support storing metacontacts information. So those information will not be save on next reconnection." -msgstr "Tvůj server nepodporuje ukládánà metakontaktů. Tyto informace nebudou pÅ™i pÅ™ÃstÃm pÅ™ipojenà uloženy." +#: ../src/roster_window.py:4774 +msgid "" +"Your server does not support storing metacontacts information. So those " +"information will not be save on next reconnection." +msgstr "" +"Tvůj server nepodporuje ukládánà metakontaktů. Tyto informace nebudou pÅ™i " +"pÅ™ÃstÃm pÅ™ipojenà uloženy." -#: ../src/roster_window.py:4036 -msgid "You are about to create a metacontact. Are you sure you want to continue?" +#: ../src/roster_window.py:4820 +msgid "" +"You are about to create a metacontact. Are you sure you want to continue?" msgstr "Chystáte se vytvoÅ™it metacontact. UrÄitÄ› chcete pokraÄovat?" -#: ../src/roster_window.py:4038 -msgid "Metacontacts are a way to regroup several contacts in one line. Generally it is used when the same person has several Jabber accounts or transport accounts." -msgstr "Metakontakty jsou způsob k organizaci nÄ›kolika kontaktů do jednoho. ObecnÄ› jsou užiteÄné, když jeden ÄlovÄ›k má vÃc úÄtů v sÃti Jabber nebo úÄty v transportech." - -#: ../src/roster_window.py:4205 -#, python-format -msgid "Drop %s in group %s" -msgstr "Smazat %s ve skupinÄ› %s" - -#: ../src/roster_window.py:4212 -#, python-format -msgid "Make %s and %s metacontacts" -msgstr "UÄiň %s a %s metakontakty" +#: ../src/roster_window.py:4822 +msgid "" +"Metacontacts are a way to regroup several contacts in one line. Generally it " +"is used when the same person has several Jabber accounts or transport " +"accounts." +msgstr "" +"Metakontakty jsou způsob k organizaci nÄ›kolika kontaktů do jednoho. ObecnÄ› " +"jsou užiteÄné, když jeden ÄlovÄ›k má vÃc úÄtů v sÃti Jabber nebo úÄty v " +"transportech." + +#: ../src/roster_window.py:4920 +#, fuzzy, python-format +msgid "Do you want to send that file to %s:" +msgid_plural "Do you want to send those files to %s:" +msgstr[0] "%s Vám chce poslat soubor:" +msgstr[1] "%s Vám chce poslat soubor:" +msgstr[2] "%s Vám chce poslat soubor:" # FIXME: nejak divne, asi spatne prelozene -#: ../src/roster_window.py:4399 +#: ../src/roster_window.py:5202 msgid "Change Status Message..." msgstr "ZmÄ›nit popis stavu..." -#: ../src/systray.py:144 +#: ../src/systray.py:164 msgid "_Change Status Message..." msgstr "_ZmÄ›nit popis stavu..." -#: ../src/systray.py:232 +#: ../src/systray.py:249 msgid "Hide this menu" msgstr "Skryje toto menu" -#: ../src/tooltips.py:309 -#: ../src/tooltips.py:492 +#: ../src/tooltips.py:310 ../src/tooltips.py:503 msgid "Jabber ID: " msgstr "Jabber ID:" -#: ../src/tooltips.py:312 -#: ../src/tooltips.py:496 +#: ../src/tooltips.py:313 ../src/tooltips.py:507 msgid "Resource: " msgstr "Zdroj: " -#: ../src/tooltips.py:317 +#: ../src/tooltips.py:318 #, python-format msgid "%(owner_or_admin_or_member)s of this group chat" msgstr "%(owner_or_admin_or_member)s této diskuze" -#: ../src/tooltips.py:430 -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:416 +msgid " [blocked]" +msgstr "" + +#: ../src/tooltips.py:420 +msgid " [minimized]" +msgstr "" + +#: ../src/tooltips.py:435 ../src/tooltips.py:623 msgid "Status: " msgstr "Stav: " -#: ../src/tooltips.py:461 +#: ../src/tooltips.py:465 #, python-format msgid "Last status: %s" msgstr "Poslednà stav: %s" -#: ../src/tooltips.py:463 +#: ../src/tooltips.py:467 #, python-format msgid " since %s" msgstr " od %s" +#: ../src/tooltips.py:485 +#, fuzzy +msgid "Connected" +msgstr "SpojenÃ" + +#: ../src/tooltips.py:487 +#, fuzzy +msgid "Disconnected" +msgstr "Kontakt se odpojil" + #. ('both' is the normal sub so we don't show it) -#: ../src/tooltips.py:502 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Autorizace: " -#: ../src/tooltips.py:512 +#: ../src/tooltips.py:524 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:566 +#: ../src/tooltips.py:579 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:572 +#: ../src/tooltips.py:585 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:579 +#: ../src/tooltips.py:592 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:585 +#: ../src/tooltips.py:598 msgid "Transferred: " msgstr "PÅ™eneseno: " -#: ../src/tooltips.py:588 -#: ../src/tooltips.py:609 +#: ../src/tooltips.py:601 ../src/tooltips.py:622 msgid "Not started" msgstr "NespuÅ¡tÄ›no" -#: ../src/tooltips.py:592 +#: ../src/tooltips.py:605 msgid "Stopped" msgstr "Zastaveno" -#: ../src/tooltips.py:594 -#: ../src/tooltips.py:597 +#: ../src/tooltips.py:607 ../src/tooltips.py:610 msgid "Completed" msgstr "DokonÄeno" -#: ../src/tooltips.py:601 +#: ../src/tooltips.py:614 msgid "?transfer status:Paused" msgstr "?transfer status:Pozastaveno" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:605 +#: ../src/tooltips.py:618 msgid "Stalled" msgstr "Stagnuje" -#: ../src/tooltips.py:607 +#: ../src/tooltips.py:620 msgid "Transferring" msgstr "PÅ™enášÃm" -#: ../src/tooltips.py:639 +#: ../src/tooltips.py:652 msgid "This service has not yet responded with detailed information" msgstr "Tato služba dosud neodpovÄ›dÄ›la s detaily" -#: ../src/tooltips.py:642 +#: ../src/tooltips.py:655 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -5242,51 +5846,79 @@ msgstr "" "Tato služba nemůže odpovÄ›dÄ›t s vÃce podrobnostmi.\n" "PravdÄ›podobnÄ› je stará nebo rozbitá" -#: ../src/vcard.py:217 +#: ../src/vcard.py:240 msgid "?Client:Unknown" msgstr "?Client:Neznámý" -#: ../src/vcard.py:219 +#: ../src/vcard.py:242 msgid "?OS:Unknown" msgstr "?OS:Neznámý" -#: ../src/vcard.py:247 -#: ../src/vcard.py:449 +#: ../src/vcard.py:267 ../src/vcard.py:277 ../src/vcard.py:467 #, python-format msgid "since %s" msgstr "od %s" -#: ../src/vcard.py:277 +#: ../src/vcard.py:306 msgid "Affiliation:" msgstr "Vztah:" -#: ../src/vcard.py:285 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" +#: ../src/vcard.py:314 +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:287 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" +#: ../src/vcard.py:316 +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:289 +#: ../src/vcard.py:318 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:291 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" +#: ../src/vcard.py:320 +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:299 +#: ../src/vcard.py:328 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:311 -#: ../src/vcard.py:338 -#: ../src/vcard.py:482 +#: ../src/vcard.py:332 ../src/vcard.py:369 ../src/vcard.py:492 msgid " resource with priority " msgstr "zdroj s prioritou " +#: ../src/common/check_paths.py:33 +msgid "creating logs database" +msgstr "vytvářÃm databázi historie" + +#: ../src/common/check_paths.py:96 ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:114 +#, python-format +msgid "%s is a file but it should be a directory" +msgstr "%s je soubor, ale mÄ›l by být adresář" + +#: ../src/common/check_paths.py:97 ../src/common/check_paths.py:108 +#: ../src/common/check_paths.py:115 ../src/common/check_paths.py:123 +msgid "Gajim will now exit" +msgstr "Gajim se nynà ukonÄÃ" + +#: ../src/common/check_paths.py:122 +#, python-format +msgid "%s is a directory but should be a file" +msgstr "%s je adresář, ale mÄ›l by to být soubor" + +#: ../src/common/check_paths.py:138 +#, python-format +msgid "creating %s directory" +msgstr "vytvářÃm adresář %s " + #: ../src/common/commands.py:69 msgid "Change status information" msgstr "Informace o zmÄ›nÄ› stavu" @@ -5344,47 +5976,54 @@ msgstr "Opustit diskuzi" msgid "Choose the groupchats you want to leave" msgstr "Vyber diskuze, které chceÅ¡ opustit" -#: ../src/common/commands.py:194 -msgid "Groupchats" -msgstr "Diskuze" - #: ../src/common/commands.py:230 msgid "You left the following groupchats:" msgstr "Opustil(a) jste následujÃcà diskuze:" -#: ../src/common/config.py:56 +#: ../src/common/commands.py:242 +#, fuzzy +msgid "Forward unread messages" +msgstr "%d nepÅ™eÄtená zpráva" + +#: ../src/common/commands.py:262 +msgid "All unread messages have been forwarded." +msgstr "" + +#: ../src/common/config.py:57 msgid "Use D-Bus and Notification-Daemon to show notifications" msgstr "PoužÃvej DBus a NotifikaÄnÃho démona k zobrazovánà notifikacÃ" -#: ../src/common/config.py:61 +#: ../src/common/config.py:62 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:62 +#: ../src/common/config.py:63 msgid "Away as a result of being idle" msgstr "PryÄ jako výsledek neÄinnosti" -#: ../src/common/config.py:64 +#: ../src/common/config.py:65 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:65 +#: ../src/common/config.py:66 msgid "Not available as a result of being idle" msgstr "Nedostupný jako výsledek neÄinnosti" -#: ../src/common/config.py:83 -msgid "List (space separated) of rows (accounts and groups) that are collapsed." -msgstr "Seznam (oddÄ›lené mezerami) řádků (úÄtů a skupin), které budou \"zhroucené\"." +#: ../src/common/config.py:84 +msgid "" +"List (space separated) of rows (accounts and groups) that are collapsed." +msgstr "" +"Seznam (oddÄ›lené mezerami) řádků (úÄtů a skupin), které budou \"zhroucené\"." -#: ../src/common/config.py:88 +#: ../src/common/config.py:89 msgid "Enable link-local/zeroconf messaging" msgstr "Povolit lokálnà zprávy typu zeroconf" -#: ../src/common/config.py:91 +#: ../src/common/config.py:92 msgid "Language used by speller" msgstr "Jazyk použitý kontrolou pravopisu" -#: ../src/common/config.py:92 +#: ../src/common/config.py:93 msgid "" "'always' - print time for every message.\n" "'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" @@ -5394,608 +6033,786 @@ msgstr "" "'nÄ›kdy' - vypiÅ¡ Äas každou print_ichat_every_foo_minutes minutu.\n" "'nikdy' - nevypisuj Äas." -#: ../src/common/config.py:93 -msgid "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 least precise one. This is used only if print_time is 'sometimes'." -msgstr "VypiÅ¡ Äas v rozhovorech s použitÃm Fuzzy Clock. Hodnota náhodnosti je od 1 to 4, nebo 0 pro vypnutà Fuzzy Clock. 1 je nejpÅ™esnÄ›jÅ¡Ã Äas, 4 nejménÄ› pÅ™esný. Toto se použije jenom pÅ™i print_time nastaveném na 'nÄ›kdy'." +#: ../src/common/config.py:94 +msgid "" +"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 least precise one. " +"This is used only if print_time is 'sometimes'." +msgstr "" +"VypiÅ¡ Äas v rozhovorech s použitÃm Fuzzy Clock. Hodnota náhodnosti je od 1 " +"to 4, nebo 0 pro vypnutà Fuzzy Clock. 1 je nejpÅ™esnÄ›jÅ¡Ã Äas, 4 nejménÄ› " +"pÅ™esný. Toto se použije jenom pÅ™i print_time nastaveném na 'nÄ›kdy'." -#: ../src/common/config.py:96 +#: ../src/common/config.py:97 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Ber * / _ páry jako možné formátovacà znaky." -#: ../src/common/config.py:97 -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:100 -msgid "Uses ReStructured text markup to send HTML, plus ascii formatting if selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html (If you want to use this, install docutils)" -msgstr "Pokud je vybráno, použije ReStructured text markup k odeslánà HTML, navÃc s ascii formátovánÃ. Pro syntaxi navÅ¡tivte http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html (Pokud si to chcete prohlédnout, nainstalujte docutils)" +#: ../src/common/config.py:98 +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:109 -msgid "Character to add after nickname when using nick completion (tab) in group chat." -msgstr "Znak, který se pÅ™idá za pÅ™ezdÃvku po použità doplňovánà jména tabulátorem v diskuzi." +#: ../src/common/config.py:101 +msgid "" +"Uses ReStructured text markup to send HTML, plus ascii formatting if " +"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html (If you want to use this, install docutils)" +msgstr "" +"Pokud je vybráno, použije ReStructured text markup k odeslánà HTML, navÃc s " +"ascii formátovánÃ. Pro syntaxi navÅ¡tivte http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html (Pokud si to chcete prohlédnout, " +"nainstalujte docutils)" #: ../src/common/config.py:110 -msgid "Character to propose to add after desired nickname when desired nickname is used by someone else in group chat." -msgstr "Znak navržený pro pÅ™idánà za zamýšlenou pÅ™ezdÃvku, pokud už ji použÃvá nÄ›kdo jiný v diskuzi." +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." +msgstr "" +"Znak, který se pÅ™idá za pÅ™ezdÃvku po použità doplňovánà jména tabulátorem v " +"diskuzi." -#: ../src/common/config.py:133 -msgid "This option let you customize timestamp that is printed in conversation. For exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on strftime for full documentation: http://docs.python.org/lib/module-time.html" -msgstr "Tato volba umožnà vlastnà formátovánà Äasu, který je zobrazován v rozhovorech. NapÅ™Ãklad \"[%H:%M]\" zobrazà \"[hodina:minuta]\". Pro vÃc informacà shlédnÄ›te dokumentaci pythonu funkce strftime na: http://docs.python.org/lib/module-time.html" +#: ../src/common/config.py:111 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat." +msgstr "" +"Znak navržený pro pÅ™idánà za zamýšlenou pÅ™ezdÃvku, pokud už ji použÃvá nÄ›kdo " +"jiný v diskuzi." #: ../src/common/config.py:134 +msgid "" +"This option let you customize timestamp that is printed in conversation. For " +"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " +"strftime for full documentation: http://docs.python.org/lib/module-time.html" +msgstr "" +"Tato volba umožnà vlastnà formátovánà Äasu, který je zobrazován v " +"rozhovorech. NapÅ™Ãklad \"[%H:%M]\" zobrazà \"[hodina:minuta]\". Pro vÃc " +"informacà shlédnÄ›te dokumentaci pythonu funkce strftime na: http://docs." +"python.org/lib/module-time.html" + +#: ../src/common/config.py:135 msgid "Characters that are printed before the nickname in conversations" msgstr "Znaky, které budou vypisovány pÅ™ed pÅ™ezdÃvkou v rozhovorech" -#: ../src/common/config.py:135 +#: ../src/common/config.py:136 msgid "Characters that are printed after the nickname in conversations" msgstr "Znaky, které budou vypisovány za pÅ™ezdÃvkou v rozhovorech" -#: ../src/common/config.py:142 +#: ../src/common/config.py:143 msgid "Add * and [n] in roster title?" msgstr "PÅ™idat * a [n] k titulku Seznamu?" -#: ../src/common/config.py:143 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Jak moc řádků si pamatovat z pÅ™edchozÃho rozhovoru, když je okno/záložka rozhovoru znovu otevÅ™ena." - #: ../src/common/config.py:144 +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Jak moc řádků si pamatovat z pÅ™edchozÃho rozhovoru, když je okno/záložka " +"rozhovoru znovu otevÅ™ena." + +#: ../src/common/config.py:145 msgid "How many minutes should last lines from previous conversation last." msgstr "Kolik minut by mÄ›ly řádky z pÅ™edchozÃho rozhovoru zůstat." -#: ../src/common/config.py:145 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "Odeslat zprávu pÅ™i Ctrl+Enter a pÅ™i Enter pÅ™ejÃt na nový řádek (výchozà chovánà klienta Mirabilis ICQ)." +#: ../src/common/config.py:146 +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Odeslat zprávu pÅ™i Ctrl+Enter a pÅ™i Enter pÅ™ejÃt na nový řádek (výchozà " +"chovánà klienta Mirabilis ICQ)." -#: ../src/common/config.py:147 +#: ../src/common/config.py:148 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Kolik řádků uložit pro Ctrl+Å ipka nahoru." -#: ../src/common/config.py:150 +#: ../src/common/config.py:151 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "BuÄ vlastnà url s %s v tÄ›le, kde %s je slovo nebo fráze, nebo 'WIKTIONARY', která znamená že se použije wiktionary." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"BuÄ vlastnà url s %s v tÄ›le, kde %s je slovo nebo fráze, nebo 'WIKTIONARY', " +"která znamená že se použije wiktionary." -#: ../src/common/config.py:153 +#: ../src/common/config.py:154 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:154 -msgid "If True, listen to D-Bus signals from NetworkManager and change the status of accounts (provided they do not have listen_to_network_manager set to False and they sync with global status) based upon the status of the network connection." -msgstr "Je-li povoleno, Äeká na D-Bus signál z NetworkManager a zmÄ›nà stav úÄtů (pokud nemajà nastaveno listen_to_network_manager nastavený na False a synchronizujà se s globálnÃm stavem) v závislosti na stavu sÃÅ¥ového pÅ™ipojenÃ." - #: ../src/common/config.py:155 -msgid "Sent chat state notifications. Can be one of all, composing_only, disabled." -msgstr "OdeÅ¡Ãlat události stavu rozhovoru. Může být pouze jediná, composing_only, vypnutá." +msgid "" +"If True, listen to D-Bus signals from NetworkManager and change the status " +"of accounts (provided they do not have listen_to_network_manager set to " +"False and they sync with global status) based upon the status of the network " +"connection." +msgstr "" +"Je-li povoleno, Äeká na D-Bus signál z NetworkManager a zmÄ›nà stav úÄtů " +"(pokud nemajà nastaveno listen_to_network_manager nastavený na False a " +"synchronizujà se s globálnÃm stavem) v závislosti na stavu sÃÅ¥ového " +"pÅ™ipojenÃ." #: ../src/common/config.py:156 -msgid "Displayed chat state notifications in chat windows. Can be one of all, composing_only, disabled." -msgstr "Zobraz stavy rozhovoru v oknÄ› rozhovoru. Může být jedno z all, composing_only nebo disabled." +msgid "" +"Sent chat state notifications. Can be one of all, composing_only, disabled." +msgstr "" +"OdeÅ¡Ãlat události stavu rozhovoru. Může být pouze jediná, composing_only, " +"vypnutá." -#: ../src/common/config.py:158 -msgid "When not printing time for every message (print_time==sometimes), print it every x minutes." -msgstr "Když nevypisuji Äas pro každou zprávu (print_time=='nÄ›kdy'), vypisuj ji každých x minut." +#: ../src/common/config.py:157 +msgid "" +"Displayed chat state notifications in chat windows. Can be one of all, " +"composing_only, disabled." +msgstr "" +"Zobraz stavy rozhovoru v oknÄ› rozhovoru. Může být jedno z all, " +"composing_only nebo disabled." #: ../src/common/config.py:159 -msgid "Ask before closing a group chat tab/window." -msgstr "Ptát se pÅ™ed zavÅ™enÃm oken/záložek diskuzÃ." +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes." +msgstr "" +"Když nevypisuji Äas pro každou zprávu (print_time=='nÄ›kdy'), vypisuj ji " +"každých x minut." #: ../src/common/config.py:160 -msgid "Always ask before closing group chat tab/window in this space separated list of group chat jids." -msgstr "Vždy se ptát pÅ™ed zavÅ™enÃm oken/panelů diskuzà uvedených v tomto seznamu mezerami oddÄ›lenÃm Jabber ID mÃstnostÃ." +msgid "Ask before closing a group chat tab/window." +msgstr "Ptát se pÅ™ed zavÅ™enÃm oken/záložek diskuzÃ." #: ../src/common/config.py:161 -msgid "Never ask before closing group chat tab/window in this space separated list of group chat jids." -msgstr "Nikdy se neptát pÅ™ed zavÅ™enÃm oken/záložek diskuzà uvedených v tomto seznamu mezerami oddÄ›lenými Jabber ID mÃstnostÃ." +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Vždy se ptát pÅ™ed zavÅ™enÃm oken/panelů diskuzà uvedených v tomto seznamu " +"mezerami oddÄ›lenÃm Jabber ID mÃstnostÃ." + +#: ../src/common/config.py:162 +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Nikdy se neptát pÅ™ed zavÅ™enÃm oken/záložek diskuzà uvedených v tomto seznamu " +"mezerami oddÄ›lenými Jabber ID mÃstnostÃ." -#: ../src/common/config.py:164 -msgid "Comma separated list of hosts that we send, in addition of local interfaces, for File Transfer in case of address translation/port forwarding." -msgstr "Čárkami oddÄ›lený seznam poÄÃtaÄů kterým posÃláme, navÃc k lokálnÃm sÃÅ¥ovým rozhranÃm, pro pÅ™enos souborů v pÅ™ÃpadÄ› pÅ™ekladu adres nebo pÅ™esmÄ›rovánÃm portů." +#: ../src/common/config.py:165 +msgid "" +"Comma separated list of hosts that we send, in addition of local interfaces, " +"for File Transfer in case of address translation/port forwarding." +msgstr "" +"Čárkami oddÄ›lený seznam poÄÃtaÄů kterým posÃláme, navÃc k lokálnÃm sÃÅ¥ovým " +"rozhranÃm, pro pÅ™enos souborů v pÅ™ÃpadÄ› pÅ™ekladu adres nebo pÅ™esmÄ›rovánÃm " +"portů." -#: ../src/common/config.py:166 +#: ../src/common/config.py:167 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." msgstr "IEC standard Å™Ãká KiB = 1024 bytů, KB = 1000 bytů." -#: ../src/common/config.py:168 +#: ../src/common/config.py:169 msgid "Notify of events in the system trayicon." msgstr "Upozorni na události v systémovém trayi." -#: ../src/common/config.py:174 +#: ../src/common/config.py:175 msgid "Show tab when only one conversation?" msgstr "Zobrazit záložku pÅ™i jediném rozhovoru?" -#: ../src/common/config.py:175 +#: ../src/common/config.py:176 msgid "Show tabbed notebook border in chat windows?" msgstr "Zobrazit okraj panelu v oknech rozhovorů?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:177 msgid "Show close button in tab?" msgstr "Zobrazit tlaÄitko zavÅ™Ãt v záložce?" -#: ../src/common/config.py:189 -msgid "A semicolon-separated list of words that will be highlighted in group chats." -msgstr "StÅ™ednÃkem oddÄ›lený seznam slov, které budou zvýraznÄ›ny v diskuzÃch." - -#: ../src/common/config.py:190 -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 "Pokud zapnuto, ukonÄi Gajim když bude stisknuto tlaÄÃtko X v titulku okna. Toto nastavenà se použije pouze tehdy, pokud je použita ikona v trayi." +#: ../src/common/config.py:186 +msgid "Preview new messages in notification popup?" +msgstr "" #: ../src/common/config.py:191 -msgid "If True, Gajim will check if it's the default jabber client on each startup." -msgstr "Pokud zapnuto, Gajim zkontroluje, zda je výchozà jabber klient, pÅ™i každém startu." +msgid "" +"A semicolon-separated list of words that will be highlighted in group chats." +msgstr "StÅ™ednÃkem oddÄ›lený seznam slov, které budou zvýraznÄ›ny v diskuzÃch." #: ../src/common/config.py:192 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Pokud zapnuto, Gajim zobrazà ikonu v každé záložce obsahujÃcà nepÅ™eÄtené zprávy. V závislosti na tématu, tato ikona může být animovaná." +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 "" +"Pokud zapnuto, ukonÄi Gajim když bude stisknuto tlaÄÃtko X v titulku okna. " +"Toto nastavenà se použije pouze tehdy, pokud je použita ikona v trayi." #: ../src/common/config.py:193 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window." -msgstr "Pokud zapnuto, Gajim zobrazà popis stavu, pokud nenà prázdný, pro každý kontakt pod jménem v oknÄ› Seznamu." +msgid "" +"If True, Gajim will check if it's the default jabber client on each startup." +msgstr "" +"Pokud zapnuto, Gajim zkontroluje, zda je výchozà jabber klient, pÅ™i každém " +"startu." + +#: ../src/common/config.py:194 +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Pokud zapnuto, Gajim zobrazà ikonu v každé záložce obsahujÃcà nepÅ™eÄtené " +"zprávy. V závislosti na tématu, tato ikona může být animovaná." #: ../src/common/config.py:195 -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 "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ý." +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window." +msgstr "" +"Pokud zapnuto, Gajim zobrazà popis stavu, pokud nenà prázdný, pro každý " +"kontakt pod jménem v oknÄ› Seznamu." -#: ../src/common/config.py:196 -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 "Pokud vypnuto, Gajim nebude zobrazovat stavové řádky v rozhovorech, když kontakt zmÄ›nà jeho stav a/nebo jeho stavovou zprávu." +#: ../src/common/config.py:197 +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 "" +"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ý." -#: ../src/common/config.py:197 -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 group chat." -msgstr "může být \"none\", \"all\", \"in_and_out\". Pokud je \"none\", Gajim nebude nadále vypisovat stavy v diskuzÃch když úÄastnÃk zmÄ›nà svůj stav nebo stavovou zprávu. Pokud je \"all\", Gajim bude vypisovat vÅ¡echny zmÄ›ny stavů. PÅ™i \"in_and_out\" Gajim vypÃÅ¡e stav jenom pÅ™i vstupu a odchodu z mÃstnosti." +#: ../src/common/config.py:198 +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 "" +"Pokud vypnuto, Gajim nebude zobrazovat stavové řádky v rozhovorech, když " +"kontakt zmÄ›nà jeho stav a/nebo jeho stavovou zprávu." #: ../src/common/config.py:199 +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 " +"group chat." +msgstr "" +"může být \"none\", \"all\", \"in_and_out\". Pokud je \"none\", Gajim nebude " +"nadále vypisovat stavy v diskuzÃch když úÄastnÃk zmÄ›nà svůj stav nebo " +"stavovou zprávu. Pokud je \"all\", Gajim bude vypisovat vÅ¡echny zmÄ›ny stavů. " +"PÅ™i \"in_and_out\" Gajim vypÃÅ¡e stav jenom pÅ™i vstupu a odchodu z mÃstnosti." + +#: ../src/common/config.py:201 msgid "Background color of contacts when they just signed in." msgstr "Barva pozadà kontaktů, jež se zrovna pÅ™ihlásili." -#: ../src/common/config.py:200 +#: ../src/common/config.py:202 msgid "Background color of contacts when they just signed out." msgstr "Barva pozadà kontaktů, jež se přávÄ› odhlásili." -#: ../src/common/config.py:202 -msgid "If True, restored messages will use a smaller font than the default one." -msgstr "Pokud je povoleno, minulé zprávy budou vypsány menÅ¡Ãm pÃsmem, než je výchozÃ." +#: ../src/common/config.py:204 +msgid "" +"If True, restored messages will use a smaller font than the default one." +msgstr "" +"Pokud je povoleno, minulé zprávy budou vypsány menÅ¡Ãm pÃsmem, než je výchozÃ." -#: ../src/common/config.py:203 +#: ../src/common/config.py:205 msgid "Don't show avatar for the transport itself." msgstr "Nezobrazuj avatara pro transport samotný." -#: ../src/common/config.py:204 +#: ../src/common/config.py:206 msgid "Don't show roster in the system taskbar." msgstr "Nezobrazuj roster v liÅ¡tÄ› úloh." -#: ../src/common/config.py:205 -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." - #: ../src/common/config.py:207 -msgid "Jabberd1.4 does not like sha info when one join a password protected group chat. Turn this option to False to stop sending sha info in group chat 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Ã." +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." + +#: ../src/common/config.py:209 +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected group " +"chat. Turn this option to False to stop sending sha info in group chat " +"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Ã." #. always, never, peracct, pertype should not be translated -#: ../src/common/config.py:210 +#: ../src/common/config.py:212 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 "" "ŘÃdà okno, kam budou doruÄeny nové zprávy.\n" "'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:211 +#: ../src/common/config.py:213 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:212 +#: ../src/common/config.py:214 msgid "If True, pressing the escape key closes a tab/window." msgstr "Pokud je True, stiskem escape zavÅ™ete panel nebo okno" -#: ../src/common/config.py:213 -msgid "Hides the buttons in group chat window." +#: ../src/common/config.py:215 +#, fuzzy +msgid "Hides the buttons in chat windows." msgstr "Skryje tlaÄÃtka v oknÄ› diskuze." -#: ../src/common/config.py:214 -msgid "Hides the buttons in two persons chat window." -msgstr "Skryje tlaÄÃtka v oknÄ› rozhovoru dvou lidÃ." - -#: ../src/common/config.py:215 +#: ../src/common/config.py:216 msgid "Hides the banner in a group chat window" msgstr "Skryje nadpis v oknÄ› diskuze" -#: ../src/common/config.py:216 +#: ../src/common/config.py:217 msgid "Hides the banner in two persons chat window" msgstr "Skryje nadpis v oknÄ› rozhovoru dvou lidÃ" -#: ../src/common/config.py:217 +#: ../src/common/config.py:218 msgid "Hides the group chat occupants list in group chat window." msgstr "Skryje seznam lidà mÃstnosti v oknÄ› diskuze." -#: ../src/common/config.py:218 -msgid "In a chat, show the nickname at the beginning of a line only when it's not the same person talking than in previous message." -msgstr "V rozhovoru zobraz pÅ™ezdÃvku na zaÄátku řádku pouze v pÅ™ÃpadÄ›, když to nenà stejný ÄlovÄ›k, jako v pÅ™edchozà zprávÄ›." - #: ../src/common/config.py:219 -msgid "Indentation when using merge consecutive nickname." +msgid "" +"In a chat, show the nickname at the beginning of a line only when it's not " +"the same person talking than in previous message." msgstr "" +"V rozhovoru zobraz pÅ™ezdÃvku na zaÄátku řádku pouze v pÅ™ÃpadÄ›, když to nenà " +"stejný ÄlovÄ›k, jako v pÅ™edchozà zprávÄ›." #: ../src/common/config.py:220 -msgid "List of colors that will be used to color nicknames in group chats." -msgstr "Seznam barev použÃvaných k obarvenà pÅ™ezdÃvek v diskuzÃch." +msgid "Indentation when using merge consecutive nickname." +msgstr "" #: ../src/common/config.py:221 -msgid "Ctrl-Tab go to next composing tab when none is unread." -msgstr "Ctrl-Tab jde na dalÅ¡Ã rozepsanou záložku, když žádný nenà nepÅ™eÄtená." +#, fuzzy +msgid "Smooth scroll message in conversation window" +msgstr "Odeslat zprávu a zavÅ™Ãt okno" #: ../src/common/config.py:222 -msgid "Should we show the confirm metacontacts creation dialog or not? Empty string means we never show the dialog." -msgstr "Mám zobrazit dialog vytvoÅ™enà metakontaktu nebo ne? Prázdný Å™etezec znamená nikdy nezobrazovat dialog." +msgid "List of colors that will be used to color nicknames in group chats." +msgstr "Seznam barev použÃvaných k obarvenà pÅ™ezdÃvek v diskuzÃch." #: ../src/common/config.py:223 -msgid "If True, you will be able to set a negative priority to your account in account modification window. BE CAREFUL, when you are logged in with a negative priority, you will NOT receive any message from your server." -msgstr "Je-li povoleno, bude možné použÃt zápornou prioritu úÄtu v oknÄ› úprava úÄtu. BUÄŽ OPATRNÃ, když jsi pÅ™ihlášen se zápornou prioritou, nedostaneÅ¡ od serveru žádnou zprávu." +msgid "Ctrl-Tab go to next composing tab when none is unread." +msgstr "Ctrl-Tab jde na dalÅ¡Ã rozepsanou záložku, když žádný nenà nepÅ™eÄtená." #: ../src/common/config.py:224 -msgid "If True, Gajim will use Gnome Keyring (if available) to store account passwords." -msgstr "Je-li povoleno, Gajim použije Gnome Keyring (je-li dostupný) k uloženà hesel k úÄtům." +msgid "" +"Should we show the confirm metacontacts creation dialog or not? Empty string " +"means we never show the dialog." +msgstr "" +"Mám zobrazit dialog vytvoÅ™enà metakontaktu nebo ne? Prázdný Å™etezec znamená " +"nikdy nezobrazovat dialog." #: ../src/common/config.py:225 -msgid "If True, Gajim will show number of online and total contacts in account and group rows." -msgstr "Je-li povoleno, Gajim zobrazà poÄet dostupných a vÅ¡ech kontaktů v úÄtu a u řádků skupin." +msgid "" +"If True, you will be able to set a negative priority to your account in " +"account modification window. BE CAREFUL, when you are logged in with a " +"negative priority, you will NOT receive any message from your server." +msgstr "" +"Je-li povoleno, bude možné použÃt zápornou prioritu úÄtu v oknÄ› úprava úÄtu. " +"BUÄŽ OPATRNÃ, když jsi pÅ™ihlášen se zápornou prioritou, nedostaneÅ¡ od serveru " +"žádnou zprávu." #: ../src/common/config.py:226 -msgid "Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages as if they were of this type" -msgstr "Může být prázdný, 'chat' nebo 'message'. NenÃ-là prázdné, považuj vÅ¡echny pÅ™Ãchozà zprávy jako uvedený typ" +msgid "" +"If True, Gajim will use Gnome Keyring (if available) to store account " +"passwords." +msgstr "" +"Je-li povoleno, Gajim použije Gnome Keyring (je-li dostupný) k uloženà hesel " +"k úÄtům." + +#: ../src/common/config.py:227 +msgid "" +"If True, Gajim will show number of online and total contacts in account and " +"group rows." +msgstr "" +"Je-li povoleno, Gajim zobrazà poÄet dostupných a vÅ¡ech kontaktů v úÄtu a u " +"řádků skupin." + +#: ../src/common/config.py:228 +msgid "" +"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " +"as if they were of this type" +msgstr "" +"Může být prázdný, 'chat' nebo 'message'. NenÃ-là prázdné, považuj vÅ¡echny " +"pÅ™Ãchozà zprávy jako uvedený typ" + +#: ../src/common/config.py:229 +msgid "" +"If True, Gajim will scroll and select the contact who sent you the last " +"message, if chat window is not already opened." +msgstr "" + +#: ../src/common/config.py:230 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" + +#: ../src/common/config.py:231 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "" + +#: ../src/common/config.py:232 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "" -#: ../src/common/config.py:237 -msgid "Priority will change automatically according to your status. Priorities are defined in autopriority_* options." -msgstr "Priorita se zmÄ›nà automaticky podle tvého stavu. Priority jsou definovány v nastavenà jako položky autopriority_*." +#: ../src/common/config.py:243 +msgid "" +"Priority will change automatically according to your status. Priorities are " +"defined in autopriority_* options." +msgstr "" +"Priorita se zmÄ›nà automaticky podle tvého stavu. Priority jsou definovány v " +"nastavenà jako položky autopriority_*." #. yes, no, ask -#: ../src/common/config.py:266 +#: ../src/common/config.py:273 msgid "Jabberd2 workaround" msgstr "Jabberd2 workaround" -#: ../src/common/config.py:270 -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." +#: ../src/common/config.py:277 +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." -#: ../src/common/config.py:329 +#: ../src/common/config.py:336 msgid "Is OpenPGP enabled for this contact?" msgstr "Je OpenPGP povoleno pro tento kontakt?" -#: ../src/common/config.py:330 -#: ../src/common/config.py:333 +#: ../src/common/config.py:337 ../src/common/config.py:340 msgid "Language for which we want to check misspelled words" msgstr "Jazyk, pro který chcete kontrolovat pÅ™eklepy ve slovech" -#: ../src/common/config.py:339 +#: ../src/common/config.py:346 msgid "all or space separated status" msgstr "vÅ¡echny nebo mezerou oddÄ›lené stavy" -#: ../src/common/config.py:340 +#: ../src/common/config.py:347 msgid "'yes', 'no', or 'both'" msgstr "'yes', 'no', nebo 'both'" -#: ../src/common/config.py:341 -#: ../src/common/config.py:343 -#: ../src/common/config.py:344 -#: ../src/common/config.py:347 -#: ../src/common/config.py:348 +#: ../src/common/config.py:348 ../src/common/config.py:350 +#: ../src/common/config.py:351 ../src/common/config.py:354 +#: ../src/common/config.py:355 msgid "'yes', 'no' or ''" msgstr "'yes', 'no' nebo ''" -#: ../src/common/config.py:354 +#: ../src/common/config.py:361 msgid "Sleeping" msgstr "SpÃm" -#: ../src/common/config.py:355 +#: ../src/common/config.py:362 msgid "Back soon" msgstr "Hned jsem zpÄ›t" -#: ../src/common/config.py:355 +#: ../src/common/config.py:362 msgid "Back in some minutes." msgstr "Jsem zpátky za pár minut." -#: ../src/common/config.py:356 +#: ../src/common/config.py:363 msgid "Eating" msgstr "JÃm" -#: ../src/common/config.py:356 +#: ../src/common/config.py:363 msgid "I'm eating, so leave me a message." msgstr "PrávÄ› jÃm, prosÃm zanechte mi zprávu." -#: ../src/common/config.py:357 +#: ../src/common/config.py:364 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:357 +#: ../src/common/config.py:364 msgid "I'm watching a movie." msgstr "DÃvám se na film." -#: ../src/common/config.py:358 +#: ../src/common/config.py:365 msgid "Working" msgstr "Pracuji" -#: ../src/common/config.py:358 +#: ../src/common/config.py:365 msgid "I'm working." msgstr "PrávÄ› pracuji." -#: ../src/common/config.py:359 +#: ../src/common/config.py:366 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:359 +#: ../src/common/config.py:366 msgid "I'm on the phone." msgstr "Zrovna telefonuji." -#: ../src/common/config.py:360 +#: ../src/common/config.py:367 msgid "Out" msgstr "Venku" -#: ../src/common/config.py:360 +#: ../src/common/config.py:367 msgid "I'm out enjoying life." msgstr "UžÃvám si života venku." -#: ../src/common/config.py:364 +#: ../src/common/config.py:371 msgid "I'm available." msgstr "Jsem dostupný." -#: ../src/common/config.py:365 +#: ../src/common/config.py:372 msgid "I'm free for chat." msgstr "Hledám nÄ›koho na pokec." -#: ../src/common/config.py:367 +#: ../src/common/config.py:374 msgid "I'm not available." msgstr "Nejsem dostupný." -#: ../src/common/config.py:368 +#: ../src/common/config.py:375 msgid "Do not disturb." msgstr "NeruÅ¡it." -#: ../src/common/config.py:369 -#: ../src/common/config.py:370 +#: ../src/common/config.py:376 ../src/common/config.py:377 msgid "Bye!" msgstr "Zdar!" -#: ../src/common/config.py:379 -msgid "Sound to play when a group chat message contains one of the words in muc_highlight_words, or when a group chat message contains your nickname." -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:386 +msgid "" +"Sound to play when a group chat message contains one of the words in " +"muc_highlight_words, or when a group chat message contains your nickname." +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:380 +#: ../src/common/config.py:387 msgid "Sound to play when any MUC message arrives." msgstr "PÅ™ehraný zvuk pÅ™i pÅ™Ãchodu jakékoliv MUC zprávy." -#: ../src/common/config.py:389 -#: ../src/common/optparser.py:195 +#: ../src/common/config.py:396 ../src/common/optparser.py:207 msgid "green" msgstr "zelený" -#: ../src/common/config.py:393 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:400 ../src/common/optparser.py:193 msgid "grocery" msgstr "potraviny" -#: ../src/common/config.py:397 +#: ../src/common/config.py:404 msgid "human" msgstr "ÄlovÄ›k" -#: ../src/common/config.py:401 +#: ../src/common/config.py:408 msgid "marine" msgstr "mariňák" -#: ../src/common/connection_handlers.py:52 +#: ../src/common/connection_handlers.py:54 #: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 msgid "Unable to load idle module" msgstr "Nelze nahrát idle modul" -#: ../src/common/connection_handlers.py:180 -#: ../src/common/connection_handlers.py:215 +#: ../src/common/connection_handlers.py:182 +#: ../src/common/connection_handlers.py:217 #: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 msgid "Wrong host" msgstr "Nesprávné jméno poÄÃtaÄe" -#: ../src/common/connection_handlers.py:180 +#: ../src/common/connection_handlers.py:182 #: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 #, python-format -msgid "The host %s you configured as the ft_add_hosts_to_send advanced option is not valid, so ignored." +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." msgstr "" -#: ../src/common/connection_handlers.py:216 +#: ../src/common/connection_handlers.py:218 msgid "Invalid local address? :-O" msgstr "Neplatná mÃstnà adresa? :-O" -#: ../src/common/connection_handlers.py:607 +#: ../src/common/connection_handlers.py:610 #, python-format msgid "Registration information for transport %s has not arrived in time" msgstr "RegistraÄnà informace pro transport %s nedorazily vÄas" -#: ../src/common/connection_handlers.py:1565 +#: ../src/common/connection_handlers.py:1642 #, python-format msgid "Nickname not allowed: %s" msgstr "PÅ™ezdÃvka nepovolena: %s" -#. password required to join #. we are banned #. group chat does not exist -#: ../src/common/connection_handlers.py:1627 -#: ../src/common/connection_handlers.py:1630 -#: ../src/common/connection_handlers.py:1633 -#: ../src/common/connection_handlers.py:1636 -#: ../src/common/connection_handlers.py:1639 -#: ../src/common/connection_handlers.py:1642 -#: ../src/common/connection_handlers.py:1650 +#: ../src/common/connection_handlers.py:1712 +#: ../src/common/connection_handlers.py:1715 +#: ../src/common/connection_handlers.py:1718 +#: ../src/common/connection_handlers.py:1721 +#: ../src/common/connection_handlers.py:1725 +#: ../src/common/connection_handlers.py:1734 msgid "Unable to join group chat" msgstr "Nelze se pÅ™ipojit se do diskuze" -#: ../src/common/connection_handlers.py:1628 -msgid "A password is required to join this group chat." -msgstr "Pro pÅ™ipojenà do této mÃstnosti je vyžadováno heslo." - -#: ../src/common/connection_handlers.py:1631 -msgid "You are banned from this group chat." +#: ../src/common/connection_handlers.py:1713 +#, fuzzy, python-format +msgid "You are banned from group chat %s." msgstr "Máš zakázán pÅ™Ãstup do této diskuze." -#: ../src/common/connection_handlers.py:1634 -msgid "Such group chat does not exist." +#: ../src/common/connection_handlers.py:1716 +#, fuzzy, python-format +msgid "Group chat %s does not exist." msgstr "Taková diskuze neexistuje." -#: ../src/common/connection_handlers.py:1637 +#: ../src/common/connection_handlers.py:1719 msgid "Group chat creation is restricted." msgstr "Vytvářenà mÃstnostà nenà povoleno." -#: ../src/common/connection_handlers.py:1640 -msgid "Your registered nickname must be used." +#: ../src/common/connection_handlers.py:1722 +#, fuzzy, python-format +msgid "Your registered nickname must be used in group chat %s." msgstr "Musà být použita pÅ™ezdÃvka, jež máte zaregistrovánu." -#: ../src/common/connection_handlers.py:1643 -msgid "You are not in the members list." +#: ../src/common/connection_handlers.py:1726 +#, fuzzy, python-format +msgid "You are not in the members list in groupchat %s." msgstr "Nejsi v seznamu Älenů." -#: ../src/common/connection_handlers.py:1651 +#: ../src/common/connection_handlers.py:1735 +#, fuzzy, python-format msgid "" -"Your desired nickname is in use or registered by another occupant.\n" +"Your desired nickname in group chat %s is in use or registered by another " +"occupant.\n" "Please specify another nickname below:" msgstr "" -"Tebou požadované pÅ™ezdÃvka se již použÃvá nebo je zaregistrována nÄ›kým jiným.\n" +"Tebou požadované pÅ™ezdÃvka se již použÃvá nebo je zaregistrována nÄ›kým " +"jiným.\n" "NÞe vyber jinou pÅ™ezdÃvku:" -#: ../src/common/connection_handlers.py:1713 +#. Room has been destroyed. see +#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom +#: ../src/common/connection_handlers.py:1766 +#, fuzzy +msgid "Room has been destroyed" +msgstr "Autorizace byla zruÅ¡ena" + +#: ../src/common/connection_handlers.py:1773 +#, python-format +msgid "You can join this room instead: %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1800 msgid "I would like to add you to my roster." msgstr "Rád(a) bych si tÄ› pÅ™idal(a) do seznamu." #. BE CAREFUL: no con.updateRosterItem() in a callback -#: ../src/common/connection_handlers.py:1734 +#: ../src/common/connection_handlers.py:1821 #, python-format msgid "we are now subscribed to %s" msgstr "jsme nynà zapsáni k %s" -#: ../src/common/connection_handlers.py:1736 +#: ../src/common/connection_handlers.py:1823 #, python-format msgid "unsubscribe request from %s" msgstr "Žádost o zruÅ¡enà autorizace od %s" -#: ../src/common/connection_handlers.py:1738 +#: ../src/common/connection_handlers.py:1825 #, python-format msgid "we are now unsubscribed from %s" msgstr "byla nám zruÅ¡ena autorizace od %s" -#: ../src/common/connection_handlers.py:1914 +#: ../src/common/connection_handlers.py:1947 #, 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 neodpovÃdá RFC. Nebude pÅ™idáno do tvého rosteru. Použij nástroje pro správu rosteru jako je http://jru.jabberstudio.org/ k jeho odstranÄ›nÃ" +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 neodpovÃdá RFC. Nebude pÅ™idáno do tvého rosteru. Použij nástroje pro " +"správu rosteru jako je http://jru.jabberstudio.org/ k jeho odstranÄ›nÃ" -#: ../src/common/connection.py:187 -#: ../src/common/zeroconf/connection_zeroconf.py:196 +#: ../src/common/connection.py:241 +#: ../src/common/zeroconf/connection_zeroconf.py:203 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Spojenà s úÄtem \"%s\" bylo ztraceno" -#: ../src/common/connection.py:188 +#: ../src/common/connection.py:242 msgid "Reconnect manually." msgstr "Znovu pÅ™ipojit ruÄnÄ›." -#: ../src/common/connection.py:199 -#: ../src/common/connection.py:226 -#, python-format -msgid "Transport %s answered wrongly to register request: %s" +#: ../src/common/connection.py:253 +#, fuzzy, python-format +msgid "Server %s answered wrongly to register request: %s" msgstr "Transport %s odpovÄ›dÄ›l chybnÄ› na požadavek registrace: %s" #. wrong answer -#: ../src/common/connection.py:225 +#: ../src/common/connection.py:261 msgid "Invalid answer" msgstr "Neplatná odpovÄ›Ä" -#: ../src/common/connection.py:422 -#: ../src/common/connection.py:521 -#: ../src/common/connection.py:979 -#: ../src/common/zeroconf/connection_zeroconf.py:217 +#: ../src/common/connection.py:262 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "Transport %s odpovÄ›dÄ›l chybnÄ› na požadavek registrace: %s" + +#: ../src/common/connection.py:408 +#, fuzzy +msgid "Connection to proxy failed" +msgstr "Spojenà selhalo" + +#: ../src/common/connection.py:462 ../src/common/connection.py:508 +#: ../src/common/connection.py:1055 +#: ../src/common/zeroconf/connection_zeroconf.py:237 #, python-format msgid "Could not connect to \"%s\"" msgstr "Nemůžu se pÅ™ipojit k \"%s\"" -#: ../src/common/connection.py:436 +#: ../src/common/connection.py:476 #, python-format msgid "Connected to server %s:%s with %s" msgstr "PÅ™ipojen k server %s: %s s %s" -#: ../src/common/connection.py:450 -#, python-format -msgid "Security error connecting to \"%s\"" -msgstr "BezpeÄnostnà chyba pÅ™i pÅ™ipojenà k \"%s\"" - -#: ../src/common/connection.py:451 -msgid "The server's key has changed, or someone is trying to hack your connection." -msgstr "KlÃÄ serveru se zmÄ›nil, nebo se nÄ›kdo pokouÅ¡Ã prolomit tvoje spojenÃ." - -#: ../src/common/connection.py:458 -#, python-format -msgid "Unable to check fingerprint for %s. Connection could be insecure." -msgstr "Nemohu zkontrolovat otisk pro %s. Spojenà nemusà být zcela bezpeÄné." - -#: ../src/common/connection.py:500 -#, python-format -msgid "Missing fingerprint in SSL connection to %s" -msgstr "Scházà otisk v SSL spojenà k %s" - -#: ../src/common/connection.py:506 -#, python-format -msgid "Fingerprint mismatch for %s: Got %s, expected %s" -msgstr "Otisk se neshoduje pro %s: Dostal jsem %s, oÄekával jsem %s" - -#: ../src/common/connection.py:522 +#: ../src/common/connection.py:509 msgid "Check your connection or try again later" msgstr "Ověřte pÅ™ipojenà nebo zkuste pozdÄ›ji" -#: ../src/common/connection.py:548 +#: ../src/common/connection.py:534 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autentizace selhala s \"%s\"" -#: ../src/common/connection.py:549 +#: ../src/common/connection.py:535 msgid "Please check your login and password for correctness." msgstr "ProsÃm zkontrolujte správnost jména a hesla." -#: ../src/common/connection.py:576 +#: ../src/common/connection.py:578 msgid "Error while removing privacy list" msgstr "chyba pÅ™i odebÃránà privacy listu" -#: ../src/common/connection.py:577 +#: ../src/common/connection.py:579 #, python-format -msgid "Privacy list %s has not been removed. It is maybe active in one of your connected resources. Deactivate it and try again." -msgstr "Privacy list %s nebyl odstranÄ›n. Možná je aktivnà v jednom z pÅ™ipojených zdrojů. ZruÅ¡tÄ› jeho použÃvánà a zkuste znovu." +msgid "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." +msgstr "" +"Privacy list %s nebyl odstranÄ›n. Možná je aktivnà v jednom z pÅ™ipojených " +"zdrojů. ZruÅ¡tÄ› jeho použÃvánà a zkuste znovu." #. We didn't set a passphrase -#: ../src/common/connection.py:675 -#: ../src/common/zeroconf/connection_zeroconf.py:156 +#: ../src/common/connection.py:679 +#: ../src/common/zeroconf/connection_zeroconf.py:163 msgid "OpenPGP passphrase was not given" msgstr "OpenPGP heslo nebylo zadáno" -#. do not show I'm invisible! -#: ../src/common/connection.py:717 -msgid "invisible" -msgstr "neviditelný" - -#: ../src/common/connection.py:718 -msgid "offline" -msgstr "odpojen" - -#: ../src/common/connection.py:719 -#, python-format -msgid "I'm %s" -msgstr "Jsem %s" - #. we're not english #. one in locale and one en -#: ../src/common/connection.py:810 +#: ../src/common/connection.py:842 msgid "[This message is *encrypted* (See :JEP:`27`]" msgstr "[Tato zpráva je *zaÅ¡ifrovaná* (Viz :JEP:`27`]" -#: ../src/common/connection.py:866 -#: ../src/common/zeroconf/connection_zeroconf.py:397 +#: ../src/common/connection.py:904 +#: ../src/common/zeroconf/connection_zeroconf.py:423 #, python-format msgid "" "Subject: %s\n" @@ -6004,11 +6821,11 @@ msgstr "" "PÅ™edmÄ›t: %s\n" "%s" -#: ../src/common/connection.py:1005 +#: ../src/common/connection.py:1087 msgid "Not fetched because of invisible status" msgstr "Nestáhnuto z důvodu stavu neviditelnosti" -#: ../src/common/contacts.py:271 +#: ../src/common/contacts.py:294 msgid "Not in roster" msgstr "Nenà v rosteru" @@ -6023,17 +6840,18 @@ msgstr "Možnosti D-Bus nemohou být použity" #: ../src/common/exceptions.py:22 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:30 +#: ../src/common/exceptions.py:39 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:38 +#: ../src/common/exceptions.py:47 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:46 +#: ../src/common/exceptions.py:55 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -6091,68 +6909,55 @@ msgstr "dvanáct" #. 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). ''' #. A "singular-form". It is used when talking about hour 0 -#: ../src/common/fuzzyclock.py:47 -#: ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 msgid "$0 o'clock" msgstr "$0 hodin" -#: ../src/common/fuzzyclock.py:47 -#: ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 msgid "five past $0" msgstr "pÄ›t po $0" -#: ../src/common/fuzzyclock.py:48 -#: ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 msgid "ten past $0" msgstr "deset po $0" -#: ../src/common/fuzzyclock.py:48 -#: ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 msgid "quarter past $0" msgstr "Ätvrt po $0" -#: ../src/common/fuzzyclock.py:49 -#: ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 msgid "twenty past $0" msgstr "dvacet po $0" -#: ../src/common/fuzzyclock.py:49 -#: ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 msgid "twenty five past $0" msgstr "dvacet pÄ›t po $%" -#: ../src/common/fuzzyclock.py:50 -#: ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 msgid "half past $0" msgstr "půl $1" -#: ../src/common/fuzzyclock.py:50 -#: ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 msgid "twenty five to $1" msgstr "dvacet pÄ›t do $1" -#: ../src/common/fuzzyclock.py:51 -#: ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 msgid "twenty to $1" msgstr "dvacet do $1" -#: ../src/common/fuzzyclock.py:51 -#: ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 msgid "quarter to $1" msgstr "tÅ™i ÄtvrtÄ› na $1" -#: ../src/common/fuzzyclock.py:52 -#: ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "ten to $1" msgstr "za deset $1" -#: ../src/common/fuzzyclock.py:52 -#: ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "five to $1" msgstr "za pÄ›t $1" -#: ../src/common/fuzzyclock.py:52 -#: ../src/common/fuzzyclock.py:61 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:61 msgid "$1 o'clock" msgstr "$1 hodin" @@ -6204,287 +7009,252 @@ msgstr "Konec týdne" msgid "Weekend!" msgstr "VÃkend!" -#: ../src/common/helpers.py:114 +#: ../src/common/helpers.py:115 msgid "Invalid character in username." msgstr "Neplatný znak v uživatelském jménÄ›." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:120 msgid "Server address required." msgstr "Je potÅ™eba adresa serveru." -#: ../src/common/helpers.py:124 +#: ../src/common/helpers.py:125 msgid "Invalid character in hostname." msgstr "Neplatný znak v hostname." -#: ../src/common/helpers.py:130 +#: ../src/common/helpers.py:131 msgid "Invalid character in resource." msgstr "Neplatný znak ve zdroji." #. GiB means gibibyte -#: ../src/common/helpers.py:170 +#: ../src/common/helpers.py:171 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:174 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:177 +#: ../src/common/helpers.py:178 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:180 +#: ../src/common/helpers.py:181 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:184 +#: ../src/common/helpers.py:185 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:187 +#: ../src/common/helpers.py:188 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:190 +#: ../src/common/helpers.py:191 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:219 +#: ../src/common/helpers.py:222 msgid "_Busy" msgstr "_NeruÅ¡it" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:224 msgid "Busy" msgstr "NeruÅ¡it" -#: ../src/common/helpers.py:224 +#: ../src/common/helpers.py:227 msgid "_Not Available" msgstr "Ne_dostupný" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:232 msgid "_Free for Chat" msgstr "_Ukecaný" -#: ../src/common/helpers.py:231 +#: ../src/common/helpers.py:234 msgid "Free for Chat" msgstr "Ukecaný" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:237 msgid "_Available" msgstr "PÅ™ip_ojen" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:239 msgid "Available" msgstr "PÅ™ipojen" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:241 msgid "Connecting" msgstr "PÅ™ipojuji se" -#: ../src/common/helpers.py:241 +#: ../src/common/helpers.py:244 msgid "A_way" msgstr "_PryÄ" -#: ../src/common/helpers.py:246 +#: ../src/common/helpers.py:249 msgid "_Offline" msgstr "_Odpojen" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:251 msgid "Offline" msgstr "Odpojen" -#: ../src/common/helpers.py:251 +#: ../src/common/helpers.py:254 msgid "_Invisible" msgstr "Ne_viditelný" -#: ../src/common/helpers.py:257 +#: ../src/common/helpers.py:260 msgid "?contact has status:Unknown" msgstr "?contact has status:Neznámý" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:262 msgid "?contact has status:Has errors" msgstr "stav" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:267 msgid "?Subscription we already have:None" msgstr "?Subscription we already have:Žádná" -#: ../src/common/helpers.py:266 +#: ../src/common/helpers.py:269 msgid "To" msgstr "PÅ™Ãjemce" -#: ../src/common/helpers.py:270 +#: ../src/common/helpers.py:273 msgid "Both" msgstr "Oboustranná" -#: ../src/common/helpers.py:278 +#: ../src/common/helpers.py:281 msgid "?Ask (for Subscription):None" msgstr "?Ask (for Subscription):NenÃ" -#: ../src/common/helpers.py:280 +#: ../src/common/helpers.py:283 msgid "Subscribe" msgstr "Žádat autorizaci" -#: ../src/common/helpers.py:289 +#: ../src/common/helpers.py:292 msgid "?Group Chat Contact Role:None" msgstr "?Group Chat Contact Role:Žádná" -#: ../src/common/helpers.py:292 +#: ../src/common/helpers.py:295 msgid "Moderators" msgstr "ModerátoÅ™i" -#: ../src/common/helpers.py:294 +#: ../src/common/helpers.py:297 msgid "Moderator" msgstr "Moderátor" -#: ../src/common/helpers.py:297 +#: ../src/common/helpers.py:300 msgid "Participants" msgstr "ÚÄastnÃci" -#: ../src/common/helpers.py:299 +#: ../src/common/helpers.py:302 msgid "Participant" msgstr "ÚÄastnÃk" -#: ../src/common/helpers.py:302 +#: ../src/common/helpers.py:305 msgid "Visitors" msgstr "NávÅ¡tÄ›vnÃci" -#: ../src/common/helpers.py:304 +#: ../src/common/helpers.py:307 msgid "Visitor" msgstr "NávÅ¡tÄ›vnÃk" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:313 msgid "?Group Chat Contact Affiliation:None" msgstr "?Group Chat Contact Affiliation:Žádná" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:315 msgid "Owner" msgstr "VlastnÃk" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:317 msgid "Administrator" msgstr "Správce" -#: ../src/common/helpers.py:316 +#: ../src/common/helpers.py:319 msgid "Member" msgstr "ÄŒlen" -#: ../src/common/helpers.py:355 +#: ../src/common/helpers.py:358 msgid "is paying attention to the conversation" msgstr "vÄ›nuje pozornost rozhovoru" -#: ../src/common/helpers.py:357 +#: ../src/common/helpers.py:360 msgid "is doing something else" msgstr "dÄ›lá nÄ›co jiného" -#: ../src/common/helpers.py:359 +#: ../src/common/helpers.py:362 msgid "is composing a message..." msgstr "pÃÅ¡e zprávu..." #. paused means he or she was composing but has stopped for a while -#: ../src/common/helpers.py:362 +#: ../src/common/helpers.py:365 msgid "paused composing a message" msgstr "pozastavil(a) psanà zprávy" -#: ../src/common/helpers.py:364 +#: ../src/common/helpers.py:367 msgid "has closed the chat window or tab" msgstr "zavÅ™el(a) okno zprávy" -#: ../src/common/helpers.py:890 +#: ../src/common/helpers.py:913 ../src/common/helpers.py:920 +#, fuzzy, python-format +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "Odeslat zprávu" +msgstr[1] "Odeslat zprávu" +msgstr[2] "Odeslat zprávu" + +#: ../src/common/helpers.py:926 #, python-format -msgid " %d unread message" -msgid_plural " %d unread messages" -msgstr[0] "%d nepÅ™eÄtená zpráva" -msgstr[1] "%d nepÅ™eÄtené zprávy" -msgstr[2] "%d nepÅ™eÄtených zpráv" +msgid " from room %s" +msgstr "" -#: ../src/common/helpers.py:896 +#: ../src/common/helpers.py:929 ../src/common/helpers.py:948 #, python-format -msgid " %d unread single message" -msgid_plural " %d unread single messages" -msgstr[0] "%d nepÅ™eÄtenou prostou zprávu" -msgstr[1] "%d nepÅ™eÄtené prosté zprávy" -msgstr[2] "%d nepÅ™eÄtených prostých zpráv" +msgid " from user %s" +msgstr "" -#: ../src/common/helpers.py:902 +#: ../src/common/helpers.py:931 #, python-format -msgid " %d unread group chat message" -msgid_plural " %d unread group chat messages" -msgstr[0] "%d nepÅ™eÄtenou zprávu z diskuzÃ" -msgstr[1] "%d nepÅ™eÄtené zprávy z diskuzÃ" -msgstr[2] "%d nepÅ™eÄtených zpráv z diskuzÃ" +msgid " from %s" +msgstr "" -#: ../src/common/helpers.py:908 +#: ../src/common/helpers.py:938 ../src/common/helpers.py:945 #, python-format -msgid " %d unread private message" -msgid_plural " %d unread private messages" -msgstr[0] "%d nepÅ™eÄtenou soukromou zprávu" -msgstr[1] "%d nepÅ™eÄtené soukromé zprávy" -msgstr[2] "%d nepÅ™eÄtených soukromých zpráv" +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: ../src/common/helpers.py:918 -#: ../src/common/helpers.py:920 +#: ../src/common/helpers.py:978 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/common/check_paths.py:33 -msgid "creating logs database" -msgstr "vytvářÃm databázi historie" - -#: ../src/common/check_paths.py:89 -#: ../src/common/check_paths.py:100 -#: ../src/common/check_paths.py:107 -#, python-format -msgid "%s is a file but it should be a directory" -msgstr "%s je soubor, ale mÄ›l by být adresář" - -#: ../src/common/check_paths.py:90 -#: ../src/common/check_paths.py:101 -#: ../src/common/check_paths.py:108 -#: ../src/common/check_paths.py:116 -msgid "Gajim will now exit" -msgstr "Gajim se nynà ukonÄÃ" - -#: ../src/common/check_paths.py:115 -#, python-format -msgid "%s is a directory but should be a file" -msgstr "%s je adresář, ale mÄ›l by to být soubor" - -#: ../src/common/check_paths.py:131 -#, python-format -msgid "creating %s directory" -msgstr "vytvářÃm adresář %s " - #. we talk about a file #: ../src/common/optparser.py:59 #, python-format msgid "error: cannot open %s for reading" msgstr "chyba: nemůžu otevÅ™Ãt %s pro ÄtenÃ" -#: ../src/common/optparser.py:181 -msgid "gtk+" -msgstr "gtk+" - -#: ../src/common/optparser.py:190 -#: ../src/common/optparser.py:191 +#: ../src/common/optparser.py:202 ../src/common/optparser.py:203 msgid "cyan" msgstr "azurová" -#: ../src/common/optparser.py:308 +#: ../src/common/optparser.py:319 msgid "migrating logs database to indices" msgstr "" @@ -6493,31 +7263,35 @@ msgstr "" msgid "Gajim account %s" msgstr "Gajim úÄet %s" -#: ../src/common/zeroconf/client_zeroconf.py:189 -msgid "Connection to host could not be established: Incorrect answer from server." -msgstr "Spojenà k poÄÃtaÄi nebylo navázáno: Neplatná odpovÄ›Ä serveru." - -#: ../src/common/zeroconf/client_zeroconf.py:205 +#: ../src/common/zeroconf/client_zeroconf.py:135 +#: ../src/common/zeroconf/client_zeroconf.py:218 msgid "Connection to host could not be established" msgstr "Spojenà s poÄÃtaÄem se nepodaÅ™ilo navázat" -#: ../src/common/zeroconf/client_zeroconf.py:334 -msgid "Connection to host could not be established: Timeout while sending data." +#: ../src/common/zeroconf/client_zeroconf.py:192 +msgid "" +"Connection to host could not be established: Incorrect answer from server." +msgstr "Spojenà k poÄÃtaÄi nebylo navázáno: Neplatná odpovÄ›Ä serveru." + +#: ../src/common/zeroconf/client_zeroconf.py:352 +msgid "" +"Connection to host could not be established: Timeout while sending data." msgstr "Spojenà k poÄÃtaÄi nebylo navázáno:VyprÅ¡el Äas pÅ™i odesÃlánà dat." -#: ../src/common/zeroconf/client_zeroconf.py:627 +#: ../src/common/zeroconf/client_zeroconf.py:638 msgid "Contact is offline. Your message could not be sent." msgstr "Kontakt je offline. VaÅ¡e zpráva nemohla být odeslána." -#: ../src/common/zeroconf/connection_zeroconf.py:197 +#: ../src/common/zeroconf/connection_zeroconf.py:204 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/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:227 msgid "Avahi error" msgstr "Chyba Avahi" -#: ../src/common/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:227 #, python-format msgid "" "%s\n" @@ -6526,66 +7300,206 @@ msgstr "" "%s\n" "ZasÃlánà lokálnÃch zpráv nemusà fungovat správnÄ›." -#: ../src/common/zeroconf/connection_zeroconf.py:218 +#: ../src/common/zeroconf/connection_zeroconf.py:238 msgid "Please check if Avahi is installed." msgstr "Zkontrolujte zda je Avahi nainstalováno." -#: ../src/common/zeroconf/connection_zeroconf.py:227 -#: ../src/common/zeroconf/connection_zeroconf.py:231 +#: ../src/common/zeroconf/connection_zeroconf.py:247 +#: ../src/common/zeroconf/connection_zeroconf.py:251 msgid "Could not start local service" msgstr "NepodaÅ™ilo se spustit lokálnà službu" -#: ../src/common/zeroconf/connection_zeroconf.py:228 +#: ../src/common/zeroconf/connection_zeroconf.py:248 #, python-format msgid "Unable to bind to port %d." msgstr "Nemůžu naslouchat na portu %d." -#: ../src/common/zeroconf/connection_zeroconf.py:232 -#: ../src/common/zeroconf/connection_zeroconf.py:325 +#: ../src/common/zeroconf/connection_zeroconf.py:252 +#: ../src/common/zeroconf/connection_zeroconf.py:347 msgid "Please check if avahi-daemon is running." msgstr "Zkontrolujte, zda avahi-daemon běžÃ." -#: ../src/common/zeroconf/connection_zeroconf.py:324 +#: ../src/common/zeroconf/connection_zeroconf.py:346 #, python-format msgid "Could not change status of account \"%s\"" msgstr "Nemůžu zmÄ›nit stav úÄtu \"%s\"" -#: ../src/common/zeroconf/connection_zeroconf.py:341 -msgid "You are not connected or not visible to others. Your message could not be sent." -msgstr "Nejsi pÅ™ipojen nebo viditelný pro ostatnÃ. Tvoje zpráva nemůže být odeslána." +#: ../src/common/zeroconf/connection_zeroconf.py:363 +msgid "" +"You are not connected or not visible to others. Your message could not be " +"sent." +msgstr "" +"Nejsi pÅ™ipojen nebo viditelný pro ostatnÃ. Tvoje zpráva nemůže být odeslána." #. we're not english -#: ../src/common/zeroconf/connection_zeroconf.py:353 +#: ../src/common/zeroconf/connection_zeroconf.py:375 msgid "[This message is encrypted]" msgstr "[Tato zpráva je zaÅ¡ifrovaná]" -#: ../src/common/zeroconf/zeroconf.py:180 -#, python-format -msgid "Error while adding service. %s" -msgstr "Chyba pÅ™i pÅ™idávánà služby. %s" +#~ msgid "Send Single _Message..." +#~ msgstr "Odeslat jednoduchou _zprávu..." + +#~ msgid "_Add Contact..." +#~ msgstr "PÅ™id_at kontakt..." + +# FIXME: chtelo by to cesky vyraz pro service discovery +#~ msgid "_Discover Services..." +#~ msgstr "_ProhlÞet služby..." + +#~ msgid "_Retype Password:" +#~ msgstr "Z_opakuj heslo:" + +#~ msgid "_Use proxy" +#~ msgstr "_PoužÃvat proxy" + +#~ msgid "Accounts" +#~ msgstr "ÚÄty" + +#~ msgid "" +#~ "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.\n" +#~ "This is only available if python-avahi is installed and avahi-daemon is " +#~ "running." +#~ msgstr "" +#~ "Pokud je zaÅ¡krtnuto, vÅ¡echny mÃstnà kontakty použÃvajÃcà Bonjour-" +#~ "kompatibilnÃho klienta (iChat, Trillian nebo Gaim) se zobrazà v rosteru. " +#~ "NemusÃÅ¡ být pÅ™ipojený(á) k jabber serveru, aby to fungovalo.\n" +#~ "Je to dostupné pouze v pÅ™ÃpadÄ›, že je nainstalováno python-avahi a avahi-" +#~ "daemon běžÃ." + +#~ msgid "" +#~ "If you have 2 or more accounts and this 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" + +#~ msgid "_Enable link-local messaging" +#~ msgstr "_Povolit lokálnà zprávy" + +#~ msgid "_Modify" +#~ msgstr "_Upravit" + +#~ msgid "_Compact View Alt+C" +#~ msgstr "_ZjednoduÅ¡ený pohled Alt+C" + +#~ msgid "_Remove from Roster" +#~ msgstr "Odst_ranit ze Seznamu" + +#~ msgid "You must enter a password for the new account." +#~ msgstr "MusÃte zadat heslo pro nový úÄet." + +#~ msgid "" +#~ "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" +#~ "\n" +#~ "Highlighting misspelled words feature will not be used" +#~ msgstr "" +#~ "Pokud to nenà Váš jazyk, pro který chcete zvýrazňovat slova s pÅ™eklepy, " +#~ "potom prosÃm nastavte promÄ›nnou $LANG na správnou. NapÅ™Ãklad. pro ÄŒeÅ¡tinu " +#~ "spusÅ¥te export LANG=cs_CZ nebo export LANG=cs_CZ zapiÅ¡te do ~/." +#~ "bash_profile nebo pro nastavenà globálnÄ› do /etc/profile.\n" +#~ "\n" +#~ "Vlastnost zvýrazňovánà pÅ™eklepů nebude použita" + +#~ msgid "Private Chat" +#~ msgstr "Soukromý rozhovor" + +#~ msgid "Group Chat" +#~ msgstr "Diskuze" + +#~ msgid "Drop %s in group %s" +#~ msgstr "Smazat %s ve skupinÄ› %s" + +#~ msgid "Make %s and %s metacontacts" +#~ msgstr "UÄiň %s a %s metakontakty" + +#~ msgid "Hides the buttons in two persons chat window." +#~ msgstr "Skryje tlaÄÃtka v oknÄ› rozhovoru dvou lidÃ." + +#~ msgid "Security error connecting to \"%s\"" +#~ msgstr "BezpeÄnostnà chyba pÅ™i pÅ™ipojenà k \"%s\"" + +#~ msgid "" +#~ "The server's key has changed, or someone is trying to hack your " +#~ "connection." +#~ msgstr "" +#~ "KlÃÄ serveru se zmÄ›nil, nebo se nÄ›kdo pokouÅ¡Ã prolomit tvoje spojenÃ." + +#~ msgid "Unable to check fingerprint for %s. Connection could be insecure." +#~ msgstr "" +#~ "Nemohu zkontrolovat otisk pro %s. Spojenà nemusà být zcela bezpeÄné." + +#~ msgid "Missing fingerprint in SSL connection to %s" +#~ msgstr "Scházà otisk v SSL spojenà k %s" + +#~ msgid "Fingerprint mismatch for %s: Got %s, expected %s" +#~ msgstr "Otisk se neshoduje pro %s: Dostal jsem %s, oÄekával jsem %s" + +#~ msgid "invisible" +#~ msgstr "neviditelný" + +#~ msgid "offline" +#~ msgstr "odpojen" + +#~ msgid "I'm %s" +#~ msgstr "Jsem %s" + +#~ msgid " %d unread single message" +#~ msgid_plural " %d unread single messages" +#~ msgstr[0] "%d nepÅ™eÄtenou prostou zprávu" +#~ msgstr[1] "%d nepÅ™eÄtené prosté zprávy" +#~ msgstr[2] "%d nepÅ™eÄtených prostých zpráv" + +#~ msgid " %d unread group chat message" +#~ msgid_plural " %d unread group chat messages" +#~ msgstr[0] "%d nepÅ™eÄtenou zprávu z diskuzÃ" +#~ msgstr[1] "%d nepÅ™eÄtené zprávy z diskuzÃ" +#~ msgstr[2] "%d nepÅ™eÄtených zpráv z diskuzÃ" + +#~ msgid " %d unread private message" +#~ msgid_plural " %d unread private messages" +#~ msgstr[0] "%d nepÅ™eÄtenou soukromou zprávu" +#~ msgstr[1] "%d nepÅ™eÄtené soukromé zprávy" +#~ msgstr[2] "%d nepÅ™eÄtených soukromých zpráv" + +#~ msgid "gtk+" +#~ msgstr "gtk+" + +#~ msgid "Error while adding service. %s" +#~ msgstr "Chyba pÅ™i pÅ™idávánà služby. %s" #~ msgid "A_fter nickname:" #~ msgstr "_Po pÅ™ezdÃvce:" + #~ msgid "B_efore nickname:" #~ msgstr "PÅ™e_d pÅ™ezdÃvkou:" + #~ msgid "_After time:" #~ msgstr "_Po Äase:" + #~ msgid "_Before time:" #~ msgstr "PÅ™e_d Äasem:" + #~ msgid "_Publish" #~ msgstr "_ZveÅ™ejnit" + #~ msgid "_Retrieve" #~ msgstr "_ZÃskat" + #~ 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." #, fuzzy #~ msgid "_New room" #~ msgstr "Nová mÃstnost" + #~ msgid "Role: " #~ msgstr "Role:" -#~ msgid "Affiliation: " -#~ msgstr "PÅ™idruženÃ:" + #~ msgid "" #~ "Sound to play when any MUC message arrives. (This setting is taken into " #~ "account only if notify_on_all_muc_messages is True)" @@ -6612,33 +7526,45 @@ msgstr "Chyba pÅ™i pÅ™idávánà služby. %s" #, fuzzy #~ msgid "Not Available " #~ msgstr "Nedostupný" + #~ msgid "Contact _Info" #~ msgstr "_Informace o kontaktu" + #~ msgid "Jabber" #~ msgstr "Jabber" + #~ msgid "Invalid room or server name" #~ msgstr "Neplatná mÃstnost nebo jméno serveru" + #~ msgid "Unknown D-Bus version: %s" #~ msgstr "Neznámá verze D-Bus: %s" + #~ msgid "vCard publication succeeded" #~ 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." + #~ msgid "Migrating Logs..." #~ msgstr "PÅ™evádÃm historii..." + #~ msgid "Gajim - %d unread message" #~ msgid_plural "Gajim - %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" + #~ msgid "Since %s" #~ msgstr "Od %s" + #~ 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/da.po b/po/da.po new file mode 100644 index 0000000000..fb22fe239c --- /dev/null +++ b/po/da.po @@ -0,0 +1,7648 @@ +# Danish translations for Gajim package. +# Copyright (C) 2007 GAJIM'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Gajim package. +# Niels Felsted Thorsen <felsted@fsfe.org>, 2007. +# +#: ../src/gajim-remote.py:212 ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:245 ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:252 ../src/gajim-remote.py:253 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:255 +msgid "" +msgstr "" +"Project-Id-Version: Gajim 0.11\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-09-09 11:23+0200\n" +"PO-Revision-Date: 2007-09-30 17:47+0200\n" +"Last-Translator: Niels Felsted Thorsen <felsted@fsfe.org>\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-Generator: Emacs 22.1.50.1, po-mode 2.02+0.4\n" + +#: ../data/gajim.desktop.in.in.h:1 +msgid "A GTK+ Jabber client" +msgstr "En GTK+ Jabber klient" + +#: ../data/gajim.desktop.in.in.h:2 +msgid "Gajim Instant Messenger" +msgstr "Gajim Instant Messenger" + +#: ../data/gajim.desktop.in.in.h:3 +msgid "Jabber IM Client" +msgstr "Jabber IM Klient" + +#: ../data/glade/account_context_menu.glade.h:1 +#: ../data/glade/roster_window.glade.h:8 +msgid "Join _Group Chat..." +msgstr "Deltag i en _Gruppe Samtale..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Tilføj Kontakt..." + +#: ../data/glade/account_context_menu.glade.h:3 +#: ../data/glade/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "Op_dag Tjenester" + +#: ../data/glade/account_context_menu.glade.h:4 +msgid "_Execute Command..." +msgstr "_Udfør Kommando..." + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account" +msgstr "_Ændre Konto" + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Open Gmail Inbox" +msgstr "_Ã…bn Gmail Indboks" + +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:22 +msgid "_Start Chat..." +msgstr "_Start Samtale..." + +#: ../data/glade/account_context_menu.glade.h:8 +#: ../data/glade/zeroconf_context_menu.glade.h:2 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"<b>Connecting to server</b>\n" +"\n" +"Please wait..." +msgstr "" +"<b>Tilslutter til server</b>\n" +"\n" +"Vent venligst..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "<b>Please choose one of the options below:</b>" +msgstr "<b>Vælg en af mulighederne under:</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "<b>Please fill in the data for your new account</b>" +msgstr "Fyld ind data for din nye konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "<b>Please select a server</b>" +msgstr "<b>Vælg venligst en server<b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Tryk for at se egenskaber (som MSN, ICQ transporter) pÃ¥ jabber serveren" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Connect when I press Finish" +msgstr "Tilslut nÃ¥r jeg trykke Færdig" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Konto Oprettelses Guide" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I already have an account I want to use" +msgstr "Jeg har allerede en konto jeg vil bruge" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +msgid "I want to _register for a new account" +msgstr "Jeg vil _registrere en ny konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:22 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Hvis valgt vil Gajim huske adgangskoden for denne konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "Kan hÃ¥ndteres..." + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Prox_y:" +msgstr "Pro_xy:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:48 +msgid "Save pass_word" +msgstr "Gem adgangs_kode" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "Servers Features" +msgstr "Server Egenskaber" + +#: ../data/glade/account_creation_wizard_window.glade.h:17 +msgid "Set my profile when I connect" +msgstr "Sæt min profil nÃ¥r jeg tilslutter" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "Brug tilpasset værtsnavn/port" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Du behøver en konto for at tilslutte dig\n" +"til Jabber netværket" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +msgid "Your JID:" +msgstr "Din JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 +msgid "_Advanced" +msgstr "_Avanceret" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +msgid "_Finish" +msgstr "_Færdig" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Hostname:" +msgstr "_Værtsnavn:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 +msgid "_Password:" +msgstr "_Adgangskode" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:28 +#: ../data/glade/manage_proxies_window.glade.h:12 +msgid "_Username:" +msgstr "_Brugernavn:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "<b>Miscellaneous</b>" +msgstr "<b>Diverse</b>" + +#: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:1 +msgid "<b>OpenPGP</b>" +msgstr "<b>OpenPGP</b>" + +#: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:2 +msgid "<b>Personal Information</b>" +msgstr "<b>Personlig Information</b>" + +#: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 +msgid "Account" +msgstr "Konto" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Ændring af Konto" + +#: ../data/glade/account_modification_window.glade.h:6 +#: ../data/glade/accounts_window.glade.h:5 +msgid "Administration operations" +msgstr "Administrative handlinger" + +#: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 +msgid "Auto-reconnect when connection is lost" +msgstr "Tilslut automatisk hvis tilslutningen tabes" + +#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 +#: ../data/glade/zeroconf_properties_window.glade.h:3 +msgid "C_onnect on Gajim startup" +msgstr "T_ilslut nÃ¥r Gajim startes" + +#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Ænd_re Adgangskode" + +#: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/accounts_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 "" +"Tjek denne sÃ¥ledes at Gajim vil tilslutte pÃ¥ port 5223 hvor gamle servere " +"forventes at ha SSL muligheder. Bemærk at Gajim bruger TLS kryptering som " +"standard hvis det er rundsendt af serveren, og med denne indstilling valgt " +"vil TLS blive deaktiveret." + +#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/accounts_window.glade.h:10 +#: ../data/glade/zeroconf_properties_window.glade.h:4 +msgid "Choose _Key..." +msgstr "Vælg _Nøgle..." + +#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Tryk for at ændre kontoens adgangskode" + +#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "" +"Tryk for at forespørge om autorisering for alle kontakter af en anden konto" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 +msgid "Connection" +msgstr "Tilslutning" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 +msgid "Edit Personal Information..." +msgstr "Redigere Personlig Information..." + +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:471 +#: ../src/notify.py:493 ../src/notify.py:505 ../src/common/helpers.py:964 +#: ../src/common/helpers.py:976 +msgid "Gajim" +msgstr "Gajim" + +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 +#: ../data/glade/zeroconf_properties_window.glade.h:7 +#: ../src/roster_window.py:359 ../src/roster_window.py:624 +#: ../src/roster_window.py:1360 ../src/roster_window.py:1728 +#: ../src/roster_window.py:2111 ../src/roster_window.py:2627 +#: ../src/roster_window.py:2745 ../src/common/contacts.py:309 +msgid "General" +msgstr "General" + +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 +msgid "Hostname: " +msgstr "Værtsnavn:" + +#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Hvis valgt vil Gajim rundsende flere IP adresser udover din egen IP adresse, " +"filoverførsler har en større chance for at lykkes." + +#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/accounts_window.glade.h:23 +msgid "" +"If checked, Gajim will send keep-alive packets to prevent connection timeout " +"which results in disconnection" +msgstr "" +"Hvis valgt vil Gajim sende hold-i-live pakker for at forhindre at " +"tilslutningen afbrydes pga et tidsudløb" + +#: ../data/glade/account_modification_window.glade.h:22 +#: ../data/glade/accounts_window.glade.h:24 +#: ../data/glade/zeroconf_properties_window.glade.h:8 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Hvis valgt vil Gajim gemme adgangskoden i ~/.gajim/config med læse " +"rettigheder kun for dig" + +#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/accounts_window.glade.h:25 +#: ../data/glade/zeroconf_properties_window.glade.h:9 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Hvis valgt vil Gajim vil Gajim, nÃ¥r den startes, automatisk tilslutte sig " +"til jabber med denne konto" + +#: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/accounts_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:10 +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 "" +"Hvis valgt vil en hvilket som helst ændring til den globale status " +"(hÃ¥ndteret med kombinationsfeltet i bunden af kontaktvinduet) ændre status " +"pÃ¥ denne konto" + +#: ../data/glade/account_modification_window.glade.h:25 +#: ../data/glade/accounts_window.glade.h:29 +msgid "Information about you, as stored in the server" +msgstr "Information om dig, som er gemt pÃ¥ serveren" + +#: ../data/glade/account_modification_window.glade.h:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1524 +#: ../src/config.py:2010 +msgid "No key selected" +msgstr "Ingen nøgle er valgt" + +#. None means no proxy profile selected +#. GPG Key +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1110 +#: ../src/config.py:1181 ../src/config.py:1430 ../src/config.py:1435 +#: ../src/config.py:1906 ../src/config.py:1993 ../src/config.py:2009 +#: ../src/config.py:3109 ../src/config.py:3155 ../src/dialogs.py:286 +#: ../src/dialogs.py:288 ../src/roster_window.py:1832 +#: ../src/roster_window.py:1839 ../src/roster_window.py:1846 +msgid "None" +msgstr "Ingen" + +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 +#: ../data/glade/profile_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:17 +msgid "Personal Information" +msgstr "Personlig Information" + +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 +msgid "Port: " +msgstr "Port: " + +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 +msgid "Priori_ty:" +msgstr "Priori_tet:" + +#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/accounts_window.glade.h:40 +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 er brugt i Jabber for at bestemme hvem som fÃ¥r hændelser fra " +"jabber serveren nÃ¥r to eller flere klienter er tilsluttet med den samme " +"konto: Klienten med den højeste prioritet fÃ¥r hændelserne" + +#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 +msgid "Priority will change automatically according to your status." +msgstr "Prioritet vil automatisk ændres ifølge din status." + +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 +msgid "Resour_ce:" +msgstr "Ressour_ce:" + +#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/accounts_window.glade.h:45 +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 "" +"Ressource bliver sendt til Jabber serveren for at separere den samme JID i " +"to eller flere dele afhængig af antallet klienter som tilsluttet til den " +"samme server med den samme konto. Det vil sige du kan være tilsluttet med " +"denne samme konto med ressourcerne 'Hjemme' og 'Arbejde' pÃ¥ den samme tid. " +"Ressourcen med den højeste prioritet vil fÃ¥ hændelserne. (se under)" + +#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/accounts_window.glade.h:46 +#: ../data/glade/zeroconf_properties_window.glade.h:18 +msgid "Save _passphrase (insecure)" +msgstr "Gem _pgp-løsen (ikke sikkert)" + +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:47 +#: ../data/glade/zeroconf_properties_window.glade.h:19 +msgid "Save conversation _logs for all contacts" +msgstr "Gem konversations _logger for alle kontakter" + +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:49 +msgid "Send keep-alive packets" +msgstr "Send hold-i-live pakker" + +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:50 +#: ../data/glade/zeroconf_properties_window.glade.h:20 +msgid "Synch_ronize account status with global status" +msgstr "Synk_roniser konto status med global status" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:51 +#: ../data/glade/synchronise_select_account_dialog.glade.h:2 +msgid "Synchronise contacts" +msgstr "Synkroniser kontakter" + +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 +msgid "Use _SSL (legacy)" +msgstr "Brug _SSL (gammel type)" + +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 +msgid "Use file transfer proxies" +msgstr "Brug fil transport proxy" + +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 +msgid "_Adjust to status" +msgstr "_Tilpas til status" + +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:49 +msgid "_Name:" +msgstr "_Navn:" + +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "Epost:" + +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Aktiver" + +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "Fornavn:" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 +msgid "" +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." +msgstr "" +"Hvis den standard port der bruges til indkomne beskeder ikke passer dig " +"eller\n" +"din opsætning kan du vælge en anden her.\n" +"Du bør ogsÃ¥ ændre opsætning tilsvarende pÃ¥ en evt. brandmur." + +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:453 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "Efternavn:" + +#: ../data/glade/accounts_window.glade.h:33 +msgid "Mer_ge accounts" +msgstr "Fle_t kontoer" + +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2697 +msgid "Re_name" +msgstr "Om_døb" + +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Brug personlig port:" + +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "gtk-tilføj" + +#: ../data/glade/accounts_window.glade.h:60 +#: ../data/glade/features_window.glade.h:4 +msgid "gtk-close" +msgstr "gtk-luk" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "gtk-fjern" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_ccount:" +msgstr "K_onto:" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "A_llow this contact to view my status" +msgstr "Ti_llad denne kontakt at se min status" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "Add New Contact" +msgstr "Tilføj Ny Kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "I would like to add you to my contact list." +msgstr "Jeg vil gerne tilføje dig til min kontakt liste." + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "" +"You have to register with this transport\n" +"to be able to add a contact from this\n" +"protocol. Click on register button to\n" +"proceed." +msgstr "" +"Du mÃ¥ registrere dig for denne transport\n" +"for at være i stand til at tilføje kontakter fra denne\n" +"protokol. Klik pÃ¥ registrer knappen for at\n" +"fortsætte." + +#: ../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 "" +"Du mÃ¥ være tilsluttet til transporten for at kunne\n" +"tilføje en kontakt for denne protokol." + +#: ../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 "_Kælenavn:" + +#: ../data/glade/add_new_contact_window.glade.h:13 +msgid "_Protocol:" +msgstr "_Protokol:" + +#: ../data/glade/add_new_contact_window.glade.h:14 +msgid "_Register" +msgstr "Kan _registreres" + +#: ../data/glade/add_new_contact_window.glade.h:15 +msgid "_User ID:" +msgstr "_Bruger ID:" + +#: ../data/glade/adhoc_commands_window.glade.h:1 +msgid "<b>An error has occurred:</b>" +msgstr "<b>En fejl er opstÃ¥et:</b>" + +#: ../data/glade/adhoc_commands_window.glade.h:2 +msgid "<b>Choose command to execute:</b>" +msgstr "<b>Vælg kommando som skal udføres:</b>" + +#: ../data/glade/adhoc_commands_window.glade.h:3 +msgid "Ad-hoc Commands - Gajim" +msgstr "Ad-hoc Kommandoer - Gajim" + +#: ../data/glade/adhoc_commands_window.glade.h:4 +msgid "Check once more" +msgstr "Kontroller en gang til" + +#: ../data/glade/adhoc_commands_window.glade.h:5 +msgid "Error description..." +msgstr "Fejl beskrivelse..." + +#: ../data/glade/adhoc_commands_window.glade.h:6 +msgid "Please wait while retrieving command list..." +msgstr "Vent mens kommandolisten bliver modtaget..." + +#: ../data/glade/adhoc_commands_window.glade.h:7 +msgid "Please wait while the command is sending..." +msgstr "Vent mens kommandoen bliver sendt..." + +#: ../data/glade/adhoc_commands_window.glade.h:8 +msgid "Please wait..." +msgstr "Vent venligst..." + +#: ../data/glade/adhoc_commands_window.glade.h:9 +msgid "This jabber entity does not expose any commands." +msgstr "Denne jabber enhed eksponerer ikke nogen kommandoer." + +#: ../data/glade/advanced_configuration_window.glade.h:1 +#: ../data/glade/features_window.glade.h:1 +msgid "<b>Description</b>" +msgstr "<b>Beskrivelse</b>" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "<b>NOTE:</b> You should restart Gajim for some settings to take effect" +msgstr "" +"<b>NOTE:</b> Du skal genstarte Gajim for at nogle af ændringerne kan træde i " +"kraft" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Avanceret Konfigurations Behandler" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Slet MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Slet Dagens Besked" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Edit _Privacy Lists..." +msgstr "Rediger _Privatlivs Liste..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Sends a message to users currently connected to this server" +msgstr "Send en besked til brugere som er tilsluttet denne server" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Set MOTD..." +msgstr "Sæt MOTD..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Sets Message of the Day" +msgstr "Sæt Dagens Besked" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Show _XML Console" +msgstr "Vis _XML Konsol" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Update MOTD..." +msgstr "Opdater MOTD..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "Updates Message of the Day" +msgstr "Opdater Dagens Besked" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message..." +msgstr "_Send Server Besked..." + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "et vindue/faneblad Ã¥bnede med denne kontakt " + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "<b>Actions</b>" +msgstr "<b>Handlinger</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "<b>Conditions</b>" +msgstr "<b>Betingelser</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:12 +msgid "<b>Sounds</b>" +msgstr "<b>Lyde</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Advanced Actions" +msgstr "Avancerede Handlinger" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Notifications Control" +msgstr "Avanceret PÃ¥mindelses Kontrol" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "All statuses" +msgstr "Status For Alle" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#: ../src/common/commands.py:91 ../src/common/helpers.py:246 +msgid "Away" +msgstr "Borte" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "Busy " +msgstr "Travlt " + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Don't have " +msgstr "Har ikke" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Have " +msgstr "Har" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +#: ../src/common/helpers.py:256 +msgid "Invisible" +msgstr "Usynlig" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Launch a command" +msgstr "Kør en kommando" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +#: ../src/common/helpers.py:229 +msgid "Not Available" +msgstr "Ikke Tilgængelig" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +msgid "One or more special statuses..." +msgstr "En eller flere specielle statuser..." + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Online / Free For Chat" +msgstr "PÃ¥ net / Klar For Samtale" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "Play a sound" +msgstr "Spil en lyd" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "" +"Receive a Message\n" +"Contact Disconnected \n" +"Contact Change Status \n" +"Group Chat Message Highlight \n" +"Group Chat Message Received \n" +"File Transfer Request \n" +"File Transfer Started \n" +"File Transfer Finished" +msgstr "" +"Modtag en Besked\n" +"Kontakt Ikke Tilsluttet \n" +"Kontakt Ændrede Status \n" +"Gruppe Samtale Besked Fremhævelse \n" +"Gruppe Samtale Besked Modtaget \n" +"Fil Overførsel Forespørgsel \n" +"Fil Overførsel Er Startet \n" +"Fil Overførsel Er Sluttet" + +#: ../data/glade/advanced_notifications_window.glade.h:26 +msgid "When " +msgstr "NÃ¥r " + +#: ../data/glade/advanced_notifications_window.glade.h:27 +msgid "" +"_Activate window manager's UrgencyHint to make chat window in taskbar flash" +msgstr "" +"_Aktiver vindueshÃ¥ndteringens ViktigFif for at fÃ¥ samtale vinduet til at " +"blinke i opgavelinjen" + +#: ../data/glade/advanced_notifications_window.glade.h:28 +msgid "_Disable auto opening chat window" +msgstr "_Deaktivér automatisk Ã¥bning af samtale vindue" + +#: ../data/glade/advanced_notifications_window.glade.h:29 +msgid "_Disable existing popup window" +msgstr "_Deaktivér eksisterende pop op vinduer" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "_Disable existing sound for this event" +msgstr "_Deaktivér nuværende lyd for denne hændelse" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "_Disable showing event in roster" +msgstr "_Deaktivér visning af hændelse i kontaktvinduet" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "_Disable showing event in systray" +msgstr "_Deaktivér visning af hændelse i systembakken" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Inform me with a popup window" +msgstr "_Informer mig med et pop op vindue" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Open chat window with user" +msgstr "_Ã…bn samtale vindue med bruger" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Show event in roster" +msgstr "_Vis hændelse i kontaktvindue" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Show event in systray" +msgstr "_Vis hændelse i systembakken" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "and I " +msgstr "og jeg " + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"kontakt(er)\n" +"gruppe(r)\n" +"alle" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "for " +msgstr "for " + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "when I'm in" +msgstr "nÃ¥r jeg er i" + +#: ../data/glade/atom_entry_window.glade.h:1 +msgid "Entry:" +msgstr "Indgang:" + +#: ../data/glade/atom_entry_window.glade.h:2 +msgid "Feed name:" +msgstr "Feed navn:" + +#: ../data/glade/atom_entry_window.glade.h:3 +msgid "Last modified:" +msgstr "Sidst ændret:" + +#: ../data/glade/atom_entry_window.glade.h:4 +msgid "New entry received" +msgstr "Ny hændelse modtaget" + +#: ../data/glade/atom_entry_window.glade.h:5 +msgid "You have received new entry:" +msgstr "Du har modtaget en ny hændelse:" + +#: ../data/glade/blocked_contacts_window.glade.h:1 +msgid "Blocked Contacts" +msgstr "Blokerede Kontakter" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Ændre Adgangskode" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Skriv adgangskoden igen for at bekræfte:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Skriv en ny adgangskode:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "<b>Type your new status message</b>" +msgstr "<b>Skriv din nye status besked</b>" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Forvalgte beskeder:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Gem som Forvalgt..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Bliv med i en _Gruppe Samtale" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:12 +msgid "_Add to Roster..." +msgstr "_Tilføj 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 Henvisning" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Ã…bn E-post Program" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Ã…bn Henvisning i Netlæser" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/subscription_request_popup_menu.glade.h:1 +#: ../data/glade/systray_context_menu.glade.h:7 +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 "Klik for at se tidligere samtaler med denne kontakt" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +msgid "Invite _Friends" +msgstr "Inviter _Venner" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:4 +msgid "Send _File" +msgstr "Send _Fil" + +#: ../data/glade/chat_control_popup_menu.glade.h:4 +msgid "Toggle End to End Encryption" +msgstr "SlÃ¥ til/fra ende til ende Kryptering" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +msgid "Toggle Open_PGP Encryption" +msgstr "SlÃ¥ til/fra Open_PGP Kryptering" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "_Tilføj til Kontaktliste" + +#: ../data/glade/chat_control_popup_menu.glade.h:7 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2566 +msgid "_History" +msgstr "_Historie" + +#: ../data/glade/chat_to_muc_window.glade.h:1 +msgid "In_vite" +msgstr "In_viter" + +#: ../data/glade/chat_to_muc_window.glade.h:2 +msgid "Invite Friends !" +msgstr "Inviter Venner !" + +#: ../data/glade/chat_to_muc_window.glade.h:3 +msgid "MUC server" +msgstr "MUC server" + +#: ../data/glade/chat_to_muc_window.glade.h:4 +msgid "Please select a MUC server." +msgstr "Vælg en MUC server." + +#: ../data/glade/chat_to_muc_window.glade.h:5 +msgid "" +"You are going to begin a Multi-User Chat.\n" +"Select the contacts you want to invite" +msgstr "" +"Du er ved at begynde en Multibruger samtale.\n" +"Vælg de kontakter du vil invitere" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Fill in the form." +msgstr "Udfyld formen." + +#: ../data/glade/data_form_window.glade.h:2 +msgid "Room Configuration" +msgstr "Rum Konfigurering" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Rediger Grupper" + +#: ../data/glade/features_window.glade.h:2 +msgid "<b>List of possible features in Gajim:</b>" +msgstr "<b>Liste over mulige egenskaber i Gajim:</b> " + +#: ../data/glade/features_window.glade.h:3 +msgid "Features" +msgstr "Egenskaber" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "En liste over aktive, færdige og stoppede filoverførsler" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Annuller filoverførsel" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Annullerer den valgte filoverførsel" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Annullerer den valgte filoverførsel og fjerner den ikke fuldførte fil" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Ryd _op" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Filoverførsler" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Skjuler vinduet" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Fjern filoverførsler fra listen." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, cancelled and failed file transfers from the list" +msgstr "Fjerner færdige, annullerede og mislykkede filoverførsler fra listen" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and others" +msgstr "Viser en liste over filoverførsler mellem dig 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 "" +"Denne handling fjerner en enkelt filoverførsel fra listen. Hvis overførslen " +"er i gang, bliver den først stoppet og derefter fjernet" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "NÃ¥r en filoverførsel er færdig, vis en pop op pÃ¥mindelse" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:774 +msgid "_Continue" +msgstr "_Fortsæt" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_PÃ¥mind mig nÃ¥r en filoverførsel er færdig" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:186 +msgid "_Open Containing Folder" +msgstr "_Ã…bn folderen med filen" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pause" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "filoverførsel liste" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "<b>Chatstate Tab Colors</b>" +msgstr "<b>Samtalestatus Fane Farver</b>" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account row\n" +"Group row\n" +"Contact row\n" +"Chat Banner" +msgstr "" +"Konto række\n" +"Gruppe række\n" +"Kontakt række\n" +"Samtale Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +msgid "Bold" +msgstr "Fed" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Composing" +msgstr "Komponere" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Font style:" +msgstr "Font stil:" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Gajim Themes Customization" +msgstr "Gajim Tema Tilpasning" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gone" +msgstr "Borte" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Inactive" +msgstr "Ikke aktiv" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Italic" +msgstr "Kursiv" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Beskeder" + +#: ../data/glade/gajim_themes_window.glade.h:15 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC Sendte\n" +"Meldinger" + +#: ../data/glade/gajim_themes_window.glade.h:17 +msgid "Paused" +msgstr "Sat pÃ¥ pause" + +#: ../data/glade/gajim_themes_window.glade.h:18 +msgid "Text _color:" +msgstr "Tekst _farve:" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _font:" +msgstr "Tekst _font:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "_Background:" +msgstr "_Baggrund:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname..." +msgstr "Ændre _Kælenavn..." + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject..." +msgstr "Ændre _Emne..." + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klik for at se tidligere samtaler i dette rum" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room..." +msgstr "Tilpas _Rum..." + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark" +msgstr "_Bogmærke" + +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" +msgstr "_Slet rum" + +#: ../data/glade/gc_control_popup_menu.glade.h:8 +msgid "_Manage Room" +msgstr "HÃ¥ndter Ru_m" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "_Minimer ved lukning" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Or_dstyrer" + +#: ../data/glade/gc_occupants_menu.glade.h:2 +msgid "Occupant Actions" +msgstr "Beboer Handlinger" + +#: ../data/glade/gc_occupants_menu.glade.h:5 +msgid "_Admin" +msgstr "_Administrator" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Ban" +msgstr "_Udvis" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Kick" +msgstr "_Kast ud" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Member" +msgstr "_Medlem" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Owner" +msgstr "_Ejer" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Send Private Message" +msgstr "_Send en Privat Besked" + +#: ../data/glade/gc_occupants_menu.glade.h:12 +msgid "_Voice" +msgstr "_Stemme" + +#: ../data/glade/groups_post_window.glade.h:1 +msgid "Create new post" +msgstr "Lav en ny post" + +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:271 +msgid "From" +msgstr "Fra" + +#. holds subject +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:142 +#: ../src/history_manager.py:173 +msgid "Subject" +msgstr "Emne" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"<big><b>Welcome to Gajim History Logs Manager</b></big>\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"<b>WARNING:</b>\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 "" +"<big><b>Velkommen til Gajim Historie Log HÃ¥ndterer</b><big>\n" +"\n" +"Du kan vælge logger til venstre og/eller søge i databasen under.\n" +"\n" +"<b>ADVARSEL:</b>\n" +"Hvis du planlægger at gøre massive sletninger, vær sikker pÃ¥ at Gajim ikke " +"kører. \n" +"Generelt undgÃ¥ at slette logger fra kontakter du samtidig snakker med." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Slet" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Eksporter" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim Loghistorie HÃ¥ndterer" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Søge Database" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Byg tilpasset forespørgsel" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Samtale Historie" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Forespørgsel Bygger..." + +#: ../data/glade/history_window.glade.h:4 +#: ../data/glade/search_window.glade.h:2 +msgid "Search" +msgstr "Søg" + +#: ../data/glade/history_window.glade.h:5 +#: ../data/glade/zeroconf_information_window.glade.h:10 +msgid "_Log conversation history" +msgstr "_Log samtale historie" + +#: ../data/glade/history_window.glade.h:6 +#: ../data/glade/search_window.glade.h:5 ../src/disco.py:1172 +msgid "_Search" +msgstr "_Søg" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Godkend" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_window.glade.h:8 +msgid "Deny" +msgstr "Nægt" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Invitation Modtaget" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1265 +msgid "Join Group Chat" +msgstr "Bliv med i en Gruppe Samtale" + +#: ../data/glade/join_groupchat_window.glade.h:2 +msgid "Join this room automatically when I connect" +msgstr "Bliv med i dette rum automatisk nÃ¥r jeg tilsutter" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/profile_window.glade.h:24 +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Nickname:" +msgstr "Kælenavn:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Password:" +msgstr "Adgangskode:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +msgid "Recently:" +msgstr "For nylig:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Room:" +msgstr "Rum:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1160 +#: ../src/disco.py:1615 +msgid "_Join" +msgstr "_Bliv med:" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "HÃ¥ndter Kontoer" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Bliv automatisk med" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Hvis valgt vil Gajim deltage i denne gruppe samtale ved start" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "HÃ¥ndter Bogmærker" + +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "Minimer ved Automatisk Deltagelse" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Print status:" +msgstr "Skriv status:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/manage_bookmarks_window.glade.h:10 +msgid "Title:" +msgstr "Titel:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "<b>Properties</b>" +msgstr "<b>Egenskaber</b>" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "<b>Settings</b>" +msgstr "<b>Opsætning</b>" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "" +"HTTP Connect\n" +"SOCKS5" +msgstr "" +"HTTP Tilslutning\n" +"SOCKS5" + +#: ../data/glade/manage_proxies_window.glade.h:5 +msgid "Manage Proxy Profiles" +msgstr "HÃ¥ndter Proxy Profiler" + +#: ../data/glade/manage_proxies_window.glade.h:6 +#: ../data/glade/profile_window.glade.h:23 +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Name:" +msgstr "Navn:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "Adgangs_kode" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Type:" +msgstr "Type:" + +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "Use authentication" +msgstr "Brug Godkendelse" + +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_Værtsmaskine:" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klik for at indsætte et følelsesikon (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1212 +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:12 +#: ../data/glade/subscription_request_window.glade.h:6 +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:243 +msgid "_Send" +msgstr "_Send" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "PGP-løsen" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "<b>Advanced Configuration Editor</b>" +msgstr "<b>Avanceret Konfigurations Behandler</b>" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "<b>Applications</b>" +msgstr "<b>Programmer</b>" + +#: ../data/glade/preferences_window.glade.h:3 +msgid "<b>Chat Appearance</b>" +msgstr "<b>Samtale udseende</b>" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:5 +msgid "<b>Custom</b>" +msgstr "<b>Tilpasset Opsætning</b>" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "<b>Format of a line</b>" +msgstr "<b>Format for en linje</b>" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "<b>GMail Options</b>" +msgstr "<b>GMail Indstillinger</b>" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "<b>Preset Status Messages</b>" +msgstr "<b>Nuværende Status Beskeder</b>" + +#: ../data/glade/preferences_window.glade.h:10 +msgid "<b>Privacy</b>" +msgstr "<b>Privatliv</b>" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "<b>Kontaktvinduets Udseende</b>" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "<b>Themes</b>" +msgstr "<b>Temaer</b>" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "<b>Visual Notifications</b>" +msgstr "<b>Synlige PÃ¥mindelser</b>" + +#: ../data/glade/preferences_window.glade.h:15 +msgid "Advanced" +msgstr "Avanceret" + +#: ../data/glade/preferences_window.glade.h:16 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Alle samtale tilstander\n" +"Kun skrivning\n" +"Ikke aktiveret" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Allow _OS information to be sent" +msgstr "Tillad _OS information at blive sendt" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Tillad pop op pÃ¥mindelser nÃ¥r jeg er _borte/ikke tilgængelig/travel/usynlig" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Always check to see if Gajim is the _default Jabber client on startup" +msgstr "Altid kontroller om Gajim er standard Jabber klient ved start" + +#: ../data/glade/preferences_window.glade.h:22 +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 "" +"Et eksempel: Hvis du har aktiveret status beskeder for borte status, vil " +"Gajim ikke spørge dig mere for en status besked nÃ¥r du ændrer din status til " +"borte; Gajim vil bruge standard beskeden sat her" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "Ask status message when I:" +msgstr "Spørg om status besked nÃ¥r jeg:" + +#: ../data/glade/preferences_window.glade.h:24 +msgid "Auto _away after:" +msgstr "_Automatisk borte efter:" + +#: ../data/glade/preferences_window.glade.h:25 +msgid "Auto _not available after:" +msgstr "Automatisk _ikke tilgængelig efter:" + +#: ../data/glade/preferences_window.glade.h:26 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Always use XFCE4 default applications\n" +"Custom" +msgstr "" +"Automatisk genkend hvergang Gajim starter\n" +"Altid brug GNOME standard programmer\n" +"Altid brug KDE standard programmer\n" +"Altid brug XFCE4 standard programmer\n" +"Tilpasset" + +#: ../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, because it blocks all messages from any contact that " +"is not in the roster" +msgstr "" +"Kun tjek denne valgmulighed hvis nogen du ikke har i kontaktvinduet spammer/" +"generer\n" +"dig. Bruges varsomt, fordi den blokerer alle beskeder fra kontakter som \n" +"ikke er i kontaktvinduet" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Configure color and font of the interface" +msgstr "Konfigurér farve og skrifttyper for brugergrænsefladen" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Default Status Messages" +msgstr "Standard Status Beskeder" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "" +"Determined by sender\n" +"Chat message\n" +"Single message" +msgstr "" +"Bestemt af senderen\n" +"Samtale besked\n" +"Enkel besked" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Display _extra email details" +msgstr "Vis _ekstra e-post detaljer" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Display a_vatars of contacts in roster" +msgstr "Vis a_vatarer for kontakter i kontaktvinduet" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "Display status _messages of contacts in roster" +msgstr "Vis status _beskeder for kontakter i kontaktvinduet" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "Emoticons:" +msgstr "Følelsesikoner:" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "Events" +msgstr "Hændelser" + +#: ../data/glade/preferences_window.glade.h:42 +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 " +"display in chat windows." +msgstr "Gajim kan sende og modtage meta-information relateret til en samtale du har med en kontakt. Her kan du specificere hvilke typer samtalestatus du vil vise i samtalevinduerne." + +#: ../data/glade/preferences_window.glade.h:43 +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 modtage meta-information relateret til en samtale du har med en kontakt. Her kan du specificere hvilke typer samtalestatus du vil sende til modparten." + +#: ../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 vil pÃ¥minde dig med et pop op vindue i højre bund af skærmen nÃ¥r en " +"kontakt logger af" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "Hides buttons in chatwindows to " +msgstr "Skjuler knapperne i gruppesamtale vinduer til " + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will also include information about the sender of the new " +"emails" +msgstr "" +"Hvis valgt vil Gajim ogsÃ¥ inkludere information om senderen af den nye e-post" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Hvis valgt vil Gajim vise avatarer af kontakter i kontaktvinduet og i gruppe " +"samtaler" + +#: ../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 "Hvis valgt vil Gajim vise status beskeder af kontakter under kontaktnavnet i kontaktvinduet og i gruppe samtaler" + +#: ../data/glade/preferences_window.glade.h:50 +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 "Hvis valgt vil Gajim bruge protokol specifikke status ikoner. (F.eks. En kontakt fra MSN vil have det tilsvarende msn ikon for status tilsluttet, borte, Travlt, etc...)" + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "Hvis valgt vil Gajim erstatte tekst smileys som denne ':)' med den tilsvarende animerede eller statiske grafiske følelsesikon" + +#: ../data/glade/preferences_window.glade.h:52 +msgid "Ignore rich content in incoming messages" +msgstr "Ignorer rigt indhold i indkommende beskeder" + +#: ../data/glade/preferences_window.glade.h:53 +msgid "Ma_nage..." +msgstr "HÃ¥_ndtere..." + +#: ../data/glade/preferences_window.glade.h:54 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Aldrig\n" +"Altid\n" +"Per konto\n" +"Per type" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "Notify me about contacts that sign _in" +msgstr "PÃ¥mind mig om kontakter logger _ind" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Notify me about contacts that sign _out" +msgstr "PÃ¥mind mig om kontakter som logger u_d" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Notify on new _GMail email" +msgstr "PÃ¥mind mig ved ny _GMail e-post" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Play _sounds" +msgstr "Afspil _lyde" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" +"Pop det op\n" +"PÃ¥mind mig om det\n" +"Hvis kun i kontaktvinduet" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Preferences" +msgstr "Indstillinger" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Privacy" +msgstr "Privatliv" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "Set status message to reflect currently playing _music track" +msgstr "" +"Sæt status besked til at vise det musik nu_mmer du spiller pÃ¥ det pÃ¥gældende " +"tidspunkt" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "Sign _in" +msgstr "Logge _ind" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "Sign _out" +msgstr "Log _af" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "" +"Some messages may include rich content (formatting, colors etc). If checked, " +"Gajim will just display the raw message text." +msgstr "" +"Nogle beskeder kan indeholde rigt indhold (formatering, farver osv.). Hvis valgt\n" +"vil Gajim kun vise den rÃ¥ tekst." + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Status _iconset:" +msgstr "Status _ikonsæt:" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "T_heme:" +msgstr "T_ema:" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "The auto away status message" +msgstr "Den automatiske status besked for borte" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "The auto not available status message" +msgstr "Den automatiske besked for ikke tilgængelig" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "Treat all incoming messages as:" +msgstr "Behandl alle indkomne beskeder som:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "Use _transports iconsets" +msgstr "Brug _transporternes ikonsæt" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "Use only one message _window:" +msgstr "Brug kun et samtale _vindue:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "Use system _default" +msgstr "Brug system stan_dard" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "When new event is received:" +msgstr "NÃ¥r en ny hændelse er modtaget:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "" +"Works for Rhythmbox and Muine players. For more players, please visit http://" +"trac.gajim.org/wiki/GajimAndMusicPlayer" +msgstr "" +"Virker for afspiller som Rhythmbox og Muine. For andre afspiller besøg " +"http://trac.gajim.org/wiki/GajimAndMusicPlayer" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Advanced Notifications Control..." +msgstr "Avanceret PÃ¥mindelses Kontrol..." + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Browser:" +msgstr "_Netlæser:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Display chat state notifications:" +msgstr "Vis samtalestatus pÃ¥min_delser:" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_File manager:" +msgstr "_FilhÃ¥ndterer:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Font:" +msgstr "_Font:" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Highlight misspelled words" +msgstr "Frem_hæv stavefejl" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorer hændelser fra kontakter som ikke er i kontaktvinduet" + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Incoming message:" +msgstr "_Indkommende besked:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Log status changes of contacts" +msgstr "_Log status ændringer hos kontakter" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Mail client:" +msgstr "_E-post klient:" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Make message windows compact" +msgstr "Gør sa_mtalevinduer kompakte" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Open..." +msgstr "_Ã…bn..." + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Outgoing message:" +msgstr "_UdgÃ¥ende besked:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_Player:" +msgstr "Afs_piller:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "_Reset to Default Colors" +msgstr "_Nulstil til Standard Farver" + +#: ../data/glade/preferences_window.glade.h:97 +msgid "_Send chat state notifications:" +msgstr "_Send samtalestatus pÃ¥mindelser:" + +#: ../data/glade/preferences_window.glade.h:98 +msgid "_Sort contacts by status" +msgstr "_Sorter kontakter efter status" + +#: ../data/glade/preferences_window.glade.h:99 +msgid "_Status message:" +msgstr "_Status besked:" + +#: ../data/glade/preferences_window.glade.h:100 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:101 +msgid "minutes" +msgstr "minutter" + +#: ../data/glade/privacy_lists_window.glade.h:1 +msgid "Privacy Lists:" +msgstr "Privatlivs Lister:" + +#: ../data/glade/privacy_list_window.glade.h:1 +msgid "<b>Add / Edit a rule</b>" +msgstr "<b>Tilføj / Ændre en regel</b>" + +#: ../data/glade/privacy_list_window.glade.h:2 +msgid "<b>List of rules</b>" +msgstr "<b>Liste af regler</b>" + +#: ../data/glade/privacy_list_window.glade.h:3 +msgid "<i>Privacy List</i>" +msgstr "<i>Privatlivs Liste</i>" + +#: ../data/glade/privacy_list_window.glade.h:4 +msgid "Active for this session" +msgstr "Aktiv i denne session" + +#: ../data/glade/privacy_list_window.glade.h:5 +msgid "Active on each startup" +msgstr "Aktiv efter hver start" + +#: ../data/glade/privacy_list_window.glade.h:6 +msgid "All" +msgstr "Alle" + +#: ../data/glade/privacy_list_window.glade.h:7 +msgid "Allow" +msgstr "Tillad" + +#: ../data/glade/privacy_list_window.glade.h:9 +msgid "JabberID" +msgstr "Jabber ID" + +#: ../data/glade/privacy_list_window.glade.h:10 +msgid "Order:" +msgstr "Bestil:" + +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2104 +msgid "Privacy List" +msgstr "Privatlivs Liste" + +#: ../data/glade/privacy_list_window.glade.h:12 +msgid "all by subscription" +msgstr "Alle efter abonnering" + +#: ../data/glade/privacy_list_window.glade.h:13 +msgid "all in the group" +msgstr "Alle i gruppen" + +#: ../data/glade/privacy_list_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" +"ingen\n" +"begge\n" +"fra\n" +"til" + +#: ../data/glade/privacy_list_window.glade.h:18 +msgid "to send me messages" +msgstr "at sende mig beskeder" + +#: ../data/glade/privacy_list_window.glade.h:19 +msgid "to send me queries" +msgstr "at sende mig forespørgsler" + +#: ../data/glade/privacy_list_window.glade.h:20 +msgid "to send me status" +msgstr "at sende mig status" + +#: ../data/glade/privacy_list_window.glade.h:21 +msgid "to view my status" +msgstr "at se min status" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/profile_window.glade.h:2 +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Om" + +#: ../data/glade/profile_window.glade.h:3 +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adress" + +#: ../data/glade/profile_window.glade.h:4 +msgid "Avatar:" +msgstr "Avatar:" + +#: ../data/glade/profile_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "Birthday:" +msgstr "Fødselsdag:" + +#: ../data/glade/profile_window.glade.h:6 +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "City:" +msgstr "By:" + +#: ../data/glade/profile_window.glade.h:7 +msgid "Click to set your avatar" +msgstr "Tryk for at se din avatar" + +#: ../data/glade/profile_window.glade.h:8 +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Company:" +msgstr "Firma:" + +#: ../data/glade/profile_window.glade.h:9 +#: ../data/glade/vcard_information_window.glade.h:14 +msgid "Country:" +msgstr "Land:" + +#: ../data/glade/profile_window.glade.h:10 +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Department:" +msgstr "Afdeling:" + +#: ../data/glade/profile_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:17 +msgid "Extra Address:" +msgstr "Ekstra Adresse:" + +#. Family Name +#: ../data/glade/profile_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Family:" +msgstr "Efternavn:" + +#. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) +#: ../data/glade/profile_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Format: YYYY-MM-DD" +msgstr "Format: YYYY-MM-DD" + +#: ../data/glade/profile_window.glade.h:17 +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Full Name" +msgstr "Fuldt Navn" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 +msgid "Given:" +msgstr "Fornavn:" + +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Homepage:" +msgstr "Hjemmeside:" + +#. Middle Name +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Middle:" +msgstr "Mellemnavn:" + +#: ../data/glade/profile_window.glade.h:25 +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Personal Info" +msgstr "Personlig Information" + +#: ../data/glade/profile_window.glade.h:27 +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Phone No.:" +msgstr "Telefonnr.:" + +#: ../data/glade/profile_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Position:" +msgstr "Placering:" + +#: ../data/glade/profile_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Postal Code:" +msgstr "Postnummer:" + +#. Prefix in Name +#: ../data/glade/profile_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Prefix:" +msgstr "Titel:" + +#: ../data/glade/profile_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:302 +msgid "Role:" +msgstr "Rolle:" + +#: ../data/glade/profile_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:42 +msgid "State:" +msgstr "Amt:" + +#: ../data/glade/profile_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Street:" +msgstr "Gade:" + +#. Suffix in Name +#: ../data/glade/profile_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:48 +msgid "Suffix:" +msgstr "Endelse:" + +#: ../data/glade/profile_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:50 +msgid "Work" +msgstr "Arbejde" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "<b>What do you want to do?</b>" +msgstr "<b>Hvad vil du gøre?</b>" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Fjern kun k_ontoen 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" + +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2523 ../src/roster_window.py:2733 +#: ../src/roster_window.py:2869 +msgid "_Remove" +msgstr "_Kan fjernes" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "_Spørg om at kunne se hans/hendes status" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification..." +msgstr "Tilføj Speciel PÃ¥mi_ndelse..." + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key..." +msgstr "Tilskriv Open_PGP Nøgle..." + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups..." +msgstr "Ændre _Grupper..." + +#. Execute Command +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../src/roster_window.py:2826 +msgid "Execute Command..." +msgstr "Kør Kommando..." + +#. Invite to Groupchat +#: ../data/glade/roster_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2439 +msgid "In_vite to" +msgstr "In_viter til" + +#. Send Custom Status +#: ../data/glade/roster_contact_context_menu.glade.h:7 +#: ../src/roster_window.py:2663 ../src/roster_window.py:2797 +msgid "Send Cus_tom Status" +msgstr "Send _Tilpasset Status" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "Send en Enkel _Besked" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "Send _File..." +msgstr "Send _Fil..." + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "Angiv Personlig _Avatar..." + +#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:5 +msgid "Start _Chat" +msgstr "Start _samtale" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +msgid "_Allow him/her to see my status" +msgstr "Till_ad ham/hende at se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../src/roster_window.py:2513 ../src/roster_window.py:2724 +msgid "_Block" +msgstr "_Bloker" + +#: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Forbid him/her to see my status" +msgstr "_Nægt ham/hende at se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:17 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:7 +msgid "_Manage Contact" +msgstr "_HÃ¥ndter Kontakt" + +#: ../data/glade/roster_contact_context_menu.glade.h:19 +msgid "_Rename..." +msgstr "_Omdøb..." + +#: ../data/glade/roster_contact_context_menu.glade.h:20 +msgid "_Subscription" +msgstr "_Abonnement" + +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2507 ../src/roster_window.py:2718 +msgid "_Unblock" +msgstr "_Fjern blokering" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Kontoer" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact..." +msgstr "_Tilføj Kontakt..." + +#: ../data/glade/roster_window.glade.h:3 +msgid "Fea_tures" +msgstr "_Egenskaber" + +#: ../data/glade/roster_window.glade.h:4 +msgid "File _Transfers" +msgstr "Filover_førsler" + +#: ../data/glade/roster_window.glade.h:5 +msgid "Frequently Asked Questions (online)" +msgstr "Ofte Stillede SpørgsmÃ¥l (pÃ¥ net)" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Help online" +msgstr "Hjælp pÃ¥ net" + +#: ../data/glade/roster_window.glade.h:9 +msgid "Profile, A_vatar" +msgstr "Profil, A_vatar" + +#: ../data/glade/roster_window.glade.h:10 +msgid "Show Trans_ports" +msgstr "Vis Trans_porter" + +#: ../data/glade/roster_window.glade.h:11 +msgid "Show _Offline Contacts" +msgstr "Vis _Afkoblede Kontakter" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_Contents" +msgstr "_Indhold" + +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1348 +msgid "_Edit" +msgstr "R_ediger" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_FAQ" +msgstr "_OSS" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Help" +msgstr "_Hjælp" + +#: ../data/glade/roster_window.glade.h:19 +msgid "_Preferences" +msgstr "_Indstillinger" + +#: ../data/glade/roster_window.glade.h:20 +msgid "_Quit" +msgstr "_Afslut" + +#: ../data/glade/roster_window.glade.h:21 +msgid "_Send Single Message..." +msgstr "Send en Enkel _Besked..." + +#: ../data/glade/roster_window.glade.h:23 +msgid "_View" +msgstr "_Vis" + +#: ../data/glade/search_window.glade.h:1 +msgid "Please wait while retrieving search form..." +msgstr "Vent mens en søge form hentes..." + +#: ../data/glade/search_window.glade.h:3 +msgid "_Add contact" +msgstr "Tilføj Kont_akt" + +#. Information +#: ../data/glade/search_window.glade.h:4 ../src/roster_window.py:2881 +msgid "_Information" +msgstr "_Information" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "N_aviger" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresse:" + +#: ../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 "_Afbryd" + +#: ../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 "Send et svar til denne besked" + +#: ../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 besked" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Send besked og luk vinduet" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Emne:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Til:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "Sva_r" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Send & Luk" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Au_thorize" +msgstr "Au_torisere" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Authorize contact so he or she can know when you're connected" +msgstr "" +"Autoriser kontakt sÃ¥ han eller hun kan opnÃ¥ information om at du er " +"tilsluttet" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "" +"Deny authorization from contact so he or she cannot know when you're " +"connected" +msgstr "" +"Nægt autorisation fra kontakter sÃ¥ han eller hun ikke kan opnÃ¥ information " +"om at du er tilsluttet" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Abonnement Forespørgsel" + +#: ../data/glade/subscription_request_window.glade.h:7 +msgid "_Deny" +msgstr "_Nægt" + +#: ../data/glade/synchronise_select_account_dialog.glade.h:1 +msgid "Select the account with which you want to synchronise" +msgstr "Vælg den konto som du vil synkronisere med" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:1 +msgid "Select the contacts you want to synchronise" +msgstr "Vælg de kontakter som du vil synkronisere" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:2 +msgid "Synchronise : select contacts" +msgstr "Synkronisering : vælg kontakter" + +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Mute Sounds" +msgstr "SlÃ¥ lyden af" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "Send en Enkel _Besked" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show All Pending _Events" +msgstr "Vis Alle Ventende Hænd_elser" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Show _Roster" +msgstr "Vis _Kontaktvindue" + +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "Sta_tus" +msgstr "Sta_tus" + +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "_Gruppe Chat" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Ask:" +msgstr "Spørg:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Client:" +msgstr "Klient:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Comments" +msgstr "Kommentarer" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Configured avatar:" +msgstr "Konfigureret avatar:" + +#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/zeroconf_information_window.glade.h:1 +msgid "Contact" +msgstr "Kontakt" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Contact Information" +msgstr "Kontakt Information" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "Mere" + +#: ../data/glade/vcard_information_window.glade.h:33 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/zeroconf_information_window.glade.h:8 +msgid "Resource:" +msgstr "Resource:" + +#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/zeroconf_information_window.glade.h:9 +msgid "Status:" +msgstr "Status:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "Subscription:" +msgstr "Abonnement:" + +#: ../data/glade/vcard_information_window.glade.h:49 +msgid "User avatar:" +msgstr "Bruger avatar:" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "<b>Jabber Traffic</b>" +msgstr "<b>Jabber Trafik</b>" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "<b>XML Input</b>" +msgstr "<b>XML Inddata</b>" + +#. 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/Forespørgsel (Info/Query)" + +#. Info/Query: all(?) jabber xml start with <iq Leaving it _IQ is not a bad idea unless you are sure your lang has this somehow else translated (NOTE: xml still will still say <iq in your language (of course)) +#: ../data/glade/xml_console_window.glade.h:8 +msgid "_IQ" +msgstr "_IQ" + +#: ../data/glade/xml_console_window.glade.h:9 +msgid "_Message" +msgstr "_Besked" + +#: ../data/glade/xml_console_window.glade.h:10 +msgid "_Presence" +msgstr "_Tilstedeværelse" + +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Tilføj Speciel _PÃ¥mindelse" + +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Tilskriv Open_PGP Nøgle" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2496 +msgid "Edit _Groups" +msgstr "Ændre _Grupper" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2853 +msgid "_Rename" +msgstr "_Omdøb" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Ændre Konto" + +#: ../data/glade/zeroconf_information_window.glade.h:6 +msgid "Local jid:" +msgstr "Lokal jid:" + +#: ../data/glade/zeroconf_information_window.glade.h:7 +msgid "Personal" +msgstr "Personlig" + +#: ../data/glade/zeroconf_properties_window.glade.h:15 +msgid "Modify Account" +msgstr "Ændre Konto" + +#. For i18n +#: ../src/advanced.py:51 +msgid "Activated" +msgstr "Aktiveret" + +#: ../src/advanced.py:51 +msgid "Deactivated" +msgstr "Ikke aktiveret" + +#: ../src/advanced.py:53 +msgid "Boolean" +msgstr "Boolean" + +#: ../src/advanced.py:54 +msgid "Integer" +msgstr "Heltal" + +#: ../src/advanced.py:55 +msgid "Text" +msgstr "Tekst" + +#: ../src/advanced.py:56 +msgid "Color" +msgstr "Farve" + +#: ../src/advanced.py:65 +msgid "Preference Name" +msgstr "Foretrukket Navn" + +#: ../src/advanced.py:71 +msgid "Value" +msgstr "Værdi" + +#: ../src/advanced.py:79 +msgid "Type" +msgstr "Type" + +#. we talk about option description in advanced configuration editor +#: ../src/advanced.py:136 +msgid "(None)" +msgstr "(Ingen)" + +#. we talk about password +#: ../src/advanced.py:239 +msgid "Hidden" +msgstr "Skjult" + +#. 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"}" +#: ../src/chat_control.py:55 +msgid "English" +msgstr "Engelsk" + +#: ../src/chat_control.py:55 +msgid "Belarusian" +msgstr "Belarusian" + +#: ../src/chat_control.py:55 +msgid "Bulgarian" +msgstr "Bulgarsk" + +#: ../src/chat_control.py:55 +msgid "Breton" +msgstr "Bretonsk" + +#: ../src/chat_control.py:55 +msgid "Czech" +msgstr "Tjekkisk" + +#: ../src/chat_control.py:55 +msgid "German" +msgstr "Tysk" + +#: ../src/chat_control.py:55 +msgid "Greek" +msgstr "Græsk" + +#: ../src/chat_control.py:55 +msgid "British" +msgstr "Britisk" + +#: ../src/chat_control.py:55 +msgid "Esperanto" +msgstr "Esperanto" + +#: ../src/chat_control.py:55 +msgid "Spanish" +msgstr "Spansk" + +#: ../src/chat_control.py:55 +msgid "Basque" +msgstr "Baskisk" + +#: ../src/chat_control.py:55 +msgid "French" +msgstr "Fransk" + +#: ../src/chat_control.py:55 +msgid "Croatian" +msgstr "Kroatisk" + +#: ../src/chat_control.py:55 +msgid "Italian" +msgstr "Italiensk" + +#: ../src/chat_control.py:55 +msgid "Norwegian (b)" +msgstr "Norsk (bokmÃ¥l)" + +#: ../src/chat_control.py:55 +msgid "Dutch" +msgstr "Hollandsk" + +#: ../src/chat_control.py:55 +msgid "Norwegian" +msgstr "Norsk" + +#: ../src/chat_control.py:55 +msgid "Polish" +msgstr "Polsk" + +#: ../src/chat_control.py:55 +msgid "Portuguese" +msgstr "Portugisisk" + +#: ../src/chat_control.py:55 +msgid "Brazilian Portuguese" +msgstr "Brasiliansk Portugisisk" + +#: ../src/chat_control.py:55 +msgid "Russian" +msgstr "Russisk" + +#: ../src/chat_control.py:55 +msgid "Serbian" +msgstr "Serbisk" + +#: ../src/chat_control.py:55 +msgid "Slovak" +msgstr "Slovakisk" + +#: ../src/chat_control.py:55 +msgid "Swedish" +msgstr "Svensk" + +#: ../src/chat_control.py:55 +msgid "Chinese (Ch)" +msgstr "Kinesisk" + +#: ../src/chat_control.py:283 +msgid "Spelling language" +msgstr "Sprog for stavekontrollen" + +#. we are not connected +#: ../src/chat_control.py:306 ../src/chat_control.py:512 +msgid "A connection is not available" +msgstr "En tilslutning er ikke tilgængelig" + +#: ../src/chat_control.py:307 ../src/chat_control.py:513 +msgid "Your message can not be sent until you are connected." +msgstr "Din besked kan ikke blive sendt før du er tilsluttet." + +#: ../src/chat_control.py:1138 +#, python-format +msgid "%(nickname)s from group chat %(room_name)s" +msgstr "%(nickname)s fra gruppesamtale %(room_name)s" + +#. we talk about a contact here +#: ../src/chat_control.py:1226 +#, python-format +msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" +msgstr "%s har ikke rundsendt en OpenPGP nøgle, og du har ikke tilskrevet en" + +#: ../src/chat_control.py:1265 ../src/groupchat_control.py:1395 +#, python-format +msgid "No such command: /%s (if you want to send this, prefix it with /say)" +msgstr "" +"Denne kommando findes ikke: /%s (hvis du vil sende dette, skriv /say før " +"teksten" + +#: ../src/chat_control.py:1272 ../src/groupchat_control.py:1418 +#, python-format +msgid "Commands: %s" +msgstr "Kommandoer: %s" + +#: ../src/chat_control.py:1275 ../src/groupchat_control.py:1432 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "Brug: /%s, rydder tekst vinduet" + +#: ../src/chat_control.py:1278 ../src/groupchat_control.py:1437 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "Brug: /%s, gem samtale knapper" + +#: ../src/chat_control.py:1281 ../src/groupchat_control.py:1453 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Brug: /%s <handling>, sender handling til den nuværende gruppe samtale. Brug " +"tredie person. (f.eks. /%s eksploderer.)" + +#: ../src/chat_control.py:1285 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "Brug: %s, sender en ping til kontakten" + +#: ../src/chat_control.py:1288 +#, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "Brug: /%s, send beskeden til kontakten" + +#: ../src/chat_control.py:1291 ../src/groupchat_control.py:1476 +#, python-format +msgid "No help info for /%s" +msgstr "Ingen hjælp for /%s" + +#: ../src/chat_control.py:1429 ../src/chat_control.py:1455 +msgid "Encryption enabled" +msgstr "Kryptering aktiveret" + +#: ../src/chat_control.py:1434 +msgid "Session WILL be logged" +msgstr "Session VIL blive logget" + +#: ../src/chat_control.py:1436 +msgid "Session WILL NOT be logged" +msgstr "Session VIL IKKE blive logget" + +#: ../src/chat_control.py:1443 +msgid "The following message was NOT encrypted" +msgstr "Den følgende besked var IKKE krypteret" + +#: ../src/chat_control.py:1447 ../src/chat_control.py:1460 +#: ../src/chat_control.py:2089 +msgid "Encryption disabled" +msgstr "Kryptering ikke aktiveret" + +#. add_to_roster_menuitem +#: ../src/chat_control.py:1617 ../src/conversation_textview.py:562 +#: ../src/dialogs.py:674 ../src/gajim.py:894 ../src/gajim.py:895 +#: ../src/gajim.py:1364 ../src/roster_window.py:345 +#: ../src/roster_window.py:429 ../src/roster_window.py:1790 +#: ../src/roster_window.py:1800 ../src/roster_window.py:2038 +#: ../src/roster_window.py:2276 ../src/roster_window.py:3124 +#: ../src/roster_window.py:3331 ../src/roster_window.py:4691 +#: ../src/roster_window.py:4693 ../src/common/contacts.py:84 +#: ../src/common/helpers.py:44 ../src/common/helpers.py:258 +msgid "Not in Roster" +msgstr "Ikke i Kontaktvinduet" + +#. %s is being replaced in the code with JID +#: ../src/chat_control.py:1761 +#, python-format +msgid "You just received a new message from \"%s\"" +msgstr "Du har netop modtaget en besked fra \"%s\"" + +#: ../src/chat_control.py:1762 +msgid "" +"If you close this tab and you have history disabled, this message will be " +"lost." +msgstr "" +"Hvis du lukker dette faneblad og ikke har aktiveret historie loggen, vil du\n" +"miste denne besked." + +#: ../src/config.py:122 ../src/config.py:544 +msgid "Disabled" +msgstr "Ikke aktiveret" + +#: ../src/config.py:288 +msgid "Active" +msgstr "Aktiv" + +#: ../src/config.py:296 +msgid "Event" +msgstr "Hændelse" + +#: ../src/config.py:617 ../src/dialogs.py:958 +#, python-format +msgid "Dictionary for lang %s not available" +msgstr "Ordbog for sproget %s er ikke tilgængelig" + +#: ../src/config.py:618 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option." +msgstr "" +"For at bruge stavekontrollen mÃ¥ du installer en %s ordbog, eller vælge et " +"andet sprog ved indstillingen for sprog til stavekontrollen." + +#: ../src/config.py:969 +msgid "status message title" +msgstr "status besked Titel" + +#: ../src/config.py:969 +msgid "status message text" +msgstr "status besked tekst" + +#: ../src/config.py:1005 +msgid "First Message Received" +msgstr "Første Besked er Modtaget" + +#: ../src/config.py:1006 +msgid "Next Message Received" +msgstr "Næste Besked er Modtaget" + +#: ../src/config.py:1007 +msgid "Contact Connected" +msgstr "Kontakt er Tilsluttet" + +#: ../src/config.py:1008 +msgid "Contact Disconnected" +msgstr "Kontakt er ikke Tilsluttet" + +#: ../src/config.py:1009 +msgid "Message Sent" +msgstr "Besked er Sendt" + +#: ../src/config.py:1010 +msgid "Group Chat Message Highlight" +msgstr "Gruppe Samtale Besked Fremhævning" + +#: ../src/config.py:1011 +msgid "Group Chat Message Received" +msgstr "Gruppe Samtale Besked Modtaget" + +#: ../src/config.py:1018 +msgid "GMail Email Received" +msgstr "GMail E-post Modtaget" + +#. Name column +#: ../src/config.py:1287 ../src/dialogs.py:1397 ../src/dialogs.py:1461 +#: ../src/disco.py:736 ../src/disco.py:1559 ../src/disco.py:1805 +#: ../src/history_window.py:78 +msgid "Name" +msgstr "Navn" + +#: ../src/config.py:1395 ../src/common/config.py:375 +msgid "Be right back." +msgstr "Er straks tilbage." + +#: ../src/config.py:1399 +msgid "Relogin now?" +msgstr "Log ind igen nu?" + +#: ../src/config.py:1400 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "" +"Hvis du vil at alle ændringerne skal træde i kraft nu, mÃ¥ du logge ind igen." + +#: ../src/config.py:1495 ../src/config.py:1594 +msgid "OpenPGP is not usable in this computer" +msgstr "Det er ikke muligt at bruge OpenPGP pÃ¥ denne computer" + +#: ../src/config.py:1630 ../src/config.py:1674 +msgid "Unread events" +msgstr "Ulæste hændelser" + +#: ../src/config.py:1631 +msgid "Read all pending events before removing this account." +msgstr "Læs alle ventende hændelser før denne konto fjernes." + +#: ../src/config.py:1660 +#, python-format +msgid "You have opened chat in account %s" +msgstr "Du har en Ã¥ben samtale med kontonavnet %s" + +#: ../src/config.py:1661 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "" +"Alle samtale og gruppesamtale vinduer vil blive lukket. Vil du fortsætte?" + +#: ../src/config.py:1670 +msgid "You are currently connected to the server" +msgstr "Du er for øjeblikket tilsluttet til serveren" + +#: ../src/config.py:1671 +msgid "To change the account name, you must be disconnected." +msgstr "For at ændre kontonavnet mÃ¥ du afbryde din tilslutning" + +#: ../src/config.py:1675 +msgid "To change the account name, you must read all pending events." +msgstr "For at ændre kontonavnet mÃ¥ du læse alle ventende hændelser." + +#: ../src/config.py:1681 +msgid "Account Name Already Used" +msgstr "Kontonavnet er allerede i brug" + +#: ../src/config.py:1682 +msgid "" +"This name is already used by another of your accounts. Please choose another " +"name." +msgstr "" +"Dette navn er allerede brugt til en af dine andre kontoer. Vælg venligst et " +"andet navn." + +#: ../src/config.py:1686 ../src/config.py:1690 +msgid "Invalid account name" +msgstr "Ugyldigt kontonavn" + +#: ../src/config.py:1687 +msgid "Account name cannot be empty." +msgstr "Kontonavnet kan ikke være tomt." + +#: ../src/config.py:1691 +msgid "Account name cannot contain spaces." +msgstr "Kontonavnet kan ikke indeholde mellemrom." + +#: ../src/config.py:1755 +msgid "Rename Account" +msgstr "Omdøb Konto" + +#: ../src/config.py:1756 +#, python-format +msgid "Enter a new name for account %s" +msgstr "Indtast et nyt navn for kontoen %s" + +#: ../src/config.py:1774 ../src/config.py:1782 ../src/config.py:1822 +#: ../src/config.py:3048 +msgid "Invalid Jabber ID" +msgstr "Ugyldigt Jabber ID" + +#: ../src/config.py:1783 +msgid "A Jabber ID must be in the form \"user@servername\"." +msgstr "Et Jabber ID mÃ¥ være pÃ¥ formen \"bruger@servernavn\"." + +#: ../src/config.py:1968 ../src/config.py:3119 +msgid "Invalid entry" +msgstr "Ugyldig indgang" + +#: ../src/config.py:1969 ../src/config.py:3120 +msgid "Custom port must be a port number." +msgstr "Personlig port mÃ¥ være et port nummer." + +#: ../src/config.py:1990 +msgid "Failed to get secret keys" +msgstr "Forsøg pÃ¥ at hente krypteringsnøgler mislykkedes" + +#: ../src/config.py:1991 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "Der opstod et problem under forsøget pÃ¥ at hente dine OpenPGP nøgler." + +#: ../src/config.py:1994 +msgid "OpenPGP Key Selection" +msgstr "OpenPGP Nøgle Valg" + +#: ../src/config.py:1995 +msgid "Choose your OpenPGP key" +msgstr "Vælg din OpenPGP Nøgle" + +#: ../src/config.py:2052 +msgid "No such account available" +msgstr "Ingen konto ved det navn er tilgængelig" + +#: ../src/config.py:2053 +msgid "You must create your account before editing your personal information." +msgstr "Du mÃ¥ oprette en konto før du kan redigere din personlige information." + +#: ../src/config.py:2060 ../src/dialogs.py:1244 ../src/dialogs.py:1385 +#: ../src/dialogs.py:1565 ../src/disco.py:420 ../src/profile_window.py:325 +msgid "You are not connected to the server" +msgstr "Du er ikke tilsluttet til serveren" + +#: ../src/config.py:2061 +msgid "Without a connection, you can not edit your personal information." +msgstr "Uden en tilslutning kan du ikke redigere din personlige information." + +#: ../src/config.py:2065 +msgid "Your server doesn't support Vcard" +msgstr "Din server understøtter ikke Vcard" + +#: ../src/config.py:2066 +msgid "Your server can't save your personal information." +msgstr "Din server kan ikke gemme din personlige information." + +#: ../src/config.py:2097 +msgid "Account Local already exists." +msgstr "Den Lokale Konto eksisterer allerede." + +#: ../src/config.py:2098 +msgid "Please rename or remove it before enabling link-local messaging." +msgstr "Omdøb eller fjern den før du aktiverer link-local beskeder." + +#: ../src/config.py:2274 +#, python-format +msgid "Edit %s" +msgstr "Rediger %s" + +#: ../src/config.py:2276 +#, python-format +msgid "Register to %s" +msgstr "Registrer til %s" + +#. list at the beginning +#: ../src/config.py:2312 +msgid "Ban List" +msgstr "Liste over bandlyste" + +#: ../src/config.py:2313 +msgid "Member List" +msgstr "Medlems Liste" + +#: ../src/config.py:2314 +msgid "Owner List" +msgstr "Ejer Liste" + +#: ../src/config.py:2315 +msgid "Administrator List" +msgstr "Administrator Liste" + +#. Address column +#. holds JID (who said this) +#: ../src/config.py:2364 ../src/disco.py:743 ../src/history_manager.py:155 +msgid "JID" +msgstr "JID" + +#: ../src/config.py:2372 +msgid "Reason" +msgstr "Grund" + +#: ../src/config.py:2377 +msgid "Nick" +msgstr "Kælenavne" + +#: ../src/config.py:2381 +msgid "Role" +msgstr "Rolle" + +#: ../src/config.py:2406 +msgid "Banning..." +msgstr "Bandlysning..." + +#. You can move '\n' before user@domain if that line is TOO BIG +#: ../src/config.py:2408 +msgid "" +"<b>Whom do you want to ban?</b>\n" +"\n" +msgstr "" +"<b>Hvem vil du bandlyse?</b>\n" +"\n" + +#: ../src/config.py:2410 +msgid "Adding Member..." +msgstr "Tilføj Medlem..." + +#: ../src/config.py:2411 +msgid "" +"<b>Whom do you want to make a member?</b>\n" +"\n" +msgstr "" +"<b>Hvem vil du gøre til medlem?</b>\n" +"\n" + +#: ../src/config.py:2413 +msgid "Adding Owner..." +msgstr "Tilføj Ejer..." + +#: ../src/config.py:2414 +msgid "" +"<b>Whom do you want to make an owner?</b>\n" +"\n" +msgstr "" +"<b>Hvem vil du gøre til ejer?</b>\n" +"\n" + +#: ../src/config.py:2416 +msgid "Adding Administrator..." +msgstr "Tilføj Administrator..." + +#: ../src/config.py:2417 +msgid "" +"<b>Whom do you want to make an administrator?</b>\n" +"\n" +msgstr "" +"<b>Hvem vil du gøre til administrator?</b>\n" +"\n" + +#: ../src/config.py:2418 +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 "" +"Kan være en af de følgende:\n" +"1. bruger@domæne/resource (kun denne resource træffer).\n" +"2. bruger@domæne (en hvilket som helst resource træffer).\n" +"3. domæne/resource (kun denne resource træffer).\n" +"4. domæne (domænet træffer, ligeledes et hvilken som helst bruger@domæne,\n" +"domæne/resource, eller adresse indeholdende et subdomæne." + +#: ../src/config.py:2522 +#, python-format +msgid "Removing %s account" +msgstr "Fjerne kontoen med navnet %s" + +#: ../src/config.py:2539 ../src/gajim.py:1307 ../src/roster_window.py:3390 +msgid "Password Required" +msgstr "Adgangskode er PÃ¥krævet" + +#: ../src/config.py:2540 ../src/roster_window.py:3386 +#, python-format +msgid "Enter your password for account %s" +msgstr "Skriv din adgangskode for kontoen %s" + +#: ../src/config.py:2541 ../src/roster_window.py:3391 +msgid "Save password" +msgstr "Gem adgangskode" + +#: ../src/config.py:2555 +#, python-format +msgid "Account \"%s\" is connected to the server" +msgstr "Kontoen \"%s\" er tilsluttet til serveren" + +#: ../src/config.py:2556 +msgid "If you remove it, the connection will be lost." +msgstr "Hvis du fjerne den vil tilslutningen tabes." + +#: ../src/config.py:2649 +msgid "Default" +msgstr "Standard" + +#: ../src/config.py:2649 +msgid "?print_status:All" +msgstr "?print_status:Alle" + +#: ../src/config.py:2650 +msgid "Enter and leave only" +msgstr "GÃ¥ kun ind og ud" + +#: ../src/config.py:2651 +msgid "?print_status:None" +msgstr "?print_status:Ingen" + +#: ../src/config.py:2720 +msgid "New Group Chat" +msgstr "Ny Gruppe Samtale" + +#: ../src/config.py:2753 +msgid "This bookmark has invalid data" +msgstr "Dette bogmærke er ugyldigt" + +#: ../src/config.py:2754 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Fyld ud server og rum tekstindtastningsfelterne eller fjern dette bogmærke." + +#: ../src/config.py:3031 +msgid "Invalid username" +msgstr "Ugyldigt brugernavn" + +#: ../src/config.py:3033 +msgid "You must provide a username to configure this account." +msgstr "Du mÃ¥ give et brugernavn for at konfigurere denne konto." + +#: ../src/config.py:3059 +msgid "Duplicate Jabber ID" +msgstr "Jabber ID eksisterer" + +#: ../src/config.py:3060 +msgid "This account is already configured in Gajim." +msgstr "Denne konto er allerede konfigureret i Gajim." + +#: ../src/config.py:3077 +msgid "Account has been added successfully" +msgstr "Kontoen er blevet tilføjet med succes" + +#: ../src/config.py:3078 ../src/config.py:3223 +msgid "" +"You can set advanced account options by pressing the Advanced button, or " +"later by choosing the Accounts menuitem under the Edit menu from the main " +"window." +msgstr "Du kan sætte avancerede konto indstillinger ved at trykke Avanceret knappen, eller senere ved at vælge kontoens menupunkt under Rediger menuen fra hovedvinduet." + +#: ../src/config.py:3095 +msgid "Invalid server" +msgstr "Ugyldigt server" + +#: ../src/config.py:3096 +msgid "Please provide a server on which you want to register." +msgstr "Anfør en server som du vil registrere dig ved." + +#: ../src/config.py:3202 ../src/config.py:3241 +msgid "An error occurred during account creation" +msgstr "Under oprettelsen af kontoen opstod der en fejl" + +#: ../src/config.py:3222 +msgid "Your new account has been created successfully" +msgstr "Din nye konto er blevet oprettet med succes" + +#: ../src/config.py:3327 +msgid "Account name is in use" +msgstr "Kontonavnet er i brug" + +#: ../src/config.py:3328 +msgid "You already have an account using this name." +msgstr "Du har allered en konto med dette navn." + +#: ../src/conversation_textview.py:337 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "Teksten under denne linje er hvad der er blevet sagt siden sidste gang du var opmærksom pÃ¥ denne gruppe samtale" + +#: ../src/conversation_textview.py:409 +#, python-format +msgid "_Actions for \"%s\"" +msgstr "_Handlinger for \"%s\"" + +#: ../src/conversation_textview.py:421 +msgid "Read _Wikipedia Article" +msgstr "Læs _Wikipedia Artikel" + +#: ../src/conversation_textview.py:426 +msgid "Look it up in _Dictionary" +msgstr "SlÃ¥ dette op i Or_dbogen" + +#. we must have %s in the url if not WIKTIONARY +#: ../src/conversation_textview.py:442 +#, python-format +msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" +msgstr "Ordbogens URL mangler en \"%s\" og det mÃ¥ ikke være WIKTIONARY" + +#. we must have %s in the url +#: ../src/conversation_textview.py:455 +#, python-format +msgid "Web Search URL is missing an \"%s\"" +msgstr "Web søge URL'en mangler en \"%s\"" + +#: ../src/conversation_textview.py:458 +msgid "Web _Search for it" +msgstr "Søg pÃ¥ nettet efter det" + +#: ../src/conversation_textview.py:464 +msgid "Open as _Link" +msgstr "Ã…bn som et _Link" + +#: ../src/conversation_textview.py:929 +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:933 +#, python-format +msgid "%i days ago" +msgstr "%i dage siden" + +#. if we have subject, show it too! +#: ../src/conversation_textview.py:967 +#, python-format +msgid "Subject: %s\n" +msgstr "Emne: %s\n" + +#: ../src/dialogs.py:64 +#, python-format +msgid "Contact name: <i>%s</i>" +msgstr "Kontakt navn: <i>%s</i>" + +#: ../src/dialogs.py:66 +#, python-format +msgid "Jabber ID: <i>%s</i>" +msgstr "Jabber ID: <i>%s</i>" + +#: ../src/dialogs.py:216 +msgid "Group" +msgstr "Gruppe" + +#: ../src/dialogs.py:223 +msgid "In the group" +msgstr "I gruppen" + +#: ../src/dialogs.py:274 +msgid "KeyID" +msgstr "Nøgle ID" + +#: ../src/dialogs.py:277 +msgid "Contact name" +msgstr "Kontakt navn" + +#: ../src/dialogs.py:323 +#, python-format +msgid "%s Status Message" +msgstr "%s Status Besked" + +#: ../src/dialogs.py:325 +msgid "Status Message" +msgstr "Status Besked" + +#: ../src/dialogs.py:425 +msgid "Save as Preset Status Message" +msgstr "Gem som Forvalgt Status Besked" + +#: ../src/dialogs.py:426 +msgid "Please type a name for this status message" +msgstr "Skriv et navn for denne status besked" + +#: ../src/dialogs.py:437 +msgid "Overwrite Status Message?" +msgstr "Overskriv Status Besked?" + +#: ../src/dialogs.py:438 +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "Dette navn er allerede i brug. Vil du overskrive denne status besked?" + +#: ../src/dialogs.py:454 +msgid "AIM Address:" +msgstr "AIM Adresse:" + +#: ../src/dialogs.py:455 +msgid "GG Number:" +msgstr "GG Nummer:" + +#: ../src/dialogs.py:456 +msgid "ICQ Number:" +msgstr "ICQ Nummer:" + +#: ../src/dialogs.py:457 +msgid "MSN Address:" +msgstr "MSN Adresse:" + +#: ../src/dialogs.py:458 +msgid "Yahoo! Address:" +msgstr "Yahoo! Adresse:" + +#: ../src/dialogs.py:495 +#, python-format +msgid "Please fill in the data of the contact you want to add in account %s" +msgstr "Fyld ind data for den kontakt som du vil tilføje kontoen med navnet %s" + +#: ../src/dialogs.py:497 +msgid "Please fill in the data of the contact you want to add" +msgstr "Fyld ind data for den kontakt som du vil tilføje" + +#: ../src/dialogs.py:654 ../src/dialogs.py:660 +msgid "Invalid User ID" +msgstr "Ugyldig Bruger ID" + +#: ../src/dialogs.py:661 +msgid "The user ID must not contain a resource." +msgstr "Bruger ID'en mÃ¥ ikke indeholde en resource." + +#: ../src/dialogs.py:675 +msgid "Contact already in roster" +msgstr "Kontakten er allerede i kontaktvinduet" + +#: ../src/dialogs.py:676 +msgid "This contact is already listed in your roster." +msgstr "Denne kontakt er allered i dit kontaktvindue" + +#: ../src/dialogs.py:712 +msgid "User ID:" +msgstr "Bruger ID:" + +#: ../src/dialogs.py:774 +msgid "A GTK+ jabber client" +msgstr "En GTK+ jabber klient" + +#: ../src/dialogs.py:775 +msgid "GTK+ Version:" +msgstr "GTK+ Version:" + +#: ../src/dialogs.py:776 +msgid "PyGTK Version:" +msgstr "PyGTK Version:" + +#: ../src/dialogs.py:790 +msgid "Current Developers:" +msgstr "Nuværende Programudviklere:" + +#: ../src/dialogs.py:792 +msgid "Past Developers:" +msgstr "Tidligere Programudviklerer:" + +#: ../src/dialogs.py:802 +msgid "THANKS:" +msgstr "TAK:" + +#. remove one english sentence +#. and add it manually as translatable +#: ../src/dialogs.py:808 +msgid "Last but not least, we would like to thank all the package maintainers." +msgstr "Sidst men ikke mindst, vil vi gerne takke alle pakke vedligeholdere." + +#. here you write your name in the form Name FamilyName <someone@somewhere> +#: ../src/dialogs.py:821 +msgid "translator-credits" +msgstr "Niels Felsted Thorsen <felsted@fsfe.org>" + +#: ../src/dialogs.py:951 +#, python-format +msgid "Unable to bind to port %s." +msgstr "Ikke i stand til at tildele port %s." + +#: ../src/dialogs.py:952 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"cancelled." +msgstr "" +"MÃ¥ske har du en anden instans af Gajim kørende. Filoverførsler vil blive " +"annulleret." + +#: ../src/dialogs.py:959 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"Du mÃ¥ installere en %s ordbog for at bruge stavekontrol, eller vælge et " +"andet sprog med stavekontrol sprog indstillingen.\n" +"\n" +"Egenskaben med at fremhæve stavefejl vil ikke blive brugt" + +#: ../src/dialogs.py:1173 +#, python-format +msgid "Subscription request for account %s from %s" +msgstr "Forespørgsel pÃ¥ abonnering for konto %s fra %s" + +#: ../src/dialogs.py:1176 +#, python-format +msgid "Subscription request from %s" +msgstr "Forespørgsel om abonnering fra %s" + +#: ../src/dialogs.py:1237 ../src/roster_window.py:763 +#, python-format +msgid "You are already in group chat %s" +msgstr "Du er allerede i en gruppe samtale %s" + +#: ../src/dialogs.py:1245 +msgid "You can not join a group chat unless you are connected." +msgstr "Du kan kun deltage i en gruppe samtale hvis du er tilsluttet." + +#: ../src/dialogs.py:1263 +#, python-format +msgid "Join Group Chat with account %s" +msgstr "Deltag i Gruppe Samtale med kontoen %s" + +#: ../src/dialogs.py:1333 ../src/dialogs.py:1339 +#: ../src/groupchat_control.py:1646 +msgid "Invalid group chat Jabber ID" +msgstr "Ugyldig gruppe samtale Jabber ID" + +#: ../src/dialogs.py:1334 ../src/dialogs.py:1340 +#: ../src/groupchat_control.py:1647 +msgid "The group chat Jabber ID has not allowed characters." +msgstr "Gruppe samtale Jabber ID'en indeholder ikke tilladte tegn." + +#: ../src/dialogs.py:1346 +msgid "This is not a group chat" +msgstr "Dette er ikke en gruppe samtale" + +#: ../src/dialogs.py:1347 +#, python-format +msgid "%s is not the name of a group chat." +msgstr "%s er ikke navnet pÃ¥ en gruppe samtale." + +#: ../src/dialogs.py:1386 +msgid "Without a connection, you can not synchronise your contacts." +msgstr "Du kan kun synkronisere dine kontakter nÃ¥r du er tilsluttet." + +#: ../src/dialogs.py:1400 +msgid "Server" +msgstr "Server" + +#: ../src/dialogs.py:1433 +msgid "This account is not connected to the server" +msgstr "Denne konto er ikke tilsluttet til serveren" + +#: ../src/dialogs.py:1434 +msgid "You cannot synchronize with an account unless it is connected." +msgstr "Du kan kun synkronisere med en konto hvis du er tilsluttet." + +#: ../src/dialogs.py:1458 +msgid "Synchronise" +msgstr "Synkroniser" + +#: ../src/dialogs.py:1516 +#, python-format +msgid "Start Chat with account %s" +msgstr "Start en samtale med konto %s" + +#: ../src/dialogs.py:1518 +msgid "Start Chat" +msgstr "Start Samtale" + +#: ../src/dialogs.py:1519 +msgid "" +"Fill in the nickname or the Jabber ID of the contact you would like\n" +"to send a chat message to:" +msgstr "" +"Udfyld kælenavnet eller Jabber ID'en for den kontakt du vil sende\n" +"en besked til:" + +#. if offline or connecting +#: ../src/dialogs.py:1544 ../src/dialogs.py:1891 ../src/dialogs.py:2027 +msgid "Connection not available" +msgstr "Tilslutning er ikke tilgængelig" + +#: ../src/dialogs.py:1545 ../src/dialogs.py:1892 ../src/dialogs.py:2028 +#, python-format +msgid "Please make sure you are connected with \"%s\"." +msgstr "Vær venligst sikker pÃ¥ at du er tilsluttet med \"%s\"." + +#: ../src/dialogs.py:1554 ../src/dialogs.py:1557 +msgid "Invalid JID" +msgstr "Ugyldig JID" + +#: ../src/dialogs.py:1557 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "Kan ikke fortolke \"%s\"." + +#: ../src/dialogs.py:1566 +msgid "Without a connection, you can not change your password." +msgstr "Du kan kun ændre din adgangskode hvis du er tilsluttet." + +#: ../src/dialogs.py:1584 +msgid "Invalid password" +msgstr "Ugyldig adgangskode" + +#: ../src/dialogs.py:1585 +msgid "You must enter a password." +msgstr "Du mÃ¥ indtaste en adgangskode." + +#: ../src/dialogs.py:1589 +msgid "Passwords do not match" +msgstr "Adgangskoderne er ikke ens" + +#: ../src/dialogs.py:1590 +msgid "The passwords typed in both fields must be identical." +msgstr "Adgangskoderene i de to tekstindtastningsfelter mÃ¥ være identiske." + +#. img to display +#. default value +#: ../src/dialogs.py:1632 ../src/notify.py:219 ../src/notify.py:429 +msgid "Contact Signed In" +msgstr "Kontakt Loggede Ind" + +#: ../src/dialogs.py:1634 ../src/notify.py:227 ../src/notify.py:431 +msgid "Contact Signed Out" +msgstr "Kontakt Loggede Ud" + +#. chat message +#: ../src/dialogs.py:1636 ../src/notify.py:250 ../src/notify.py:433 +msgid "New Message" +msgstr "Ny Besked" + +#. single message +#: ../src/dialogs.py:1636 ../src/notify.py:231 ../src/notify.py:433 +msgid "New Single Message" +msgstr "Ny Enkel Besked" + +#. private message +#: ../src/dialogs.py:1637 ../src/notify.py:238 ../src/notify.py:434 +msgid "New Private Message" +msgstr "Ny Privat Besked" + +#: ../src/dialogs.py:1637 ../src/gajim.py:1460 ../src/notify.py:442 +msgid "New E-mail" +msgstr "Ny E-post" + +#: ../src/dialogs.py:1639 ../src/gajim.py:1668 ../src/notify.py:436 +msgid "File Transfer Request" +msgstr "Filoverførsel Forespørgsel" + +#: ../src/dialogs.py:1641 ../src/gajim.py:1432 ../src/gajim.py:1644 +#: ../src/notify.py:438 +msgid "File Transfer Error" +msgstr "Filoverførsel Fejl" + +#: ../src/dialogs.py:1643 ../src/gajim.py:1707 ../src/gajim.py:1729 +#: ../src/gajim.py:1746 ../src/notify.py:440 +msgid "File Transfer Completed" +msgstr "Filoverførsel er Fuldført" + +#: ../src/dialogs.py:1644 ../src/gajim.py:1710 ../src/notify.py:440 +msgid "File Transfer Stopped" +msgstr "Filoverførsel Stoppede" + +#: ../src/dialogs.py:1646 ../src/gajim.py:1328 ../src/notify.py:444 +msgid "Groupchat Invitation" +msgstr "Gruppesamtale Invitation" + +#: ../src/dialogs.py:1648 ../src/notify.py:211 ../src/notify.py:446 +msgid "Contact Changed Status" +msgstr "Kontakt Ændrede Status" + +#: ../src/dialogs.py:1821 +#, python-format +msgid "Single Message using account %s" +msgstr "Enkel Besked med konto %s" + +#: ../src/dialogs.py:1823 +#, python-format +msgid "Single Message in account %s" +msgstr "Enkel Besked i konto %s" + +#: ../src/dialogs.py:1825 +msgid "Single Message" +msgstr "Enkel Besked" + +#. prepare UI for Sending +#: ../src/dialogs.py:1828 +#, python-format +msgid "Send %s" +msgstr "Send %s" + +#. prepare UI for Receiving +#: ../src/dialogs.py:1851 +#, python-format +msgid "Received %s" +msgstr "Modtaget %s" + +#. we create a new blank window to send and we preset RE: and to jid +#: ../src/dialogs.py:1928 +#, python-format +msgid "RE: %s" +msgstr "SV: %s" + +#: ../src/dialogs.py:1929 +#, python-format +msgid "%s wrote:\n" +msgstr "%s skrev:\n" + +#: ../src/dialogs.py:1973 +#, python-format +msgid "XML Console for %s" +msgstr "XML Konsol for %s" + +#: ../src/dialogs.py:1975 +msgid "XML Console" +msgstr "XML Konsol" + +#: ../src/dialogs.py:2098 +#, python-format +msgid "Privacy List <b><i>%s</i></b>" +msgstr "Privatlivs Liste <b><i>%s</i></b>" + +#: ../src/dialogs.py:2102 +#, python-format +msgid "Privacy List for %s" +msgstr "Privatlivs Liste for %s" + +#: ../src/dialogs.py:2158 +#, python-format +msgid "Order: %s, action: %s, type: %s, value: %s" +msgstr "Rækkefølge: %s, handling: %s, type: %s, værdi: %s" + +#: ../src/dialogs.py:2161 +#, python-format +msgid "Order: %s, action: %s" +msgstr "Rækkefølge: %s, handling: %s" + +#: ../src/dialogs.py:2203 +msgid "<b>Edit a rule</b>" +msgstr "<b>Rediger en regel</b>" + +#: ../src/dialogs.py:2290 +msgid "<b>Add a rule</b>" +msgstr "<b>Tilføj en regel</b>" + +#: ../src/dialogs.py:2386 +#, python-format +msgid "Privacy Lists for %s" +msgstr "Privatlivs Liste for %s" + +#: ../src/dialogs.py:2388 +msgid "Privacy Lists" +msgstr "Privatlivs lister" + +#: ../src/dialogs.py:2458 +msgid "Invalid List Name" +msgstr "Ugyldig Listenavn" + +#: ../src/dialogs.py:2459 +msgid "You must enter a name to create a privacy list." +msgstr "Du mÃ¥ indtaste et navn for at skabe en privatlivs liste." + +#: ../src/dialogs.py:2496 +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact har inviteret dig til at deltage i en diskussion" + +#: ../src/dialogs.py:2498 +#, python-format +msgid "$Contact has invited you to group chat %(room_jid)s" +msgstr "" +"$Contact har inviteret dig til at deltage i en gruppe samtale %(room_jid)s" + +#. only if not None and not '' +#: ../src/dialogs.py:2510 +#, python-format +msgid "Comment: %s" +msgstr "Kommentar: %s" + +#: ../src/dialogs.py:2576 +msgid "Choose Sound" +msgstr "Vælg Lyd" + +#: ../src/dialogs.py:2586 ../src/dialogs.py:2634 +msgid "All files" +msgstr "Alle filer" + +#: ../src/dialogs.py:2591 +msgid "Wav Sounds" +msgstr "Wav Lyde" + +#: ../src/dialogs.py:2624 +msgid "Choose Image" +msgstr "Vælg Billede" + +#: ../src/dialogs.py:2639 +msgid "Images" +msgstr "Billeder" + +#: ../src/dialogs.py:2703 +#, python-format +msgid "When %s becomes:" +msgstr "NÃ¥r %s bliver:" + +#: ../src/dialogs.py:2705 +#, python-format +msgid "Adding Special Notification for %s" +msgstr "Tilføj Speciel PÃ¥mindelse for %s" + +#. # means number +#: ../src/dialogs.py:2776 +msgid "#" +msgstr "#" + +#: ../src/dialogs.py:2782 +msgid "Condition" +msgstr "Betingelse" + +#: ../src/dialogs.py:2900 +msgid "when I am " +msgstr "nÃ¥r jeg er" + +#: ../src/disco.py:104 +msgid "Others" +msgstr "Andre" + +#: ../src/disco.py:105 ../src/disco.py:106 ../src/disco.py:1345 +#: ../src/gajim.py:644 ../src/roster_window.py:282 ../src/roster_window.py:342 +#: ../src/roster_window.py:382 ../src/roster_window.py:490 +#: ../src/roster_window.py:522 ../src/roster_window.py:524 +#: ../src/roster_window.py:4687 ../src/roster_window.py:4689 +#: ../src/common/contacts.py:290 ../src/common/contacts.py:305 +#: ../src/common/helpers.py:44 +msgid "Transports" +msgstr "Transporter" + +#. conference is a category for listing mostly groupchats in service discovery +#: ../src/disco.py:108 +msgid "Conference" +msgstr "Konference" + +#: ../src/disco.py:421 +msgid "Without a connection, you can not browse available services" +msgstr "Du kan kun gennemse tilgængelige tjenester hvis du er tilsluttet" + +#: ../src/disco.py:495 +#, python-format +msgid "Service Discovery using account %s" +msgstr "Opdag Tjenester med kontoen %s" + +#: ../src/disco.py:497 +msgid "Service Discovery" +msgstr "Opdag Tjenester" + +#: ../src/disco.py:637 +msgid "The service could not be found" +msgstr "Tjenesten findes ikke" + +#: ../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 "" +"Der er ikke nogen tjenester pÃ¥ den adresse som du indtastede, eller serveren " +"gav intet svar. Kontroller adressen og prøv igen." + +#: ../src/disco.py:642 ../src/disco.py:923 +msgid "The service is not browsable" +msgstr "Det er ikke mulig at gennemse denne tjeneste" + +#: ../src/disco.py:643 +msgid "This type of service does not contain any items to browse." +msgstr "Denne type tjeneste har ingen elementer som kan gennemses." + +#: ../src/disco.py:723 +#, python-format +msgid "Browsing %s using account %s" +msgstr "Gennemse %s med konto %s" + +#: ../src/disco.py:762 +msgid "_Browse" +msgstr "_Gennemse" + +#: ../src/disco.py:924 +msgid "This service does not contain any items to browse." +msgstr "Denne tjeneste har ingen elementer som kan gennemses." + +#: ../src/disco.py:1142 +msgid "_Execute Command" +msgstr "_Kør Kommando" + +#: ../src/disco.py:1152 ../src/disco.py:1350 +msgid "Re_gister" +msgstr "Re_gistrer" + +#: ../src/disco.py:1387 +#, python-format +msgid "Scanning %d / %d.." +msgstr "Skanner %d / %d.." + +#. Users column +#: ../src/disco.py:1569 +msgid "Users" +msgstr "Brugere" + +#. Description column +#: ../src/disco.py:1577 +msgid "Description" +msgstr "Beskrivelse" + +#. Id column +#: ../src/disco.py:1585 +msgid "Id" +msgstr "Id" + +#: ../src/disco.py:1814 +msgid "Subscribed" +msgstr "Abonnerede" + +#: ../src/disco.py:1822 +msgid "Node" +msgstr "Knude" + +#: ../src/disco.py:1879 +msgid "New post" +msgstr "Ny post" + +#: ../src/disco.py:1885 +msgid "_Subscribe" +msgstr "_Abonner" + +#: ../src/disco.py:1891 +msgid "_Unsubscribe" +msgstr "_Frameld abonnement" + +#: ../src/features_window.py:41 +msgid "PyOpenSSL" +msgstr "PyOpenSSL" + +#: ../src/features_window.py:42 +msgid "" +"A library used to validate server certificates to ensure a secure connection." +msgstr "Et bibliotek brugt til at validere server certifikater for at sikre en sikker forbindelse." + +#: ../src/features_window.py:43 ../src/features_window.py:44 +msgid "Requires python-pyopenssl." +msgstr "Kræver python-pyopenssl." + +#: ../src/features_window.py:45 +msgid "Bonjour / Zeroconf" +msgstr "Bonjour / Zeroconf" + +#: ../src/features_window.py:46 +msgid "Serverless chatting with autodetected clients in a local network." +msgstr "Serverløs samtale med automatisk opdagede klienter i et lokalt netværk." + +#: ../src/features_window.py:47 +msgid "Requires python-avahi." +msgstr "Kræver python-avahi." + +#: ../src/features_window.py:48 +msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." +msgstr "Kræver pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." + +#: ../src/features_window.py:49 +msgid "gajim-remote" +msgstr "gajim-fjernstyring" + +#: ../src/features_window.py:50 +msgid "A script to controle gajim via commandline." +msgstr "Et script til at kontrollere gajim via kommandolinjen" + +#: ../src/features_window.py:51 +msgid "Requires python-dbus." +msgstr "Kræver python-dbus." + +#: ../src/features_window.py:52 ../src/features_window.py:56 +#: ../src/features_window.py:60 ../src/features_window.py:64 +#: ../src/features_window.py:68 ../src/features_window.py:76 +#: ../src/features_window.py:80 ../src/features_window.py:92 +msgid "Feature not available under Windows." +msgstr "Egenskab ikke tilgængelig under Windows." + +#: ../src/features_window.py:53 +msgid "OpenGPG" +msgstr "OpenGPG" + +#: ../src/features_window.py:54 +msgid "Encrypting chatmessages with gpg keys." +msgstr "Krypter samtale beskeder med gpg nøgler." + +#: ../src/features_window.py:55 +msgid "Requires gpg and python-GnuPGInterface." +msgstr "Kræver gpg og python-GnuPGInterface." + +#: ../src/features_window.py:57 +msgid "network-manager" +msgstr "network-manager" + +#: ../src/features_window.py:58 +msgid "Autodetection of network status." +msgstr "Automatisk opdagelse af netværksstatus." + +#: ../src/features_window.py:59 +msgid "Requires gnome-network-manager and python-dbus." +msgstr "Kræver gnome-network-manager og python-dbus." + +#: ../src/features_window.py:61 +msgid "Session Management" +msgstr "Sessions HÃ¥ndtering" + +#: ../src/features_window.py:62 +msgid "Gajim session is stored on logout and restored on login." +msgstr "Gajim sessionen bliver gemt ved logud og genoprettet ved logind." + +#: ../src/features_window.py:63 +msgid "Requires python-gnome2." +msgstr "Kræver python-gnome2." + +#: ../src/features_window.py:65 +msgid "gnome-keyring" +msgstr "gnome-nøglering" + +#: ../src/features_window.py:66 +msgid "Passwords can be stored securely and not just in plaintext." +msgstr "Adgangskoder kan blive gemt sikkert og ikke bare i ren tekst." + +#: ../src/features_window.py:67 +msgid "Requires gnome-keyring and python-gnome2-desktop." +msgstr "Kræver gnome-keyring og python-gnome2-desktop." + +#: ../src/features_window.py:69 +msgid "SRV" +msgstr "SRV" + +#: ../src/features_window.py:70 +msgid "Ability to connect to servers which is using SRV records." +msgstr "Evnen til at tilslutte til servere som bruger SRV poster." + +#: ../src/features_window.py:71 +msgid "Requires dnsutils." +msgstr "Kræver dnsutils." + +#: ../src/features_window.py:72 +msgid "Requires nslookup to use SRV records." +msgstr "Kræver nslookup for at bruge SRV poster." + +#: ../src/features_window.py:73 +msgid "Spell Checker" +msgstr "Stavekontrol" + +#: ../src/features_window.py:74 +msgid "Spellchecking of composed messages." +msgstr "Stavekontrol af forfattede beskeder." + +#: ../src/features_window.py:75 +msgid "" +"Requires python-gnome2-extras or compilation of gtkspell module from Gajim " +"sources." +msgstr "Kræver python-gnome2-extras eller kompilering af gtkspell modulet fra Gajim kildekoden." + +#: ../src/features_window.py:77 +msgid "Notification-daemon" +msgstr "PÃ¥mindelses-dæmon" + +#: ../src/features_window.py:78 +msgid "Passive popups notifying for new events." +msgstr "Passive pop op vinduer som pÃ¥minder om nye hændelser." + +#: ../src/features_window.py:79 +msgid "" +"Requires python-notify or instead python-dbus in conjunction with " +"notification-daemon." +msgstr "Kræver python-notify eller python-dbus i forbindelse med pÃ¥mindelses-dæmonen." + +#: ../src/features_window.py:81 +msgid "Trayicon" +msgstr "Statusikon" + +#: ../src/features_window.py:82 +msgid "A icon in systemtray reflecting the current presence." +msgstr "Et ikon i statusfeltet som viser din nuværende tilstedeværelse." + +#: ../src/features_window.py:83 +msgid "" +"Requires python-gnome2-extras or compiled trayicon module from Gajim " +"sources." +msgstr "Kræver python-gnome2-extras eller et kompileret statusikon modul fra Gajim kildekoden." + +#: ../src/features_window.py:84 +msgid "Requires PyGTK >= 2.10." +msgstr "Kræver PyGTK >= 2.10." + +#: ../src/features_window.py:85 +msgid "Idle" +msgstr "Tomgang" + +#: ../src/features_window.py:86 +msgid "Ability to measure idle time, in order to set auto status." +msgstr "Evnen til at mÃ¥le tomgangs tid, for at kunne sætte automatisk status." + +#: ../src/features_window.py:87 ../src/features_window.py:88 +msgid "Requires compilation of the idle module from Gajim sources." +msgstr "Kræver kompilering af tomgangs modulet fra Gajim kildekoden." + +#: ../src/features_window.py:89 +msgid "LaTeX" +msgstr "LaTeX" + +#: ../src/features_window.py:90 +msgid "Transform LaTeX espressions between $$ $$." +msgstr "Omdan LaTeX udtryk mellem $$ $$." + +#: ../src/features_window.py:91 +msgid "" +"Requires texlive-latex-base, dvips and imagemagick. You have to set " +"'use_latex' to True in the Advanced Configuration Editor." +msgstr "Kræver texlive-latex-base, dvips og imagemagick. Du mÃ¥ sætte 'use_latex' til True i den avancerede konfigurations editor." + +#: ../src/features_window.py:93 +msgid "End to end encryption" +msgstr "Ende til ende kryptering" + +#: ../src/features_window.py:94 +msgid "Encrypting chatmessages." +msgstr "Krypterer samtale beskeder." + +#: ../src/features_window.py:95 ../src/features_window.py:96 +msgid "Requires python-crypto." +msgstr "Kræver python-crypto." + +#: ../src/features_window.py:97 +msgid "RST Generator" +msgstr "RST Generator" + +#: ../src/features_window.py:98 +msgid "" +"Generate XHTML output from RST code (see http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html)." +msgstr "Generer XHTML uddata fra RST kode (se http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html)." + +#: ../src/features_window.py:99 ../src/features_window.py:100 +msgid "Requires python-docutils." +msgstr "Kræver python-docutils." + +#: ../src/features_window.py:107 ../src/common/helpers.py:239 +msgid "Available" +msgstr "Tilgængelig" + +#: ../src/features_window.py:114 +msgid "Feature" +msgstr "Egenskab" + +#: ../src/filetransfers_window.py:72 +msgid "File" +msgstr "Fil" + +#: ../src/filetransfers_window.py:87 +msgid "Time" +msgstr "Tid" + +#: ../src/filetransfers_window.py:99 +msgid "Progress" +msgstr "Fremgang" + +#: ../src/filetransfers_window.py:159 ../src/filetransfers_window.py:213 +#, python-format +msgid "Filename: %s" +msgstr "Filnavn: %s" + +#: ../src/filetransfers_window.py:160 ../src/filetransfers_window.py:288 +#, 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:169 ../src/filetransfers_window.py:179 +#: ../src/history_manager.py:463 +msgid "You" +msgstr "Du" + +#: ../src/filetransfers_window.py:170 +#, python-format +msgid "Sender: %s" +msgstr "Afsender: %s" + +#: ../src/filetransfers_window.py:171 ../src/filetransfers_window.py:577 +#: ../src/tooltips.py:586 +msgid "Recipient: " +msgstr "Modtager: " + +#: ../src/filetransfers_window.py:182 +#, python-format +msgid "Saved in: %s" +msgstr "Gemt i: %s" + +#: ../src/filetransfers_window.py:184 +msgid "File transfer completed" +msgstr "Filoverførsel er fuldført" + +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:204 +msgid "File transfer cancelled" +msgstr "Filoverførsel er afbrudt" + +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:205 +msgid "Connection with peer cannot be established." +msgstr "Tilslutning til ligeværdige kan ikke oprettes." + +#: ../src/filetransfers_window.py:214 +#, python-format +msgid "Recipient: %s" +msgstr "Modtager: %s" + +#: ../src/filetransfers_window.py:216 +#, python-format +msgid "Error message: %s" +msgstr "Fejl besked: %s" + +#: ../src/filetransfers_window.py:217 +msgid "File transfer stopped by the contact at the other end" +msgstr "Filoverførslen blev stoppet af kontakten i den anden ende" + +#: ../src/filetransfers_window.py:234 +msgid "Choose File to Send..." +msgstr "Vælg en Fil at Sende..." + +#: ../src/filetransfers_window.py:253 +msgid "Gajim cannot access this file" +msgstr "Gajim kan ikke tilgÃ¥ denne fil" + +#: ../src/filetransfers_window.py:254 +msgid "This file is being used by another process." +msgstr "Denne fil bliver brugt af en anden proces." + +#: ../src/filetransfers_window.py:286 +#, python-format +msgid "File: %s" +msgstr "Fil: %s" + +#: ../src/filetransfers_window.py:291 +#, python-format +msgid "Type: %s" +msgstr "Type: %s" + +#: ../src/filetransfers_window.py:293 +#, python-format +msgid "Description: %s" +msgstr "Beskrivelse: %s" + +#: ../src/filetransfers_window.py:294 +#, python-format +msgid "%s wants to send you a file:" +msgstr "%s vil gerne sende dig en fil:" + +#: ../src/filetransfers_window.py:308 ../src/gtkgui_helpers.py:767 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Kan ikke overskrive den eksisterende fil \"%s\"" + +#: ../src/filetransfers_window.py:309 ../src/gtkgui_helpers.py:769 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" +"En fil med dette navn eksisterer allerede og du har ikke rettigheder til at " +"overskrive den." + +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 +msgid "This file already exists" +msgstr "Denne fil eksisterer allerede" + +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 +msgid "What do you want to do?" +msgstr "Hvad vil du gøre?" + +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:783 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "Kataloget \"%s\" er ikke skrivbart" + +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:784 +msgid "You do not have permission to create files in this directory." +msgstr "Du har ikke rettigheder til at oprette filer i dette katalog." + +#: ../src/filetransfers_window.py:338 +msgid "Save File as..." +msgstr "Gem 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 +#, 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:508 +#, python-format +msgid "(%(filesize_unit)s/s)" +msgstr "(%(filesize_unit)s/s)" + +#: ../src/filetransfers_window.py:547 ../src/filetransfers_window.py:550 +msgid "Invalid File" +msgstr "Ugyldig Fil" + +#: ../src/filetransfers_window.py:547 +msgid "File: " +msgstr "Fil: " + +#: ../src/filetransfers_window.py:551 +msgid "It is not possible to send empty files" +msgstr "Det er ikke mulig at sende tomme filer" + +#: ../src/filetransfers_window.py:573 ../src/tooltips.py:576 +msgid "Name: " +msgstr "Navn: " + +#: ../src/filetransfers_window.py:575 ../src/tooltips.py:580 +msgid "Sender: " +msgstr "Afsender: " + +#: ../src/filetransfers_window.py:763 +msgid "Pause" +msgstr "Pause" + +#: ../src/gajim.py:50 +#, python-format +msgid "%s is not a valid loglevel" +msgstr "%s er ikke et gyldigt logniveau" + +#: ../src/gajim.py:143 +msgid "Gajim needs X server to run. Quiting..." +msgstr "Gajim behøver en X server for at kunne køre. Slutter..." + +#: ../src/gajim.py:147 +msgid "Gajim needs PyGTK 2.8 or above" +msgstr "Gajim behøver PyGTK 2.8 eller højere" + +#: ../src/gajim.py:148 +msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." +msgstr "Gajim behøver PyGTK 2.8 eller højere for at køre. Slutter..." + +#: ../src/gajim.py:150 +msgid "Gajim needs GTK 2.8 or above" +msgstr "Gajim behøver GTK 2.8 eller højere" + +#: ../src/gajim.py:151 +msgid "Gajim needs GTK 2.8 or above to run. Quiting..." +msgstr "Gajim behøver GTK 2.8 eller højere for at køre. Slutter..." + +#: ../src/gajim.py:156 +msgid "GTK+ runtime is missing libglade support" +msgstr "GTK+ udførselsmiljø mangler libglade understøttelse" + +#: ../src/gajim.py:158 +#, python-format +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Fjern venligst dit nuværende GTK+ udførselsmiljø og installer den sidste " +"stabile version fra %s" + +#: ../src/gajim.py:160 +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Hver venligst sikker pÃ¥ at GTK+ og PyGTK har libglade understøttelse pÃ¥ dit " +"system." + +#: ../src/gajim.py:165 +msgid "Gajim needs PySQLite2 to run" +msgstr "Gajim behøver PySQLite2 for at køre" + +#: ../src/gajim.py:173 +msgid "Gajim needs pywin32 to run" +msgstr "Gajim behøver pywin32 for at køre" + +#: ../src/gajim.py:174 +#, python-format +msgid "" +"Please make sure that Pywin32 is installed on your system. You can get it at " +"%s" +msgstr "" +"Hver venligst sikker pÃ¥ at Pywin32 er installeret pÃ¥ dit system. Du kan fÃ¥ " +"det fra %s" + +#. set the icon to all newly opened wind +#: ../src/gajim.py:317 +msgid "Gajim is already running" +msgstr "Gajim kører allerede" + +#: ../src/gajim.py:318 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" +"En anden instans af Gajim ser ud til at køre\n" +"Kør alligevel?" + +#: ../src/gajim.py:341 ../src/common/connection_handlers.py:900 +#: ../src/common/connection_handlers.py:1601 +#: ../src/common/connection_handlers.py:1629 +#: ../src/common/connection_handlers.py:1639 +#: ../src/common/connection_handlers.py:1658 +#: ../src/common/connection_handlers.py:1889 +#: ../src/common/connection_handlers.py:2001 ../src/common/connection.py:925 +msgid "Disk Write Error" +msgstr "Disk skrivefejl" + +#: ../src/gajim.py:434 +msgid "Do you accept this request?" +msgstr "Accepterer du denne forespørsel?" + +#: ../src/gajim.py:437 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "HTTP (%s) Autorisering for %s (id: %s)" + +#: ../src/gajim.py:484 ../src/notify.py:448 +msgid "Connection Failed" +msgstr "Tilslutning Fejlede" + +#: ../src/gajim.py:817 +#, python-format +msgid "Subject: %s" +msgstr "Emne: %s" + +#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) +#: ../src/gajim.py:864 ../src/gajim.py:877 +#, python-format +msgid "error while sending %s ( %s )" +msgstr "fejl opstod under sending %s ( %s )" + +#: ../src/gajim.py:910 +msgid "Authorization accepted" +msgstr "Autorisering accepteret" + +#: ../src/gajim.py:911 +#, python-format +msgid "The contact \"%s\" has authorized you to see his or her status." +msgstr "Kontakten \"%s\" har godkendt dig til at se hans eller hendes status." + +#: ../src/gajim.py:919 +#, python-format +msgid "Contact \"%s\" removed subscription from you" +msgstr "Kontakt \"%s\" har fjernet abonneringen pÃ¥ dig" + +#: ../src/gajim.py:920 +msgid "You will always see him or her as offline." +msgstr "Du vil altid se ham eller hende som ikke tilsluttet." + +#: ../src/gajim.py:964 +#, python-format +msgid "Contact with \"%s\" cannot be established" +msgstr "Kontakt med \"%s\" kan ikke blive etableret" + +#: ../src/gajim.py:965 ../src/common/connection.py:466 +msgid "Check your connection or try again later." +msgstr "Kontroller din tilslutning eller forsøg igen senere." + +#: ../src/gajim.py:1136 ../src/roster_window.py:1348 +#, python-format +msgid "%s is now %s (%s)" +msgstr "%s er nu %s (%s)" + +#. No status message +#: ../src/gajim.py:1139 ../src/groupchat_control.py:1101 +#: ../src/roster_window.py:1351 +#, python-format +msgid "%s is now %s" +msgstr "%s er nu %s" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1259 ../src/groupchat_control.py:913 +msgid "Any occupant is allowed to see your full JID" +msgstr "En hvilken som helst deltager har lov til at se din fulde JID" + +#: ../src/gajim.py:1261 +msgid "Room now shows unavailable member" +msgstr "Rummet viser nu; ikke tilgængelige medlemmer" + +#: ../src/gajim.py:1263 +msgid "room now does not show unavailable members" +msgstr "Rummet viser nu ikke; ikke tilgængelige medlemmer" + +#: ../src/gajim.py:1266 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "En ændring i en non-privacy-related rum konfiguration har forekommet" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1269 +msgid "Room logging is now enabled" +msgstr "Rum logging er nu aktiveret" + +#: ../src/gajim.py:1271 +msgid "Room logging is now disabled" +msgstr "Rum logging er nu deaktiveret" + +#: ../src/gajim.py:1273 +msgid "Room is now non-anonymous" +msgstr "Rummet er nu ikke-anonymt" + +#: ../src/gajim.py:1275 +msgid "Room is now semi-anonymous" +msgstr "Rummet er nu semi-anonymt" + +#: ../src/gajim.py:1277 +msgid "Room is now fully-anonymous" +msgstr "Rummet er nu helt anonymt" + +#: ../src/gajim.py:1308 +#, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "En adgangskode er pÃ¥krævet for at deltage i rummet %s. Skriv venligst din adgangskode" + +#: ../src/gajim.py:1338 +msgid "Your passphrase is incorrect" +msgstr "Dit pgp-løsen er ikke korrekt" + +#: ../src/gajim.py:1339 +msgid "You are currently connected without your OpenPGP key." +msgstr "Du er for øjeblikket tilsluttet uden din OpenPGP nøgle." + +#: ../src/gajim.py:1443 +#, python-format +msgid "New mail on %(gmail_mail_address)s" +msgstr "Ny e-post pÃ¥ %(gmail_mail_address)s" + +#: ../src/gajim.py:1445 +#, python-format +msgid "You have %d new mail conversation" +msgid_plural "You have %d new mail conversations" +msgstr[0] "Du har %d ny e-post samtale" +msgstr[1] "Du har %d nye e-post samtaler" + +# Du har %d nye e-post samtaler +#. 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 +#: ../src/gajim.py:1454 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" +"\n" +"Fra: %(from_address)s" + +#: ../src/gajim.py:1665 +#, python-format +msgid "%s wants to send you a file." +msgstr "%s vil gerne sende dig en fil." + +#: ../src/gajim.py:1730 +#, python-format +msgid "You successfully received %(filename)s from %(name)s." +msgstr "Du har succesfuldt modtaget %(filename)s fra %(name)s" + +#. ft stopped +#: ../src/gajim.py:1734 +#, python-format +msgid "File transfer of %(filename)s from %(name)s stopped." +msgstr "Filoverførsel af %(filename)s fra %(name)s er stoppet." + +#: ../src/gajim.py:1747 +#, python-format +msgid "You successfully sent %(filename)s to %(name)s." +msgstr "Du har succesfuldt sendt %(filename)s til %(name)s." + +#. ft stopped +#: ../src/gajim.py:1751 +#, python-format +msgid "File transfer of %(filename)s to %(name)s stopped." +msgstr "Filoverførsel af %(filename)s til %(name)s er stoppet." + +#: ../src/gajim.py:1846 +msgid "Session negotiation cancelled" +msgstr "Session forhandling annulleret" + +#: ../src/gajim.py:1847 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "Klienten ved %s annullerede sessions forhandlingerne." + +#: ../src/gajim.py:1887 ../src/gajim.py:1928 +msgid "Confirm these session options" +msgstr "Bekræft disse sessions indstillinger" + +#: ../src/gajim.py:1888 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t%s\n" +"\n" +"\tAre these options acceptable?" +msgstr "" +"Den fjerne klient vil forhandle en session med disse egenskaber:\n" +"\n" +"\t%s\n" +"\n" +"\tKan disse indstillinger godkendes?" + +#: ../src/gajim.py:1929 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" +"Den fjerne klient valgte disse indstillinger:\n" +"\n" +"%s\n" +"\n" +"Fortsæt med sessionen?" + +#: ../src/gajim.py:2041 +msgid "Username Conflict" +msgstr "Brugernavns Konflikt" + +#: ../src/gajim.py:2042 +msgid "Please type a new username for your local account" +msgstr "Skriv et nyt brugernavn for din lokale konto" + +#: ../src/gajim.py:2059 +msgid "Ping?" +msgstr "Ping?" + +#: ../src/gajim.py:2067 +#, python-format +msgid "Pong! (%s s.)" +msgstr "Pong! (%s .s)" + +#: ../src/gajim.py:2073 +msgid "Error." +msgstr "Fejl." + +#: ../src/gajim.py:2098 +msgid "Resource Conflict" +msgstr "Ressource Konflikt" + +#: ../src/gajim.py:2099 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" +"Du er allerede tilsluttet til denne konto med den samme ressource. Skriv " +"venligst en ny" + +#. it is good to notify the user +#. in case he or she cannot see the output of the console +#: ../src/gajim.py:2461 +msgid "Could not save your settings and preferences" +msgstr "Kunne ikke gemme din opsætning og indstillinger" + +#. sorted alphanum +#: ../src/gajim.py:2596 ../src/common/config.py:86 ../src/common/config.py:395 +#: ../src/common/optparser.py:194 ../src/common/optparser.py:412 +#: ../src/common/optparser.py:446 +msgid "default" +msgstr "standard" + +#: ../src/gajim.py:2683 +msgid "Network Manager support not available" +msgstr "Netværks Manager understøttelse er ikke tilgængelig" + +#: ../src/gajim.py:2784 +msgid "Session Management support not available (missing gnome.ui module)" +msgstr "" +"Sesion hÃ¥ndterer understøttelse er ikke tilgængelig (mangler gnome.ui " +"modulet)" + +#: ../src/gajim-remote.py:65 +msgid "Shows a help on specific command" +msgstr "Viser hjælp for en specifik kommando" + +#. User gets help for the command, specified by this parameter +#: ../src/gajim-remote.py:68 +msgid "command" +msgstr "Kommando" + +#: ../src/gajim-remote.py:69 +msgid "show help on command" +msgstr "Vis hjælp for kommando" + +#: ../src/gajim-remote.py:73 +msgid "Shows or hides the roster window" +msgstr "Viser eller gemmer kontaktvinduet" + +#: ../src/gajim-remote.py:77 +msgid "Pops up a window with the next pending event" +msgstr "Popper op et vindue ved næste hændelse" + +#: ../src/gajim-remote.py:81 +msgid "" +"Prints a list of all contacts in the roster. Each contact appears on a " +"separate line" +msgstr "" +"Udskriver en liste af alle kontakter i kontaktvinduet. Hver kontakt placeres " +"pÃ¥ en separat linie" + +#: ../src/gajim-remote.py:84 ../src/gajim-remote.py:99 +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:122 +#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:145 +#: ../src/gajim-remote.py:166 ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:205 ../src/gajim-remote.py:212 +#: ../src/gajim-remote.py:219 ../src/gajim-remote.py:230 +#: ../src/gajim-remote.py:246 ../src/gajim-remote.py:255 +msgid "account" +msgstr "Konto" + +#: ../src/gajim-remote.py:84 +msgid "show only contacts of the given account" +msgstr "viser kun kontakter for den givne konto" + +#: ../src/gajim-remote.py:90 +msgid "Prints a list of registered accounts" +msgstr "Udskriver en liste af registrerede kontoer" + +#: ../src/gajim-remote.py:94 +msgid "Changes the status of account or accounts" +msgstr "Ændrer status for kontoen eller kontoer" + +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:97 +msgid "status" +msgstr "status" + +#: ../src/gajim-remote.py:97 +msgid "one of: offline, online, chat, away, xa, dnd, invisible " +msgstr "en af: offline, online, chat, away, xa, dnd, invisible" + +#: ../src/gajim-remote.py:98 ../src/gajim-remote.py:119 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:144 +msgid "message" +msgstr "besked" + +#: ../src/gajim-remote.py:98 +msgid "status message" +msgstr "status besked" + +#: ../src/gajim-remote.py:99 +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 "" +"Ændre status for konto \"konto\". Hvis ikke spesificeret, prøv at ændre " +"status for alle kontoer der har sat \"synkroniser med generel status\" " +"indstillingen" + +#: ../src/gajim-remote.py:105 +msgid "Shows the chat dialog so that you can send messages to a contact" +msgstr "Vis samtale vinduet sÃ¥ du kan sende beskeder til en kontakt" + +#: ../src/gajim-remote.py:107 +msgid "JID of the contact that you want to chat with" +msgstr "Kontaktens JID som du vil samtale med" + +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:196 +msgid "if specified, contact is taken from the contact list of this account" +msgstr "hvis specificeret vil kontakten tages fra kontaktlisten fra denne konto" + +#: ../src/gajim-remote.py:114 +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 en ny besked til en kontakt i kontaktvinduet. BÃ¥de OpenPGP nøgle og " +"konto er valgfri. Hvis du ønsker at sætte en 'konto' uden 'OpenPGP nøgle', " +"bare set 'OpenPGP nøgle' til ''." + +#: ../src/gajim-remote.py:118 ../src/gajim-remote.py:131 +msgid "JID of the contact that will receive the message" +msgstr "JID pÃ¥ den kontakt som skal modtage beskeden" + +#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:144 +msgid "message contents" +msgstr "besked indhold" + +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +msgid "pgp key" +msgstr "pgp nøgle" + +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +msgid "if specified, the message will be encrypted using this public key" +msgstr "hvis specificeret vil beskeden blive krypteret med denne nøgle" + +#: ../src/gajim-remote.py:122 ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:145 +msgid "if specified, the message will be sent using this account" +msgstr "hvis specificeret vil beskeden blive sendt med denne konto" + +#: ../src/gajim-remote.py:127 +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 en ny enkel besked til en kontakt i kontaktvinduet. BÃ¥de OpenPGP " +"nøgle og konto er valgfri. Hvis du ønsker at sætte en 'konto' uden 'OpenPGP " +"nøgle', bare set 'OpenPGP nøgle' til ''." + +#: ../src/gajim-remote.py:132 +msgid "subject" +msgstr "emne" + +#: ../src/gajim-remote.py:132 +msgid "message subject" +msgstr "emne pÃ¥ besked" + +#: ../src/gajim-remote.py:141 +msgid "Sends new message to a groupchat you've joined." +msgstr "Send en ny besked til en gruppesamtale du deltager i." + +#: ../src/gajim-remote.py:143 +msgid "JID of the room that will receive the message" +msgstr "JID pÃ¥ den rum som skal modtage beskeden" + +#: ../src/gajim-remote.py:150 +msgid "Gets detailed info on a contact" +msgstr "FÃ¥ detaljeret information om kontakten" + +#: ../src/gajim-remote.py:152 ../src/gajim-remote.py:165 +#: ../src/gajim-remote.py:195 ../src/gajim-remote.py:204 +msgid "JID of the contact" +msgstr "Kontaktens JID" + +#: ../src/gajim-remote.py:156 +msgid "Gets detailed info on a account" +msgstr "FÃ¥ detaljeret information om kontoen" + +#: ../src/gajim-remote.py:158 +msgid "Name of the account" +msgstr "Navn pÃ¥ kontoen" + +#: ../src/gajim-remote.py:162 +msgid "Sends file to a contact" +msgstr "Send en fil til en kontakt" + +#: ../src/gajim-remote.py:164 +msgid "file" +msgstr "fil" + +#: ../src/gajim-remote.py:164 +msgid "File path" +msgstr "Filsti" + +#: ../src/gajim-remote.py:166 +msgid "if specified, file will be sent using this account" +msgstr "hvis specificeret vil filen blive sendt med denne konto" + +#: ../src/gajim-remote.py:171 +msgid "Lists all preferences and their values" +msgstr "Hvis alle indstillinger og deres værdier" + +#: ../src/gajim-remote.py:175 +msgid "Sets value of 'key' to 'value'." +msgstr "Sætter værdien for 'nøglen' til 'værdi'." + +#: ../src/gajim-remote.py:177 +msgid "key=value" +msgstr "nøgle=værdi" + +#: ../src/gajim-remote.py:177 +msgid "'key' is the name of the preference, 'value' is the value to set it to" +msgstr "" +"'nøgle' er navnet for indstillingen, 'værdi' er den værdi den er sat til" + +#: ../src/gajim-remote.py:182 +msgid "Deletes a preference item" +msgstr "Sletter et indstillingspunkt" + +#: ../src/gajim-remote.py:184 +msgid "key" +msgstr "nøgle" + +#: ../src/gajim-remote.py:184 +msgid "name of the preference to be deleted" +msgstr "navn pÃ¥ den indstilling som skal slettes" + +#: ../src/gajim-remote.py:188 +msgid "Writes the current state of Gajim preferences to the .config file" +msgstr "" +"Skriver den nuværende tilstand af Gajims indstillinger til .config filen" + +#: ../src/gajim-remote.py:193 +msgid "Removes contact from roster" +msgstr "Fjerner kontakt fra kontaktvinduet" + +#: ../src/gajim-remote.py:202 +msgid "Adds contact to roster" +msgstr "Tilføjer kontakt til kontaktvinduet" + +#: ../src/gajim-remote.py:204 +msgid "jid" +msgstr "jid" + +#: ../src/gajim-remote.py:205 +msgid "Adds new contact to this account" +msgstr "Tilføjer ny kontakt til denne konto" + +#: ../src/gajim-remote.py:210 +msgid "Returns current status (the global one unless account is specified)" +msgstr "" +"Returnere den nuværende status (den globale status hvis ikke en konto er " +"valgt)" + +#: ../src/gajim-remote.py:217 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Returnere den nuværende statusbesked (den globale status besked hvis ikke en " +"konto er valgt)" + +#: ../src/gajim-remote.py:224 +msgid "Returns number of unread messages" +msgstr "Returnerer antal ikke læste beskeder" + +#: ../src/gajim-remote.py:228 +msgid "Opens 'Start Chat' dialog" +msgstr "Ã…bner 'Start Samtale' vinduet" + +#: ../src/gajim-remote.py:230 +msgid "Starts chat, using this account" +msgstr "Starter en samtale med denne konto" + +#: ../src/gajim-remote.py:234 +msgid "Sends custom XML" +msgstr "Sender tilpasset XML" + +#: ../src/gajim-remote.py:236 +msgid "XML to send" +msgstr "XML som skal sendes" + +#: ../src/gajim-remote.py:237 +msgid "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" +msgstr "" +"Den konto hvor XML vil blive sendt; hvis ikke den er specificeret, vil XML " +"blive sendt til alle kontoer" + +#: ../src/gajim-remote.py:243 +msgid "Handle a xmpp:/ uri" +msgstr "HÃ¥ndter en xmpp:/ uri" + +#: ../src/gajim-remote.py:245 +msgid "uri" +msgstr "uri" + +#: ../src/gajim-remote.py:250 +msgid "Join a MUC room" +msgstr "Deltag i et MUC rum" + +#: ../src/gajim-remote.py:252 +msgid "room" +msgstr "rum" + +#: ../src/gajim-remote.py:253 +msgid "nick" +msgstr "kælenavn" + +#: ../src/gajim-remote.py:254 +msgid "password" +msgstr "adgangskode" + +#: ../src/gajim-remote.py:277 +msgid "Missing argument \"contact_jid\"" +msgstr "Manglende argument \"contact_jid\"" + +#: ../src/gajim-remote.py:296 +#, python-format +msgid "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." +msgstr "" +"'%s' er ikke i dit kontaktvindue.\n" +"Specificer venligst en konto for at sende beskeden." + +#: ../src/gajim-remote.py:299 +msgid "You have no active account" +msgstr "Du har ingen aktiv konto" + +#: ../src/gajim-remote.py:363 +#, python-format +msgid "" +"Usage: %s %s %s \n" +"\t %s" +msgstr "" +"Brug: %s %s %s \n" +"\t %s" + +#: ../src/gajim-remote.py:366 +msgid "Arguments:" +msgstr "Argumenter:" + +#: ../src/gajim-remote.py:370 +#, python-format +msgid "%s not found" +msgstr "%s ikke fundet" + +#: ../src/gajim-remote.py:374 +#, python-format +msgid "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" +msgstr "" +"Brug: %s kommando [argumenter]\n" +"Kommando er en af:\n" + +#: ../src/gajim-remote.py:447 +#, python-format +msgid "" +"Too many arguments. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"For mange argumenter. \n" +"Skriv \"%s help %s\" for mere information" + +#: ../src/gajim-remote.py:451 +#, python-format +msgid "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Argument \"%s\" er ikke specificeret. \n" +"Skriv \"%s help %s\" for mere information" + +#: ../src/gajim-remote.py:469 +msgid "Wrong uri" +msgstr "Forkert uri" + +#: ../src/gajim_themes_window.py:62 +msgid "Theme" +msgstr "Tema" + +#: ../src/gajim_themes_window.py:100 +msgid "You cannot make changes to the default theme" +msgstr "Du kan ikke lave ændringer til standard temaet" + +#: ../src/gajim_themes_window.py:101 +msgid "Please create a clean new theme with your desired name." +msgstr "Opret et nyt tema med dit ønskede navn." + +#. don't confuse translators +#: ../src/gajim_themes_window.py:175 +msgid "theme name" +msgstr "Tema navn" + +#: ../src/gajim_themes_window.py:192 +msgid "You cannot delete your current theme" +msgstr "Du kan ikke slette det nuværende tema" + +#: ../src/gajim_themes_window.py:193 +msgid "Please first choose another for your current theme." +msgstr "Vælg venligst en anden for dit nuværende tema." + +#: ../src/groupchat_control.py:134 +msgid "Sending private message failed" +msgstr "Sending af privat besked fejlede" + +#. in second %s code replaces with nickname +#: ../src/groupchat_control.py:136 +#, python-format +msgid "You are no longer in group chat \"%s\" or \"%s\" has left." +msgstr "" +"Du er ikke længere i gruppe samtale \"%s\" eller \"%s\" har forladt rummet." + +#: ../src/groupchat_control.py:342 +msgid "Insert Nickname" +msgstr "Indsæt Kælenavn" + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:916 +msgid "Room logging is enabled" +msgstr "Rum logging er aktiveret" + +#: ../src/groupchat_control.py:918 +msgid "A new room has been created" +msgstr "Et nyt rum er blevet oprettet" + +#: ../src/groupchat_control.py:921 +msgid "The server has assigned or modified your roomnick" +msgstr "Serveren har fastsat eller ændret dit kælenavn for rummet" + +#. do not print 'kicked by None' +#: ../src/groupchat_control.py:927 +#, python-format +msgid "%(nick)s has been kicked: %(reason)s" +msgstr "%(nick)s er blevet udvist: %(reason)s" + +#: ../src/groupchat_control.py:931 +#, python-format +msgid "%(nick)s has been kicked by %(who)s: %(reason)s" +msgstr "%(nick)s er blevet udvist af %(who)s: %(reason)s" + +#. do not print 'banned by None' +#: ../src/groupchat_control.py:938 +#, python-format +msgid "%(nick)s has been banned: %(reason)s" +msgstr "%(nick)s er blevet uønsket: %(reason)s" + +#: ../src/groupchat_control.py:942 +#, python-format +msgid "%(nick)s has been banned by %(who)s: %(reason)s" +msgstr "%(nick)s er blevet uønsket af %(who)s: %(reason)s" + +#. Someone changed his or her nick +#. We changed our nick +#: ../src/groupchat_control.py:949 +#, python-format +msgid "You are now known as %s" +msgstr "Du er nu kendt som %s" + +#: ../src/groupchat_control.py:951 +#, python-format +msgid "%s is now known as %s" +msgstr "%s er nu kendt som %s" + +#: ../src/groupchat_control.py:984 ../src/groupchat_control.py:988 +#: ../src/groupchat_control.py:993 +#, python-format +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s er blevet fjernet fra rummet %(reason)s" + +#: ../src/groupchat_control.py:985 +msgid "affiliation changed" +msgstr "tilknytning ændret" + +#: ../src/groupchat_control.py:990 +msgid "room configuration changed to members-only" +msgstr "Rum konfiguration er blevet ændret til 'kun for medlemmer'" + +#: ../src/groupchat_control.py:995 +msgid "system shutdown" +msgstr "computeren slukkes" + +#: ../src/groupchat_control.py:1094 +#, python-format +msgid "%s has left" +msgstr "%s har forladt samtalen" + +#: ../src/groupchat_control.py:1099 +#, python-format +msgid "%s has joined the group chat" +msgstr "%s deltager nu i gruppe samtalen" + +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1212 ../src/groupchat_control.py:1494 +msgid "Invalid nickname" +msgstr "Ugyldigt kælenavn" + +#: ../src/groupchat_control.py:1213 ../src/groupchat_control.py:1495 +msgid "The nickname has not allowed characters." +msgstr "Kælenavnet har ikke tilladte tegn." + +#: ../src/groupchat_control.py:1236 ../src/groupchat_control.py:1254 +#: ../src/groupchat_control.py:1341 ../src/groupchat_control.py:1358 +#, python-format +msgid "Nickname not found: %s" +msgstr "Kælenavn ikke fundet: %s" + +#: ../src/groupchat_control.py:1270 +msgid "This group chat has no subject" +msgstr "Denne gruppe samtale har ikke noget emne" + +#: ../src/groupchat_control.py:1281 +#, python-format +msgid "Invited %(contact_jid)s to %(room_jid)s." +msgstr "Inviterede %(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:1314 +#, python-format +msgid "%s does not appear to be a valid JID" +msgstr "%s ser ikke ud til at være et gyldigt JID" + +#: ../src/groupchat_control.py:1421 +#, python-format +msgid "" +"Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " +"nickname of an occupant may be substituted, but not if it contains \"@\". If " +"the JID is currently in the group chat, he/she/it will also be kicked. Does " +"NOT support spaces in nickname." +msgstr "" +"Brug: /%s <kælenavn|JID> [begrundelse], udviser denne JID fra gruppe " +"samtalen. Kælenavnet til en bruger kan bruges, men ikke hvis det indeholder " +"\"@\". Hvis en bruger med JID'en er tilstede i gruppe samtalen vil han/hun/" +"den/det ogsÃ¥ blive udvist. Mellemrum i kælenavnet er ikke understøttet." + +#: ../src/groupchat_control.py:1428 +#, python-format +msgid "" +"Usage: /%s <nickname>, opens a private chat window with the specified " +"occupant." +msgstr "Brug: /%s <kælenavn>, Ã¥bner et privat samtale vindue med den specificerede bruger." + +#: ../src/groupchat_control.py:1434 +#, python-format +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Brug: /%s [begrundelse], lukker det nuværende vindue eller fan, visende " +"begrundelsen hvis specificeret." + +#: ../src/groupchat_control.py:1440 +#, python-format +msgid "" +"Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "Brug: /%s <JID> [begrundelse], inviter JID til den nuværende gruppe samtale, visende begrundelsen hvis specificeret" + +#: ../src/groupchat_control.py:1444 +#, python-format +msgid "" +"Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "Brug: /%s <rum>@<server>[/kælenavn], tilbyder at deltage i rum@server eventuelt med det specificerede kælenavn." + +#: ../src/groupchat_control.py:1448 +#, python-format +msgid "" +"Usage: /%s <nickname> [reason], removes the occupant specified by nickname " +"from the group chat and optionally displays a reason. Does NOT support " +"spaces in nickname." +msgstr "Brug: /%s <kælenavn> [begrundelse], fjerner deltager med kælenavnet fra gruppe samtalen og hvis specificeret, viser en begrundelse" + +#: ../src/groupchat_control.py:1457 +#, python-format +msgid "" +"Usage: /%s <nickname> [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "Brug: /%s <kælenavn> [besked], Ã¥bner et privat samtale vindue og sender beskeden til deltageren med det specificerede kælenavn." + +#: ../src/groupchat_control.py:1462 +#, python-format +msgid "Usage: /%s <nickname>, changes your nickname in current group chat." +msgstr "" +"Brug: /%s <kælenavn>, ændrer dit kælenavn i den nuværende gruppe samtale." + +#: ../src/groupchat_control.py:1466 +#, python-format +msgid "Usage: /%s , display the names of group chat occupants." +msgstr "Brug: /%s , viser navnene pÃ¥ deltagerne i gruppe samtalen." + +#: ../src/groupchat_control.py:1470 +#, python-format +msgid "Usage: /%s [topic], displays or updates the current group chat topic." +msgstr "" +"Brug: /%s [emne], viser eller opdaterer det nuværende gruppe samtale emne." + +#: ../src/groupchat_control.py:1473 +#, python-format +msgid "" +"Usage: /%s <message>, sends a message without looking for other commands." +msgstr "" +"Brug: /%s <besked>, sender en besked uden at kigge efter andre kommandoer." + +#: ../src/groupchat_control.py:1568 +#, python-format +msgid "Are you sure you want to leave group chat \"%s\"?" +msgstr "Er du sikker pÃ¥ du vil forlade gruppe samtalen \"%s\"?" + +#: ../src/groupchat_control.py:1570 +msgid "" +"If you close this window, you will be disconnected from this group chat." +msgstr "" +"Hvis du lukker dette vindue vil du blive frakoblet fra denne gruppe samtale." + +#: ../src/groupchat_control.py:1574 ../src/roster_window.py:4835 +msgid "Do _not ask me again" +msgstr "Ikke spørg mig ige_n" + +#: ../src/groupchat_control.py:1608 +msgid "Changing Subject" +msgstr "Ændre emne" + +#: ../src/groupchat_control.py:1609 +msgid "Please specify the new subject:" +msgstr "Anfør et nyt emne:" + +#: ../src/groupchat_control.py:1618 +msgid "Changing Nickname" +msgstr "Ændre kælenavn" + +#: ../src/groupchat_control.py:1619 +msgid "Please specify the new nickname you want to use:" +msgstr "Anfør dit nye kælenavn:" + +#. Ask for a reason +#: ../src/groupchat_control.py:1634 +#, python-format +msgid "Destroying %s" +msgstr "Fjern %s" + +#: ../src/groupchat_control.py:1635 +msgid "" +"You are going to definitively destroy this room.\n" +"You may specify a reason below:" +msgstr "" +"Du er ved at definitivt fjerne dette rum.\n" +"Du kan anføre en grund herunder:" + +#: ../src/groupchat_control.py:1637 +msgid "You may also enter an alternate venue:" +msgstr "Du kan ogsÃ¥ indtaste et alternativt mødested:" + +#: ../src/groupchat_control.py:1668 +msgid "Bookmark already set" +msgstr "Bogmærke er allerede sat" + +#: ../src/groupchat_control.py:1669 +#, python-format +msgid "Group Chat \"%s\" is already in your bookmarks." +msgstr "Gruppe samtale \"%s\" er allerede i dine bogmærker." + +#: ../src/groupchat_control.py:1678 +msgid "Bookmark has been added successfully" +msgstr "Bogmærket er blevet tilføjet succesfuldt" + +#: ../src/groupchat_control.py:1679 +msgid "You can manage your bookmarks via Actions menu in your roster." +msgstr "" +"De kan hÃ¥ndtere dine bogmærker via Handlings menuen i dit kontaktvindue." + +#. ask for reason +#: ../src/groupchat_control.py:1831 +#, python-format +msgid "Kicking %s" +msgstr "Sparker %s" + +#: ../src/groupchat_control.py:1832 ../src/groupchat_control.py:2132 +msgid "You may specify a reason below:" +msgstr "Du kan anføre en begrundelse under:" + +#. ask for reason +#: ../src/groupchat_control.py:2131 +#, python-format +msgid "Banning %s" +msgstr "Udeluk %s" + +#: ../src/gtkexcepthook.py:41 +msgid "A programming error has been detected" +msgstr "En programmeringsfejl er blevet opdaget" + +#: ../src/gtkexcepthook.py:42 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"Den er sikkert ikke kritisk, men bør alligevel rapporteres til udviklerne." + +#: ../src/gtkexcepthook.py:48 +msgid "_Report Bug" +msgstr "_Rapporter Fejl" + +#: ../src/gtkexcepthook.py:71 +msgid "Details" +msgstr "Detaljer" + +#. we talk about file +#: ../src/gtkgui_helpers.py:157 ../src/gtkgui_helpers.py:172 +#, python-format +msgid "Error: cannot open %s for reading" +msgstr "Fejl: kan ikke Ã¥bne %s for læsning" + +#: ../src/gtkgui_helpers.py:337 +msgid "Error reading file:" +msgstr "Fejl ved læsning af fil:" + +#: ../src/gtkgui_helpers.py:340 +msgid "Error parsing file:" +msgstr "Fejl ved fortolkning af fil:" + +#. do not traceback (could be a permission problem) +#. we talk about a file here +#: ../src/gtkgui_helpers.py:377 +#, python-format +msgid "Could not write to %s. Session Management support will not work" +msgstr "" +"Kunne ikke skrive til %s. Sessions hÃ¥ndterings understøttelse vil ikke virke" + +#. xmpp: is currently handled by another program, so ask the user +#: ../src/gtkgui_helpers.py:711 +msgid "Gajim is not the default Jabber client" +msgstr "Gajim er ikke standard Jabber client" + +#: ../src/gtkgui_helpers.py:712 +msgid "Would you like to make Gajim the default Jabber client?" +msgstr "Har du lyst til at gøre Gajim til standard Jabber client?" + +#: ../src/gtkgui_helpers.py:713 +msgid "Always check to see if Gajim is the default Jabber client on startup" +msgstr "Altid kontroller om Gajim er standard Jabber client ved opstart" + +#: ../src/gtkgui_helpers.py:812 +msgid "Extension not supported" +msgstr "Udvidelse er ikke understøttet" + +#: ../src/gtkgui_helpers.py:813 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "Billede kan ikke gemmes i formatet %(type)s. Gem som %(new_filename)s?" + +#: ../src/gtkgui_helpers.py:822 +msgid "Save Image as..." +msgstr "Gem Billede som..." + +#: ../src/history_manager.py:68 +msgid "Cannot find history logs database" +msgstr "Kan ikke finde historik log databasen" + +#. holds jid +#: ../src/history_manager.py:108 +msgid "Contacts" +msgstr "Kontakter" + +#. holds time +#: ../src/history_manager.py:121 ../src/history_manager.py:161 +#: ../src/history_window.py:86 +msgid "Date" +msgstr "Dato" + +#. holds nickname +#: ../src/history_manager.py:127 ../src/history_manager.py:179 +msgid "Nickname" +msgstr "Kælenavn" + +#. holds message +#: ../src/history_manager.py:135 ../src/history_manager.py:167 +#: ../src/history_window.py:94 +msgid "Message" +msgstr "Besked" + +#: ../src/history_manager.py:187 +msgid "" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Vil du rydde op i databasen? (DETTE ER IKKE ANBEFALET HVIS GAJIM KØRER)" + +#: ../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 "" +"Normalt vil den allokerede database størrelse ikke blive frigjort, den vil " +"bare kunne genbruges. Hvis du virkelig vil reducere database filstørrelsen, " +"tryk JA, eller tryk NEJ.\n" +"\n" +"I tilfælde du trykker JA, venligst vent..." + +#: ../src/history_manager.py:401 +msgid "Exporting History Logs..." +msgstr "Eksporter Historik Log..." + +#: ../src/history_manager.py:476 +#, python-format +msgid "%(who)s on %(time)s said: %(message)s\n" +msgstr "%(who)s klokken %(time)s sagde: %(message)s\n" + +#: ../src/history_manager.py:514 +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] "Vil du virkelig slette loggen for den valgte kontakt?" +msgstr[1] "Vil du virkelig slette loggene fra de valgte kontakter?" + +#: ../src/history_manager.py:518 ../src/history_manager.py:554 +msgid "This is an irreversible operation." +msgstr "Dette er en irreversibel handling." + +#: ../src/history_manager.py:551 +msgid "Do you really want to delete the selected message?" +msgid_plural "Do you really want to delete the selected messages?" +msgstr[0] "Vil du virkelig slette den valgte besked?" +msgstr[1] "Vil du virkelig slette de valgte beskeder?" + +#: ../src/history_window.py:103 ../src/history_window.py:105 +#, python-format +msgid "Conversation History with %s" +msgstr "Konversations Historik med %s" + +#: ../src/history_window.py:266 +#, python-format +msgid "%(nick)s is now %(status)s: %(status_msg)s" +msgstr "%(nick)s er nu %(status)s: %(status_msg)s" + +#: ../src/history_window.py:270 ../src/notify.py:206 +#, python-format +msgid "%(nick)s is now %(status)s" +msgstr "%(nick)s er nu %(status)s" + +#: ../src/history_window.py:276 +#, python-format +msgid "Status is now: %(status)s: %(status_msg)s" +msgstr "Status er nu: %(status)s: %(status_msg)s" + +#: ../src/history_window.py:279 +#, python-format +msgid "Status is now: %(status)s" +msgstr "Status er nu: %(status)s" + +#: ../src/htmltextview.py:583 ../src/htmltextview.py:594 +msgid "Timeout loading image" +msgstr "Tidsudløb nÃ¥et for at laste billede" + +#: ../src/htmltextview.py:604 +msgid "Image is too big" +msgstr "Billede er for stort" + +#: ../src/message_window.py:288 +msgid "Chats" +msgstr "Samtaler" + +#: ../src/message_window.py:290 +msgid "Group Chats" +msgstr "Gruppe Samtaler" + +#: ../src/message_window.py:292 +msgid "Private Chats" +msgstr "Private Samtaler" + +#: ../src/message_window.py:294 +msgid "Messages" +msgstr "Beskeder" + +#: ../src/message_window.py:295 +#, python-format +msgid "%s - Gajim" +msgstr "%s - Gajim" + +#: ../src/negotiation.py:13 +msgid "- messages will be logged" +msgstr "- beskeder vil blive logget" + +#: ../src/negotiation.py:15 +msgid "- messages will not be logged" +msgstr "- beskeder vil ikke blive logget" + +#: ../src/negotiation.py:18 +msgid "Verify the remote client's identity" +msgstr "Bekræft den fjerne klients identitet" + +#: ../src/negotiation.py:18 +#, python-format +msgid "" +"You've begun an encrypted session with %s, but it can't be guaranteed that " +"you're talking directly to the person you think you are.\n" +"\n" +"You should speak with them directly (in person or on the phone) and confirm " +"that their Short Authentication String is identical to this one: %s" +msgstr "" +"Du er begyndt pÃ¥ en krypteret session med %s, men det kan ikke garanteres at du snakker direkte med den person du tror du gør.\n" +"\n" +"Du bør snakke med dem direkte (ansigt til ansigt eller pÃ¥ telefonen) og pÃ¥ den mÃ¥de bekræfte at deres Korte Autoriserings Streng er identisk til denne: %s" + +#: ../src/notify.py:204 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s Ændrede Status" + +#: ../src/notify.py:214 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Loggede Ind" + +#: ../src/notify.py:222 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Loggede Ud" + +#: ../src/notify.py:234 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Ny Besked fra %(nickname)s" + +#: ../src/notify.py:242 +#, python-format +msgid "New Private Message from group chat %s" +msgstr "Ny Privat Besked fra gruppe samtale %s" + +#: ../src/notify.py:244 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:247 +#, python-format +msgid "Messaged by %(nickname)s" +msgstr "Besked fra %(nickname)s" + +#: ../src/notify.py:253 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Ny Besked fra %(nickname)s" + +#: ../src/profile_window.py:72 +msgid "Retrieving profile..." +msgstr "Henter profil..." + +#: ../src/profile_window.py:123 ../src/roster_window.py:1882 +msgid "File is empty" +msgstr "Filen er tom" + +#: ../src/profile_window.py:126 ../src/roster_window.py:1885 +msgid "File does not exist" +msgstr "Filen eksisterer ikke" + +#. keep identation +#. unknown format +#: ../src/profile_window.py:140 ../src/profile_window.py:156 +#: ../src/roster_window.py:1887 ../src/roster_window.py:1898 +msgid "Could not load image" +msgstr "Kunne ikke laste billede" + +#: ../src/profile_window.py:257 +msgid "Information received" +msgstr "Information modtaget" + +#: ../src/profile_window.py:326 +msgid "Without a connection you can not publish your contact information." +msgstr "Uden en tilslutning kan du ikke publicere din kontakt information." + +#: ../src/profile_window.py:338 +msgid "Sending profile..." +msgstr "Sender profil..." + +#: ../src/profile_window.py:353 +msgid "Information NOT published" +msgstr "Information er IKKE publiceret" + +#: ../src/profile_window.py:360 +msgid "vCard publication failed" +msgstr "vCard publicering fejlede" + +#: ../src/profile_window.py:361 +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Der var en fejl under publicering af din personlige information, prøv igen " +"senere." + +#: ../src/roster_window.py:182 ../src/roster_window.py:237 +msgid "Merged accounts" +msgstr "Flettede kontoer" + +#: ../src/roster_window.py:357 ../src/roster_window.py:622 +#: ../src/roster_window.py:2109 ../src/common/contacts.py:307 +#: ../src/common/helpers.py:44 +msgid "Observers" +msgstr "Iagttagere" + +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:441 ../src/roster_window.py:446 +#: ../src/roster_window.py:1934 ../src/roster_window.py:1937 +#: ../src/roster_window.py:2606 ../src/roster_window.py:2609 +#: ../src/roster_window.py:2634 ../src/roster_window.py:4695 +#: ../src/roster_window.py:4697 ../src/common/commands.py:194 +#: ../src/common/contacts.py:97 ../src/common/helpers.py:44 +msgid "Groupchats" +msgstr "Gruppesamtaler" + +#: ../src/roster_window.py:771 ../src/roster_window.py:3951 +msgid "You cannot join a group chat while you are invisible" +msgstr "Du kan ikke deltage i en gruppe samtale mens du er usynlig" + +#. new chat +#. single message +#. for chat_with +#. for single message +#. join gc +#: ../src/roster_window.py:984 ../src/roster_window.py:994 +#: ../src/roster_window.py:1003 ../src/systray.py:207 ../src/systray.py:212 +#: ../src/systray.py:218 +#, python-format +msgid "using account %s" +msgstr "med konto %s" + +#. add +#: ../src/roster_window.py:1010 +#, python-format +msgid "to %s account" +msgstr "til %s konto" + +#. disco +#: ../src/roster_window.py:1015 +#, python-format +msgid "using %s account" +msgstr "bruger %s konto" + +#: ../src/roster_window.py:1096 +msgid "_Manage Bookmarks..." +msgstr "HÃ¥ndter Bog_mærker..." + +#. profile, avatar +#: ../src/roster_window.py:1115 +#, python-format +msgid "of account %s" +msgstr "fra konto %s" + +#: ../src/roster_window.py:1155 +#, python-format +msgid "for account %s" +msgstr "for konto %s" + +#. History manager +#: ../src/roster_window.py:1176 +msgid "History Manager" +msgstr "Historik HÃ¥ndterer" + +#: ../src/roster_window.py:1185 +msgid "_Join New Group Chat" +msgstr "_Deltag i Ny Gruppe Samtale" + +#: ../src/roster_window.py:1544 ../src/roster_window.py:4149 +#: ../src/roster_window.py:4156 +msgid "You have unread messages" +msgstr "Du har ulæste beskeder" + +#: ../src/roster_window.py:1545 +msgid "You must read them before removing this transport." +msgstr "Du mÃ¥ læse dem før du fjerner denne transport." + +#: ../src/roster_window.py:1548 +#, python-format +msgid "Transport \"%s\" will be removed" +msgstr "Transport \"%s\" vil blive fjernet" + +#: ../src/roster_window.py:1549 +msgid "" +"You will no longer be able to send and receive messages from contacts using " +"this transport." +msgstr "" +"Du vil ikke længere være i stand til at sende og modtage beskeder fra " +"kontakter som bruger denne transport." + +#: ../src/roster_window.py:1552 +msgid "Transports will be removed" +msgstr "Transporter vil blive fjernet" + +#: ../src/roster_window.py:1557 +#, python-format +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"these transports:%s" +msgstr "" +"Du vil ikke længere være i stand til at sende og modtage beskeder fra " +"kontakter som bruger disse transporter:%s" + +#. it's jid +#: ../src/roster_window.py:1723 +msgid "Rename Contact" +msgstr "Omdøb Kontakt" + +#: ../src/roster_window.py:1724 +#, python-format +msgid "Enter a new nickname for contact %s" +msgstr "Indtast et nyt kælenavn for kontakt %s" + +#: ../src/roster_window.py:1731 +msgid "Rename Group" +msgstr "Omdøb Gruppe" + +#: ../src/roster_window.py:1732 +#, python-format +msgid "Enter a new name for group %s" +msgstr "Indtast et nyt navn for gruppen %s" + +#: ../src/roster_window.py:1807 +msgid "Remove Group" +msgstr "Fjern Gruppen" + +#: ../src/roster_window.py:1808 +#, python-format +msgid "Do you want to remove group %s from the roster?" +msgstr "Vil du fjerne gruppen %s fra kontaktvinduet?" + +#: ../src/roster_window.py:1809 +msgid "Remove also all contacts in this group from your roster" +msgstr "Fjern ogsÃ¥ alle kontakter i denne gruppe fra kontaktvinduet" + +#: ../src/roster_window.py:1840 +msgid "Assign OpenPGP Key" +msgstr "Tildel OpenPGP Nøgle" + +#: ../src/roster_window.py:1841 +msgid "Select a key to apply to the contact" +msgstr "Vælg den nøgle du vil anvende til kontakten" + +#: ../src/roster_window.py:2155 +msgid "_New Group Chat" +msgstr "_Ny Gruppe Samtale" + +#: ../src/roster_window.py:2297 +msgid "I would like to add you to my roster" +msgstr "Jeg vil gerne tilføje dig til mit kontaktvindue" + +#. Send Group Message +#: ../src/roster_window.py:2431 ../src/roster_window.py:2643 +msgid "Send Group M_essage" +msgstr "Send Gruppeb_esked" + +#: ../src/roster_window.py:2450 +msgid "_New group chat" +msgstr "_Ny gruppe samtale" + +#. Manage Transport submenu +#: ../src/roster_window.py:2488 +msgid "_Manage Contacts" +msgstr "_HÃ¥ndter Kontakter" + +#: ../src/roster_window.py:2549 +msgid "_Maximize" +msgstr "_Maksimer" + +#: ../src/roster_window.py:2556 +msgid "_Disconnect" +msgstr "Afbry_d tilslutningen" + +#: ../src/roster_window.py:2635 +msgid "_Maximize All" +msgstr "_Maksimer alt" + +#: ../src/roster_window.py:2651 +msgid "To all users" +msgstr "Til alle brugere" + +#: ../src/roster_window.py:2654 +msgid "To all online users" +msgstr "Til alle brugere pÃ¥ net" + +#. Log Off +#: ../src/roster_window.py:2771 +msgid "_Log off" +msgstr "_Log af" + +#. Log on +#: ../src/roster_window.py:2777 +msgid "_Log on" +msgstr "_Log pÃ¥" + +#. Send single message +#: ../src/roster_window.py:2789 +msgid "Send Single Message" +msgstr "Send Enkel Besked" + +#. Manage Transport submenu +#: ../src/roster_window.py:2836 +msgid "_Manage Transport" +msgstr "HÃ¥_ndter Transport" + +#. Modify Transport +#: ../src/roster_window.py:2844 +msgid "_Modify Transport" +msgstr "_Modificer Transport" + +#: ../src/roster_window.py:2958 ../src/roster_window.py:3032 +msgid "_Change Status Message" +msgstr "_Ændre Status Besked" + +#: ../src/roster_window.py:3104 +msgid "Authorization has been sent" +msgstr "Godkendelse er blevet sendt" + +#: ../src/roster_window.py:3105 +#, python-format +msgid "Now \"%s\" will know your status." +msgstr "Nu vil %s vide din status." + +#: ../src/roster_window.py:3125 +msgid "Subscription request has been sent" +msgstr "Forespørgsel pÃ¥ abonnering er blevet sendt" + +#: ../src/roster_window.py:3126 +#, python-format +msgid "If \"%s\" accepts this request you will know his or her status." +msgstr "" +"Hvis %s accepterer denne forespørsel vil du kunne se hans eller hendes " +"status." + +#: ../src/roster_window.py:3138 +msgid "Authorization has been removed" +msgstr "Godkendelse er blevet fjernet" + +#: ../src/roster_window.py:3139 +#, python-format +msgid "Now \"%s\" will always see you as offline." +msgstr "Nu vil %s altid se dig som offline." + +#: ../src/roster_window.py:3337 +#, python-format +msgid "Contact \"%s\" will be removed from your roster" +msgstr "Kontakt %s vil blive fjernet fra dit kontaktvindue" + +#: ../src/roster_window.py:3341 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Ved at fjerne denne kontakt fjerner du ogsÃ¥ godkendelsen, sÃ¥ han eller hun " +"vil altid se dig som offline." + +#: ../src/roster_window.py:3346 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Ved at fjerne denne kontakt fjerner du ogsÃ¥ samtidig godkendelsen, sÃ¥ han " +"eller hun altid vil se dig som offline." + +#: ../src/roster_window.py:3349 +msgid "I want this contact to know my status after removal" +msgstr "Jeg vil at denne kontakt kan se min status efter den er blevet fjernet" + +#. several contact to remove at the same time +#: ../src/roster_window.py:3353 +msgid "Contacts will be removed from your roster" +msgstr "Kontakter vil blive fjernet fra dit kontaktvindue" + +#: ../src/roster_window.py:3357 +#, python-format +msgid "" +"By removing these contacts:%s\n" +"you also remove authorization resulting in them always seeing you as offline." +msgstr "" +"Ved at fjerne disse kontakter:%s\n" +"fjerner du ogsÃ¥ godkendelsen, hvilket medfører at de altid vil se dig som " +"offline." + +#: ../src/roster_window.py:3389 +msgid "" +"Gnome Keyring is installed but not correctly started (environment variable " +"probably not correctly set)" +msgstr "Gnomes Nøglering er installeret men ikke startet korrekt (miljøvariabel er sandsynligvis ikke sat op rigtig)" + +#: ../src/roster_window.py:3416 +msgid "GPG is not usable" +msgstr "GPG er ikke brugbar" + +#. %s is the account name here +#: ../src/roster_window.py:3416 ../src/common/connection.py:684 +#: ../src/common/zeroconf/connection_zeroconf.py:165 +#, python-format +msgid "You will be connected to %s without OpenPGP." +msgstr "Du vil blive tilsluttet til %s uden OpenPGP." + +#: ../src/roster_window.py:3433 +msgid "Passphrase Required" +msgstr "Adgangskode PÃ¥krævet" + +#: ../src/roster_window.py:3434 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Indtast adgangskoden til GPG nøglen for konto %s." + +#: ../src/roster_window.py:3439 +msgid "Save passphrase" +msgstr "Gem adgangskode" + +#: ../src/roster_window.py:3447 +msgid "Wrong Passphrase" +msgstr "Forkert Adgangskode" + +#: ../src/roster_window.py:3448 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "Indtast din GPG adgangskode igen eller annuller." + +#: ../src/roster_window.py:3531 ../src/roster_window.py:3608 +msgid "You are participating in one or more group chats" +msgstr "Du deltager i en eller flere gruppesamtaler" + +#: ../src/roster_window.py:3532 ../src/roster_window.py:3609 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Hvis du ændrer din status til usynlig vil det resultere i at du bliver " +"frakoblet fra disse gruppesamtaler. Er du sikker pÃ¥ du vil gøre dig usynlig?" + +#: ../src/roster_window.py:3566 +msgid "No account available" +msgstr "Ingen konto tilgængelig" + +#: ../src/roster_window.py:3567 +msgid "You must create an account before you can chat with other contacts." +msgstr "" +"Du mÃ¥ oprette en konto før du kan begynde en samtale med andre kontakter." + +#: ../src/roster_window.py:3695 +#, python-format +msgid "\"%(title)s\" by %(artist)s" +msgstr "\"%(title)s\" by %(artist)s" + +#: ../src/roster_window.py:4150 ../src/roster_window.py:4157 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "Beskeder vil kun kunne læses senere hvis du har aktiveret historik." + +#: ../src/roster_window.py:4781 +msgid "Metacontacts storage not supported by your server" +msgstr "Metakontakt lagring er ikke understøttet af din server" + +#: ../src/roster_window.py:4783 +msgid "" +"Your server does not support storing metacontacts information. So those " +"information will not be save on next reconnection." +msgstr "" +"Din server understøtter ikke muligheden for at gemme metakontakt " +"information. SÃ¥ denne information vil ikke blive gemt til næste gang du " +"tilslutter dig." + +#: ../src/roster_window.py:4829 +msgid "" +"You are about to create a metacontact. Are you sure you want to continue?" +msgstr "Du er ved at oprette en metakontakt. Er du sikker pÃ¥ du vil fortsætte?" + +#: ../src/roster_window.py:4831 +msgid "" +"Metacontacts are a way to regroup several contacts in one line. Generally it " +"is used when the same person has several Jabber accounts or transport " +"accounts." +msgstr "" +"Metakontakter er en mÃ¥de at gruppere flere kontakter pÃ¥ en linie. Oftest " +"bruges det nÃ¥r den samme person har flere Jabber eller transport kontoer." + +#: ../src/roster_window.py:4929 +#, python-format +msgid "Do you want to send that file to %s:" +msgid_plural "Do you want to send those files to %s:" +msgstr[0] "Vil du sende denne fil til %s:" +msgstr[1] "Vil du sende disse filer til %s:" + +#: ../src/roster_window.py:5211 +msgid "Change Status Message..." +msgstr "Ændre Status Besked..." + +#: ../src/search_window.py:86 +msgid "Waiting for results" +msgstr "Venter pÃ¥ resultater" + +#: ../src/search_window.py:126 ../src/search_window.py:199 +msgid "Error in received dataform" +msgstr "Fejl i modtaget dataform" + +#: ../src/search_window.py:160 +msgid "No result" +msgstr "Intet resultat" + +#: ../src/systray.py:164 +msgid "_Change Status Message..." +msgstr "_Ændre Status Besked..." + +#: ../src/systray.py:249 +msgid "Hide this menu" +msgstr "Skjul denne menu" + +#: ../src/tooltips.py:310 ../src/tooltips.py:503 +msgid "Jabber ID: " +msgstr "Jabber ID: " + +#: ../src/tooltips.py:313 ../src/tooltips.py:507 +msgid "Resource: " +msgstr "Ressource: " + +#: ../src/tooltips.py:318 +#, python-format +msgid "%(owner_or_admin_or_member)s of this group chat" +msgstr "%(owner_or_admin_or_member)s af denne gruppe samtale" + +#: ../src/tooltips.py:416 +msgid " [blocked]" +msgstr " [blokeret]" + +#: ../src/tooltips.py:420 +msgid " [minimized]" +msgstr " [minimeret]" + +#: ../src/tooltips.py:435 ../src/tooltips.py:623 +msgid "Status: " +msgstr "Status: " + +#: ../src/tooltips.py:465 +#, python-format +msgid "Last status: %s" +msgstr "Sidste status: %s" + +#: ../src/tooltips.py:467 +#, python-format +msgid " since %s" +msgstr " siden %s" + +#: ../src/tooltips.py:485 +msgid "Connected" +msgstr "Tilsluttet" + +#: ../src/tooltips.py:487 +msgid "Disconnected" +msgstr "Tilslutning afbrudt" + +#. ('both' is the normal sub so we don't show it) +#: ../src/tooltips.py:514 +msgid "Subscription: " +msgstr "Abonnering: " + +#: ../src/tooltips.py:524 +msgid "OpenPGP: " +msgstr "OpenPGP: " + +#: ../src/tooltips.py:579 +msgid "Download" +msgstr "Hent" + +#: ../src/tooltips.py:585 +msgid "Upload" +msgstr "Send" + +#: ../src/tooltips.py:592 +msgid "Type: " +msgstr "Type: " + +#: ../src/tooltips.py:598 +msgid "Transferred: " +msgstr "Overført: " + +#: ../src/tooltips.py:601 ../src/tooltips.py:622 +msgid "Not started" +msgstr "Ikke startet" + +#: ../src/tooltips.py:605 +msgid "Stopped" +msgstr "Stoppet" + +#: ../src/tooltips.py:607 ../src/tooltips.py:610 +msgid "Completed" +msgstr "Fuldført" + +#: ../src/tooltips.py:614 +msgid "?transfer status:Paused" +msgstr "?transfer status:Midlertidig stoppet" + +#. stalled is not paused. it is like 'frozen' it stopped alone +#: ../src/tooltips.py:618 +msgid "Stalled" +msgstr "Hænger" + +#: ../src/tooltips.py:620 +msgid "Transferring" +msgstr "Overfører" + +#: ../src/tooltips.py:652 +msgid "This service has not yet responded with detailed information" +msgstr "Denne tjeneste har endnu ikke svaret med detaljeret information" + +#: ../src/tooltips.py:655 +msgid "" +"This service could not respond with detailed information.\n" +"It is most likely legacy or broken" +msgstr "" +"Denne tjeneste kunne ikke svare med detaljeret information.\n" +"Den er højst sandsynlig ikke fungerende" + +#: ../src/vcard.py:240 +msgid "?Client:Unknown" +msgstr "?Client:Ukendt" + +#: ../src/vcard.py:242 +msgid "?OS:Unknown" +msgstr "?OS:Ukendt" + +#: ../src/vcard.py:267 ../src/vcard.py:277 ../src/vcard.py:467 +#, python-format +msgid "since %s" +msgstr "siden %s" + +#: ../src/vcard.py:306 +msgid "Affiliation:" +msgstr "Tilknytning:" + +#: ../src/vcard.py:314 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Denne kontakt er interesseret i din tilstedeværelses information, men du er " +"ikke interesseret i hans/hendes tilstedeværelse" + +#: ../src/vcard.py:316 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Du er interesseret i kontaktens tilstedeværelses information, men han/hun er " +"ikke interesseret i din" + +#: ../src/vcard.py:318 +msgid "You and the contact are interested in each other's presence information" +msgstr "" +"Du og kontakten er begge interessered i hinandens tilstedeværelses " +"information" + +#. None +#: ../src/vcard.py:320 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Du er ikke interesseret i kontaktens tilstedeværelse, og han/hun er ikke " +"interesseret i din" + +#: ../src/vcard.py:328 +msgid "You are waiting contact's answer about your subscription request" +msgstr "Du venter pÃ¥ kontaktens svar om din abonnements forespørsel" + +#: ../src/vcard.py:332 ../src/vcard.py:369 ../src/vcard.py:492 +msgid " resource with priority " +msgstr " ressource med prioritet " + +#: ../src/common/check_paths.py:33 +msgid "creating logs database" +msgstr "opretter log database" + +#: ../src/common/check_paths.py:96 ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:114 +#, python-format +msgid "%s is a file but it should be a directory" +msgstr "%s er en fil, men burde være et katalog" + +#: ../src/common/check_paths.py:97 ../src/common/check_paths.py:108 +#: ../src/common/check_paths.py:115 ../src/common/check_paths.py:123 +msgid "Gajim will now exit" +msgstr "Gajim vil nu slutte" + +#: ../src/common/check_paths.py:122 +#, python-format +msgid "%s is a directory but should be a file" +msgstr "%s er et katalog men burde være en fil" + +#: ../src/common/check_paths.py:138 +#, python-format +msgid "creating %s directory" +msgstr "opretter %s katalog" + +#: ../src/common/commands.py:69 +msgid "Change status information" +msgstr "Ændre status information" + +#: ../src/common/commands.py:82 +msgid "Change status" +msgstr "Ændre status" + +#: ../src/common/commands.py:83 +msgid "Set the presence type and description" +msgstr "Sæt tilstedeværelses type og beskrivelse" + +#: ../src/common/commands.py:89 +msgid "Free for chat" +msgstr "Ã…ben for samtaler" + +#: ../src/common/commands.py:90 +msgid "Online" +msgstr "Online" + +#: ../src/common/commands.py:92 +msgid "Extended away" +msgstr "Udvidet borte" + +#: ../src/common/commands.py:93 +msgid "Do not disturb" +msgstr "Forstyr ikke" + +#: ../src/common/commands.py:94 +msgid "Offline - disconnect" +msgstr "Ofline - ikke tilsluttet" + +#: ../src/common/commands.py:99 +msgid "Presence description:" +msgstr "Tilstedeværelses beskrivelse:" + +#: ../src/common/commands.py:134 +msgid "The status has been changed." +msgstr "Din status er blevet ændret." + +#: ../src/common/commands.py:179 +#, python-format +msgid "%(nickname)s on %(room_jid)s" +msgstr "%(nickname)s i %(room_jid)s" + +#: ../src/common/commands.py:183 +msgid "You have not joined a groupchat." +msgstr "Du detlager ikke i en gruppesamtale." + +#: ../src/common/commands.py:189 +msgid "Leave Groupchats" +msgstr "Forlad Gruppesamtaler" + +#: ../src/common/commands.py:190 +msgid "Choose the groupchats you want to leave" +msgstr "Vælg de gruppesamtaler du vil forlade" + +#: ../src/common/commands.py:230 +msgid "You left the following groupchats:" +msgstr "Du forlod de følgende gruppesamtaler:" + +#: ../src/common/commands.py:242 +msgid "Forward unread messages" +msgstr "Videresend ulæste beskeder" + +#: ../src/common/commands.py:262 +msgid "All unread messages have been forwarded." +msgstr "Alle ulæste beskeder er blevet videresendt." + +#: ../src/common/config.py:58 +msgid "Use D-Bus and Notification-Daemon to show notifications" +msgstr "Brug D-Bus og PÃ¥mindelses-dæmonen (Notification-Daemon) til at vise pÃ¥mindelser" + +#: ../src/common/config.py:63 +msgid "Time in minutes, after which your status changes to away." +msgstr "Tid i minutter før din status ændres til borte." + +#: ../src/common/config.py:64 +msgid "Away as a result of being idle" +msgstr "Borte som et resultat af tomgang" + +#: ../src/common/config.py:66 +msgid "Time in minutes, after which your status changes to not available." +msgstr "Tid i minutter før din status ændres til ikke tilgængelig." + +#: ../src/common/config.py:67 +msgid "Not available as a result of being idle" +msgstr "Ikke tilgængelig som et resultat af tomgang" + +#: ../src/common/config.py:85 +msgid "" +"List (space separated) of rows (accounts and groups) that are collapsed." +msgstr "" +"Liste (separeret med mellemrum) af rækker (kontoer og grupper) som er " +"kollapset." + +#: ../src/common/config.py:90 +msgid "Enable link-local/zeroconf messaging" +msgstr "Aktiver link-local/zeroconf beskeder" + +#: ../src/common/config.py:93 +msgid "Language used by speller" +msgstr "Sprog brugt af stavelseskontrollen" + +#: ../src/common/config.py:94 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" +"'altid' - skriv tid for hver besked.\n" +"'nogen ganger' - skriv tid for hver print_ichat_every_foo_minutes minutter.\n" +"'aldrig' - skriv aldrig tiden." + +#: ../src/common/config.py:95 +msgid "" +"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 least precise one. " +"This is used only if print_time is 'sometimes'." +msgstr "" +"Print tiden i samtaler med en upræcis klokke. Værdien for hvor upræcis " +"klokken skal være kan rangere fra 1 til 4, eller 0 for at deaktivere den " +"upræcise klokke. 1 er den mest præcise klokke, 4 den mindst præcise. Dette " +"bruges kun hvis print_time er 'nogen ganger'." + +#: ../src/common/config.py:98 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "Behandle * / _ par som mulige formaterings tegn." + +#: ../src/common/config.py:99 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Hvis sandt, ikke fjern */_. SÃ¥ledes at *abc* bliver skrevet med fed skrift " +"men * * bliver ikke fjernet." + +#: ../src/common/config.py:102 +msgid "" +"Uses ReStructured text markup to send HTML, plus ascii formatting if " +"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html (If you want to use this, install docutils)" +msgstr "" +"Bruger ReStruktureret tekst redigering til at sende HTML, plus ascii " +"formatering hvis valgt. For syntaks, se http://docutils.sourceforge.net/docs/" +"ref/rst/restructuredtext.html (Hvis du vil bruge dette, installer docutils)" + +#: ../src/common/config.py:111 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." +msgstr "" +"Tegn som tilføjes efter kælenavn nÃ¥r der bruges kælenavnsfuldførelse (tab) i " +"en gruppesamtale." + +#: ../src/common/config.py:112 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat." +msgstr "" +"Tegnforslag til at tilføje efter det ønskede kælenavn, nÃ¥r det ønskede " +"kælenavn er i brug af en anden i gruppesamtalen." + +#: ../src/common/config.py:135 +msgid "" +"This option let you customize timestamp that is printed in conversation. For " +"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " +"strftime for full documentation: http://docs.python.org/lib/module-time.html" +msgstr "" +"Denne valgmulighed giver dig muligheden for at tilpasse hvordan " +"klokkeslettet bliver skrevet i en samtale. For eksempel [%H:%M] vil vise " +"[timer:minutter]. Se python dokumentationen for strftime: http://docs.python." +"org/lib/module-time.html" + +#: ../src/common/config.py:136 +msgid "Characters that are printed before the nickname in conversations" +msgstr "Tegn som bliver skrevet før kælenavnet i samtaler" + +#: ../src/common/config.py:137 +msgid "Characters that are printed after the nickname in conversations" +msgstr "Tegn som bliver skrevet efter kælenavnet i samtaler" + +#: ../src/common/config.py:144 +msgid "Add * and [n] in roster title?" +msgstr "Tilføj * og [n] i tittelen pÃ¥ kontaktvinduet?" + +#: ../src/common/config.py:145 +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 vindue/faneblad genÃ¥bnes." + +#: ../src/common/config.py:146 +msgid "How many minutes should last lines from previous conversation last." +msgstr "Hvor mange minutter skal sidste linjer fra forrige samtale vare." + +#: ../src/common/config.py:147 +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Send besked med Ctrl+Enter og lave en ny linie med Enter (standard Mirabilis " +"ICQ klient adfærd)." + +#: ../src/common/config.py:149 +msgid "How many lines to store for Ctrl+KeyUP." +msgstr "Hvor mange linjer skal gemmes for Ctrl+KeyUP." + +#: ../src/common/config.py:152 +#, python-format +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Enten en tilpasset url som indeholder %s hvor %s er ordet/frasen, eller " +"'WIKTIONARY' som betyder brug wiktionary." + +#: ../src/common/config.py:155 +msgid "If checked, Gajim can be controlled remotely using gajim-remote." +msgstr "" +"Hvis valgt kan Gajim blive kontrolleret eksternt ved hjælp af gajim-remote." + +#: ../src/common/config.py:156 +msgid "" +"If True, listen to D-Bus signals from NetworkManager and change the status " +"of accounts (provided they do not have listen_to_network_manager set to " +"False and they sync with global status) based upon the status of the network " +"connection." +msgstr "" +"Hvis Sandt, lyt til D-Bus signaler fra NetworkManager og ændre status pÃ¥ " +"kontoer (forudsat at de ikke har listen_to_network_manager sat til Falsk og " +"de synkroniserer med global status) baseret pÃ¥ status af " +"netværksforbindelsen." + +#: ../src/common/config.py:157 +msgid "" +"Sent chat state notifications. Can be one of all, composing_only, disabled." +msgstr "" +"Send samtale status pÃ¥mindelser. Kan være en af disse: all, composing_only, " +"disabled." + +#: ../src/common/config.py:158 +msgid "" +"Displayed chat state notifications in chat windows. Can be one of all, " +"composing_only, disabled." +msgstr "" +"Vis samtale status pÃ¥mindelser i samtale vinduer. Kan være en af disse: all, " +"composing_only, disabled." + +#: ../src/common/config.py:160 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes." +msgstr "" +"NÃ¥r der ikke skrives tid for hver besked (print_time==sometimes), skriv " +"tiden for hver x minutter." + +#: ../src/common/config.py:161 +msgid "Ask before closing a group chat tab/window." +msgstr "Spørg før et gruppesamtale vindue/faneblad lukkes." + +#: ../src/common/config.py:162 +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Altid spørg før et gruppesamtale vindue/faneblad lukkes, hvis den findes i " +"denne mellemrums separerede liste af gruppesamtale jids." + +#: ../src/common/config.py:163 +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Aldrig spørg før et gruppesamtale vindue/faneblad lukkes, hvis den findes i " +"denne mellemrums separerede liste af gruppesamtale jids." + +#: ../src/common/config.py:166 +msgid "" +"Comma separated list of hosts that we send, in addition of local interfaces, " +"for File Transfer in case of address translation/port forwarding." +msgstr "Komma separeret liste af værter som vi sender, i tillæg til lokale grænseflader, for filoverførsler i tilfælde af adresse omskrivning/port videresending." + +#: ../src/common/config.py:168 +msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." +msgstr "IEC standard siger KiB = 1024 byte, KB = 1000 byte." + +#: ../src/common/config.py:170 +msgid "Notify of events in the system trayicon." +msgstr "Vis pÃ¥mindelse af hændelser i statusfelt ikonet." + +#: ../src/common/config.py:176 +msgid "Show tab when only one conversation?" +msgstr "Vis et faneblad nÃ¥r der kun er en samtale?" + +#: ../src/common/config.py:177 +msgid "Show tabbed notebook border in chat windows?" +msgstr "Vis faneblade i samtalevinduer?" + +#: ../src/common/config.py:178 +msgid "Show close button in tab?" +msgstr "Vis lukke knap i faneblad?" + +#: ../src/common/config.py:179 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "Ved forhandling af en krypteret session, skal Gajim da antage at du vil have dine beskeder logget?" + +#: ../src/common/config.py:188 +msgid "Preview new messages in notification popup?" +msgstr "ForhÃ¥ndsvis nye beskeder i et pÃ¥mindelses pop op vinduer?" + +#: ../src/common/config.py:193 +msgid "" +"A semicolon-separated list of words that will be highlighted in group chats." +msgstr "" +"En semikolon-separeret liste af ord som vil blive fremhævet i gruppesamtaler." + +#: ../src/common/config.py:194 +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 "Hvis Sandt, lukker Gajim nÃ¥r X knappen fra vindueshÃ¥ndteringen klikkes. Denne indstilling tages der kun hensyn til hvis et statusfelt ikon bruges." + +#: ../src/common/config.py:195 +msgid "" +"If True, Gajim will check if it's the default jabber client on each startup." +msgstr "" +"Hvis Sandt, vil Gajim kontrollere om den er standard jabber klient ved hver " +"opstart." + +#: ../src/common/config.py:196 +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Hvis Sandt, vil Gajim vise et ikon pÃ¥ hvert faneblad som indeholder ulæste " +"beskeder. Afhængig af temaet, kan dette ikon være animeret." + +#: ../src/common/config.py:197 +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window." +msgstr "" +"Hvis Sandt, vil Gajim vise status beskeder, hvis ikke tomme, for hver " +"kontakt under kontaktnavnet i kontaktvinduet." + +#: ../src/common/config.py:199 +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 "" +"Hvis Sandt, vil Gajim spørge for en avatar for hver kontakt som ikke havde " +"en avatar sidste gang eller har en gemt som er for gammel." + +#: ../src/common/config.py:200 +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 "Hvis Falsk, vil Gajim ikke længere skrive statuslinjer i samtaler nÃ¥r en kontakt ændrer hans eller hendes status og/eller hans eller hendes status besked." + +#: ../src/common/config.py:201 +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 " +"group chat." +msgstr "" +"kan være \"none\", \"all\" eller \"in_and_out\". Hvis \"nono\" vil Gajim " +"ikke længere skrive statuslinier i gruppesamtaler nÃ¥r et medlem ændrer hans " +"eller hendes status og/eller hans eller hendes status besked. Hvis \"all\" " +"vil Gajim skrive alle status beskeder. Hvis \"in_and_out\" vil Gajim kun " +"skrive FOO kommer/forlader gruppesamtalen." + +#: ../src/common/config.py:203 +msgid "Background color of contacts when they just signed in." +msgstr "Baggrundsfarve pÃ¥ kontakter nÃ¥r de netop har tilsluttet sig." + +#: ../src/common/config.py:204 +msgid "Background color of contacts when they just signed out." +msgstr "Baggrundsfarve pÃ¥ kontakter nÃ¥r de netop har afbrudt tilslutningen." + +#: ../src/common/config.py:206 +msgid "" +"If True, restored messages will use a smaller font than the default one." +msgstr "" +"Hvis Sandt vil gamle beskeder fra forrige samtale bruge en mindre skrifttype " +"end den som er standard." + +#: ../src/common/config.py:207 +msgid "Don't show avatar for the transport itself." +msgstr "Ikke vis en avatar for selve transporten." + +#: ../src/common/config.py:208 +msgid "Don't show roster in the system taskbar." +msgstr "Ikke hvis kontaktvindue i vindueslisten." + +#: ../src/common/config.py:209 +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 "Hvis Sandt og GTK+ og PyGTK installerede versioner er mindst 2.8, blink med vinduet (standard adfærd i de fleste vindueshÃ¥ndterere) nÃ¥r det indeholder ventende begivenheder." + +#: ../src/common/config.py:211 +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected group " +"chat. Turn this option to False to stop sending sha info in group chat " +"presences." +msgstr "" +"Jabberd1.4 kan ikke lide sha information nÃ¥r man deltager i en adgangskode " +"beskyttet gruppesamtale. Sæt dette valg til Falsk for at stoppe med at sende " +"sha information i gruppesamtaler." + +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:214 +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 "" +"Kontrollerer vinduet hvor nye beskeder er placeret.\n" +"'always' - Alle beskeder bliver vist i et enkelt vindue.\n" +"'never' - Alle beskeder fÃ¥r deres eget vindue.\n" +"'peracct' - Beskeder for den enkelte konto bliver sendt til specifikke " +"vinduer.\n" +"'pertype' - Hver besked type (for eks. samtaler versus gruppesamtaler) " +"bliver sendt til et specifikt vindue. Note, ved ændring af denne indstilling " +"kræves en genstart af Gajim før ændringen tager effekt." + +#: ../src/common/config.py:215 +msgid "If False, you will no longer see the avatar in the chat window." +msgstr "Hvis Falsk vil du ikke længere se en avatar i samtale vinduet." + +#: ../src/common/config.py:216 +msgid "If True, pressing the escape key closes a tab/window." +msgstr "Hvis Sandt vil tryk pÃ¥ escape tasten lukke et vindue/faneblad." + +#: ../src/common/config.py:217 +msgid "Hides the buttons in chat windows." +msgstr "Skjuler knapperne i samtale vinduer." + +#: ../src/common/config.py:218 +msgid "Hides the banner in a group chat window" +msgstr "Skjuler banneret i et gruppesamtale vindue" + +#: ../src/common/config.py:219 +msgid "Hides the banner in two persons chat window" +msgstr "Skjuler banneret i et to personers samtalevindue" + +#: ../src/common/config.py:220 +msgid "Hides the group chat occupants list in group chat window." +msgstr "Skjuler gruppesamtale deltagerlisten i gruppesamtale vinduer." + +#: ../src/common/config.py:221 +msgid "" +"In a chat, show the nickname at the beginning of a line only when it's not " +"the same person talking than in previous message." +msgstr "" +"I en samtale, vis kælenavn i begyndelsen af en linie kun nÃ¥r det ikke er den " +"samme person som snakker som i forrige besked." + +#: ../src/common/config.py:222 +msgid "Indentation when using merge consecutive nickname." +msgstr "Indrykning nÃ¥r man fletter ens kælenavne." + +#: ../src/common/config.py:223 +msgid "Smooth scroll message in conversation window" +msgstr "Udglattet rulning af beskeder i samtale vinduet" + +#: ../src/common/config.py:224 +msgid "List of colors that will be used to color nicknames in group chats." +msgstr "" +"Liste af farver som vil blive brugt til at farve kælenavne i gruppesamtaler." + +#: ../src/common/config.py:225 +msgid "Ctrl-Tab go to next composing tab when none is unread." +msgstr "Ctrl-Tab gÃ¥ til næste faneblad nÃ¥r ingen er ulæste." + +#: ../src/common/config.py:226 +msgid "" +"Should we show the confirm metacontacts creation dialog or not? Empty string " +"means we never show the dialog." +msgstr "" +"Skal vi vise bekræftelses vinduet for oprettelse af metakontakter? Tom " +"streng betyder at vi aldrig viser vinduet." + +#: ../src/common/config.py:227 +msgid "" +"If True, you will be able to set a negative priority to your account in " +"account modification window. BE CAREFUL, when you are logged in with a " +"negative priority, you will NOT receive any message from your server." +msgstr "" +"Hvis Sandt vil du være i stand til at sætte en negativ prioritet til din " +"konto i kontoændrings vinduet. VÆR FORSIGTIG, nÃ¥r du er logget med en " +"negativ prioritet vil du IKKE modtage nogen beskeder fra din server." + +#: ../src/common/config.py:228 +msgid "" +"If True, Gajim will use Gnome Keyring (if available) to store account " +"passwords." +msgstr "" +"Hvis Sandt vil Gajim bruge Gnome Nøglering (hvis tilgængelig) til at gemme " +"konto adgangskoder." + +#: ../src/common/config.py:229 +msgid "" +"If True, Gajim will show number of online and total contacts in account and " +"group rows." +msgstr "" +"Hvis Sandt vil Gajim vise antallet af online og totale kontakter i konto og " +"gruppe rækker." + +#: ../src/common/config.py:230 +msgid "" +"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " +"as if they were of this type" +msgstr "" +"Kan være tom, 'chat' eller 'normal'. Hvis ikke tom, behandl alle indkommende " +"beskeder som om de var af denne type" + +#: ../src/common/config.py:231 +msgid "" +"If True, Gajim will scroll and select the contact who sent you the last " +"message, if chat window is not already opened." +msgstr "" +"Hvis Sandt vil Gajim rulle ned/op og vælge den kontakt som sendte dig den " +"sidste besked, hvis ikke allerede kontaktvinduet er Ã¥bent." + +#: ../src/common/config.py:232 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" +"Hvis Sandt vil Gajim omdanne strengen mellem $$ og $$ til et billede med " +"dvips og omdanne det inden det bliver sat ind i et samtale vindue." + +#: ../src/common/config.py:233 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "Tid med inaktivitet der skal gÃ¥ før vinduet til at ændre status lukkes." + +#: ../src/common/config.py:234 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "Maksimum antal linjer som bliver skrevet i samtaler. De ældste linjer bliver slettet." + +#: ../src/common/config.py:245 +msgid "" +"Priority will change automatically according to your status. Priorities are " +"defined in autopriority_* options." +msgstr "" +"Prioriteten vil ændres automatisk ifølge din status. Prioriteter er " +"defineret i autopriority_* indstillingerne." + +#. yes, no, ask +#: ../src/common/config.py:275 +msgid "Jabberd2 workaround" +msgstr "Jabberd2 tilpasning" + +#: ../src/common/config.py:279 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"Hvis valgt vil Gajim bruge din IP og proxy defineret i file_transfer_proxies " +"indstillingen for filoverførsler." + +#: ../src/common/config.py:338 +msgid "Is OpenPGP enabled for this contact?" +msgstr "Er OpenPGP aktiveret for denne kontakt?" + +#: ../src/common/config.py:339 ../src/common/config.py:342 +msgid "Language for which we want to check misspelled words" +msgstr "Sprog som vi vil bruge til at kontrollere for stavefejl" + +#: ../src/common/config.py:348 +msgid "all or space separated status" +msgstr "alt eller mellemrums separeret status" + +#: ../src/common/config.py:349 +msgid "'yes', 'no', or 'both'" +msgstr "'ja', 'nej', eller 'begge'" + +#: ../src/common/config.py:350 ../src/common/config.py:352 +#: ../src/common/config.py:353 ../src/common/config.py:356 +#: ../src/common/config.py:357 +msgid "'yes', 'no' or ''" +msgstr "'ja', 'nej' eller ''" + +#: ../src/common/config.py:363 +msgid "Sleeping" +msgstr "Sover" + +#: ../src/common/config.py:364 +msgid "Back soon" +msgstr "Snart tilbage" + +#: ../src/common/config.py:364 +msgid "Back in some minutes." +msgstr "Tilbage om fÃ¥ minutter." + +#: ../src/common/config.py:365 +msgid "Eating" +msgstr "Spiser" + +#: ../src/common/config.py:365 +msgid "I'm eating, so leave me a message." +msgstr "Jeg spiser, sÃ¥ læg en besked." + +#: ../src/common/config.py:366 +msgid "Movie" +msgstr "Film" + +#: ../src/common/config.py:366 +msgid "I'm watching a movie." +msgstr "Jeg ser en film." + +#: ../src/common/config.py:367 +msgid "Working" +msgstr "Arbejder" + +#: ../src/common/config.py:367 +msgid "I'm working." +msgstr "Jeg arbejder." + +#: ../src/common/config.py:368 +msgid "Phone" +msgstr "Telefon" + +#: ../src/common/config.py:368 +msgid "I'm on the phone." +msgstr "Jeg snakker i telefon." + +#: ../src/common/config.py:369 +msgid "Out" +msgstr "Ude" + +#: ../src/common/config.py:369 +msgid "I'm out enjoying life." +msgstr "Jeg er ude og nyder livet." + +#: ../src/common/config.py:373 +msgid "I'm available." +msgstr "Jeg er tilgængelig." + +#: ../src/common/config.py:374 +msgid "I'm free for chat." +msgstr "Jeg er tilgængelig for en samtale." + +#: ../src/common/config.py:376 +msgid "I'm not available." +msgstr "Jeg er ikke tilgængelig." + +#: ../src/common/config.py:377 +msgid "Do not disturb." +msgstr "Ikke forstyr." + +#: ../src/common/config.py:378 ../src/common/config.py:379 +msgid "Bye!" +msgstr "Farvel!" + +#: ../src/common/config.py:388 +msgid "" +"Sound to play when a group chat message contains one of the words in " +"muc_highlight_words, or when a group chat message contains your nickname." +msgstr "" +"Lyd som spilles nÃ¥r en gruppesamtale besked indeholder en af følgende ord i " +"muc_highlight_words, eller nÃ¥r en gruppesamtale besked indeholder dit " +"kælenavn." + +#: ../src/common/config.py:389 +msgid "Sound to play when any MUC message arrives." +msgstr "Lyd som spilles nÃ¥r en hvilken som helst MUC besked ankommer." + +#: ../src/common/config.py:398 ../src/common/optparser.py:208 +msgid "green" +msgstr "grøn" + +#: ../src/common/config.py:402 ../src/common/optparser.py:194 +msgid "grocery" +msgstr "købmandsvarer" + +#: ../src/common/config.py:406 +msgid "human" +msgstr "menneske" + +#: ../src/common/config.py:410 +msgid "marine" +msgstr "marint" + +#: ../src/common/connection_handlers.py:56 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 +msgid "Unable to load idle module" +msgstr "Ikke i stand til at indlæse tomgangs modulet" + +#: ../src/common/connection_handlers.py:184 +#: ../src/common/connection_handlers.py:219 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +msgid "Wrong host" +msgstr "Forkert vært" + +#: ../src/common/connection_handlers.py:184 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +#, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"Værten %s du konfigurerte i ft_add_hosts_to_send avancerte indstillinger er " +"ikke gyldig, sÃ¥ den bliver ignoreret." + +#: ../src/common/connection_handlers.py:220 +msgid "Invalid local address? :-O" +msgstr "Invalid local address? :-O" + +#: ../src/common/connection_handlers.py:612 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Registrerings information for transporten %s har ikke ankommet i tide" + +#: ../src/common/connection_handlers.py:1776 +#, python-format +msgid "Nickname not allowed: %s" +msgstr "Kælenavn er ikke tilladt: %s" + +#. we are banned +#. group chat does not exist +#: ../src/common/connection_handlers.py:1846 +#: ../src/common/connection_handlers.py:1849 +#: ../src/common/connection_handlers.py:1852 +#: ../src/common/connection_handlers.py:1855 +#: ../src/common/connection_handlers.py:1859 +#: ../src/common/connection_handlers.py:1868 +msgid "Unable to join group chat" +msgstr "Ikke i stand til at deltage i gruppesamtale." + +#: ../src/common/connection_handlers.py:1847 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Du er bandlyst fra gruppesamtalen %s." + +#: ../src/common/connection_handlers.py:1850 +#, python-format +msgid "Group chat %s does not exist." +msgstr "Gruppesamtalen %s eksisterer ikke." + +#: ../src/common/connection_handlers.py:1853 +msgid "Group chat creation is restricted." +msgstr "Gruppesamtale oprettelse er begrænset." + +#: ../src/common/connection_handlers.py:1856 +#, python-format +msgid "Your registered nickname must be used in group chat %s." +msgstr "Dit registrerede kælenavn skal bruges i gruppesamtalen %s." + +#: ../src/common/connection_handlers.py:1860 +#, python-format +msgid "You are not in the members list in groupchat %s." +msgstr "Du er ikke i medlemslisten for gruppesamtalen %s." + +#: ../src/common/connection_handlers.py:1869 +#, python-format +msgid "" +"Your desired nickname in group chat %s is in use or registered by another " +"occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Dit ønskede kælenavn i gruppesamtalen %s er i brug eller registreret af en anden indehaver.\n" +"Specificer venligst et andet kælenavn under:" + +#. Room has been destroyed. see +#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom +#: ../src/common/connection_handlers.py:1900 +msgid "Room has been destroyed" +msgstr "Rummet er blevet ødelagt" + +#: ../src/common/connection_handlers.py:1907 +#, python-format +msgid "You can join this room instead: %s" +msgstr "Du kan deltage i dette rum i stedet: %s" + +#: ../src/common/connection_handlers.py:1934 +msgid "I would like to add you to my roster." +msgstr "Jeg vil gerne tilføje dig til min kontaktliste." + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1955 +#, python-format +msgid "we are now subscribed to %s" +msgstr "vi abonnerer nu pÃ¥ %s" + +#: ../src/common/connection_handlers.py:1957 +#, python-format +msgid "unsubscribe request from %s" +msgstr "forespørsel om ophør pÃ¥ abonnement fra %s" + +#: ../src/common/connection_handlers.py:1959 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "nu abonnerer vi ikke længere pÃ¥ %s" + +#: ../src/common/connection_handlers.py:2081 +#, 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 føjelig. Den vil ikke blive tilføjet til dit " +"kontaktvindue. Brug kontaktvindue hÃ¥ndterings redskaber som http://jru." +"jabberstudio.org/ til at fjerne det." + +#: ../src/common/connection.py:244 +#: ../src/common/zeroconf/connection_zeroconf.py:203 +#, python-format +msgid "Connection with account \"%s\" has been lost" +msgstr "Tilslutning til konto \"%s\" er blevet afbrudt" + +#: ../src/common/connection.py:245 +msgid "Reconnect manually." +msgstr "Tilslut manuelt." + +#: ../src/common/connection.py:256 +#, python-format +msgid "Server %s answered wrongly to register request: %s" +msgstr "Server %s svarede forkert pÃ¥ indskrivnings forespørgslen: %s" + +#. wrong answer +#: ../src/common/connection.py:264 +msgid "Invalid answer" +msgstr "Forkert svar" + +#: ../src/common/connection.py:265 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "Transport %s svarede forkert pÃ¥ indskrivnings forespørgslen: %s" + +#: ../src/common/connection.py:411 +msgid "Connection to proxy failed" +msgstr "Tilslutning til proxy fejlede" + +#: ../src/common/connection.py:465 ../src/common/connection.py:511 +#: ../src/common/connection.py:1067 +#: ../src/common/zeroconf/connection_zeroconf.py:237 +#, python-format +msgid "Could not connect to \"%s\"" +msgstr "Kunne ikke tilslutte til \"%s\"" + +#: ../src/common/connection.py:479 +#, python-format +msgid "Connected to server %s:%s with %s" +msgstr "Tilsluttet til server %s:%s med %s" + +#: ../src/common/connection.py:512 +msgid "Check your connection or try again later" +msgstr "Kontroller din tilslutning eller prøv igen senere" + +#: ../src/common/connection.py:537 +#, python-format +msgid "Authentication failed with \"%s\"" +msgstr "Godkendelse fejlede med \"%s\"" + +#: ../src/common/connection.py:538 +msgid "Please check your login and password for correctness." +msgstr "Venligst kontroller om dit logind og adgangskode er korrekt." + +#: ../src/common/connection.py:581 +msgid "Error while removing privacy list" +msgstr "Fejl under fjernelse af privatlivs liste" + +#: ../src/common/connection.py:582 +#, python-format +msgid "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." +msgstr "Privatlivs liste %s er ikke blevet fjernet. Den er mÃ¥ske aktiv i en af dine tilsluttede ressourcer. Deaktivér den og prøv igen." + +#. We didn't set a passphrase +#: ../src/common/connection.py:682 +#: ../src/common/zeroconf/connection_zeroconf.py:163 +msgid "OpenPGP passphrase was not given" +msgstr "OpenPGP adgangskode blev ikke givet" + +#. we're not english +#. one in locale and one en +#: ../src/common/connection.py:845 +msgid "[This message is *encrypted* (See :JEP:`27`]" +msgstr "[Denne besked er *krypteret* (Se :JEP:`27`]" + +#: ../src/common/connection.py:916 +#: ../src/common/zeroconf/connection_zeroconf.py:423 +#, python-format +msgid "" +"Subject: %s\n" +"%s" +msgstr "" +"Emne: %s\n" +"%s" + +#: ../src/common/connection.py:1099 +msgid "Not fetched because of invisible status" +msgstr "Ikke hentet pÃ¥ grund af usynlig status" + +#: ../src/common/contacts.py:294 +msgid "Not in roster" +msgstr "Ikke i kontaktvindue" + +#. only say that to non Windows users +#: ../src/common/dbus_support.py:33 +msgid "D-Bus python bindings are missing in this computer" +msgstr "D-Bus python bindinger mangler pÃ¥ denne computer" + +#: ../src/common/dbus_support.py:34 +msgid "D-Bus capabilities of Gajim cannot be used" +msgstr "Gajims D-Bus evner kan ikke bruges" + +#: ../src/common/exceptions.py:22 +msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." +msgstr "pysqlite2 (ogsÃ¥ kaldet python-pysqlite2) afhængighed mangler. Slutter..." + +#: ../src/common/exceptions.py:39 +msgid "Service not available: Gajim is not running, or remote_control is False" +msgstr "" +"Tjeneste ikke tilgængelig: Gajim kører ikke, eller remote_control er Falsk" + +#: ../src/common/exceptions.py:47 +msgid "D-Bus is not present on this machine or python module is missing" +msgstr "" +"D-Bus er ikke tilgængelig pÃ¥ denne maskine eller et python modul mangler" + +#: ../src/common/exceptions.py:55 +msgid "" +"Session bus is not available.\n" +"Try reading http://trac.gajim.org/wiki/GajimDBus" +msgstr "" +"Sessions bussen er ikke tilgængelig.\n" +"Prøv at læse http://trac.gajim.org/wiki/GajimDBus" + +#: ../src/common/fuzzyclock.py:42 +msgid "one" +msgstr "en" + +#: ../src/common/fuzzyclock.py:42 +msgid "two" +msgstr "to" + +#: ../src/common/fuzzyclock.py:42 +msgid "three" +msgstr "tre" + +#: ../src/common/fuzzyclock.py:42 +msgid "four" +msgstr "fire" + +#: ../src/common/fuzzyclock.py:42 +msgid "five" +msgstr "fem" + +#: ../src/common/fuzzyclock.py:42 +msgid "six" +msgstr "seks" + +#: ../src/common/fuzzyclock.py:43 +msgid "seven" +msgstr "syv" + +#: ../src/common/fuzzyclock.py:43 +msgid "eight" +msgstr "otte" + +#: ../src/common/fuzzyclock.py:43 +msgid "nine" +msgstr "ni" + +#: ../src/common/fuzzyclock.py:43 +msgid "ten" +msgstr "ti" + +#: ../src/common/fuzzyclock.py:43 +msgid "eleven" +msgstr "elleve" + +#: ../src/common/fuzzyclock.py:44 +msgid "twelve" +msgstr "tolv" + +#. 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). ''' +#. A "singular-form". It is used when talking about hour 0 +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +msgid "$0 o'clock" +msgstr "klokken $0" + +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +msgid "five past $0" +msgstr "fem over $0" + +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +msgid "ten past $0" +msgstr "ti over $0" + +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +msgid "quarter past $0" +msgstr "kvart over $0" + +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +msgid "twenty past $0" +msgstr "tyve over $0" + +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +msgid "twenty five past $0" +msgstr "femogtyve over $0" + +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +msgid "half past $0" +msgstr "halv $1" + +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +msgid "twenty five to $1" +msgstr "femogtyve minutter i $1" + +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +msgid "twenty to $1" +msgstr "tyve minutter i $1" + +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +msgid "quarter to $1" +msgstr "kvart pÃ¥ $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "ten to $1" +msgstr "ti pÃ¥ $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "five to $1" +msgstr "fem pÃ¥ $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:61 +msgid "$1 o'clock" +msgstr "klokken $1" + +#: ../src/common/fuzzyclock.py:64 +msgid "Night" +msgstr "Nat" + +#: ../src/common/fuzzyclock.py:64 +msgid "Early morning" +msgstr "Tidlig morgen" + +#: ../src/common/fuzzyclock.py:64 +msgid "Morning" +msgstr "Morgen" + +#: ../src/common/fuzzyclock.py:64 +msgid "Almost noon" +msgstr "Næsten middag" + +#: ../src/common/fuzzyclock.py:65 +msgid "Noon" +msgstr "Middag" + +#: ../src/common/fuzzyclock.py:65 +msgid "Afternoon" +msgstr "Eftermiddag" + +#: ../src/common/fuzzyclock.py:65 +msgid "Evening" +msgstr "Aften" + +#: ../src/common/fuzzyclock.py:65 +msgid "Late evening" +msgstr "Sen aften" + +#: ../src/common/fuzzyclock.py:67 +msgid "Start of week" +msgstr "Ugestart" + +#: ../src/common/fuzzyclock.py:67 +msgid "Middle of week" +msgstr "Midten af ugen" + +#: ../src/common/fuzzyclock.py:67 +msgid "End of week" +msgstr "Slutten af ugen" + +#: ../src/common/fuzzyclock.py:68 +msgid "Weekend!" +msgstr "Weekend!" + +#: ../src/common/helpers.py:115 +msgid "Invalid character in username." +msgstr "Ugyldig karakter i brugernavn." + +#: ../src/common/helpers.py:120 +msgid "Server address required." +msgstr "Server adresse pÃ¥krævet." + +#: ../src/common/helpers.py:125 +msgid "Invalid character in hostname." +msgstr "Ugyldig karakter i værtsnavn." + +#: ../src/common/helpers.py:131 +msgid "Invalid character in resource." +msgstr "Ugyldig karakter i ressource." + +#. GiB means gibibyte +#: ../src/common/helpers.py:171 +#, python-format +msgid "%s GiB" +msgstr "%s GiB" + +#. GB means gigabyte +#: ../src/common/helpers.py:174 +#, python-format +msgid "%s GB" +msgstr "%s GB" + +#. MiB means mibibyte +#: ../src/common/helpers.py:178 +#, python-format +msgid "%s MiB" +msgstr "%s MiB" + +#. MB means megabyte +#: ../src/common/helpers.py:181 +#, python-format +msgid "%s MB" +msgstr "%s MB" + +#. KiB means kibibyte +#: ../src/common/helpers.py:185 +#, python-format +msgid "%s KiB" +msgstr "%s KiB" + +#. KB means kilo bytes +#: ../src/common/helpers.py:188 +#, python-format +msgid "%s KB" +msgstr "%s KB" + +#. B means bytes +#: ../src/common/helpers.py:191 +#, python-format +msgid "%s B" +msgstr "%s B" + +#: ../src/common/helpers.py:222 +msgid "_Busy" +msgstr "_Travlt" + +#: ../src/common/helpers.py:224 +msgid "Busy" +msgstr "Travlt" + +#: ../src/common/helpers.py:227 +msgid "_Not Available" +msgstr "_Ikke tilgængelig" + +#: ../src/common/helpers.py:232 +msgid "_Free for Chat" +msgstr "_Tilgængelig for samtale" + +#: ../src/common/helpers.py:234 +msgid "Free for Chat" +msgstr "Tilgængelig for samtale" + +#: ../src/common/helpers.py:237 +msgid "_Available" +msgstr "Ti_lgængelig" + +#: ../src/common/helpers.py:241 +msgid "Connecting" +msgstr "Tilslutter" + +#: ../src/common/helpers.py:244 +msgid "A_way" +msgstr "_Væk" + +#: ../src/common/helpers.py:249 +msgid "_Offline" +msgstr "_Afkoblet" + +#: ../src/common/helpers.py:251 +msgid "Offline" +msgstr "Afkoblet" + +#: ../src/common/helpers.py:254 +msgid "_Invisible" +msgstr "_Usynlig" + +#: ../src/common/helpers.py:260 +msgid "?contact has status:Unknown" +msgstr "?contact has status:Ukendt" + +#: ../src/common/helpers.py:262 +msgid "?contact has status:Has errors" +msgstr "?contact has status:Har fejl" + +#: ../src/common/helpers.py:267 +msgid "?Subscription we already have:None" +msgstr "?Subscription we already have:Intet" + +#: ../src/common/helpers.py:269 +msgid "To" +msgstr "Til" + +#: ../src/common/helpers.py:273 +msgid "Both" +msgstr "Begge" + +#: ../src/common/helpers.py:281 +msgid "?Ask (for Subscription):None" +msgstr "?Ask (for Subscription):Intet" + +#: ../src/common/helpers.py:283 +msgid "Subscribe" +msgstr "Abonner" + +#: ../src/common/helpers.py:292 +msgid "?Group Chat Contact Role:None" +msgstr "?Group Chat Contact Role:Ingen" + +#: ../src/common/helpers.py:295 +msgid "Moderators" +msgstr "Moderatorer" + +#: ../src/common/helpers.py:297 +msgid "Moderator" +msgstr "Moderator" + +#: ../src/common/helpers.py:300 +msgid "Participants" +msgstr "Deltagere" + +#: ../src/common/helpers.py:302 +msgid "Participant" +msgstr "Deltager" + +#: ../src/common/helpers.py:305 +msgid "Visitors" +msgstr "Besøgende" + +#: ../src/common/helpers.py:307 +msgid "Visitor" +msgstr "Besøgende" + +#: ../src/common/helpers.py:313 +msgid "?Group Chat Contact Affiliation:None" +msgstr "?Group Chat Contact Affiliation:Ingen" + +#: ../src/common/helpers.py:315 +msgid "Owner" +msgstr "Ejer" + +#: ../src/common/helpers.py:317 +msgid "Administrator" +msgstr "Administrator" + +#: ../src/common/helpers.py:319 +msgid "Member" +msgstr "Medlem" + +#: ../src/common/helpers.py:358 +msgid "is paying attention to the conversation" +msgstr "er opmærksom pÃ¥ samtalen" + +#: ../src/common/helpers.py:360 +msgid "is doing something else" +msgstr "gør noget andet" + +#: ../src/common/helpers.py:362 +msgid "is composing a message..." +msgstr "komponerer en besked..." + +#. paused means he or she was composing but has stopped for a while +#: ../src/common/helpers.py:365 +msgid "paused composing a message" +msgstr "holder pause med at komponere en besked" + +#: ../src/common/helpers.py:367 +msgid "has closed the chat window or tab" +msgstr "har lukket samtalevinduet eller fanebladet" + +#: ../src/common/helpers.py:913 ../src/common/helpers.py:920 +#, python-format +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "%d besked venter" +msgstr[1] "%d beskeder venter" + +#: ../src/common/helpers.py:926 +#, python-format +msgid " from room %s" +msgstr "fra rum %s" + +#: ../src/common/helpers.py:929 ../src/common/helpers.py:948 +#, python-format +msgid " from user %s" +msgstr "fra bruger %s" + +#: ../src/common/helpers.py:931 +#, python-format +msgid " from %s" +msgstr " fra %s" + +#: ../src/common/helpers.py:938 ../src/common/helpers.py:945 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "" +msgstr[1] "" + +#: ../src/common/helpers.py:978 +#, python-format +msgid "Gajim - %s" +msgstr "Gajim - %s" + +#. we talk about a file +#: ../src/common/optparser.py:60 +#, python-format +msgid "error: cannot open %s for reading" +msgstr "fejl: kan ikke Ã¥bne %s for læsning" + +#: ../src/common/optparser.py:203 ../src/common/optparser.py:204 +msgid "cyan" +msgstr "cyan" + +#: ../src/common/optparser.py:320 +msgid "migrating logs database to indices" +msgstr "flytter log databasen til flere indeks" + +#: ../src/common/passwords.py:82 +#, python-format +msgid "Gajim account %s" +msgstr "Gajim konto %s" + +#: ../src/common/zeroconf/client_zeroconf.py:135 +#: ../src/common/zeroconf/client_zeroconf.py:218 +msgid "Connection to host could not be established" +msgstr "Tilslutning til vært kunne ikke etableres" + +#: ../src/common/zeroconf/client_zeroconf.py:192 +msgid "" +"Connection to host could not be established: Incorrect answer from server." +msgstr "Tilslutning til vært kunne ikke etableres: Forkert svar fra server." + +#: ../src/common/zeroconf/client_zeroconf.py:352 +msgid "" +"Connection to host could not be established: Timeout while sending data." +msgstr "" +"Tilslutning til vært kunne ikke etableres: Tidsudløb mens data var blevet " +"sendt." + +#: ../src/common/zeroconf/client_zeroconf.py:638 +msgid "Contact is offline. Your message could not be sent." +msgstr "Kontakt er afkoblet. Din besked kunne ikke sendes." + +#: ../src/common/zeroconf/connection_zeroconf.py:204 +msgid "To continue sending and receiving messages, you will need to reconnect." +msgstr "" +"For at kunne fortsætte med at sende og modtage beskeder, mÃ¥ du tilslutte dig " +"igen." + +#: ../src/common/zeroconf/connection_zeroconf.py:227 +msgid "Avahi error" +msgstr "Avahi fejl" + +#: ../src/common/zeroconf/connection_zeroconf.py:227 +#, python-format +msgid "" +"%s\n" +"Link-local messaging might not work properly." +msgstr "" +"%s\n" +"Link-local beskeder vil sandsynligvis ikke virke ordentligt." + +#: ../src/common/zeroconf/connection_zeroconf.py:238 +msgid "Please check if Avahi is installed." +msgstr "Kontroller venligst om Avahi er installeret." + +#: ../src/common/zeroconf/connection_zeroconf.py:247 +#: ../src/common/zeroconf/connection_zeroconf.py:251 +msgid "Could not start local service" +msgstr "Kunne ikke starte lokal tjeneste" + +#: ../src/common/zeroconf/connection_zeroconf.py:248 +#, python-format +msgid "Unable to bind to port %d." +msgstr "Ikke i stand til at tildele port %d." + +#: ../src/common/zeroconf/connection_zeroconf.py:252 +#: ../src/common/zeroconf/connection_zeroconf.py:347 +msgid "Please check if avahi-daemon is running." +msgstr "Kontroller venligst om avahi-dæmonen kører." + +#: ../src/common/zeroconf/connection_zeroconf.py:346 +#, python-format +msgid "Could not change status of account \"%s\"" +msgstr "Kunne ikke ændre status pÃ¥ kontoen \"%s\"" + +#: ../src/common/zeroconf/connection_zeroconf.py:363 +msgid "" +"You are not connected or not visible to others. Your message could not be " +"sent." +msgstr "" +"Du er ikke tilsluttet eller synlig for andre. Din besked kunne ikke sendes." + +#. we're not english +#: ../src/common/zeroconf/connection_zeroconf.py:375 +msgid "[This message is encrypted]" +msgstr "[Denne besked er krypteret]" + +#: ../src/common/zeroconf/zeroconf_avahi.py:178 +#: ../src/common/zeroconf/zeroconf_bonjour.py:187 +#, python-format +msgid "Error while adding service. %s" +msgstr "Fejl ved tilføjelse af tjeneste. %s" + diff --git a/po/de.po b/po/de.po index ec658b2296..2b640dfaa2 100644 --- a/po/de.po +++ b/po/de.po @@ -3,14 +3,20 @@ # This file is distributed under the same license as the gajim package. # Fridtjof Busse <fridtjof@fbunet.de>, 2005, 2006. # Benjamin Drung <benjamin.drung@gmail.com>, 2007. +# Fabian Fingerle <otih@datensalat.eu>, 2007. +# Sebastian Schäfer <sarek@uliweb.de>, 2007. # +#: ../src/gajim-remote.py:220 ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:253 ../src/gajim-remote.py:254 +#: ../src/gajim-remote.py:260 ../src/gajim-remote.py:261 +#: ../src/gajim-remote.py:262 ../src/gajim-remote.py:263 msgid "" msgstr "" "Project-Id-Version: gajim 0.11\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-03-29 13:38+0200\n" -"PO-Revision-Date: 2007-08-03 23:11+0100\n" -"Last-Translator: Michael Skiba <michael@michael-skiba.de>\n" +"POT-Creation-Date: 2007-11-23 11:00+0100\n" +"PO-Revision-Date: 2007-11-04 16:37+0100\n" +"Last-Translator: Nico Gulden <cilugnedon@gmx.de>\n" "Language-Team: German <translators@gajim.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -30,37 +36,36 @@ msgid "Jabber IM Client" msgstr "Jabber IM-Client" #: ../data/glade/account_context_menu.glade.h:1 -msgid "Send Single _Message..." -msgstr "Einzelne _Nachricht senden..." +#: ../data/glade/roster_window.glade.h:8 +msgid "Join _Group Chat..." +msgstr "_Chatraum beitreten..." #: ../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/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_Dienste durchsuchen" #: ../data/glade/account_context_menu.glade.h:4 -#: ../src/disco.py:1145 msgid "_Execute Command..." msgstr "_Befehl ausführen..." #: ../data/glade/account_context_menu.glade.h:5 -#: ../data/glade/roster_window.glade.h:16 -#: ../data/glade/systray_context_menu.glade.h:6 -msgid "_Group Chat" -msgstr "_Gruppenchat" +msgid "_Modify Account" +msgstr "Konto bearbeiten" #: ../data/glade/account_context_menu.glade.h:6 -#: ../data/glade/zeroconf_context_menu.glade.h:1 -msgid "_Modify Account..." -msgstr "_Konto bearbeiten..." - -#: ../data/glade/account_context_menu.glade.h:7 msgid "_Open Gmail Inbox" msgstr "Google Mail Posteingang _öffnen" +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:23 +msgid "_Start Chat..." +msgstr "_Chat starten" + #: ../data/glade/account_context_menu.glade.h:8 #: ../data/glade/zeroconf_context_menu.glade.h:2 msgid "_Status" @@ -68,7 +73,7 @@ msgstr "_Status" #: ../data/glade/account_creation_wizard_window.glade.h:1 msgid "" -"<b>Account is being created</b>\n" +"<b>Connecting to server</b>\n" "\n" "Please wait..." msgstr "" @@ -85,49 +90,68 @@ msgid "<b>Please fill in the data for your new account</b>" msgstr "<b>Bitte geben Sie die Daten für Ihr neues Konto ein</b>" #: ../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." +msgid "<b>Please select a server</b>" +msgstr "<b>Bitte einen Server wählen</b>" #: ../data/glade/account_creation_wizard_window.glade.h:7 +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:8 msgid "Connect when I press Finish" msgstr "Verbinde, sobald ich Fertig klicke" -#: ../data/glade/account_creation_wizard_window.glade.h:8 +#: ../data/glade/account_creation_wizard_window.glade.h:9 msgid "Gajim: Account Creation Wizard" msgstr "Gajim: Kontoeinrichtungs-Assistent" -#: ../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 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:11 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:19 +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:23 msgid "If checked, Gajim will remember the password for this account" msgstr "Falls aktiviert, speichert Gajim das Passwort für dieses Konto" -#: ../data/glade/account_creation_wizard_window.glade.h:12 -#: ../data/glade/manage_proxies_window.glade.h:7 -msgid "Pass_word:" -msgstr "Pass_wort:" - #: ../data/glade/account_creation_wizard_window.glade.h:13 -#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "_Verwalten..." + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Prox_y:" +msgstr "Proxy:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:47 msgid "Save pass_word" msgstr "Pass_wort speichern" -#: ../data/glade/account_creation_wizard_window.glade.h:14 +#: ../data/glade/account_creation_wizard_window.glade.h:16 msgid "Servers Features" msgstr "Fähigkeiten des Servers" -#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_creation_wizard_window.glade.h:17 msgid "Set my profile when I connect" msgstr "Setze mein Profil, wenn ich mich verbinde" -#: ../data/glade/account_creation_wizard_window.glade.h:16 +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "Verwende benutzerdefinierten Hostnamen und Port" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 msgid "" "You need to have an account in order to connect\n" "to the Jabber network." @@ -135,67 +159,64 @@ 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 +#: ../data/glade/account_creation_wizard_window.glade.h:21 msgid "Your JID:" msgstr "Ihre JID:" -#: ../data/glade/account_creation_wizard_window.glade.h:19 -#: ../data/glade/roster_window.glade.h:11 +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 msgid "_Advanced" msgstr "_Erweitert" -#: ../data/glade/account_creation_wizard_window.glade.h:20 +#: ../data/glade/account_creation_wizard_window.glade.h:23 msgid "_Finish" msgstr "_Beenden" -#: ../data/glade/account_creation_wizard_window.glade.h:21 -#: ../data/glade/manage_proxies_window.glade.h:10 -msgid "_Host:" -msgstr "_Server:" +#: ../data/glade/account_creation_wizard_window.glade.h:24 +#, fuzzy +msgid "_Hostname:" +msgstr "_Hostname: " -#: ../data/glade/account_creation_wizard_window.glade.h:22 -#: ../data/glade/account_modification_window.glade.h:49 +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 msgid "_Password:" msgstr "_Passwort:" -#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/account_creation_wizard_window.glade.h:26 #: ../data/glade/manage_proxies_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:27 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/account_creation_wizard_window.glade.h:28 #: ../data/glade/manage_proxies_window.glade.h:12 msgid "_Username:" msgstr "_Benutzername:" #: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 #: ../data/glade/preferences_window.glade.h:8 msgid "<b>Miscellaneous</b>" msgstr "<b>Verschiedenes</b>" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "<b>OpenPGP</b>" msgstr "<b>OpenPGP</b>" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "<b>Personal Information</b>" msgstr "<b>Persönliche Informationen</b>" #: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 msgid "Account" msgstr "Konto" @@ -204,239 +225,358 @@ msgid "Account Modification" msgstr "Kontoänderung" #: ../data/glade/account_modification_window.glade.h:6 +#: ../data/glade/accounts_window.glade.h:5 msgid "Administration operations" msgstr "Administrative Aktionen" #: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 msgid "Auto-reconnect when connection is lost" msgstr "Automatisch neu verbinden, wenn die Verbindung abbricht" #: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 #: ../data/glade/zeroconf_properties_window.glade.h:3 msgid "C_onnect on Gajim startup" msgstr "Beim Pr_ogrammstart verbinden" #: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 msgid "Chan_ge Password" msgstr "Pass_wort ändern" #: ../data/glade/account_modification_window.glade.h:10 -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/accounts_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:11 +#: ../data/glade/accounts_window.glade.h:10 #: ../data/glade/zeroconf_properties_window.glade.h:4 msgid "Choose _Key..." msgstr "_Schlüssel wählen..." #: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_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:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 msgid "Connection" msgstr "Verbindung" -#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 msgid "Edit Personal Information..." msgstr "Persönliche Details bearbeiten ..." -#: ../data/glade/account_modification_window.glade.h:15 -#: ../data/glade/roster_window.glade.h:5 -#: ../src/notify.py:458 -#: ../src/notify.py:480 -#: ../src/notify.py:492 -#: ../src/common/helpers.py:914 +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:489 +#: ../src/notify.py:520 ../src/notify.py:532 ../src/common/helpers.py:998 +#: ../src/common/helpers.py:1010 msgid "Gajim" msgstr "Gajim" -#: ../data/glade/account_modification_window.glade.h:16 -#: ../data/glade/preferences_window.glade.h:51 +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 #: ../data/glade/zeroconf_properties_window.glade.h:7 -#: ../src/roster_window.py:347 -#: ../src/roster_window.py:1225 -#: ../src/roster_window.py:1435 -#: ../src/roster_window.py:2114 -#: ../src/roster_window.py:2156 -#: ../src/common/contacts.py:284 +#: ../src/roster_window.py:372 ../src/roster_window.py:637 +#: ../src/roster_window.py:1384 ../src/roster_window.py:1760 +#: ../src/roster_window.py:2145 ../src/roster_window.py:2657 +#: ../src/roster_window.py:2775 ../src/common/contacts.py:314 msgid "General" msgstr "Allgemein" -#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 msgid "Hostname: " msgstr "Hostname: " -#: ../data/glade/account_modification_window.glade.h:18 -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 als nur Ihrer eigenen senden, wodurch Datentransfers eine höhere Erfolgswahrscheinlichkeit bekommen." - -#: ../data/glade/account_modification_window.glade.h:20 -msgid "If checked, Gajim will send keep-alive packets to prevent connection timeout which results in disconnection" -msgstr "Wenn aktiviert, sendet Gajim regelmäßig Keepalive-Pakete, um einen Verbindungsabbruch durch eine Zeitüberschreitung zu verhindern" +#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 +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 als nur Ihrer eigenen senden, " +"wodurch Datentransfers eine höhere Erfolgswahrscheinlichkeit bekommen." #: ../data/glade/account_modification_window.glade.h:21 -#: ../data/glade/zeroconf_properties_window.glade.h:8 -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/accounts_window.glade.h:24 +msgid "" +"If checked, Gajim will send keep-alive packets to prevent connection timeout " +"which results in disconnection" +msgstr "" +"Wenn aktiviert, sendet Gajim regelmäßig Keepalive-Pakete, um einen " +"Verbindungsabbruch durch eine Zeitüberschreitung zu verhindern" #: ../data/glade/account_modification_window.glade.h:22 -#: ../data/glade/zeroconf_properties_window.glade.h:9 -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/zeroconf_properties_window.glade.h:8 +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:23 -#: ../data/glade/zeroconf_properties_window.glade.h:10 -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 Kontaktfensters) auch den Status dieses Kontakts entsprechend ändern" +#: ../data/glade/accounts_window.glade.h:25 +#: ../data/glade/zeroconf_properties_window.glade.h:9 +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:24 -msgid "Information about you, as stored in the server" -msgstr "Informationen über Sie, wie sie auf dem Server gespeichert sind" +#: ../data/glade/accounts_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:10 +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 Kontaktfensters) auch den Status dieses Kontakts " +"entsprechend ändern" #: ../data/glade/account_modification_window.glade.h:25 -msgid "Manage..." -msgstr "_Verwalten..." +#: ../data/glade/accounts_window.glade.h:29 +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:26 -#: ../data/glade/zeroconf_properties_window.glade.h:16 -#: ../src/config.py:1623 -#: ../src/config.py:3301 +#: ../data/glade/account_modification_window.glade.h:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1553 +#: ../src/config.py:2030 msgid "No key selected" msgstr "Kein Schlüssel gewählt" #. None means no proxy profile selected #. GPG Key -#: ../data/glade/account_modification_window.glade.h:28 -#: ../src/config.py:1196 -#: ../src/config.py:1201 -#: ../src/config.py:1385 -#: ../src/config.py:1613 -#: ../src/config.py:1622 -#: ../src/config.py:1682 -#: ../src/config.py:1756 -#: ../src/config.py:3291 -#: ../src/config.py:3300 -#: ../src/dialogs.py:281 -#: ../src/dialogs.py:283 -#: ../src/roster_window.py:1539 -#: ../src/roster_window.py:1546 -#: ../src/roster_window.py:1553 +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1142 +#: ../src/config.py:1213 ../src/config.py:1462 ../src/config.py:1467 +#: ../src/config.py:1928 ../src/config.py:2015 ../src/config.py:2029 +#: ../src/config.py:3111 ../src/config.py:3157 ../src/dialogs.py:344 +#: ../src/dialogs.py:346 ../src/roster_window.py:1864 +#: ../src/roster_window.py:1871 ../src/roster_window.py:1878 msgid "None" msgstr "Kein" -#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 #: ../data/glade/profile_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:17 msgid "Personal Information" msgstr "Persönliche Informationen" -#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 msgid "Port: " msgstr "Port: " -#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 msgid "Priori_ty:" msgstr "Priori_tät:" -#: ../data/glade/account_modification_window.glade.h:32 -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:33 +#: ../data/glade/accounts_window.glade.h:40 +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:34 +#: ../data/glade/accounts_window.glade.h:41 msgid "Priority will change automatically according to your status." msgstr "Die Priorität wird sich automatisch gemäß des Status ändern." -#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 msgid "Proxy:" msgstr "Proxy:" -#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 msgid "Resour_ce:" msgstr "Ressour_ce: " -#: ../data/glade/account_modification_window.glade.h:36 -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 trennen, 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:37 +#: ../data/glade/accounts_window.glade.h:45 +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 trennen, 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:38 #: ../data/glade/zeroconf_properties_window.glade.h:18 msgid "Save _passphrase (insecure)" msgstr "_Passphrase speichern (unsicher)" -#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:46 #: ../data/glade/zeroconf_properties_window.glade.h:19 msgid "Save conversation _logs for all contacts" msgstr "Unter_haltungsverlauf für alle Kontakte dieses Kontos speichern" -#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:48 msgid "Send keep-alive packets" msgstr "Sende Keepalive-Pakete" -#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:49 #: ../data/glade/zeroconf_properties_window.glade.h:20 msgid "Synch_ronize account status with global status" msgstr "Konto-Status mit globalem _Status abgleichen" -#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:50 +#: ../data/glade/synchronise_select_account_dialog.glade.h:2 msgid "Synchronise contacts" msgstr "Synchronisiere Kontakte" -#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 msgid "Use _SSL (legacy)" msgstr "_SSL verwenden (veraltet)" -#: ../data/glade/account_modification_window.glade.h:44 -msgid "Use custom hostname/port" -msgstr "Verwende benutzerdefinierten Hostnamen und Port" - -#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 msgid "Use file transfer proxies" msgstr "Verwende Datentransfer-Proxies" -#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 msgid "_Adjust to status" msgstr "Mit dem Status _abgleichen" -#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 msgid "_Jabber ID:" msgstr "_Jabber ID:" -#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/account_modification_window.glade.h:49 msgid "_Name:" msgstr "_Name: " -#: ../data/glade/accounts_window.glade.h:1 -msgid "Accounts" -msgstr "Konten" +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "E-Mail:" -#: ../data/glade/accounts_window.glade.h:2 +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Einschalten" + +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "Vorname:" + +#: ../data/glade/accounts_window.glade.h:22 +msgid "If checked, Gajim will get the password from a GPG agent like seahorse" +msgstr "" +"Falls aktiviert, wird Gajim das Passwort von einem GnuPG-Agent wie seahorse " +"beziehen" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 msgid "" -"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.\n" -"This is only available if python-avahi is installed and avahi-daemon is running." +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." msgstr "" -"Wenn aktiviert, werden alle lokalen Kontakte, welche einen zu Bonjour kompatiblen Chat-Client (Wie z.B. iChat, Trillian oder Gaim) nutzen, in Ihrer Kontaktliste angezeigt. Dafür müssen Sie nicht mit einem Jabber-Server verbunden sein.\n" -"Dies ist nur möglich, wenn python-avahi verfügbar ist und avahi-daemon läuft (Automatische Diensterkennung)." +"Wenn der Standardport, der für eingehende Nachrichten benutzt wird, nicht " +"für Ihre Konfiguration geeignet ist, können sie hier einen anderen Port " +"festlegen.\n" +"Möglicherweise ist es von Nöten, Ihre Firewall-Einstellungen zu ändern." -#: ../data/glade/accounts_window.glade.h:4 -msgid "If you have 2 or more accounts and this 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 nur ein Konto" +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:511 +msgid "Jabber ID:" +msgstr "Jabber-ID:" -#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "Nachname:" + +#: ../data/glade/accounts_window.glade.h:33 msgid "Mer_ge accounts" msgstr "Konten _zusammenführen" -#: ../data/glade/accounts_window.glade.h:6 -msgid "_Enable link-local messaging" -msgstr "_Kontakte im LAN anzeigen" +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2727 +msgid "Re_name" +msgstr "_Umbenennen" -#: ../data/glade/accounts_window.glade.h:7 -msgid "_Modify" -msgstr "_Ändern" +#: ../data/glade/accounts_window.glade.h:51 +msgid "Use GPG _Agent" +msgstr "" -#: ../data/glade/accounts_window.glade.h:8 -#: ../data/glade/remove_account_window.glade.h:4 -msgid "_Remove" -msgstr "_Entfernen" +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Verwende benutzerdefinierten Port:" + +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:60 +#: ../data/glade/features_window.glade.h:4 +msgid "gtk-close" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "" #: ../data/glade/add_new_contact_window.glade.h:1 msgid "A_ccount:" @@ -531,12 +671,15 @@ msgid "This jabber entity does not expose any commands." msgstr "Diese Jabber-Instanz gibt keine Kommandos von sich." #: ../data/glade/advanced_configuration_window.glade.h:1 +#: ../data/glade/features_window.glade.h:1 msgid "<b>Description</b>" msgstr "<b>Beschreibung</b>" #: ../data/glade/advanced_configuration_window.glade.h:2 msgid "<b>NOTE:</b> You should restart Gajim for some settings to take effect" -msgstr "<b>HINWEIS:</b> Sie sollten Gajim neu starten, damit alle Änderungen in Kraft treten" +msgstr "" +"<b>HINWEIS:</b> Sie sollten Gajim neu starten, damit alle Änderungen in " +"Kraft treten" #: ../data/glade/advanced_configuration_window.glade.h:3 msgid "Advanced Configuration Editor" @@ -555,45 +698,42 @@ msgid "Deletes Message of the Day" msgstr "Löscht die Nachricht des Tages" #: ../data/glade/advanced_menuitem_menu.glade.h:3 +#, fuzzy +msgid "Edit _Privacy Lists..." +msgstr "_Privatlisten" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 msgid "Sends a message to users currently connected to this server" msgstr "Sendet eine Nachricht an momentan angemeldete Benutzer des Servers" -#: ../data/glade/advanced_menuitem_menu.glade.h:4 -msgid "Set MOTD" +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Set MOTD..." msgstr "_Setze MOTD" -#: ../data/glade/advanced_menuitem_menu.glade.h:5 +#: ../data/glade/advanced_menuitem_menu.glade.h:6 msgid "Sets Message of the Day" msgstr "Setzt Message of the Day" -#: ../data/glade/advanced_menuitem_menu.glade.h:6 +#: ../data/glade/advanced_menuitem_menu.glade.h:7 msgid "Show _XML Console" msgstr "Zeige _XML Konsole" -#: ../data/glade/advanced_menuitem_menu.glade.h:7 -msgid "Update MOTD" +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Update MOTD..." msgstr "_Aktualisiere MOTD" -#: ../data/glade/advanced_menuitem_menu.glade.h:8 +#: ../data/glade/advanced_menuitem_menu.glade.h:9 msgid "Updates Message of the Day" msgstr "Aktualisiert Message of the Day" -#: ../data/glade/advanced_menuitem_menu.glade.h:9 +#: ../data/glade/advanced_menuitem_menu.glade.h:10 msgid "_Administrator" msgstr "_Administrator" -#: ../data/glade/advanced_menuitem_menu.glade.h:10 -msgid "_Privacy Lists" -msgstr "_Privatlisten" - #: ../data/glade/advanced_menuitem_menu.glade.h:11 -msgid "_Send Server Message" +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 " @@ -607,7 +747,7 @@ msgid "<b>Conditions</b>" msgstr "<b>Ereignisse</b>" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "<b>Sounds</b>" msgstr "<b>Klänge</b>" @@ -624,8 +764,7 @@ msgid "All statuses" msgstr "Alle Status " #: ../data/glade/advanced_notifications_window.glade.h:8 -#: ../src/common/commands.py:91 -#: ../src/common/helpers.py:243 +#: ../src/common/commands.py:96 ../src/common/helpers.py:255 msgid "Away" msgstr "Abwesend" @@ -642,7 +781,7 @@ msgid "Have " msgstr "habe " #: ../data/glade/advanced_notifications_window.glade.h:12 -#: ../src/common/helpers.py:253 +#: ../src/common/helpers.py:265 msgid "Invisible" msgstr "Unsichtbar" @@ -651,7 +790,7 @@ msgid "Launch a command" msgstr "Starte ein Kommando" #: ../data/glade/advanced_notifications_window.glade.h:14 -#: ../src/common/helpers.py:226 +#: ../src/common/helpers.py:238 msgid "Not Available" msgstr "Nicht verfügbar" @@ -692,8 +831,11 @@ msgid "When " msgstr "Wenn " #: ../data/glade/advanced_notifications_window.glade.h:27 -msgid "_Activate window manager's UrgencyHint to make chat window in taskbar flash" -msgstr "_Aktivere den UrgencyHint des Fenstermanagers, um das Chatfenster in der Taskleiste blinken zu lassen" +msgid "" +"_Activate window manager's UrgencyHint to make chat window in taskbar flash" +msgstr "" +"_Aktivere den UrgencyHint des Fenstermanagers, um das Chatfenster in der " +"Taskleiste blinken zu lassen" #: ../data/glade/advanced_notifications_window.glade.h:28 msgid "_Disable auto opening chat window" @@ -773,6 +915,10 @@ msgstr "Neuen Eintrag empfangen" msgid "You have received new entry:" msgstr "Sie haben einen neuen Eintrag erhalten:" +#: ../data/glade/blocked_contacts_window.glade.h:1 +msgid "Blocked Contacts" +msgstr "blockierte Kontakte" + #: ../data/glade/change_password_dialog.glade.h:1 msgid "Change Password" msgstr "Passwort ändern" @@ -802,10 +948,8 @@ msgid "Join _Group Chat" msgstr "_Gruppenchat 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:10 -msgid "_Add to Roster" +#: ../data/glade/roster_contact_context_menu.glade.h:12 +msgid "_Add to Roster..." msgstr "Zur Kont_aktliste hinzufügen" #: ../data/glade/chat_context_menu.glade.h:3 @@ -825,7 +969,6 @@ msgid "_Open Link in Browser" msgstr "Link _öffnen" #: ../data/glade/chat_context_menu.glade.h:7 -#: ../data/glade/roster_window.glade.h:20 #: ../data/glade/subscription_request_popup_menu.glade.h:1 #: ../data/glade/systray_context_menu.glade.h:7 msgid "_Start Chat" @@ -836,28 +979,64 @@ 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:8 +#, fuzzy +msgid "Invite _Contacts" +msgstr "Kontakte verwalten" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 #: ../data/glade/zeroconf_contact_context_menu.glade.h:4 msgid "Send _File" msgstr "_Datei senden" -#: ../data/glade/chat_control_popup_menu.glade.h:3 -msgid "Toggle Open_PGP Encryption" -msgstr "Open_PGP-Verschlüsselung aktivieren" +#: ../data/glade/chat_control_popup_menu.glade.h:4 +msgid "Toggle End to End Encryption" +msgstr "OpenPGP-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" +msgid "Toggle Open_PGP Encryption" +msgstr "Open_PGP-Verschlüsselung aktivieren" #: ../data/glade/chat_control_popup_menu.glade.h:6 -#: ../data/glade/gc_control_popup_menu.glade.h:8 -#: ../data/glade/gc_occupants_menu.glade.h:5 -#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "Zur Kont_aktliste hinzufügen" + +#: ../data/glade/chat_control_popup_menu.glade.h:7 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_window.glade.h:19 #: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2596 msgid "_History" msgstr "_Verlauf" +#: ../data/glade/chat_to_muc_window.glade.h:1 +msgid "In_vite" +msgstr "_Einladen zu" + +#: ../data/glade/chat_to_muc_window.glade.h:2 +msgid "Invite Friends !" +msgstr "Freunde einladen !" + +#: ../data/glade/chat_to_muc_window.glade.h:3 +#, fuzzy +msgid "MUC server" +msgstr "Beobachter" + +#: ../data/glade/chat_to_muc_window.glade.h:4 +msgid "Please select a MUC server." +msgstr "Bitte wählen Sie einen MUC-Server aus." + +#: ../data/glade/chat_to_muc_window.glade.h:5 +msgid "" +"You are going to begin a Multi-User Chat.\n" +"Select the contacts you want to invite" +msgstr "" +"Sie beginnen einen Multi-User Chat.\n" +"Wählen Sie die Kontakte, die Sie einladen möchten" + #: ../data/glade/data_form_window.glade.h:1 msgid "Fill in the form." msgstr "Formular ausfüllen" @@ -870,6 +1049,15 @@ msgstr "Raum-Konfiguration" msgid "Edit Groups" msgstr "Gruppen bearbeiten" +#: ../data/glade/features_window.glade.h:2 +msgid "<b>List of possible features in Gajim:</b>" +msgstr "<b>Liste möglicher Gajim-Features:</b>" + +#: ../data/glade/features_window.glade.h:3 +#, fuzzy +msgid "Features" +msgstr "Fähigkeiten des Servers" + #: ../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" @@ -884,7 +1072,8 @@ 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" +msgstr "" +"Bricht den ausgewählten Dateitransfer ab und löscht unvollständige Daten" #: ../data/glade/filetransfers.glade.h:5 msgid "Clean _up" @@ -904,22 +1093,27 @@ msgstr "Entferne Dateitransfer von Liste" #: ../data/glade/filetransfers.glade.h:9 msgid "Removes completed, cancelled and failed file transfers from the list" -msgstr "Entfernt beendete, abgebrochene und fehlgeschlagene Dateitransfers von der Liste" +msgstr "" +"Entfernt beendete, abgebrochene und fehlgeschlagene Dateitransfers von der " +"Liste" #: ../data/glade/filetransfers.glade.h:10 msgid "Shows a list of file transfers between you and others" msgstr "Zeigt eine Liste von Dateiübertragungen an" #: ../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" +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:761 +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:790 msgid "_Continue" msgstr "_Fortsetzen" @@ -927,8 +1121,7 @@ msgstr "_Fortsetzen" 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:188 +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:191 msgid "_Open Containing Folder" msgstr "_Öffne Ordner" @@ -1017,11 +1210,11 @@ msgid "_Background:" msgstr "_Hintergrund:" #: ../data/glade/gc_control_popup_menu.glade.h:1 -msgid "Change _Nickname" +msgid "Change _Nickname..." msgstr "_Spitzname ändern" #: ../data/glade/gc_control_popup_menu.glade.h:2 -msgid "Change _Subject" +msgid "Change _Subject..." msgstr "_Thema ändern" #: ../data/glade/gc_control_popup_menu.glade.h:3 @@ -1029,50 +1222,58 @@ 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" +msgid "Configure _Room..." msgstr "_Raum einrichten" #: ../data/glade/gc_control_popup_menu.glade.h:5 -msgid "_Bookmark This Room" +msgid "_Bookmark" msgstr "Raum zu _Lesezeichen hinzufügen" -#: ../data/glade/gc_control_popup_menu.glade.h:7 -msgid "_Destroy room" -msgstr "_Raum zerstören" +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" +msgstr "_Raum auflösen" + +#: ../data/glade/gc_control_popup_menu.glade.h:8 +msgid "_Manage Room" +msgstr "Raum verwalten" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "Beim Schließen _minimieren" #: ../data/glade/gc_occupants_menu.glade.h:1 msgid "Mo_derator" msgstr "Mo_derator" -#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:2 +msgid "Occupant Actions" +msgstr "Benutzer Aktionen" + +#: ../data/glade/gc_occupants_menu.glade.h:5 msgid "_Admin" msgstr "_Admin" -#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:6 msgid "_Ban" msgstr "_Verbannen" -#: ../data/glade/gc_occupants_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:8 msgid "_Kick" msgstr "_Rausschmeißen" -#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:9 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 +#: ../data/glade/gc_occupants_menu.glade.h:10 msgid "_Owner" msgstr "_Besitzer" -#: ../data/glade/gc_occupants_menu.glade.h:10 +#: ../data/glade/gc_occupants_menu.glade.h:11 msgid "_Send Private Message" msgstr "Private Nachricht _senden" -#: ../data/glade/gc_occupants_menu.glade.h:11 +#: ../data/glade/gc_occupants_menu.glade.h:12 msgid "_Voice" msgstr "_Stimme verleihen" @@ -1080,15 +1281,13 @@ msgstr "_Stimme verleihen" msgid "Create new post" msgstr "Neue Nachricht" -#: ../data/glade/groups_post_window.glade.h:2 -#: ../src/common/helpers.py:268 +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:280 msgid "From" msgstr "Von" #. holds subject -#: ../data/glade/groups_post_window.glade.h:3 -#: ../src/history_manager.py:142 -#: ../src/history_manager.py:173 +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:147 +#: ../src/history_manager.py:178 msgid "Subject" msgstr "Betreff" @@ -1099,14 +1298,17 @@ msgid "" "You can select logs from the left and/or search database from below.\n" "\n" "<b>WARNING:</b>\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." msgstr "" "<big><b>Willkommen zum Gajim Verlaufsmanager</b></big>\n" "\n" "Sie können Logs links auswählen und/oder unten die Datenbank durchsuchen.\n" "\n" "<b>WARNUNG:</b>\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 chatten." +"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 " +"chatten." #: ../data/glade/history_manager.glade.h:7 msgid "Delete" @@ -1125,25 +1327,50 @@ msgid "_Search Database" msgstr "_Suche Datenbank" #: ../data/glade/history_window.glade.h:1 -msgid "Build custom query" -msgstr "Personalisierte Anfrage bauen" +msgid "<b>History Viewer</b>" +msgstr "<b>Verlauf ansehen</b>" #: ../data/glade/history_window.glade.h:2 +msgid "<b>JID Selection</b>" +msgstr "<b>JID Auswahl</b>" + +#: ../data/glade/history_window.glade.h:3 +msgid "" +"Choose the chatlog you want to view. \n" +"Enter the jid of a groupchat or a contact here. For online accounts you can " +"even enter a a contact's nickname." +msgstr "" + +#: ../data/glade/history_window.glade.h:5 ../src/history_window.py:224 msgid "Conversation History" msgstr "Unterhaltungsverlauf" -#: ../data/glade/history_window.glade.h:3 -msgid "Query Builder..." -msgstr "Anfrage-Baukasten ..." +#: ../data/glade/history_window.glade.h:6 +msgid "" +"Current History\n" +"All Chat Histories" +msgstr "" -#: ../data/glade/history_window.glade.h:4 +#: ../data/glade/history_window.glade.h:8 +#: ../data/glade/search_window.glade.h:2 msgid "Search" msgstr "Suche" -#: ../data/glade/history_window.glade.h:5 +#: ../data/glade/history_window.glade.h:9 +#: ../data/glade/zeroconf_information_window.glade.h:10 +msgid "_Log conversation history" +msgstr "Unterhaltungs-Ver_lauf" + +#: ../data/glade/history_window.glade.h:10 +#: ../data/glade/search_window.glade.h:5 ../src/disco.py:1182 msgid "_Search" msgstr "_Suche" +#: ../data/glade/history_window.glade.h:11 +#, fuzzy +msgid "in" +msgstr "Neun" + #: ../data/glade/invitation_received_dialog.glade.h:1 msgid "Accept" msgstr "Akzeptieren" @@ -1157,8 +1384,7 @@ msgstr "Ablehnen" msgid "Invitation Received" msgstr "Einladung empfangen" -#: ../data/glade/join_groupchat_window.glade.h:1 -#: ../src/dialogs.py:1208 +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1385 msgid "Join Group Chat" msgstr "Betrete Gruppenchat" @@ -1167,14 +1393,14 @@ msgid "Join this room automatically when I connect" msgstr "Betrete diesen Raum automatisch, wenn ich mich verbinde" #: ../data/glade/join_groupchat_window.glade.h:3 -#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:5 #: ../data/glade/profile_window.glade.h:24 -#: ../data/glade/vcard_information_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:31 msgid "Nickname:" msgstr "Spitzname:" #: ../data/glade/join_groupchat_window.glade.h:4 -#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:6 msgid "Password:" msgstr "Passwort:" @@ -1183,13 +1409,12 @@ msgid "Recently:" msgstr "Kürzlich:" #: ../data/glade/join_groupchat_window.glade.h:6 -#: ../data/glade/manage_bookmarks_window.glade.h:7 +#: ../data/glade/manage_bookmarks_window.glade.h:8 msgid "Room:" msgstr "Raum:" -#: ../data/glade/join_groupchat_window.glade.h:7 -#: ../src/disco.py:1163 -#: ../src/disco.py:1546 +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1170 +#: ../src/disco.py:1625 msgid "_Join" msgstr "_Betreten" @@ -1209,15 +1434,19 @@ msgstr "Wenn aktiviert, tritt Gajim dem Gruppenchat beim Programmstart bei" msgid "Manage Bookmarks" msgstr "Verwalte Lesezeichen" -#: ../data/glade/manage_bookmarks_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "Minimieren bei Auto-Join" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 msgid "Print status:" msgstr "Status anzeigen:" -#: ../data/glade/manage_bookmarks_window.glade.h:8 +#: ../data/glade/manage_bookmarks_window.glade.h:9 msgid "Server:" msgstr "Server:" -#: ../data/glade/manage_bookmarks_window.glade.h:9 +#: ../data/glade/manage_bookmarks_window.glade.h:10 msgid "Title:" msgstr "Titel:" @@ -1243,10 +1472,14 @@ msgstr "Proxy Verwaltung" #: ../data/glade/manage_proxies_window.glade.h:6 #: ../data/glade/profile_window.glade.h:23 -#: ../data/glade/vcard_information_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:30 msgid "Name:" msgstr "Name:" +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "Pass_wort:" + #: ../data/glade/manage_proxies_window.glade.h:8 msgid "Type:" msgstr "Art:" @@ -1255,18 +1488,21 @@ msgstr "Art:" msgid "Use authentication" msgstr "Verwende Authentifizierung" +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_Server:" + #: ../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:1109 +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1268 msgid "OpenPGP Encryption" -msgstr "OpenPGP-Verschlüsselung" +msgstr "Open_PGP-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:10 +#: ../data/glade/roster_window.glade.h:12 #: ../data/glade/subscription_request_window.glade.h:6 msgid "_Actions" msgstr "_Aktionen" @@ -1274,7 +1510,7 @@ 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:245 +#: ../src/filetransfers_window.py:252 msgid "_Send" msgstr "_Senden" @@ -1290,36 +1526,51 @@ msgstr "<b>Erweiterter Konfigurations-Editor</b>" msgid "<b>Applications</b>" msgstr "<b>Anwendungen</b>" +#: ../data/glade/preferences_window.glade.h:3 +#, fuzzy +msgid "<b>Chat Appearance</b>" +msgstr "<b>Eine Regel bearbeiten</b>" + #. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../data/glade/preferences_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:5 msgid "<b>Custom</b>" msgstr "<b>Benutzerdefiniert</b>" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "<b>Format of a line</b>" msgstr "<b>Format einer Zeile</b>" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "<b>GMail Options</b>" msgstr "<b>Gmail-Optionen</b>" -#: ../data/glade/preferences_window.glade.h:7 -msgid "<b>Interface Customization</b>" -msgstr "<b>Benutzerdefiniertes Aussehen</b>" - #: ../data/glade/preferences_window.glade.h:9 msgid "<b>Preset Status Messages</b>" msgstr "<b>Voreingestellte Status-Nachrichten</b>" +#: ../data/glade/preferences_window.glade.h:10 +#, fuzzy +msgid "<b>Privacy</b>" +msgstr "<i>Privatsphären-Liste</i>" + #: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "<b>Roster-Aussehen</b>" + +#: ../data/glade/preferences_window.glade.h:13 +#, fuzzy +msgid "<b>Themes</b>" +msgstr "<b>Eigenschaften</b>" + +#: ../data/glade/preferences_window.glade.h:14 msgid "<b>Visual Notifications</b>" msgstr "<b>Visuelle Benachrichtigungen</b>" -#: ../data/glade/preferences_window.glade.h:12 +#: ../data/glade/preferences_window.glade.h:15 msgid "Advanced" msgstr "Erweitert" -#: ../data/glade/preferences_window.glade.h:13 +#: ../data/glade/preferences_window.glade.h:16 msgid "" "All chat states\n" "Composing only\n" @@ -1329,39 +1580,44 @@ msgstr "" "Nur beim Schreiben\n" "Deaktiviert" -#: ../data/glade/preferences_window.glade.h:16 +#: ../data/glade/preferences_window.glade.h:19 msgid "Allow _OS information to be sent" msgstr "Sende _Betriebssystem-Information" -#: ../data/glade/preferences_window.glade.h:17 +#: ../data/glade/preferences_window.glade.h:20 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:18 -msgid "Also known as iChat style" -msgstr "Auch als iChat-Stil bekannt" +msgstr "" +"Popups/Benachrichtigungen _zulassen, wenn ich abwesend/NA/beschäftigt/" +"unsichtbar bin" -#: ../data/glade/preferences_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:21 msgid "Always check to see if Gajim is the _default Jabber client on startup" msgstr "Beim Starten überprüfen, ob Gajim der _Standard-Jabber-Client ist" -#: ../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 "Ein Beispiel: Wenn Sie eine Status-Nachricht für Abwesend aktiviert haben, wird Sie Gajim nicht noch einmal nach einer Status-Nachricht fragen, wenn Sie Ihren Status zu Abwesend ändern; es wird die hier definierte Nachricht verwendet." +#: ../data/glade/preferences_window.glade.h:22 +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 "" +"Ein Beispiel: Wenn Sie eine Status-Nachricht für Abwesend aktiviert haben, " +"wird Sie Gajim nicht noch einmal nach einer Status-Nachricht fragen, wenn " +"Sie Ihren Status zu Abwesend ändern; es wird die hier definierte Nachricht " +"verwendet." -#: ../data/glade/preferences_window.glade.h:21 +#: ../data/glade/preferences_window.glade.h:23 msgid "Ask status message when I:" msgstr "Erfrage Status-Nachricht beim: " -#: ../data/glade/preferences_window.glade.h:22 +#: ../data/glade/preferences_window.glade.h:24 msgid "Auto _away after:" msgstr "Automatisch _abwesend nach:" -#: ../data/glade/preferences_window.glade.h:23 +#: ../data/glade/preferences_window.glade.h:25 msgid "Auto _not available after:" msgstr "Automatisch _nicht verfügbar nach:" -#: ../data/glade/preferences_window.glade.h:24 +#: ../data/glade/preferences_window.glade.h:26 msgid "" "Autodetect on every Gajim startup\n" "Always use GNOME default applications\n" @@ -1372,28 +1628,28 @@ msgstr "" "Bei jedem Programmstart automatisch erkennen\n" "Immer GNOME Standard-Anwendungen verwenden\n" "Immer KDE Standard-Anwendungen verwenden\n" +"Immer XFCE4 Standard-Anwendungen verwenden\n" "Benutzerdefiniert" -#: ../data/glade/preferences_window.glade.h:29 -msgid "Chat" -msgstr "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, because 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, Spam an Sie verschickt oder Sie belästigt. Verwenden Sie diese Option mit Vorsicht, da sie alle Nachrichten von allen Kontakten blockiert, die nicht in ihrer Liste sind." - #: ../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, because 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, " +"Spam an Sie verschickt oder Sie belästigt. Verwenden Sie diese Option mit " +"Vorsicht, da sie alle Nachrichten von allen Kontakten blockiert, die nicht " +"in ihrer Liste sind." + +#: ../data/glade/preferences_window.glade.h:32 msgid "Configure color and font of the interface" msgstr "Farbe und Schriftart für die Oberfläche konfigurieren" -#: ../data/glade/preferences_window.glade.h:32 +#: ../data/glade/preferences_window.glade.h:33 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 "" "Determined by sender\n" @@ -1417,82 +1673,96 @@ msgid "Display status _messages of contacts in roster" msgstr "Zeige die Status_nachrichten von Kontakten im Roster" #: ../data/glade/preferences_window.glade.h:40 -msgid "Displayed Chat state noti_fications:" -msgstr "Zeige Benachrichtigung über Chatstatus:" +msgid "Emoticons:" +msgstr "Emoticons:" #: ../data/glade/preferences_window.glade.h:41 -msgid "E_very 5 minutes" -msgstr "Alle 5 _Minuten" +msgid "Events" +msgstr "Ereignisse" #: ../data/glade/preferences_window.glade.h:42 -msgid "Emoticons:" -msgstr "Emoticons:" +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 " +"display in chat windows." +msgstr "" +"Gajim kann Meta-Information, die eine Unterhaltung mit einem Kontakt " +"betrifft, empfangen und versenden. Hier können Sie definieren, welche " +"Chatstatus Sie in Ihrem Chatfenster anzeigen möchten." #: ../data/glade/preferences_window.glade.h:43 -msgid "Events" -msgstr "Ereignisse" +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:44 -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 display in chat windows." -msgstr "Gajim kann Meta-Information, die eine Unterhaltung mit einem Kontakt betrifft, empfangen und versenden. Hier können Sie definieren, welche Chatstatus Sie in Ihrem Chatfenster anzeigen möchten." - -#: ../data/glade/preferences_window.glade.h:45 -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." +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:46 -msgid "Gajim will automatically show new events by popping up the relevant window" -msgstr "Gajim wird neue Ereignisse automatisch anzeigen, indem das betreffende Fenster geöffnet wird" +msgid "Hides buttons in chatwindows to " +msgstr "Versteckt die Knöpfe im Gruppenchat-Fenster." #: ../data/glade/preferences_window.glade.h:47 -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" +msgid "" +"If checked, Gajim will also include information about the sender of the new " +"emails" +msgstr "" +"Wenn aktiviert, wird Gajim auch Informationen über den Absender von neuen E-" +"Mails hinzufügen." #: ../data/glade/preferences_window.glade.h:48 -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" +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 "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" +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 "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:52 -msgid "If checked, Gajim will also include information about the sender of the new emails" -msgstr "Wenn aktiviert, wird Gajim auch Informationen über den Absender von neuen E-Mails hinzufügen." - -#: ../data/glade/preferences_window.glade.h:53 -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:54 -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:55 -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 aktiviert, erinnert sich Gajim an die Position und Größe der Kontaktliste auf dem Bildschirm beim nächsten Start" - -#: ../data/glade/preferences_window.glade.h:56 -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)" +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:57 -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:51 +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:58 +#: ../data/glade/preferences_window.glade.h:52 msgid "Ignore rich content in incoming messages" msgstr "Formatierten Inhalt in ankommenden Nachrichten ignorieren" -#: ../data/glade/preferences_window.glade.h:59 +#: ../data/glade/preferences_window.glade.h:53 msgid "Ma_nage..." msgstr "_Verwalte..." -#: ../data/glade/preferences_window.glade.h:60 +#: ../data/glade/preferences_window.glade.h:54 msgid "" "Never\n" "Always\n" @@ -1504,183 +1774,187 @@ msgstr "" "Pro Account\n" "Pro Typ" -#: ../data/glade/preferences_window.glade.h:64 -msgid "Notify me about contacts that: " -msgstr "Ãœber Kontakte benachrichtigen, die sich " +#: ../data/glade/preferences_window.glade.h:58 +msgid "Notify me about contacts that sign _in" +msgstr "Ãœber Kontakte benachrichtigen, die sich einloggen" -#: ../data/glade/preferences_window.glade.h:65 +#: ../data/glade/preferences_window.glade.h:59 +msgid "Notify me about contacts that sign _out" +msgstr "Ãœber Kontakte benachrichtigen, die sich abmelden" + +#: ../data/glade/preferences_window.glade.h:60 msgid "Notify on new _GMail email" msgstr "Ãœber neue _Google Mail E-Mails benachrichtigen" -#: ../data/glade/preferences_window.glade.h:66 -msgid "On every _message" -msgstr "In jeder _Zeile" - -#: ../data/glade/preferences_window.glade.h:67 -msgid "One message _window:" -msgstr "Ein _Nachrichtenfenster:" - -#: ../data/glade/preferences_window.glade.h:68 -msgid "Outgoing Chat state noti_fications:" -msgstr "_Sende Chatstatus:" - -#: ../data/glade/preferences_window.glade.h:69 +#: ../data/glade/preferences_window.glade.h:61 msgid "Play _sounds" msgstr "_Klänge abspielen" -#: ../data/glade/preferences_window.glade.h:70 +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" +"Popup öffnen\n" +"Benachrichtige mich darüber\n" +"Nur im Roster anzeigen" + +#: ../data/glade/preferences_window.glade.h:65 msgid "Preferences" msgstr "Einstellungen" -#: ../data/glade/preferences_window.glade.h:71 -msgid "Print time:" -msgstr "Zeit anzeigen:" - -#: ../data/glade/preferences_window.glade.h:72 -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 +#, fuzzy +msgid "Privacy" +msgstr "Privatliste" -#: ../data/glade/preferences_window.glade.h:73 +#: ../data/glade/preferences_window.glade.h:67 msgid "Set status message to reflect currently playing _music track" msgstr "Setze Status-Nachricht auf den aktuell spielenden _Musiktitel" -#: ../data/glade/preferences_window.glade.h:74 -msgid "Show only in _roster" -msgstr "Nur in der _Kontaktliste anzeigen" - -#: ../data/glade/preferences_window.glade.h:75 +#: ../data/glade/preferences_window.glade.h:68 msgid "Sign _in" msgstr "_anmelden" -#: ../data/glade/preferences_window.glade.h:76 +#: ../data/glade/preferences_window.glade.h:69 msgid "Sign _out" msgstr "a_bmelden" -#: ../data/glade/preferences_window.glade.h:77 -msgid "Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text." -msgstr "Einige Nachrichten könnten formatierten Inhalt enthalten (Farben, Schriftarten etc.). Wenn aktiviert, wird Gajim nur den puren Nachrichtentext anzeigen." +#: ../data/glade/preferences_window.glade.h:70 +msgid "" +"Some messages may include rich content (formatting, colors etc). If checked, " +"Gajim will just display the raw message text." +msgstr "" +"Einige Nachrichten könnten formatierten Inhalt enthalten (Farben, " +"Schriftarten etc.). Wenn aktiviert, wird Gajim nur den puren Nachrichtentext " +"anzeigen." -#: ../data/glade/preferences_window.glade.h:78 +#: ../data/glade/preferences_window.glade.h:71 msgid "Status" msgstr "Status" -#: ../data/glade/preferences_window.glade.h:79 +#: ../data/glade/preferences_window.glade.h:72 +msgid "Status _iconset:" +msgstr "Status-S_ymbole:" + +#: ../data/glade/preferences_window.glade.h:73 msgid "T_heme:" msgstr "T_hema:" -#: ../data/glade/preferences_window.glade.h:80 +#: ../data/glade/preferences_window.glade.h:74 msgid "The auto away status message" msgstr "Automatische Statusnachricht für Abwesend" -#: ../data/glade/preferences_window.glade.h:81 +#: ../data/glade/preferences_window.glade.h:75 msgid "The auto not available status message" msgstr "Automatische Statusnachricht für Nicht verfügbar" -#: ../data/glade/preferences_window.glade.h:82 +#: ../data/glade/preferences_window.glade.h:76 msgid "Treat all incoming messages as:" msgstr " Behandle alle eingehenden Nachrichten als:" -#: ../data/glade/preferences_window.glade.h:83 +#: ../data/glade/preferences_window.glade.h:77 msgid "Use _transports iconsets" msgstr "_Transport-Symbole verwenden" -#: ../data/glade/preferences_window.glade.h:84 +#: ../data/glade/preferences_window.glade.h:78 +msgid "Use only one message _window:" +msgstr "Nur ein _Nachrichtenfenster:" + +#: ../data/glade/preferences_window.glade.h:79 msgid "Use system _default" msgstr "Benutze System-_Voreinstellung" -#: ../data/glade/preferences_window.glade.h:85 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Verwende _Trayicon (Benachrichtigungs-Icon)" - -#: ../data/glade/preferences_window.glade.h:86 -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:87 -msgid "When new event is received" +#: ../data/glade/preferences_window.glade.h:80 +msgid "When new event is received:" msgstr "Wenn neue Nachricht empfangen wird" -#: ../data/glade/preferences_window.glade.h:88 -msgid "Works for Rhythmbox and Muine players. For more players, please visit http://trac.gajim.org/wiki/GajimAndMusicPlayer" -msgstr "Funktioniert mit Rhythmbox und Muine. Für weitere Wiedergabeprogramme besuchen Sie bitte http://trac.gajim.org/wiki/GajimAndMusicPlayer (Englisch)" +#: ../data/glade/preferences_window.glade.h:81 +msgid "" +"Works for Rhythmbox and Muine players. For more players, please visit http://" +"trac.gajim.org/wiki/GajimAndMusicPlayer" +msgstr "" +"Funktioniert mit Rhythmbox und Muine. Für weitere Wiedergabeprogramme " +"besuchen Sie bitte http://trac.gajim.org/wiki/GajimAndMusicPlayer (Englisch)" -#: ../data/glade/preferences_window.glade.h:89 +#: ../data/glade/preferences_window.glade.h:82 msgid "_Advanced Notifications Control..." msgstr "_Erweiterter Konfigurations-Editor..." -#: ../data/glade/preferences_window.glade.h:90 +#: ../data/glade/preferences_window.glade.h:83 msgid "_Browser:" msgstr "_Browser:" -#: ../data/glade/preferences_window.glade.h:91 +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Display chat state notifications:" +msgstr "Zeige Benachrichtigung über Chatstatus:" + +#: ../data/glade/preferences_window.glade.h:85 msgid "_File manager:" msgstr "_Dateimanager:" -#: ../data/glade/preferences_window.glade.h:92 +#: ../data/glade/preferences_window.glade.h:86 msgid "_Font:" msgstr "_Schriftart:" -#: ../data/glade/preferences_window.glade.h:93 +#: ../data/glade/preferences_window.glade.h:87 msgid "_Highlight misspelled words" msgstr "Falsch geschriebene Wörter _hervorheben" -#: ../data/glade/preferences_window.glade.h:94 +#: ../data/glade/preferences_window.glade.h:88 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:95 +#: ../data/glade/preferences_window.glade.h:89 msgid "_Incoming message:" msgstr "_Eingehende Nachricht:" -#: ../data/glade/preferences_window.glade.h:96 +#: ../data/glade/preferences_window.glade.h:90 msgid "_Log status changes of contacts" msgstr "_Logge die Statusveränderungen von Kontakten" -#: ../data/glade/preferences_window.glade.h:97 +#: ../data/glade/preferences_window.glade.h:91 msgid "_Mail client:" msgstr "_Mail-Programm:" -#: ../data/glade/preferences_window.glade.h:98 -msgid "_Never" -msgstr "_Nie" - -#: ../data/glade/preferences_window.glade.h:99 -msgid "_Notify me about it" -msgstr "Be_nachrichtigen" +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Make message windows compact" +msgstr "Nachrichtenfenster _kompakt anzeigen" -#: ../data/glade/preferences_window.glade.h:100 +#: ../data/glade/preferences_window.glade.h:93 msgid "_Open..." msgstr "Ö_ffnen..." -#: ../data/glade/preferences_window.glade.h:101 +#: ../data/glade/preferences_window.glade.h:94 msgid "_Outgoing message:" msgstr "_Ausgehende Nachricht:" -#: ../data/glade/preferences_window.glade.h:102 +#: ../data/glade/preferences_window.glade.h:95 msgid "_Player:" msgstr "_Player:" -#: ../data/glade/preferences_window.glade.h:103 -msgid "_Pop it up" -msgstr "_Öffnen" - -#: ../data/glade/preferences_window.glade.h:104 +#: ../data/glade/preferences_window.glade.h:96 msgid "_Reset to Default Colors" msgstr "Auf Standard-Farben zu_rücksetzen" -#: ../data/glade/preferences_window.glade.h:105 +#: ../data/glade/preferences_window.glade.h:97 +msgid "_Send chat state notifications:" +msgstr "Zeige Benachrichtigung über Chatstatus:" + +#: ../data/glade/preferences_window.glade.h:98 msgid "_Sort contacts by status" msgstr "Kontakte nach Status _sortieren" -#: ../data/glade/preferences_window.glade.h:106 +#: ../data/glade/preferences_window.glade.h:99 msgid "_Status message:" msgstr "_Statusnachricht:" -#: ../data/glade/preferences_window.glade.h:107 +#: ../data/glade/preferences_window.glade.h:100 msgid "_URL:" msgstr "_URL:" -#: ../data/glade/preferences_window.glade.h:108 +#: ../data/glade/preferences_window.glade.h:101 msgid "minutes" msgstr "Minuten" @@ -1724,8 +1998,7 @@ msgstr "Jabber-ID:" msgid "Order:" msgstr "Reihenfolge:" -#: ../data/glade/privacy_list_window.glade.h:11 -#: ../src/dialogs.py:2052 +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2258 msgid "Privacy List" msgstr "Privatliste" @@ -1800,111 +2073,103 @@ msgid "Company:" msgstr "Firma:" #: ../data/glade/profile_window.glade.h:9 -#: ../data/glade/vcard_information_window.glade.h:13 +#: ../data/glade/vcard_information_window.glade.h:14 msgid "Country:" msgstr "Land:" #: ../data/glade/profile_window.glade.h:10 -#: ../data/glade/vcard_information_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:15 msgid "Department:" msgstr "Abteilung:" -#: ../data/glade/profile_window.glade.h:11 -#: ../data/glade/vcard_information_window.glade.h:15 -#: ../data/glade/zeroconf_information_window.glade.h:2 -#: ../data/glade/zeroconf_properties_window.glade.h:5 -msgid "E-Mail:" -msgstr "E-Mail:" - #: ../data/glade/profile_window.glade.h:12 -#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:17 msgid "Extra Address:" msgstr "Zusatz-Adresse:" #. Family Name #: ../data/glade/profile_window.glade.h:14 -#: ../data/glade/vcard_information_window.glade.h:18 +#: ../data/glade/vcard_information_window.glade.h:19 msgid "Family:" msgstr "Nachname:" #. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) #: ../data/glade/profile_window.glade.h:16 -#: ../data/glade/vcard_information_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:21 msgid "Format: YYYY-MM-DD" msgstr "Format: JJJJ-MM-TT" -#. Given Name -#: ../data/glade/profile_window.glade.h:18 +#: ../data/glade/profile_window.glade.h:17 #: ../data/glade/vcard_information_window.glade.h:22 +msgid "Full Name" +msgstr "Name" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 msgid "Given:" msgstr "Vorname:" -#: ../data/glade/profile_window.glade.h:19 -#: ../data/glade/vcard_information_window.glade.h:23 +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 msgid "Homepage:" msgstr "Homepage:" #. Middle Name -#: ../data/glade/profile_window.glade.h:21 -#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 msgid "Middle:" msgstr "Mittelname" -#: ../data/glade/profile_window.glade.h:22 -#: ../data/glade/vcard_information_window.glade.h:27 -msgid "More" -msgstr "Mehr" - #: ../data/glade/profile_window.glade.h:25 -#: ../data/glade/vcard_information_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:34 msgid "Personal Info" msgstr "Persönliche Details" #: ../data/glade/profile_window.glade.h:27 -#: ../data/glade/vcard_information_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:35 msgid "Phone No.:" msgstr "Telefon-Nummer:" #: ../data/glade/profile_window.glade.h:28 -#: ../data/glade/vcard_information_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:36 msgid "Position:" msgstr "Position:" #: ../data/glade/profile_window.glade.h:29 -#: ../data/glade/vcard_information_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:37 msgid "Postal Code:" msgstr "Postleitzahl:" #. Prefix in Name #: ../data/glade/profile_window.glade.h:31 -#: ../data/glade/vcard_information_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:39 msgid "Prefix:" msgstr "Präfix" #: ../data/glade/profile_window.glade.h:32 -#: ../data/glade/vcard_information_window.glade.h:38 -#: ../src/vcard.py:273 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:307 msgid "Role:" msgstr "Rolle:" #: ../data/glade/profile_window.glade.h:33 -#: ../data/glade/vcard_information_window.glade.h:39 +#: ../data/glade/vcard_information_window.glade.h:42 msgid "State:" msgstr "Staat:" #: ../data/glade/profile_window.glade.h:34 -#: ../data/glade/vcard_information_window.glade.h:41 +#: ../data/glade/vcard_information_window.glade.h:44 msgid "Street:" msgstr "Straße:" #. Suffix in Name #: ../data/glade/profile_window.glade.h:36 -#: ../data/glade/vcard_information_window.glade.h:45 +#: ../data/glade/vcard_information_window.glade.h:48 msgid "Suffix:" msgstr "Suffix:" #: ../data/glade/profile_window.glade.h:37 -#: ../data/glade/vcard_information_window.glade.h:46 +#: ../data/glade/vcard_information_window.glade.h:50 msgid "Work" msgstr "Arbeit" @@ -1920,138 +2185,180 @@ msgstr "Konto entfernen (_nur in Gajim)" msgid "Remove account from Gajim and from _server" msgstr "Konto _entfernen (in Gajim und auf dem Server)" +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2553 ../src/roster_window.py:2763 +#: ../src/roster_window.py:2899 +msgid "_Remove" +msgstr "_Entfernen" + #: ../data/glade/roster_contact_context_menu.glade.h:1 msgid "A_sk to see his/her status" msgstr "_Bitte Kontakt, seinen Status zu sehen" #: ../data/glade/roster_contact_context_menu.glade.h:2 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 -msgid "Add Special _Notification" +msgid "Add Special _Notification..." msgstr "Spezielle Be_nachrichtigung hinzufügen" #: ../data/glade/roster_contact_context_menu.glade.h:3 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 -msgid "Assign Open_PGP Key" +msgid "Assign Open_PGP Key..." msgstr "Open_PGP-Schlüssel zuweisen" #: ../data/glade/roster_contact_context_menu.glade.h:4 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 -#: ../src/roster_window.py:2078 -msgid "Edit _Groups" +msgid "Edit _Groups..." msgstr "_Gruppen bearbeiten" +#. Execute Command #: ../data/glade/roster_contact_context_menu.glade.h:5 -#: ../src/roster_window.py:2213 +#: ../src/roster_window.py:2856 msgid "Execute Command..." msgstr "_Befehl ausführen..." +#. Invite to Groupchat #: ../data/glade/roster_contact_context_menu.glade.h:6 -#: ../src/roster_window.py:2036 +#: ../src/roster_window.py:2469 msgid "In_vite to" msgstr "_Einladen zu" +#. Send Custom Status #: ../data/glade/roster_contact_context_menu.glade.h:7 -#: ../data/glade/systray_context_menu.glade.h:2 -msgid "Send Single _Message" -msgstr "Einzelne Nachricht _senden..." +#: ../src/roster_window.py:2693 ../src/roster_window.py:2827 +msgid "Send Cus_tom Status" +msgstr "Benutzerdefinierten Status senden" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "Einzelne _Nachricht senden..." #: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "Send _File..." +msgstr "_Datei senden" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "Benutzerdefinierten Avatar wählen..." + +#: ../data/glade/roster_contact_context_menu.glade.h:11 #: ../data/glade/zeroconf_contact_context_menu.glade.h:5 msgid "Start _Chat" msgstr "_Chat starten" -#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/roster_contact_context_menu.glade.h:13 msgid "_Allow him/her to see my status" msgstr "_Erlaube Kontakt, meinen Status zu sehen" -#: ../data/glade/roster_contact_context_menu.glade.h:12 -msgid "_Forbid him/her to see my status" -msgstr "_Verbiete Kontakt, meinen Status zu sehen" - -#. Remove group #: ../data/glade/roster_contact_context_menu.glade.h:14 -#: ../src/roster_window.py:2030 -#: ../src/roster_window.py:2127 -#: ../src/roster_window.py:2234 -msgid "_Remove from Roster" -msgstr "Entfernen von _Kontaktliste" +#: ../src/roster_window.py:2543 ../src/roster_window.py:2754 +msgid "_Block" +msgstr "_Blockieren" #: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Forbid him/her to see my status" +msgstr "_Verbiete Kontakt, meinen Status zu sehen" + +#: ../data/glade/roster_contact_context_menu.glade.h:17 #: ../data/glade/zeroconf_contact_context_menu.glade.h:7 -#: ../src/roster_window.py:2222 -msgid "_Rename" +msgid "_Manage Contact" +msgstr "Kontakt verwalten" + +#: ../data/glade/roster_contact_context_menu.glade.h:19 +msgid "_Rename..." msgstr "_Umbenennen" -#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_contact_context_menu.glade.h:20 msgid "_Subscription" msgstr "_Abonnement" +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2537 ../src/roster_window.py:2748 +msgid "_Unblock" +msgstr "Entblocken" + #: ../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" +msgid "Add _Contact..." +msgstr "Kontakt _hinzufügen..." #: ../data/glade/roster_window.glade.h:3 +#, fuzzy +msgid "Fea_tures" +msgstr "Fähigkeiten des Servers" + +#: ../data/glade/roster_window.glade.h:4 msgid "File _Transfers" msgstr "_Dateitransfers" -#: ../data/glade/roster_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:5 msgid "Frequently Asked Questions (online)" msgstr "Häufig gestellte Fragen (online)" -#: ../data/glade/roster_window.glade.h:6 +#: ../data/glade/roster_window.glade.h:7 msgid "Help online" msgstr "Online-Hilfe" -#: ../data/glade/roster_window.glade.h:7 +#: ../data/glade/roster_window.glade.h:9 msgid "Profile, A_vatar" msgstr "Profile, A_vatar" -#: ../data/glade/roster_window.glade.h:8 +#: ../data/glade/roster_window.glade.h:10 msgid "Show Trans_ports" msgstr "Zeige Trans_porte" -#: ../data/glade/roster_window.glade.h:9 +#: ../data/glade/roster_window.glade.h:11 msgid "Show _Offline Contacts" msgstr "_Abgemeldete Kontakte anzeigen" -#: ../data/glade/roster_window.glade.h:12 +#: ../data/glade/roster_window.glade.h:14 msgid "_Contents" msgstr "In_halte" -#: ../data/glade/roster_window.glade.h:13 -msgid "_Discover Services" -msgstr "_Dienste durchsuchen" - -#: ../data/glade/roster_window.glade.h:14 -#: ../src/disco.py:1284 -#: ../src/roster_window.py:2205 +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1358 msgid "_Edit" msgstr "_Ändern" -#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/roster_window.glade.h:17 msgid "_FAQ" msgstr "_FAQ" -#: ../data/glade/roster_window.glade.h:17 +#: ../data/glade/roster_window.glade.h:18 msgid "_Help" msgstr "_Hilfe" -#: ../data/glade/roster_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:20 msgid "_Preferences" msgstr "_Einstellungen" -#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:21 msgid "_Quit" msgstr "_Beenden" -#: ../data/glade/roster_window.glade.h:21 +#: ../data/glade/roster_window.glade.h:22 +msgid "_Send Single Message..." +msgstr "Einzelne _Nachricht senden..." + +#: ../data/glade/roster_window.glade.h:24 msgid "_View" msgstr "_Ansicht" +#: ../data/glade/search_window.glade.h:1 +msgid "Please wait while retrieving search form..." +msgstr "Bitte warten Sie, während das Suchformular geladen wird ..." + +#: ../data/glade/search_window.glade.h:3 +msgid "_Add contact" +msgstr "_Kontakt hinzufügen" + +#. Information +#: ../data/glade/search_window.glade.h:4 ../src/roster_window.py:2911 +msgid "_Information" +msgstr "Informationen" + #: ../data/glade/service_discovery_window.glade.h:1 msgid "G_o" msgstr "_Los" @@ -2060,10 +2367,6 @@ msgstr "_Los" 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" @@ -2125,8 +2428,12 @@ msgid "Authorize contact so he or she can know when you're connected" msgstr "Kontakt autorisieren, so dass er Ihren Status sehen kann" #: ../data/glade/subscription_request_window.glade.h:3 -msgid "Deny authorization from contact so he or she cannot know when you're connected" -msgstr "Autorisierung des Kontakts verweigern, so dass er nicht sehen kann, wann Sie verbunden sind" +msgid "" +"Deny authorization from contact so he or she cannot know when you're " +"connected" +msgstr "" +"Autorisierung des Kontakts verweigern, so dass er nicht sehen kann, wann Sie " +"verbunden sind" #: ../data/glade/subscription_request_window.glade.h:4 msgid "Subscription Request" @@ -2136,10 +2443,29 @@ msgstr "Abonnementanfrage" msgid "_Deny" msgstr "_Ablehnen" +#: ../data/glade/synchronise_select_account_dialog.glade.h:1 +#, fuzzy +msgid "Select the account with which you want to synchronise" +msgstr "JID des Kontakts mit dem Sie chatten möchten" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:1 +#, fuzzy +msgid "Select the contacts you want to synchronise" +msgstr "JID der Kontakte die Sie synchronisieren möchten" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:2 +#, fuzzy +msgid "Synchronise : select contacts" +msgstr "Synchronisiere gewählte Kontakte" + #: ../data/glade/systray_context_menu.glade.h:1 msgid "Mute Sounds" msgstr "_Klänge stummschalten" +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "Einzelne Nachricht _senden..." + #: ../data/glade/systray_context_menu.glade.h:3 msgid "Show All Pending _Events" msgstr "Zeige alle schwebenden _Ereignisse" @@ -2152,6 +2478,10 @@ msgstr "_Roster anzeigen" msgid "Sta_tus" msgstr "Sta_tus" +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "_Gruppenchat" + #. Given Name #: ../data/glade/vcard_information_window.glade.h:5 msgid "Ask:" @@ -2166,44 +2496,44 @@ msgid "Comments" msgstr "Kommentare" #: ../data/glade/vcard_information_window.glade.h:11 +msgid "Configured avatar:" +msgstr "Gewählter Avatar:" + +#: ../data/glade/vcard_information_window.glade.h:12 #: ../data/glade/zeroconf_information_window.glade.h:1 msgid "Contact" msgstr "Kontakt" -#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:13 msgid "Contact Information" msgstr "Kontakt-Information" -#: ../data/glade/vcard_information_window.glade.h:24 -#: ../data/glade/zeroconf_information_window.glade.h:4 -#: ../data/glade/zeroconf_properties_window.glade.h:13 -#: ../src/dialogs.py:416 -msgid "Jabber ID:" -msgstr "Jabber-ID:" +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "Mehr" -#: ../data/glade/vcard_information_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:33 msgid "OS:" msgstr "BS:" -#: ../data/glade/vcard_information_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:40 #: ../data/glade/zeroconf_information_window.glade.h:8 msgid "Resource:" msgstr "Ressource:" -#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/vcard_information_window.glade.h:43 #: ../data/glade/zeroconf_information_window.glade.h:9 msgid "Status:" msgstr "Status:" #. Family Name -#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/vcard_information_window.glade.h:46 msgid "Subscription:" msgstr "Abonnement:" -#: ../data/glade/vcard_information_window.glade.h:47 -#: ../data/glade/zeroconf_information_window.glade.h:10 -msgid "_Log conversation history" -msgstr "Unterhaltungs-Ver_lauf" +#: ../data/glade/vcard_information_window.glade.h:49 +msgid "User avatar:" +msgstr "Avatar auswählen" #: ../data/glade/xml_console_window.glade.h:1 msgid "<b>Jabber Traffic</b>" @@ -2213,11 +2543,6 @@ msgstr "<b>Jabber Verkehrsdaten</b>" msgid "<b>XML Input</b>" msgstr "<b>XML Direkteingabe</b>" -#. 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" @@ -2236,15 +2561,29 @@ msgstr "_Nachricht" msgid "_Presence" msgstr "_Anwesenheit" -#: ../data/glade/zeroconf_information_window.glade.h:3 -#: ../data/glade/zeroconf_properties_window.glade.h:6 -msgid "First Name:" -msgstr "Vorname:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Spezielle Be_nachrichtigung hinzufügen" -#: ../data/glade/zeroconf_information_window.glade.h:5 -#: ../data/glade/zeroconf_properties_window.glade.h:14 -msgid "Last Name:" -msgstr "Nachname:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Open_PGP-Schlüssel zuweisen" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2526 +msgid "Edit _Groups" +msgstr "_Gruppen bearbeiten" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2883 +msgid "_Rename" +msgstr "_Umbenennen" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Konto bearbeiten..." #: ../data/glade/zeroconf_information_window.glade.h:6 msgid "Local jid:" @@ -2254,535 +2593,564 @@ msgstr "Lokale JID:" msgid "Personal" msgstr "Persönlich" -#: ../data/glade/zeroconf_properties_window.glade.h:11 -msgid "" -"If the default port that is used for incoming messages is unfitting for your setup you can select another one here.\n" -"You might consider to change possible firewall settings." -msgstr "" -"Wenn der Standardport, der für eingehende Nachrichten benutzt wird, nicht für Ihre Konfiguration geeignet ist, können sie hier einen anderen Port festlegen.\n" -"Möglicherweise ist es von Nöten, Ihre Firewall-Einstellungen zu ändern." - #: ../data/glade/zeroconf_properties_window.glade.h:15 msgid "Modify Account" msgstr "Konto bearbeiten" -#: ../data/glade/zeroconf_properties_window.glade.h:21 -msgid "Use custom port:" -msgstr "Verwende benutzerdefinierten Port:" - #. For i18n -#: ../src/advanced.py:51 +#: ../src/advanced.py:56 msgid "Activated" msgstr "Aktiviert" -#: ../src/advanced.py:51 +#: ../src/advanced.py:56 msgid "Deactivated" msgstr "Deaktiviert" -#: ../src/advanced.py:53 +#: ../src/advanced.py:58 msgid "Boolean" msgstr "Boolean" -#: ../src/advanced.py:54 +#: ../src/advanced.py:59 msgid "Integer" msgstr "Ganzzahl" -#: ../src/advanced.py:55 +#: ../src/advanced.py:60 msgid "Text" msgstr "Text" -#: ../src/advanced.py:56 +#: ../src/advanced.py:61 msgid "Color" msgstr "Farbe" -#: ../src/advanced.py:65 +#: ../src/advanced.py:70 msgid "Preference Name" msgstr "Einstellungsname" -#: ../src/advanced.py:71 +#: ../src/advanced.py:76 msgid "Value" msgstr "Wert" -#: ../src/advanced.py:79 +#: ../src/advanced.py:84 msgid "Type" msgstr "Typ" #. we talk about option description in advanced configuration editor -#: ../src/advanced.py:136 +#: ../src/advanced.py:140 msgid "(None)" msgstr "(Kein)" #. we talk about password -#: ../src/advanced.py:239 +#: ../src/advanced.py:243 msgid "Hidden" msgstr "Versteckt" #. 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) +#. LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done) #. echo "{_('en'):'en'",$LANG"}" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "English" msgstr "Englisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Belarusian" msgstr "Weißrussisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Bulgarian" msgstr "Bulgarisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Breton" msgstr "Bretonisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Czech" msgstr "Tschechisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "German" msgstr "Deutsch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Greek" msgstr "Griechisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "British" msgstr "Britisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Esperanto" msgstr "Esperanto" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Spanish" msgstr "Spanisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Basque" msgstr "Baskisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "French" msgstr "Französisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Croatian" msgstr "Kroatisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Italian" msgstr "Italienisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Norwegian (b)" msgstr "Norwegisch (BokmÃ¥l)" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Dutch" msgstr "Niederländisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Norwegian" msgstr "Norwegisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Polish" msgstr "Polnisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Portuguese" msgstr "Portugiesisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Brazilian Portuguese" msgstr "Brasilianisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Russian" msgstr "Russsich" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Serbian" msgstr "Serbisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Slovak" msgstr "Slovakisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Swedish" msgstr "Schwedisch" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Chinese (Ch)" msgstr "Chinesisch" -#: ../src/chat_control.py:207 -#: ../src/dialogs.py:1706 -msgid "" -"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" -"\n" -"Highlighting misspelled words feature will not be used" -msgstr "" -"Wenn das nicht die Sprache ist, für die Sie falschgeschriebene Wörter hervorheben möchten, setzen Sie bitte Ihre $LANG entsprechend. Z.B. für Französisch: export LANG=fr_FR oder export LANG=fr_FR.UTF-8 in ~/.bash_profile or global in /etc/profile.\n" -"\n" -"Falschgeschriebene Wörter werden nicht hervorgehoben" - -#: ../src/chat_control.py:246 +#: ../src/chat_control.py:313 msgid "Spelling language" msgstr "Sprache für die Rechtschreibprüfung" #. we are not connected -#: ../src/chat_control.py:269 -#: ../src/chat_control.py:475 +#: ../src/chat_control.py:336 ../src/chat_control.py:559 msgid "A connection is not available" msgstr "Keine Verbindung verfügbar" -#: ../src/chat_control.py:270 -#: ../src/chat_control.py:476 +#: ../src/chat_control.py:337 ../src/chat_control.py:560 msgid "Your message can not be sent until you are connected." msgstr "Ihre Nachricht kann erst gesendet werden, wenn Sie verbunden sind." -#: ../src/chat_control.py:1034 +#: ../src/chat_control.py:1186 #, python-format msgid "%(nickname)s from group chat %(room_name)s" msgstr "%(nickname)s aus Gruppenchat %(room_name)s" #. we talk about a contact here -#: ../src/chat_control.py:1123 +#: ../src/chat_control.py:1282 #, python-format msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" -msgstr "%s hat keinen OpenPGP-Schlüssel verbreitet und es wurde keiner zugewiesen" +msgstr "" +"%s hat keinen OpenPGP-Schlüssel verbreitet und es wurde keiner zugewiesen" + +#: ../src/chat_control.py:1325 ../src/groupchat_control.py:1433 +#, 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/chat_control.py:1332 ../src/groupchat_control.py:1456 +#, python-format +msgid "Commands: %s" +msgstr "Kommandos: %s" + +#: ../src/chat_control.py:1335 ../src/groupchat_control.py:1470 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "Bedienung: /%s, leert das Textfenster." + +#: ../src/chat_control.py:1338 ../src/groupchat_control.py:1475 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "Verwendung: /%s, versteckt die Chatbuttons." + +#: ../src/chat_control.py:1341 ../src/groupchat_control.py:1491 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Bedienung: /%s <Aktion>, sendet die Aktion im aktuellen Gruppenchat. " +"Verwende dritte Person, z.B. /%s explodiert)." + +#: ../src/chat_control.py:1345 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "Bedienung: /%s, sendet einen Ping zum Kontakt" + +#: ../src/chat_control.py:1348 +#, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "Verwendung: /%s, sendet eine Nachricht zum Kontakt" + +#: ../src/chat_control.py:1351 ../src/groupchat_control.py:1514 +#, python-format +msgid "No help info for /%s" +msgstr "Keine Hilfe vorhanden für /%s" -#: ../src/chat_control.py:1259 +#: ../src/chat_control.py:1489 ../src/chat_control.py:1515 msgid "Encryption enabled" msgstr "Verschlüsselung aktiviert" -#: ../src/chat_control.py:1264 +#: ../src/chat_control.py:1494 +msgid "Session WILL be logged" +msgstr "Sitzung wird aufgezeichnet" + +#: ../src/chat_control.py:1496 +msgid "Session WILL NOT be logged" +msgstr "Sitzung wird nicht aufgezeichnet" + +#: ../src/chat_control.py:1503 +msgid "The following message was NOT encrypted" +msgstr "[Die folgende Nachricht wurde nicht verschlüsselt]" + +#: ../src/chat_control.py:1507 ../src/chat_control.py:1520 +#: ../src/chat_control.py:2166 msgid "Encryption disabled" msgstr "Verschlüsselung deaktiviert" #. add_to_roster_menuitem -#: ../src/chat_control.py:1408 -#: ../src/conversation_textview.py:497 -#: ../src/dialogs.py:629 -#: ../src/gajim.py:850 -#: ../src/gajim.py:851 -#: ../src/gajim.py:1196 -#: ../src/roster_window.py:333 -#: ../src/roster_window.py:411 -#: ../src/roster_window.py:1497 -#: ../src/roster_window.py:1507 -#: ../src/roster_window.py:1686 -#: ../src/roster_window.py:1892 -#: ../src/roster_window.py:2477 -#: ../src/roster_window.py:2678 -#: ../src/roster_window.py:3916 -#: ../src/roster_window.py:3918 -#: ../src/common/contacts.py:73 -#: ../src/common/helpers.py:43 -#: ../src/common/helpers.py:255 +#: ../src/chat_control.py:1683 ../src/conversation_textview.py:705 +#: ../src/dialogs.py:732 ../src/gajim.py:911 ../src/gajim.py:912 +#: ../src/gajim.py:1436 ../src/gajim.py:1687 ../src/roster_window.py:358 +#: ../src/roster_window.py:442 ../src/roster_window.py:1822 +#: ../src/roster_window.py:1832 ../src/roster_window.py:2072 +#: ../src/roster_window.py:2306 ../src/roster_window.py:3154 +#: ../src/roster_window.py:3393 ../src/roster_window.py:4755 +#: ../src/roster_window.py:4757 ../src/common/contacts.py:89 +#: ../src/common/helpers.py:53 ../src/common/helpers.py:267 msgid "Not in Roster" msgstr "Nicht in der Liste" #. %s is being replaced in the code with JID -#: ../src/chat_control.py:1552 +#: ../src/chat_control.py:1836 #, python-format msgid "You just received a new message from \"%s\"" msgstr "Sie haben eine neue Nachricht von \"%s\"" -#: ../src/chat_control.py:1553 -msgid "If you close this tab and you have history disabled, this message will be lost." -msgstr "Wenn sie das Fenster schließen und der Verlauf abgeschaltet ist, geht die Nachricht verloren." +#: ../src/chat_control.py:1837 +msgid "" +"If you close this tab and you have history disabled, this message will be " +"lost." +msgstr "" +"Wenn sie das Fenster schließen und der Verlauf abgeschaltet ist, geht die " +"Nachricht verloren." -#: ../src/config.py:139 -#: ../src/config.py:588 +#: ../src/config.py:127 ../src/config.py:565 msgid "Disabled" msgstr "Deaktiviert" -#: ../src/config.py:233 -#, python-format -msgid "Every %s _minutes" -msgstr "Alle %s _Minuten" - -#: ../src/config.py:353 +#: ../src/config.py:293 msgid "Active" msgstr "Aktiv" -#: ../src/config.py:361 +#: ../src/config.py:301 msgid "Event" msgstr "Ereignis" -#: ../src/config.py:684 -#: ../src/gajim.py:2237 +#: ../src/config.py:407 +msgid "Always use OS/X default applications" +msgstr "" + +#: ../src/config.py:408 +#, fuzzy +msgid "Custom" +msgstr "<b>Benutzerdefiniert</b>" + +#: ../src/config.py:638 ../src/dialogs.py:1018 #, python-format msgid "Dictionary for lang %s not available" msgstr "Wörterburch für Sprache %s nicht verfügbar" -#: ../src/config.py:685 -#: ../src/gajim.py:2238 +#: ../src/config.py:639 #, python-format -msgid "You have to install %s dictionary to use spellchecking, or choose another language by setting the speller_language option." -msgstr "Sie müssen das Wörterbuch %s installieren oder eine andere Sprache wählen, um die Rechtschreibprüfung zu nutzen." +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option." +msgstr "" +"Sie müssen das Wörterbuch %s installieren oder eine andere Sprache wählen, " +"um die Rechtschreibprüfung zu nutzen." -#: ../src/config.py:1008 +#: ../src/config.py:1001 msgid "status message title" msgstr "Statusbetreff" -#: ../src/config.py:1008 +#: ../src/config.py:1001 msgid "status message text" msgstr "Statusnachricht" -#: ../src/config.py:1044 +#: ../src/config.py:1037 msgid "First Message Received" msgstr "Erste empfangene Nachricht" -#: ../src/config.py:1045 +#: ../src/config.py:1038 msgid "Next Message Received" msgstr "Nächste empfangene Nachricht" -#: ../src/config.py:1046 +#: ../src/config.py:1039 msgid "Contact Connected" msgstr "Kontakt verbunden" -#: ../src/config.py:1047 +#: ../src/config.py:1040 msgid "Contact Disconnected" msgstr "Kontakt nicht verbunden" -#: ../src/config.py:1048 +#: ../src/config.py:1041 msgid "Message Sent" msgstr "Nachricht gesendet" -#: ../src/config.py:1049 +#: ../src/config.py:1042 msgid "Group Chat Message Highlight" msgstr "Gruppenchat Nachrichten-Hervorhebung" -#: ../src/config.py:1050 +#: ../src/config.py:1043 msgid "Group Chat Message Received" msgstr "Gruppenchat-Nachricht empfangen" -#: ../src/config.py:1057 +#: ../src/config.py:1050 msgid "GMail Email Received" msgstr "E-Mail über Googlemail empfangen" -#: ../src/config.py:1260 +#. Name column +#: ../src/config.py:1319 ../src/dialogs.py:1517 ../src/dialogs.py:1581 +#: ../src/disco.py:743 ../src/disco.py:1569 ../src/disco.py:1815 +#: ../src/history_window.py:113 +msgid "Name" +msgstr "Name" + +#: ../src/config.py:1427 ../src/common/config.py:393 +msgid "Be right back." +msgstr "Bin gleich zurück." + +#: ../src/config.py:1431 +msgid "Relogin now?" +msgstr "Jetzt neu einloggen?" + +#: ../src/config.py:1432 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "" +"Wenn die Änderungen sofort übernommen werden sollen, müssen Sie sich neu " +"einloggen." + +#: ../src/config.py:1527 ../src/config.py:1618 msgid "OpenPGP is not usable in this computer" msgstr "OpenPGP kann auf diesem Computer nicht genutzt werden" -#: ../src/config.py:1306 +#: ../src/config.py:1654 ../src/config.py:1695 +msgid "Unread events" +msgstr "Ungelesene Ereignisse" + +#: ../src/config.py:1655 +msgid "Read all pending events before removing this account." +msgstr "Alle ungelesenen Ereignisse lesen, bevor der Account entfernt wird." + +#: ../src/config.py:1681 +#, python-format +msgid "You have opened chat in account %s" +msgstr "Sie haben mit Account %s einen Chat geöffnet" + +#: ../src/config.py:1682 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "Alle Chatfenster werden geschlossen. Fortfahren?" + +#: ../src/config.py:1691 msgid "You are currently connected to the server" msgstr "Sie sind mit dem Server verbunden" -#: ../src/config.py:1307 +#: ../src/config.py:1692 msgid "To change the account name, you must be disconnected." msgstr "Verbindung muss beendet werden, um Kontonamen zu ändern." -#: ../src/config.py:1310 -#: ../src/config.py:1916 -msgid "Unread events" -msgstr "Ungelesene Ereignisse" - -#: ../src/config.py:1311 +#: ../src/config.py:1696 msgid "To change the account name, you must read all pending events." msgstr "Um Kontonamen zu ändern, müssen Sie alle neunen Ereignisse lesen." -#: ../src/config.py:1315 +#: ../src/config.py:1702 msgid "Account Name Already Used" msgstr "Kontoname wird bereits verwendet" -#: ../src/config.py:1316 -msgid "This name is already used by another of your accounts. Please choose another name." -msgstr "Dieser Name wird bereits für einen anderen Ihrer Accounts verwendet. Bitte wählenSie einen anderen Namen." +#: ../src/config.py:1703 +msgid "" +"This name is already used by another of your accounts. Please choose another " +"name." +msgstr "" +"Dieser Name wird bereits für einen anderen Ihrer Accounts verwendet. Bitte " +"wählenSie einen anderen Namen." -#: ../src/config.py:1320 -#: ../src/config.py:1324 +#: ../src/config.py:1707 ../src/config.py:1711 msgid "Invalid account name" msgstr "Ungültiger Kontoname" -#: ../src/config.py:1321 +#: ../src/config.py:1708 msgid "Account name cannot be empty." msgstr "Kontoname darf nicht leer sein." -#: ../src/config.py:1325 +#: ../src/config.py:1712 msgid "Account name cannot contain spaces." msgstr "Kontoname darf keine Leerzeichen enthalten." -#: ../src/config.py:1333 -#: ../src/config.py:1339 -#: ../src/config.py:1349 -#: ../src/config.py:2900 +#: ../src/config.py:1776 +msgid "Rename Account" +msgstr "Konto umbenennen" + +#: ../src/config.py:1777 +#, python-format +msgid "Enter a new name for account %s" +msgstr "Geben Sie einen neuen Namen für das Konto %s ein" + +#: ../src/config.py:1795 ../src/config.py:1803 ../src/config.py:1843 +#: ../src/config.py:3050 ../src/dataforms_widget.py:533 msgid "Invalid Jabber ID" msgstr "Ungültige Jabber ID" -#: ../src/config.py:1340 +#: ../src/config.py:1804 msgid "A Jabber ID must be in the form \"user@servername\"." msgstr "Jabber ID muss in der Form \"user@servername\" sein." -#: ../src/config.py:1399 +#: ../src/config.py:1990 ../src/config.py:3121 msgid "Invalid entry" msgstr "Ungültiger Eintrag" -#: ../src/config.py:1400 +#: ../src/config.py:1991 ../src/config.py:3122 msgid "Custom port must be a port number." msgstr "Proxy Port muss eine Portnummer sein." -#: ../src/config.py:1528 -#: ../src/common/config.py:367 -msgid "Be right back." -msgstr "Bin gleich zurück." +#: ../src/config.py:2012 +msgid "Failed to get secret keys" +msgstr "Holen der geheimen Schlüssel fehlgeschlagen" -#: ../src/config.py:1538 -msgid "Relogin now?" -msgstr "Jetzt neu einloggen?" +#: ../src/config.py:2013 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "Es gab ein Problem beim Holen ihres geheimen OpenPGP-Schlüssels." -#: ../src/config.py:1539 -msgid "If you want all the changes to apply instantly, you must relogin." -msgstr "Wenn die Änderungen sofort übernommen werden sollen, müssen Sie sich neu einloggen." +#: ../src/config.py:2016 +msgid "OpenPGP Key Selection" +msgstr "OpenPGP Schlüssel-Auswahl" + +#: ../src/config.py:2017 +msgid "Choose your OpenPGP key" +msgstr "Wählen Sie Ihren OpenPGP Schlüssel" -#: ../src/config.py:1565 +#: ../src/config.py:2057 msgid "No such account available" msgstr "Account nicht verfügbar" -#: ../src/config.py:1566 +#: ../src/config.py:2058 msgid "You must create your account before editing your personal information." -msgstr "Sie müssen ein Konto erstellen, bevor Sie die persönlichen Informationen ändern können" +msgstr "" +"Sie müssen ein Konto erstellen, bevor Sie die persönlichen Informationen " +"ändern können" -#: ../src/config.py:1573 -#: ../src/dialogs.py:1190 -#: ../src/dialogs.py:1326 -#: ../src/dialogs.py:1506 -#: ../src/disco.py:419 -#: ../src/profile_window.py:323 +#: ../src/config.py:2065 ../src/dialogs.py:1364 ../src/dialogs.py:1505 +#: ../src/dialogs.py:1685 ../src/disco.py:427 ../src/profile_window.py:318 msgid "You are not connected to the server" msgstr "Sie sind nicht mit dem Server verbunden" -#: ../src/config.py:1574 +#: ../src/config.py:2066 msgid "Without a connection, you can not edit your personal information." -msgstr "Sie müssen angemeldet sein, um Ihre persönlichen Informationen zu bearbeiten" +msgstr "" +"Sie müssen angemeldet sein, um Ihre persönlichen Informationen zu bearbeiten" -#: ../src/config.py:1578 +#: ../src/config.py:2070 msgid "Your server doesn't support Vcard" msgstr "Ihr Server unterstützt vCard nicht" -#: ../src/config.py:1579 +#: ../src/config.py:2071 msgid "Your server can't save your personal information." msgstr "Ihr Server kann keine persönlichen Informationen speichern." -#: ../src/config.py:1610 -#: ../src/config.py:3288 -msgid "Failed to get secret keys" -msgstr "Holen der geheimen Schlüssel fehlgeschlagen" - -#: ../src/config.py:1611 -#: ../src/config.py:3289 -msgid "There was a problem retrieving your OpenPGP secret keys." -msgstr "Es gab ein Problem beim Holen ihres geheimen OpenPGP-Schlüssels." - -#: ../src/config.py:1614 -#: ../src/config.py:3292 -msgid "OpenPGP Key Selection" -msgstr "OpenPGP Schlüssel-Auswahl" - -#: ../src/config.py:1615 -#: ../src/config.py:3293 -msgid "Choose your OpenPGP key" -msgstr "Wählen Sie Ihren OpenPGP Schlüssel" - -#. Name column -#: ../src/config.py:1850 -#: ../src/dialogs.py:1338 -#: ../src/dialogs.py:1402 -#: ../src/disco.py:740 -#: ../src/disco.py:1495 -#: ../src/disco.py:1733 -#: ../src/history_window.py:78 -msgid "Name" -msgstr "Name" - -#: ../src/config.py:1853 -#: ../src/dialogs.py:1341 -msgid "Server" -msgstr "Server" - -#: ../src/config.py:1917 -msgid "Read all pending events before removing this account." -msgstr "Alle ungelesenen Ereignisse lesen, bevor der Account entfernt wird." - -#: ../src/config.py:1954 -#, python-format -msgid "You have opened chat in account %s" -msgstr "Sie haben mit Account %s einen Chat geöffnet" - -#: ../src/config.py:1955 -msgid "All chat and groupchat windows will be closed. Do you want to continue?" -msgstr "Alle Chatfenster werden geschlossen. Fortfahren?" - -#: ../src/config.py:2014 +#: ../src/config.py:2102 msgid "Account Local already exists." msgstr "Ein Konto mit dem Namen 'Local' ist bereits vorhanden" -#: ../src/config.py:2015 +#: ../src/config.py:2103 msgid "Please rename or remove it before enabling link-local messaging." -msgstr "Bitte benennen Sie es um oder entfernen es, bevor Sie LAN-Kontakte aktivieren." +msgstr "" +"Bitte benennen Sie es um oder entfernen es, bevor Sie LAN-Kontakte " +"aktivieren." -#: ../src/config.py:2111 +#: ../src/config.py:2279 #, python-format msgid "Edit %s" msgstr "%s ändern" -#: ../src/config.py:2113 +#: ../src/config.py:2281 #, python-format msgid "Register to %s" msgstr "Auf %s registrieren" #. list at the beginning -#: ../src/config.py:2179 +#: ../src/config.py:2317 msgid "Ban List" msgstr "Sperrliste" -#: ../src/config.py:2180 +#: ../src/config.py:2318 msgid "Member List" msgstr "Mitgliederliste" -#: ../src/config.py:2181 +#: ../src/config.py:2319 msgid "Owner List" msgstr "Besitzerliste" -#: ../src/config.py:2182 +#: ../src/config.py:2320 msgid "Administrator List" msgstr "Administratorliste" #. Address column #. holds JID (who said this) -#: ../src/config.py:2231 -#: ../src/disco.py:747 -#: ../src/history_manager.py:155 +#: ../src/config.py:2369 ../src/disco.py:750 ../src/history_manager.py:160 msgid "JID" msgstr "JID" -#: ../src/config.py:2239 +#: ../src/config.py:2377 msgid "Reason" msgstr "Grund" -#: ../src/config.py:2244 +#: ../src/config.py:2382 msgid "Nick" msgstr "Spitzname" -#: ../src/config.py:2248 +#: ../src/config.py:2386 msgid "Role" msgstr "Rolle" -#: ../src/config.py:2273 +#: ../src/config.py:2411 msgid "Banning..." msgstr "Verbanne ..." #. You can move '\n' before user@domain if that line is TOO BIG -#: ../src/config.py:2275 +#: ../src/config.py:2413 msgid "" "<b>Whom do you want to ban?</b>\n" "\n" @@ -2790,11 +3158,11 @@ msgstr "" "<b>Wen möchten Sie verbannen?</b>\n" "\n" -#: ../src/config.py:2277 +#: ../src/config.py:2415 msgid "Adding Member..." msgstr "Füge Mitglied hinzu ..." -#: ../src/config.py:2278 +#: ../src/config.py:2416 msgid "" "<b>Whom do you want to make a member?</b>\n" "\n" @@ -2802,11 +3170,11 @@ msgstr "" "<b>Wen möchten Sie zum Mitglied machen?</b>\n" "\n" -#: ../src/config.py:2280 +#: ../src/config.py:2418 msgid "Adding Owner..." msgstr "Füge Besitzer hinzu ..." -#: ../src/config.py:2281 +#: ../src/config.py:2419 msgid "" "<b>Whom do you want to make an owner?</b>\n" "\n" @@ -2814,11 +3182,11 @@ msgstr "" "<b>Wen möchten Sie zum Besitzer machen?</b>\n" "\n" -#: ../src/config.py:2283 +#: ../src/config.py:2421 msgid "Adding Administrator..." msgstr "Füge Administrator hinzu ..." -#: ../src/config.py:2284 +#: ../src/config.py:2422 msgid "" "<b>Whom do you want to make an administrator?</b>\n" "\n" @@ -2826,7 +3194,7 @@ msgstr "" "<b>Wen möchten Sie zum Administrator machen?</b>\n" "\n" -#: ../src/config.py:2285 +#: ../src/config.py:2423 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -2835,394 +3203,443 @@ msgid "" "4. domain (the domain itself matches, as does any user@domain,\n" "domain/resource, or address containing a subdomain." msgstr "" -"Kann eines der folgenden sein:\"1. benutzer@domain/resource (nur die Resource trifft zu).\n" +"Kann eines der folgenden sein:\"1. benutzer@domain/resource (nur die " +"Resource trifft zu).\n" "2. benutzer@domain (jede Resource trifft zu).\n" "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:2389 +#: ../src/config.py:2527 #, python-format msgid "Removing %s account" msgstr "Entferne Konto %s" -#: ../src/config.py:2406 -#: ../src/roster_window.py:2737 +#: ../src/config.py:2542 ../src/gajim.py:1343 ../src/roster_window.py:3451 msgid "Password Required" msgstr "Passwort benötigt" -#: ../src/config.py:2407 -#: ../src/roster_window.py:2733 +#: ../src/config.py:2543 ../src/roster_window.py:3447 #, python-format msgid "Enter your password for account %s" msgstr "Geben Sie ihr Passwort für %s ein" -#: ../src/config.py:2408 -#: ../src/roster_window.py:2738 +#: ../src/config.py:2544 ../src/roster_window.py:3452 msgid "Save password" msgstr "Passwort speichern" -#: ../src/config.py:2422 +#: ../src/config.py:2557 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Konto \"%s\" ist mit Server verbunden" -#: ../src/config.py:2423 +#: ../src/config.py:2558 msgid "If you remove it, the connection will be lost." msgstr "Wenn Sie es entfernen, wird die Verbindung beendet." -#: ../src/config.py:2508 +#: ../src/config.py:2651 msgid "Default" msgstr "Standard" -#: ../src/config.py:2508 +#: ../src/config.py:2651 msgid "?print_status:All" msgstr "?print_status:Alle" -#: ../src/config.py:2509 +#: ../src/config.py:2652 msgid "Enter and leave only" msgstr "Nur betreten und verlassen" -#: ../src/config.py:2510 +#: ../src/config.py:2653 msgid "?print_status:None" msgstr "?print_status:Nichts" -#: ../src/config.py:2578 +#: ../src/config.py:2722 msgid "New Group Chat" msgstr "Neuer Gruppenchat" -#: ../src/config.py:2611 +#: ../src/config.py:2755 msgid "This bookmark has invalid data" msgstr "Dieses Lesezeichen hat ungültige Daten" -#: ../src/config.py:2612 -msgid "Please be sure to fill out server and room fields or remove this bookmark." +#: ../src/config.py:2756 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." msgstr "Bitte Serverfeld und Raumfeld ausfüllen oder Lesezeichen löschen." -#: ../src/config.py:2875 +#: ../src/config.py:3033 msgid "Invalid username" msgstr "Ungültiger Benutzername" -#: ../src/config.py:2876 +#: ../src/config.py:3035 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:2886 -#: ../src/dialogs.py:1525 -msgid "Invalid password" -msgstr "Ungültiges Passwort" - -#: ../src/config.py:2887 -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:2891 -#: ../src/dialogs.py:1530 -msgid "Passwords do not match" -msgstr "Passwörter stimmen nicht überein" - -#: ../src/config.py:2892 -#: ../src/dialogs.py:1531 -msgid "The passwords typed in both fields must be identical." -msgstr "Die Passwörter in beiden Feldern müssen identisch sein." +msgstr "" +"Sie müssen einen Benutzernamen angeben, um diesen Account zu konfigurieren." -#: ../src/config.py:2911 +#: ../src/config.py:3061 msgid "Duplicate Jabber ID" msgstr "Doppelte Jabber ID" -#: ../src/config.py:2912 +#: ../src/config.py:3062 msgid "This account is already configured in Gajim." -msgstr "Dieser Kontakt bwurde in Gajim bereits konfiguriert." +msgstr "Dieser Kontakt wurde in Gajim bereits konfiguriert." -#: ../src/config.py:2929 +#: ../src/config.py:3079 msgid "Account has been added successfully" msgstr "Account wurde erfolgreich hinzugefügt" -#: ../src/config.py:2930 -#: ../src/config.py:2965 -msgid "You can set advanced account options by pressing the Advanced button, or later by choosing the Accounts menuitem under the Edit menu from the main window." -msgstr "Sie können die erweiterten Kontooptionen durch Klicken des Erweitert-Buttons oder durch Klicken des Konto-Menüpunktes im Bearbeiten-Menü des Hauptfensters erreichen." +#: ../src/config.py:3080 ../src/config.py:3225 +msgid "" +"You can set advanced account options by pressing the Advanced button, or " +"later by choosing the Accounts menuitem under the Edit menu from the main " +"window." +msgstr "" +"Sie können die erweiterten Kontooptionen durch Klicken des Erweitert-Buttons " +"oder durch Klicken des Konto-Menüpunktes im Bearbeiten-Menü des " +"Hauptfensters erreichen." + +#: ../src/config.py:3097 +msgid "Invalid server" +msgstr "Ungültiger Server" -#: ../src/config.py:2964 -msgid "Your new account has been created successfully" -msgstr "Ihr neues Konto wurde erfolgreich erstellt" +#: ../src/config.py:3098 +msgid "Please provide a server on which you want to register." +msgstr "Bitte geben Sie an, bei dem Sie sich registrieren möchten." -#: ../src/config.py:2982 +#: ../src/config.py:3204 ../src/config.py:3243 msgid "An error occurred during account creation" msgstr "Während der Konto-Erstellung ist ein Fehler aufgetreten" -#: ../src/config.py:3040 +#: ../src/config.py:3224 +msgid "Your new account has been created successfully" +msgstr "Ihr neues Konto wurde erfolgreich erstellt" + +#: ../src/config.py:3327 msgid "Account name is in use" msgstr "Kontoname ist schon vergeben" -#: ../src/config.py:3041 +#: ../src/config.py:3328 msgid "You already have an account using this name." msgstr "Sie haben bereits ein Konto mit diesem Namen." -#: ../src/conversation_textview.py:275 -msgid "Text below this line is what has been said since the last time you paid attention to this group chat" -msgstr "Text unterhalb dieser Linie stellt dar, was seit ihrem letzten Besuch in diesem Gruppenchat gesagt wurde" +#: ../src/conversation_textview.py:454 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Text unterhalb dieser Linie stellt dar, was seit ihrem letzten Besuch in " +"diesem Gruppenchat gesagt wurde" -#: ../src/conversation_textview.py:344 +#: ../src/conversation_textview.py:552 #, python-format msgid "_Actions for \"%s\"" msgstr "_Aktionen für \"%s\"" -#: ../src/conversation_textview.py:356 +#: ../src/conversation_textview.py:564 msgid "Read _Wikipedia Article" msgstr "_Wikipedia-Artikel lesen" -#: ../src/conversation_textview.py:361 +#: ../src/conversation_textview.py:569 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:377 +#: ../src/conversation_textview.py:585 #, 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:390 +#: ../src/conversation_textview.py:598 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "In Websuche URL fehlt ein \"%s\"" -#: ../src/conversation_textview.py:393 +#: ../src/conversation_textview.py:601 msgid "Web _Search for it" msgstr "Im _Internet suchen" -#: ../src/conversation_textview.py:399 +#: ../src/conversation_textview.py:607 msgid "Open as _Link" msgstr "Als _Link öffnen" -#: ../src/conversation_textview.py:760 +#: ../src/conversation_textview.py:1073 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:764 +#: ../src/conversation_textview.py:1077 #, python-format msgid "%i days ago" msgstr "Vor %i Tagen" #. if we have subject, show it too! -#: ../src/conversation_textview.py:798 +#: ../src/conversation_textview.py:1111 #, python-format msgid "Subject: %s\n" msgstr "Thema: %s\n" -#: ../src/dialogs.py:59 +#: ../src/dataforms_widget.py:537 +#, fuzzy +msgid "Jabber ID already in list" +msgstr "Jabber IM-Client" + +#: ../src/dataforms_widget.py:538 +msgid "The Jabber ID you entered is already in the list. Choose another one." +msgstr "" + +#. Default jid +#: ../src/dataforms_widget.py:549 +msgid "new@jabber.id" +msgstr "" + +#: ../src/dataforms_widget.py:552 ../src/dataforms_widget.py:554 +#, python-format +msgid "new%d@jabber.id" +msgstr "" + +#: ../src/dialogs.py:71 #, python-format msgid "Contact name: <i>%s</i>" msgstr "Kontaktname: <i>%s</i>" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: <i>%s</i>" msgstr "Jabber ID: <i>%s</i> " -#: ../src/dialogs.py:211 +#: ../src/dialogs.py:223 msgid "Group" msgstr "Gruppe" -#: ../src/dialogs.py:218 +#: ../src/dialogs.py:230 msgid "In the group" msgstr "In der Gruppe" -#: ../src/dialogs.py:269 +#: ../src/dialogs.py:330 msgid "KeyID" msgstr "Schlüssel-ID" -#: ../src/dialogs.py:272 +#: ../src/dialogs.py:335 msgid "Contact name" msgstr "Name des Kontakts" -#: ../src/dialogs.py:318 +#: ../src/dialogs.py:381 #, python-format msgid "%s Status Message" msgstr "%s Status-Nachricht" -#: ../src/dialogs.py:320 +#: ../src/dialogs.py:383 msgid "Status Message" msgstr "Status-Nachricht" -#: ../src/dialogs.py:395 +#: ../src/dialogs.py:483 msgid "Save as Preset Status Message" msgstr "Als derzeitige Statusnachricht speichern" -#: ../src/dialogs.py:396 +#: ../src/dialogs.py:484 msgid "Please type a name for this status message" msgstr "Bitte geben Sie einen Namen für diese Statusnachricht ein:" -#: ../src/dialogs.py:417 +#: ../src/dialogs.py:495 +msgid "Overwrite Status Message?" +msgstr "Status-Nachricht überschreiben" + +#: ../src/dialogs.py:496 +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "" +"Dieser Name wird bereits verwendet. Möchten Sie die Status-Nachricht " +"überschreiben?" + +#: ../src/dialogs.py:512 msgid "AIM Address:" msgstr "AIM-Adresse" -#: ../src/dialogs.py:418 +#: ../src/dialogs.py:513 msgid "GG Number:" msgstr "GG Nummer" -#: ../src/dialogs.py:419 +#: ../src/dialogs.py:514 msgid "ICQ Number:" msgstr "ICQ-Nummer" -#: ../src/dialogs.py:420 +#: ../src/dialogs.py:515 msgid "MSN Address:" msgstr "MSN-Adresse" -#: ../src/dialogs.py:421 +#: ../src/dialogs.py:516 msgid "Yahoo! Address:" msgstr "Yahoo!-Adresse" -#: ../src/dialogs.py:457 +#: ../src/dialogs.py:553 #, 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 für den Kontakt aus, den Sie dem Konto %s hinzufügen wollen" +msgstr "" +"Bitte füllen Sie die Daten für den Kontakt aus, den Sie dem Konto %s " +"hinzufügen wollen" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:555 msgid "Please fill in the data of the contact you want to add" msgstr "Bitte geben sie die Daten des neuen Kontakts ein" -#: ../src/dialogs.py:609 -#: ../src/dialogs.py:615 +#: ../src/dialogs.py:712 ../src/dialogs.py:718 msgid "Invalid User ID" msgstr "Ungültige Benutzer ID" -#: ../src/dialogs.py:616 +#: ../src/dialogs.py:719 msgid "The user ID must not contain a resource." msgstr "Die Benutzer-ID darf keine resource enthalten." -#: ../src/dialogs.py:630 +#: ../src/dialogs.py:733 msgid "Contact already in roster" msgstr "Kontakt bereits im Roster" -#: ../src/dialogs.py:631 +#: ../src/dialogs.py:734 msgid "This contact is already listed in your roster." msgstr "Der Kontakt befindet sich bereit in Ihrem Roster." -#: ../src/dialogs.py:668 +#: ../src/dialogs.py:770 msgid "User ID:" msgstr "_Benutzer-ID:" -#: ../src/dialogs.py:731 +#: ../src/dialogs.py:832 msgid "A GTK+ jabber client" msgstr "Ein GTK+ Jabber-Client" -#: ../src/dialogs.py:732 +#: ../src/dialogs.py:833 msgid "GTK+ Version:" msgstr "GTK+-Version:" -#: ../src/dialogs.py:733 +#: ../src/dialogs.py:834 msgid "PyGTK Version:" msgstr "PyGTK-Version" -#: ../src/dialogs.py:747 +#: ../src/dialogs.py:848 msgid "Current Developers:" msgstr "Derzeitige Entwickler:" -#: ../src/dialogs.py:749 +#: ../src/dialogs.py:850 msgid "Past Developers:" msgstr "Frühere Entwickler:" -#: ../src/dialogs.py:759 +#: ../src/dialogs.py:860 msgid "THANKS:" msgstr "DANKE:" #. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:765 +#: ../src/dialogs.py:866 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 <someone@somewhere> -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:879 msgid "translator-credits" msgstr "" "Fridtjof Busse\n" -"Benjamin Drung <benjamin.drung@gmail.com>" +"Benjamin Drung <benjamin.drung@gmail.com>\n" +"Fabian Fingerle <fabian@datensalat.eu>\n" +"Sebastian Schäfer <sarek@uliweb.de>" -#: ../src/dialogs.py:908 +#: ../src/dialogs.py:1011 #, python-format msgid "Unable to bind to port %s." -msgstr "Konnte nicht mit Port %s verbinden." +msgstr "Konnte nicht an Port %s binden." -#: ../src/dialogs.py:909 -msgid "Maybe you have another running instance of Gajim. File Transfer will be cancelled." +#: ../src/dialogs.py:1012 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"cancelled." msgstr "Möglicherweise läuft Gajim bereits. Dateitransfer wird abgebrochen." -#: ../src/dialogs.py:1120 +#: ../src/dialogs.py:1019 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"Sie müssen das Wörterbuch %s installieren oder eine andere Sprache wählen, " +"um die Rechtschreibprüfung zu nutzen.\n" +"\n" +"Das Hervorheben falsch geschriebener Worte wird nicht genutzt" + +#: ../src/dialogs.py:1293 #, python-format msgid "Subscription request for account %s from %s" msgstr "Abonnement-Anforderung für Konto %s von %s" -#: ../src/dialogs.py:1123 +#: ../src/dialogs.py:1296 #, python-format msgid "Subscription request from %s" msgstr "Abonnement-Anforderung von %s" -#: ../src/dialogs.py:1183 -#: ../src/roster_window.py:687 +#: ../src/dialogs.py:1357 ../src/roster_window.py:776 #, python-format msgid "You are already in group chat %s" msgstr "Sie sind bereits im Gruppenchat %s" -#: ../src/dialogs.py:1191 +#: ../src/dialogs.py:1365 msgid "You can not join a group chat unless you are connected." msgstr "Sie können einem Gruppenchat erst beitreten, wenn Sie verbunden sind." -#: ../src/dialogs.py:1206 +#: ../src/dialogs.py:1383 #, python-format msgid "Join Group Chat with account %s" msgstr "Betrete Gruppenchat mit Account %s" -#: ../src/dialogs.py:1274 -#: ../src/dialogs.py:1280 -#: ../src/groupchat_control.py:1469 +#: ../src/dialogs.py:1453 ../src/dialogs.py:1459 +#: ../src/groupchat_control.py:1683 msgid "Invalid group chat Jabber ID" msgstr "Ungültige Jabber-ID für den Gruppenchat" -#: ../src/dialogs.py:1275 -#: ../src/dialogs.py:1281 -#: ../src/groupchat_control.py:1470 +#: ../src/dialogs.py:1454 ../src/dialogs.py:1460 +#: ../src/groupchat_control.py:1684 msgid "The group chat Jabber ID has not allowed characters." msgstr "Die Jabber-ID für den Gruppenchat enthält nicht erlaubte Zeichen." -#: ../src/dialogs.py:1287 +#: ../src/dialogs.py:1466 msgid "This is not a group chat" msgstr "Das ist kein Gruppenchat" -#: ../src/dialogs.py:1288 +#: ../src/dialogs.py:1467 #, python-format msgid "%s is not the name of a group chat." msgstr "%s ist kein Name eines Gruppenchats." -#: ../src/dialogs.py:1327 +#: ../src/dialogs.py:1506 msgid "Without a connection, you can not synchronise your contacts." msgstr "Sie müssen verbunden sein, um Ihre Kontakte zu Synchronisieren." -#: ../src/dialogs.py:1374 +#: ../src/dialogs.py:1520 +msgid "Server" +msgstr "Server" + +#: ../src/dialogs.py:1553 msgid "This account is not connected to the server" msgstr "Konto \"%s\" ist nicht mit dem Server verbunden" -#: ../src/dialogs.py:1375 +#: ../src/dialogs.py:1554 msgid "You cannot synchronize with an account unless it is connected." -msgstr "Sie können nicht mit einem Konto Synchronisieren, solange es nicht verbunden ist." +msgstr "" +"Sie können nicht mit einem Konto Synchronisieren, solange es nicht verbunden " +"ist." -#: ../src/dialogs.py:1399 +#: ../src/dialogs.py:1578 msgid "Synchronise" msgstr "Synchronisieren" -#: ../src/dialogs.py:1457 +#: ../src/dialogs.py:1636 #, python-format msgid "Start Chat with account %s" msgstr "Starte Chat mit Account %s" -#: ../src/dialogs.py:1459 +#: ../src/dialogs.py:1638 msgid "Start Chat" msgstr "Chat starten" -#: ../src/dialogs.py:1460 +#: ../src/dialogs.py:1639 msgid "" "Fill in the nickname or the Jabber ID of the contact you would like\n" "to send a chat message to:" @@ -3231,523 +3648,761 @@ msgstr "" "an den Sie eine Chat-Nachricht schicken wollen:" #. if offline or connecting -#: ../src/dialogs.py:1485 -#: ../src/dialogs.py:1844 -#: ../src/dialogs.py:1975 +#: ../src/dialogs.py:1664 ../src/dialogs.py:2040 ../src/dialogs.py:2181 msgid "Connection not available" msgstr "Verbindung nicht verfügbar" -#: ../src/dialogs.py:1486 -#: ../src/dialogs.py:1845 -#: ../src/dialogs.py:1976 +#: ../src/dialogs.py:1665 ../src/dialogs.py:2041 ../src/dialogs.py:2182 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Vergewissern Sie sich, dass Sie mit \"%s\" verbunden sind." -#: ../src/dialogs.py:1495 -#: ../src/dialogs.py:1498 +#: ../src/dialogs.py:1674 ../src/dialogs.py:1677 msgid "Invalid JID" msgstr "Ungültige JID" -#: ../src/dialogs.py:1498 +#: ../src/dialogs.py:1677 #, python-format msgid "Unable to parse \"%s\"." msgstr "Kann \"%s\" nicht parsen." -#: ../src/dialogs.py:1507 +#: ../src/dialogs.py:1686 msgid "Without a connection, you can not change your password." msgstr "Sie müssen verbunden sein, um Ihr Passwort zu ändern" -#: ../src/dialogs.py:1526 +#: ../src/dialogs.py:1704 +msgid "Invalid password" +msgstr "Ungültiges Passwort" + +#: ../src/dialogs.py:1705 msgid "You must enter a password." msgstr "Sie müssen ein Passwort eingeben." +#: ../src/dialogs.py:1709 +msgid "Passwords do not match" +msgstr "Passwörter stimmen nicht überein" + +#: ../src/dialogs.py:1710 +msgid "The passwords typed in both fields must be identical." +msgstr "Die Passwörter in beiden Feldern müssen identisch sein." + #. img to display #. default value -#: ../src/dialogs.py:1573 -#: ../src/notify.py:212 -#: ../src/notify.py:416 +#: ../src/dialogs.py:1752 ../src/notify.py:232 ../src/notify.py:447 msgid "Contact Signed In" msgstr "Kontakt hat sich angemeldet" -#: ../src/dialogs.py:1575 -#: ../src/notify.py:220 -#: ../src/notify.py:418 +#: ../src/dialogs.py:1754 ../src/notify.py:240 ../src/notify.py:449 msgid "Contact Signed Out" msgstr "Kontakt hat sich abgemeldet" #. chat message -#: ../src/dialogs.py:1577 -#: ../src/notify.py:239 -#: ../src/notify.py:420 +#: ../src/dialogs.py:1756 ../src/notify.py:263 ../src/notify.py:451 msgid "New Message" msgstr "Neue Nachricht" #. single message -#: ../src/dialogs.py:1577 -#: ../src/notify.py:224 -#: ../src/notify.py:420 +#: ../src/dialogs.py:1756 ../src/notify.py:244 ../src/notify.py:451 msgid "New Single Message" msgstr "Neue einzelne Nachricht" #. private message -#: ../src/dialogs.py:1578 -#: ../src/notify.py:231 -#: ../src/notify.py:421 +#: ../src/dialogs.py:1757 ../src/notify.py:251 ../src/notify.py:452 msgid "New Private Message" msgstr "Neue private Nachricht" -#: ../src/dialogs.py:1578 -#: ../src/gajim.py:1291 -#: ../src/notify.py:429 +#: ../src/dialogs.py:1757 ../src/gajim.py:1532 ../src/notify.py:460 msgid "New E-mail" msgstr "Neue E-Mail" -#: ../src/dialogs.py:1580 -#: ../src/gajim.py:1444 -#: ../src/notify.py:423 +#: ../src/dialogs.py:1759 ../src/gajim.py:1707 ../src/notify.py:454 msgid "File Transfer Request" msgstr "Dateitransfer Anfrage" -#: ../src/dialogs.py:1582 -#: ../src/gajim.py:1263 -#: ../src/gajim.py:1420 -#: ../src/notify.py:425 +#: ../src/dialogs.py:1761 ../src/gajim.py:1504 ../src/gajim.py:1674 +#: ../src/notify.py:456 msgid "File Transfer Error" msgstr "Dateitransfer-Fehler" -#: ../src/dialogs.py:1584 -#: ../src/gajim.py:1483 -#: ../src/gajim.py:1505 -#: ../src/gajim.py:1522 -#: ../src/notify.py:427 +#: ../src/dialogs.py:1763 ../src/gajim.py:1746 ../src/gajim.py:1768 +#: ../src/gajim.py:1785 ../src/notify.py:458 msgid "File Transfer Completed" msgstr "Dateitransfer beendet" -#: ../src/dialogs.py:1585 -#: ../src/gajim.py:1486 -#: ../src/notify.py:427 +#: ../src/dialogs.py:1764 ../src/gajim.py:1749 ../src/notify.py:458 msgid "File Transfer Stopped" msgstr "Dateitransfer gestoppt" -#: ../src/dialogs.py:1587 -#: ../src/gajim.py:1160 -#: ../src/notify.py:431 +#: ../src/dialogs.py:1766 ../src/gajim.py:1364 ../src/notify.py:462 msgid "Groupchat Invitation" msgstr "Gruppenchat-Einladung" -#: ../src/dialogs.py:1589 -#: ../src/notify.py:204 -#: ../src/notify.py:433 +#: ../src/dialogs.py:1768 ../src/notify.py:224 ../src/notify.py:464 msgid "Contact Changed Status" msgstr "Kontakt hat Status verändert" -#: ../src/dialogs.py:1774 +#: ../src/dialogs.py:1959 #, python-format msgid "Single Message using account %s" msgstr "Einzelne Nachricht mit Account %s" -#: ../src/dialogs.py:1776 +#: ../src/dialogs.py:1961 #, python-format msgid "Single Message in account %s" msgstr "Einzelne Nachricht in Account %s" -#: ../src/dialogs.py:1778 +#: ../src/dialogs.py:1963 msgid "Single Message" msgstr "Einzelne Nachricht" #. prepare UI for Sending -#: ../src/dialogs.py:1781 +#: ../src/dialogs.py:1966 #, python-format msgid "Send %s" msgstr "Sende %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1804 +#: ../src/dialogs.py:1989 #, python-format msgid "Received %s" msgstr "%s empfangen" +#. prepare UI for Receiving +#: ../src/dialogs.py:2012 +#, fuzzy, python-format +msgid "Form %s" +msgstr "Von %s" + #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1876 +#: ../src/dialogs.py:2082 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1877 +#: ../src/dialogs.py:2083 #, python-format msgid "%s wrote:\n" msgstr "%s schrieb:\n" -#: ../src/dialogs.py:1921 +#: ../src/dialogs.py:2127 #, python-format msgid "XML Console for %s" msgstr "XML Konsole für %s" -#: ../src/dialogs.py:1923 +#: ../src/dialogs.py:2129 msgid "XML Console" msgstr "XML Konsole" -#: ../src/dialogs.py:2046 +#: ../src/dialogs.py:2252 #, python-format msgid "Privacy List <b><i>%s</i></b>" msgstr "Privatliste <b><i>%s</i></b>" -#: ../src/dialogs.py:2050 +#: ../src/dialogs.py:2256 #, python-format msgid "Privacy List for %s" msgstr "Privatsphären-Liste für %s" -#: ../src/dialogs.py:2098 +#: ../src/dialogs.py:2312 #, python-format msgid "Order: %s, action: %s, type: %s, value: %s" msgstr "Sortierung: %s, Aktion: %s, Typ: %s, Wert: %s" -#: ../src/dialogs.py:2101 +#: ../src/dialogs.py:2315 #, python-format msgid "Order: %s, action: %s" msgstr "Sortierung: %s, Aktion: %s" -#: ../src/dialogs.py:2143 +#: ../src/dialogs.py:2357 msgid "<b>Edit a rule</b>" msgstr "<b>Eine Regel bearbeiten</b>" -#: ../src/dialogs.py:2230 +#: ../src/dialogs.py:2444 msgid "<b>Add a rule</b>" msgstr "<b>Eine Regel hinzufügen</b>" -#: ../src/dialogs.py:2326 +#: ../src/dialogs.py:2540 #, python-format msgid "Privacy Lists for %s" msgstr "Privatliste für %s" -#: ../src/dialogs.py:2328 +#: ../src/dialogs.py:2542 msgid "Privacy Lists" msgstr "Privatlisten" -#: ../src/dialogs.py:2398 +#: ../src/dialogs.py:2612 msgid "Invalid List Name" msgstr "Ungültiger Listenname" -#: ../src/dialogs.py:2399 +#: ../src/dialogs.py:2613 msgid "You must enter a name to create a privacy list." -msgstr "Sie müssen einen Namen eingeben um eine Privatsphären-Liste zu erstellen." +msgstr "" +"Sie müssen einen Namen eingeben um eine Privatsphären-Liste zu erstellen." + +#: ../src/dialogs.py:2650 +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact hat Sie in den Gruppenchat %(room_jid)s eingeladen" -#. Don't translate $Contact -#: ../src/dialogs.py:2433 +#: ../src/dialogs.py:2652 #, python-format msgid "$Contact has invited you to group chat %(room_jid)s" msgstr "$Contact hat Sie in den Gruppenchat %(room_jid)s eingeladen" -#. only if not None and not '' -#: ../src/dialogs.py:2445 +#: ../src/dialogs.py:2665 #, python-format msgid "Comment: %s" msgstr "Kommentar: %s" -#: ../src/dialogs.py:2507 +#: ../src/dialogs.py:2731 msgid "Choose Sound" msgstr "Sound wählen" -#: ../src/dialogs.py:2517 -#: ../src/dialogs.py:2562 +#: ../src/dialogs.py:2741 ../src/dialogs.py:2792 msgid "All files" msgstr "Alle Dateien" -#: ../src/dialogs.py:2522 +#: ../src/dialogs.py:2746 msgid "Wav Sounds" msgstr "Wav Dateien" -#: ../src/dialogs.py:2552 +#: ../src/dialogs.py:2779 msgid "Choose Image" msgstr "Bild auswählen" -#: ../src/dialogs.py:2567 +#: ../src/dialogs.py:2797 msgid "Images" msgstr "Bilder" -#: ../src/dialogs.py:2624 +#: ../src/dialogs.py:2862 #, python-format msgid "When %s becomes:" msgstr "Wenn %s wird:" -#: ../src/dialogs.py:2626 +#: ../src/dialogs.py:2864 #, python-format msgid "Adding Special Notification for %s" msgstr "Füge speziellen Hinweis für %s hinzu" #. # means number -#: ../src/dialogs.py:2697 +#: ../src/dialogs.py:2935 msgid "#" msgstr "Nr." -#: ../src/dialogs.py:2703 +#: ../src/dialogs.py:2941 msgid "Condition" msgstr "Bedingung" -#: ../src/dialogs.py:2824 +#: ../src/dialogs.py:3059 msgid "when I am " msgstr "wenn Ich bin " -#: ../src/disco.py:103 +#: ../src/disco.py:111 msgid "Others" msgstr "Andere" -#: ../src/disco.py:104 -#: ../src/disco.py:105 -#: ../src/disco.py:1281 -#: ../src/gajim.py:604 -#: ../src/roster_window.py:272 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:369 -#: ../src/roster_window.py:451 -#: ../src/roster_window.py:483 -#: ../src/roster_window.py:485 -#: ../src/roster_window.py:3912 -#: ../src/roster_window.py:3914 -#: ../src/common/contacts.py:267 -#: ../src/common/contacts.py:282 -#: ../src/common/helpers.py:43 +#: ../src/disco.py:112 ../src/disco.py:113 ../src/disco.py:1355 +#: ../src/gajim.py:660 ../src/roster_window.py:295 ../src/roster_window.py:355 +#: ../src/roster_window.py:395 ../src/roster_window.py:503 +#: ../src/roster_window.py:535 ../src/roster_window.py:537 +#: ../src/roster_window.py:4751 ../src/roster_window.py:4753 +#: ../src/common/contacts.py:295 ../src/common/contacts.py:310 +#: ../src/common/helpers.py:53 msgid "Transports" msgstr "Transports" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:107 +#: ../src/disco.py:115 msgid "Conference" msgstr "Konferenz" -#: ../src/disco.py:420 +#: ../src/disco.py:428 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:502 #, python-format msgid "Service Discovery using account %s" msgstr "Dienste durchsuchen für Konto %s" -#: ../src/disco.py:501 +#: ../src/disco.py:504 msgid "Service Discovery" msgstr "Dienste durchsuchen" -#: ../src/disco.py:641 +#: ../src/disco.py:644 msgid "The service could not be found" msgstr "Der Dienst konnte nicht gefunden werden" -#: ../src/disco.py:642 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Es existiert kein 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:645 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Es existiert kein 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:646 -#: ../src/disco.py:927 +#: ../src/disco.py:649 ../src/disco.py:930 msgid "The service is not browsable" msgstr "Der Dienst ist nicht durchsuchbar" -#: ../src/disco.py:647 +#: ../src/disco.py:650 msgid "This type of service does not contain any items to browse." -msgstr "Dieser Art von Dienst enthält keine Objekte, di edurchsucht werden können." +msgstr "" +"Dieser Art von Dienst enthält keine Objekte, di edurchsucht werden können." -#: ../src/disco.py:727 +#: ../src/disco.py:730 #, python-format msgid "Browsing %s using account %s" msgstr "Durchsuche %s mit Konto %s" -#: ../src/disco.py:766 +#: ../src/disco.py:769 msgid "_Browse" msgstr "_Durchsuche" -#: ../src/disco.py:928 +#: ../src/disco.py:931 msgid "This service does not contain any items to browse." msgstr "Dieser Dienst enthält keine keine durchsuchbaren Objekte." -#: ../src/disco.py:1155 -#: ../src/disco.py:1286 +#: ../src/disco.py:1152 +msgid "_Execute Command" +msgstr "_Befehl ausführen..." + +#: ../src/disco.py:1162 ../src/disco.py:1360 msgid "Re_gister" msgstr "Re_gistrieren" -#: ../src/disco.py:1323 +#: ../src/disco.py:1397 #, python-format msgid "Scanning %d / %d.." msgstr "Durchsuche %d / %d.." #. Users column -#: ../src/disco.py:1504 +#: ../src/disco.py:1579 msgid "Users" msgstr "Benutzer" #. Description column -#: ../src/disco.py:1511 +#: ../src/disco.py:1587 msgid "Description" msgstr "Beschreibung" #. Id column -#: ../src/disco.py:1518 +#: ../src/disco.py:1595 msgid "Id" msgstr "Id" -#: ../src/disco.py:1741 +#: ../src/disco.py:1824 msgid "Subscribed" msgstr "Abonniert" -#: ../src/disco.py:1767 +#: ../src/disco.py:1832 +msgid "Node" +msgstr "Node" + +#: ../src/disco.py:1889 msgid "New post" msgstr "Neue Nachricht" -#: ../src/disco.py:1773 +#: ../src/disco.py:1895 msgid "_Subscribe" msgstr "_Abonnieren" -#: ../src/disco.py:1779 +#: ../src/disco.py:1901 msgid "_Unsubscribe" msgstr "_Abbestellen" -#: ../src/filetransfers_window.py:72 +#: ../src/features_window.py:47 +msgid "PyOpenSSL" +msgstr "PyOpenSSL" + +#: ../src/features_window.py:48 +msgid "" +"A library used to validate server certificates to ensure a secure connection." +msgstr "" +"Eine Bibliothek um Server-Zertifikate zu validieren um eine sichere " +"Verbindung zu gewährleisten." + +#: ../src/features_window.py:49 ../src/features_window.py:50 +msgid "Requires python-pyopenssl." +msgstr "Erfordert python-pyopenssl." + +#: ../src/features_window.py:51 +msgid "Bonjour / Zeroconf" +msgstr "Bonjour / Zeroconf" + +#: ../src/features_window.py:52 +msgid "Serverless chatting with autodetected clients in a local network." +msgstr "" +"Serverloses Chatten mit automatisch erkannten Clients in einem lokalen Netz" + +#: ../src/features_window.py:53 +msgid "Requires python-avahi." +msgstr "Erfordert python-avahi." + +#: ../src/features_window.py:54 +msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." +msgstr "Erfordert pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." + +#: ../src/features_window.py:55 +msgid "gajim-remote" +msgstr "gajim-remote" + +#: ../src/features_window.py:56 +msgid "A script to controle gajim via commandline." +msgstr "Ein Skript um Gajim über die Kommandozeile zu steuern." + +#: ../src/features_window.py:57 +msgid "Requires python-dbus." +msgstr "Erfordert python-dbus." + +#: ../src/features_window.py:58 ../src/features_window.py:62 +#: ../src/features_window.py:66 ../src/features_window.py:70 +#: ../src/features_window.py:74 ../src/features_window.py:82 +#: ../src/features_window.py:86 ../src/features_window.py:98 +msgid "Feature not available under Windows." +msgstr "Funktion unter Windows nicht verfügbar." + +#: ../src/features_window.py:59 +msgid "OpenGPG" +msgstr "OpenPGP: " + +#: ../src/features_window.py:60 +msgid "Encrypting chatmessages with gpg keys." +msgstr "Chat Nachrichten werden mit gpg Schlüssel verschlüsselt" + +#: ../src/features_window.py:61 +msgid "Requires gpg and python-GnuPGInterface." +msgstr "Erfordert gpg und python-GnuPGInterface." + +#: ../src/features_window.py:63 +msgid "network-manager" +msgstr "network-manager" + +#: ../src/features_window.py:64 +msgid "Autodetection of network status." +msgstr "Auto-Erkennung des Netzwerk-Status." + +#: ../src/features_window.py:65 +msgid "Requires gnome-network-manager and python-dbus." +msgstr "Erfordert gnome-network-manager und python-dbus." + +#: ../src/features_window.py:67 +msgid "Session Management" +msgstr "Sitzungsverwaltung" + +#: ../src/features_window.py:68 +msgid "Gajim session is stored on logout and restored on login." +msgstr "" +"Gajim-Sitzung wird beim Logout gespeichert und beim Login wiederhergestellt" + +#: ../src/features_window.py:69 +msgid "Requires python-gnome2." +msgstr "Erfordert python-gnome2." + +#: ../src/features_window.py:71 +msgid "gnome-keyring" +msgstr "gnome-keyring" + +#: ../src/features_window.py:72 +msgid "Passwords can be stored securely and not just in plaintext." +msgstr "Passwörter können sicher und nicht nur im Klartext gespeichert werden" + +#: ../src/features_window.py:73 +msgid "Requires gnome-keyring and python-gnome2-desktop." +msgstr "Erfordert gnome-keyring und python-gnome2-desktop." + +#: ../src/features_window.py:75 +msgid "SRV" +msgstr "SRV" + +#: ../src/features_window.py:76 +msgid "Ability to connect to servers which are using SRV records." +msgstr "Fähigkeit zu Servern die SRV-Einträge verwenden zu verbinden." + +#: ../src/features_window.py:77 +msgid "Requires dnsutils." +msgstr "Erfordert dnsutils." + +#: ../src/features_window.py:78 +msgid "Requires nslookup to use SRV records." +msgstr "Erfordert nslookup zur Nutzung von SRV-Einträgen." + +#: ../src/features_window.py:79 +msgid "Spell Checker" +msgstr "Rechtschreibprüfung" + +#: ../src/features_window.py:80 +msgid "Spellchecking of composed messages." +msgstr "Rechtschreibprüfung erstellter Nachrichten." + +#: ../src/features_window.py:81 +msgid "" +"Requires python-gnome2-extras or compilation of gtkspell module from Gajim " +"sources." +msgstr "" +"Erfordert python-gnome2-extras oder die Kompilation des gtkspell-Moduls aus " +"den Gajim-Quellen." + +#: ../src/features_window.py:83 +msgid "Notification-daemon" +msgstr "Notification-daemon" + +#: ../src/features_window.py:84 +msgid "Passive popups notifying for new events." +msgstr "Popups informieren über neue Ereignisse." + +#: ../src/features_window.py:85 +msgid "" +"Requires python-notify or instead python-dbus in conjunction with " +"notification-daemon." +msgstr "" +"Erforder python-notify oder stattdessen python-dbus in Verbindung mit " +"notification-daemon." + +#: ../src/features_window.py:87 +msgid "Trayicon" +msgstr "Tray-Symbol" + +#: ../src/features_window.py:88 +msgid "A icon in systemtray reflecting the current presence." +msgstr "Ein Icon im Systemtray, das den Status widerspiegelt." + +#: ../src/features_window.py:89 +msgid "" +"Requires python-gnome2-extras or compiled trayicon module from Gajim " +"sources." +msgstr "" +"Erfordert python-gnome2-extras oder das kompilierte Trayicon-Modul aus den " +"Gajim-Quellen" + +#: ../src/features_window.py:90 +msgid "Requires PyGTK >= 2.10." +msgstr "Erforder PyGTK >= 2.10." + +#: ../src/features_window.py:91 +msgid "Idle" +msgstr "Idle" + +#: ../src/features_window.py:92 +msgid "Ability to measure idle time, in order to set auto status." +msgstr "Fähigkeit die Idle-Zeit zu messen um den Status automatisch zu setzen" + +#: ../src/features_window.py:93 ../src/features_window.py:94 +msgid "Requires compilation of the idle module from Gajim sources." +msgstr "Erfordert die Kompilation des Idle-Moduls aus den Gajim-Quellen." + +#: ../src/features_window.py:95 +msgid "LaTeX" +msgstr "LaTeX" + +#: ../src/features_window.py:96 +msgid "Transform LaTeX espressions between $$ $$." +msgstr "LaTeX-Ausdrücke zwischen $$ $$ umwandeln." + +#: ../src/features_window.py:97 +msgid "" +"Requires texlive-latex-base, dvips and imagemagick. You have to set " +"'use_latex' to True in the Advanced Configuration Editor." +msgstr "" +"Erfordert texlive-latex-base, dvips und imagemagick. Sie müssen 'use_latex' " +"im Advanced Configuration Editor auf 'true' setzen." + +#: ../src/features_window.py:99 +msgid "End to end encryption" +msgstr "OpenPGP-Verschlüsselung" + +#: ../src/features_window.py:100 +msgid "Encrypting chatmessages." +msgstr "Chatnachrichten werden verschlüsselt." + +#: ../src/features_window.py:101 ../src/features_window.py:102 +msgid "Requires python-crypto." +msgstr "Erfordert python-crypto" + +#: ../src/features_window.py:103 +msgid "RST Generator" +msgstr "RST Generator" + +#: ../src/features_window.py:104 +msgid "" +"Generate XHTML output from RST code (see http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html)." +msgstr "" +"Erzeug aus RST-Code XHTML-Ausgaben (siehe http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html)." + +#: ../src/features_window.py:105 ../src/features_window.py:106 +msgid "Requires python-docutils." +msgstr "Erfordert python-docutils." + +#: ../src/features_window.py:107 +msgid "libsexy" +msgstr "" + +#: ../src/features_window.py:108 +#, fuzzy +msgid "Ability to have clickable URLs in chat window." +msgstr "Versteckt die Knöpfe im Gruppenchat-Fenster." + +#: ../src/features_window.py:109 ../src/features_window.py:110 +msgid "Requires python-sexy." +msgstr "Erfordert python-sexy." + +#: ../src/features_window.py:117 ../src/common/helpers.py:248 +msgid "Available" +msgstr "Angemeldet" + +#: ../src/features_window.py:124 +#, fuzzy +msgid "Feature" +msgstr "Fähigkeiten des Servers" + +#: ../src/filetransfers_window.py:77 msgid "File" msgstr "Datei" -#: ../src/filetransfers_window.py:87 +#: ../src/filetransfers_window.py:92 msgid "Time" msgstr "Zeit" -#: ../src/filetransfers_window.py:99 +#: ../src/filetransfers_window.py:104 msgid "Progress" msgstr "Fortschritt" -#: ../src/filetransfers_window.py:161 -#: ../src/filetransfers_window.py:215 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:218 #, python-format msgid "Filename: %s" msgstr "Dateiname: %s" -#: ../src/filetransfers_window.py:162 -#: ../src/filetransfers_window.py:290 +#: ../src/filetransfers_window.py:165 ../src/filetransfers_window.py:305 #, 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:171 -#: ../src/filetransfers_window.py:181 -#: ../src/history_manager.py:463 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:184 +#: ../src/history_manager.py:468 msgid "You" msgstr "Sie" -#: ../src/filetransfers_window.py:172 +#: ../src/filetransfers_window.py:175 #, python-format msgid "Sender: %s" msgstr "Gespeichert in: %s" -#: ../src/filetransfers_window.py:173 -#: ../src/filetransfers_window.py:564 -#: ../src/tooltips.py:573 +#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:593 +#: ../src/tooltips.py:593 msgid "Recipient: " msgstr "Empfänger: " -#: ../src/filetransfers_window.py:184 +#: ../src/filetransfers_window.py:187 #, python-format msgid "Saved in: %s" msgstr "Absender: %s" -#: ../src/filetransfers_window.py:186 +#: ../src/filetransfers_window.py:189 msgid "File transfer completed" msgstr "Dateitransfer abgeschlossen" -#: ../src/filetransfers_window.py:200 -#: ../src/filetransfers_window.py:206 +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:209 msgid "File transfer cancelled" msgstr "Dateitransfer abgebrochen" -#: ../src/filetransfers_window.py:200 -#: ../src/filetransfers_window.py:207 +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:210 msgid "Connection with peer cannot be established." msgstr "Verbindung zum Teilnehmer kann nicht hergestellt werden" -#: ../src/filetransfers_window.py:216 +#: ../src/filetransfers_window.py:219 #, python-format msgid "Recipient: %s" msgstr "Empfänger: %s" -#: ../src/filetransfers_window.py:218 +#: ../src/filetransfers_window.py:221 #, python-format msgid "Error message: %s" msgstr "Fehlermeldung: %s" -#: ../src/filetransfers_window.py:219 +#: ../src/filetransfers_window.py:222 msgid "File transfer stopped by the contact at the other end" msgstr "Gegenseite hat Dateitransfer gestoppt" -#: ../src/filetransfers_window.py:236 +#: ../src/filetransfers_window.py:243 msgid "Choose File to Send..." msgstr "Datei auswählen ..." -#: ../src/filetransfers_window.py:255 +#: ../src/filetransfers_window.py:259 ../src/tooltips.py:632 +#, fuzzy +msgid "Description: " +msgstr "Beschreibung: %s" + +#: ../src/filetransfers_window.py:270 msgid "Gajim cannot access this file" msgstr "Gajim kann auf diese Datei nicht zugreifen" -#: ../src/filetransfers_window.py:256 +#: ../src/filetransfers_window.py:271 msgid "This file is being used by another process." msgstr "Diese Datei wird von einem anderen Prozess verwendet." -#: ../src/filetransfers_window.py:288 +#: ../src/filetransfers_window.py:303 #, python-format msgid "File: %s" msgstr "Datei: %s" -#: ../src/filetransfers_window.py:293 +#: ../src/filetransfers_window.py:308 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:295 +#: ../src/filetransfers_window.py:310 #, python-format msgid "Description: %s" msgstr "Beschreibung: %s" -#: ../src/filetransfers_window.py:296 +#: ../src/filetransfers_window.py:311 #, python-format msgid "%s wants to send you a file:" msgstr "%s möchte ihnen eine Datei senden:" -#: ../src/filetransfers_window.py:310 -#: ../src/gtkgui_helpers.py:750 +#: ../src/filetransfers_window.py:324 ../src/gtkgui_helpers.py:773 #, python-format msgid "Cannot overwrite existing file \"%s\"" msgstr "Kann existierende Datei \"%s\" nicht überschreiben" -#: ../src/filetransfers_window.py:311 -#: ../src/gtkgui_helpers.py:752 -msgid "A file with this name already exists and you do not have permission to overwrite it." -msgstr "Eine Datei mit diesem Namen existiert bereits und Sie haben nicht die Rechte sie zu überschreiben." +#: ../src/filetransfers_window.py:325 ../src/gtkgui_helpers.py:775 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" +"Eine Datei mit diesem Namen existiert bereits und Sie haben nicht die Rechte " +"sie zu überschreiben." -#: ../src/filetransfers_window.py:318 -#: ../src/gtkgui_helpers.py:756 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:779 msgid "This file already exists" msgstr "Diese Datei existiert bereits" -#: ../src/filetransfers_window.py:318 -#: ../src/gtkgui_helpers.py:756 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:779 msgid "What do you want to do?" msgstr "Was möchten Sie tun?" -#: ../src/filetransfers_window.py:330 -#: ../src/gtkgui_helpers.py:766 +#: ../src/filetransfers_window.py:344 ../src/gtkgui_helpers.py:789 #, python-format msgid "Directory \"%s\" is not writable" msgstr "Verzeichnis \"%s\" ist nicht schreibbar" -#: ../src/filetransfers_window.py:330 -#: ../src/gtkgui_helpers.py:767 +#: ../src/filetransfers_window.py:344 ../src/gtkgui_helpers.py:790 msgid "You do not have permission to create files in this directory." -msgstr "Ihre Benutzerrechte erlauben es Ihnen nicht, in diesem Verzeichnis Dateien anzulegen." +msgstr "" +"Ihre Benutzerrechte erlauben es Ihnen nicht, in diesem Verzeichnis Dateien " +"anzulegen." -#: ../src/filetransfers_window.py:340 +#: ../src/filetransfers_window.py:354 msgid "Save File as..." 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:421 +#: ../src/filetransfers_window.py:434 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -3755,95 +4410,103 @@ 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:497 +#: ../src/filetransfers_window.py:523 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:536 -#: ../src/filetransfers_window.py:539 +#: ../src/filetransfers_window.py:563 ../src/filetransfers_window.py:566 msgid "Invalid File" msgstr "Ungültige Datei" -#: ../src/filetransfers_window.py:536 +#: ../src/filetransfers_window.py:563 msgid "File: " msgstr "Datei: " -#: ../src/filetransfers_window.py:540 +#: ../src/filetransfers_window.py:567 msgid "It is not possible to send empty files" msgstr "Es nicht möglich, leere Dateien zu versenden" -#: ../src/filetransfers_window.py:560 -#: ../src/tooltips.py:563 +#: ../src/filetransfers_window.py:589 ../src/tooltips.py:583 msgid "Name: " msgstr "Name: " -#: ../src/filetransfers_window.py:562 -#: ../src/tooltips.py:567 +#: ../src/filetransfers_window.py:591 ../src/tooltips.py:587 msgid "Sender: " msgstr "Absender: " -#: ../src/filetransfers_window.py:750 +#: ../src/filetransfers_window.py:779 msgid "Pause" msgstr "Pause" -#: ../src/gajim.py:47 +#: ../src/gajim.py:56 #, python-format msgid "%s is not a valid loglevel" msgstr "%s ist kein gültiger Loglevel." -#: ../src/gajim.py:122 +#: ../src/gajim.py:129 msgid "Gajim needs X server to run. Quiting..." msgstr "Gajim benötigt einen laufenden X-Server. Breche ab ..." -#: ../src/gajim.py:126 +#: ../src/gajim.py:156 msgid "Gajim needs PyGTK 2.8 or above" msgstr "Gajim benötigt PyGTK 2.6 oder höher" -#: ../src/gajim.py:127 +#: ../src/gajim.py:157 msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." msgstr "Gajim benötigt PyGTK 2.6 oder höher. Breche ab ..." -#: ../src/gajim.py:129 +#: ../src/gajim.py:159 msgid "Gajim needs GTK 2.8 or above" msgstr "Gajim benötigt GTK 2.6 oder höher" -#: ../src/gajim.py:130 +#: ../src/gajim.py:160 msgid "Gajim needs GTK 2.8 or above to run. Quiting..." msgstr "Gajim benötigt GTK 2.6+. Breche ab ..." -#: ../src/gajim.py:135 +#: ../src/gajim.py:165 msgid "GTK+ runtime is missing libglade support" msgstr "GTK+ runtine fehlt libglade-Unterstützung" -#: ../src/gajim.py:137 +#: ../src/gajim.py:167 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "Bitte entfernen Sie Ihre derzeitige GTK+ Laufzeitumgebung und installieren Sie die aktuelle Version von %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Bitte entfernen Sie Ihre derzeitige GTK+ Laufzeitumgebung und installieren " +"Sie die aktuelle Version von %s" -#: ../src/gajim.py:139 -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:169 +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:144 +#: ../src/gajim.py:174 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim benötigt PySQLite2 zum Starten" -#: ../src/gajim.py:152 +#: ../src/gajim.py:182 msgid "Gajim needs pywin32 to run" msgstr "Gajim benötigt pywin32 zum Laufen" -#: ../src/gajim.py:153 +#: ../src/gajim.py:183 #, python-format -msgid "Please make sure that Pywin32 is installed on your system. You can get it at %s" -msgstr "Bitte stellen Sie sicher das Pywin32 auf Ihrem System installiert ist. Sie können es unter folgender URL herunterladen: %s " +msgid "" +"Please make sure that Pywin32 is installed on your system. You can get it at " +"%s" +msgstr "" +"Bitte stellen Sie sicher das Pywin32 auf Ihrem System installiert ist. Sie " +"können es unter folgender URL herunterladen: %s " #. set the icon to all newly opened wind -#: ../src/gajim.py:300 +#: ../src/gajim.py:328 msgid "Gajim is already running" msgstr "Gajim läuft bereits" -#: ../src/gajim.py:301 +#: ../src/gajim.py:329 msgid "" "Another instance of Gajim seems to be running\n" "Run anyway?" @@ -3851,88 +4514,169 @@ msgstr "" "Eine andere Instanz von Gajim schein bereits zu laufen\n" "Trotzdem starten?" -#: ../src/gajim.py:408 +#: ../src/gajim.py:352 ../src/common/connection_handlers.py:908 +#: ../src/common/connection_handlers.py:1620 +#: ../src/common/connection_handlers.py:1649 +#: ../src/common/connection_handlers.py:1659 +#: ../src/common/connection_handlers.py:1678 +#: ../src/common/connection_handlers.py:1915 +#: ../src/common/connection_handlers.py:2027 ../src/common/connection.py:938 +msgid "Disk Write Error" +msgstr "Fehler beim Schreiben auf Festplatte" + +#: ../src/gajim.py:448 +msgid "Do you accept this request?" +msgstr "Akzeptieren Sie diese Anfrage?" + +#: ../src/gajim.py:450 +#, python-format +msgid "Do you accept this request on account %s?" +msgstr "Akzeptieren Sie diese Anfrage vom %s Konto?" + +#: ../src/gajim.py:453 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autorisierung für %s (id: %s)" -#: ../src/gajim.py:409 -msgid "Do you accept this request?" -msgstr "Akzeptieren Sie diese Anfrage?" - -#: ../src/gajim.py:455 -#: ../src/notify.py:435 +#: ../src/gajim.py:500 ../src/notify.py:466 msgid "Connection Failed" msgstr "Verbindung fehlgeschlagen" -#: ../src/gajim.py:775 +#: ../src/gajim.py:834 #, python-format msgid "Subject: %s" msgstr "Thema: %s" #. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) -#: ../src/gajim.py:820 -#: ../src/gajim.py:833 +#: ../src/gajim.py:881 ../src/gajim.py:894 #, python-format msgid "error while sending %s ( %s )" msgstr "Fehler beim Senden von %s ( %s )" -#: ../src/gajim.py:866 +#: ../src/gajim.py:927 msgid "Authorization accepted" msgstr "Autorisierung akzeptiert" -#: ../src/gajim.py:867 +#: ../src/gajim.py:928 #, 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:875 +#: ../src/gajim.py:936 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakt \"%s\" hat das Abonnement zurückgezogen" -#: ../src/gajim.py:876 +#: ../src/gajim.py:937 msgid "You will always see him or her as offline." msgstr "Sie werden den Kontakt ab sofort als offline sehen." -#: ../src/gajim.py:920 +#: ../src/gajim.py:981 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kontakt mit \"%s\" konnte nicht hergestellt werden" -#: ../src/gajim.py:921 -#: ../src/common/connection.py:434 +#: ../src/gajim.py:982 ../src/common/connection.py:465 msgid "Check your connection or try again later." -msgstr "Ãœberprüfen Sie die Verbindung oder versuchen Sie es später noch einmal." +msgstr "" +"Ãœberprüfen Sie die Verbindung oder versuchen Sie es später noch einmal." + +#: ../src/gajim.py:1151 ../src/groupchat_control.py:991 +#, python-format +msgid "%s is now known as %s" +msgstr "%s heißt jetzt %s" -#: ../src/gajim.py:1070 -#: ../src/roster_window.py:1218 +#: ../src/gajim.py:1167 ../src/roster_window.py:1372 #, python-format msgid "%s is now %s (%s)" msgstr "%s ist jetzt %s (%s)" #. No status message -#: ../src/gajim.py:1073 -#: ../src/groupchat_control.py:962 -#: ../src/roster_window.py:1221 +#: ../src/gajim.py:1170 ../src/groupchat_control.py:1142 +#: ../src/roster_window.py:1375 #, python-format msgid "%s is now %s" msgstr "%s ist jetzt %s" -#: ../src/gajim.py:1170 +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1291 ../src/groupchat_control.py:951 +msgid "Any occupant is allowed to see your full JID" +msgstr "Jeder Teilnehmer darf Ihre volle JID sehen" + +#: ../src/gajim.py:1294 +msgid "Room now shows unavailable member" +msgstr "Raum zeigt jetzt abwesende Teilnehmer" + +#: ../src/gajim.py:1296 +msgid "room now does not show unavailable members" +msgstr "Raum zeigt jetzt abwesende Teilnehmer nicht an" + +#: ../src/gajim.py:1299 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "" +"Eine nicht Privatsphären-bezogene Raum-Konfigurations-Änderung ist " +"aufgetreten" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1302 +msgid "Room logging is now enabled" +msgstr "Raum-Mitschnitt ist jetzt aktiviert" + +#: ../src/gajim.py:1304 +msgid "Room logging is now disabled" +msgstr "Raum-Mitschnitt ist jetzt deaktiviert" + +#: ../src/gajim.py:1306 +msgid "Room is now non-anonymous" +msgstr "Raum ist jetzt un-anonym" + +#: ../src/gajim.py:1309 +msgid "Room is now semi-anonymous" +msgstr "Raum ist jetzt semi-anonym" + +#: ../src/gajim.py:1312 +msgid "Room is now fully-anonymous" +msgstr "Raum ist jetzt voll anonym" + +#: ../src/gajim.py:1344 +#, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "Für das Betreten des Gruppenchats-Raumes %s wird ein Passwort benötig." + +#: ../src/gajim.py:1379 msgid "Your passphrase is incorrect" msgstr "Ihre Passphrase ist falsch" -#: ../src/gajim.py:1171 +#: ../src/gajim.py:1380 msgid "You are currently connected without your OpenPGP key." msgstr "Sie wurden ohne ihren GPG-Schlüssel verbunden" -#: ../src/gajim.py:1274 +#: ../src/gajim.py:1392 +msgid "Passphrase Required" +msgstr "Passphrase benötigt" + +#: ../src/gajim.py:1393 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Geben Sie die GPG-Passphrase für das Konto %s ein." + +#: ../src/gajim.py:1405 +msgid "Wrong Passphrase" +msgstr "Falsche Passphrase" + +#: ../src/gajim.py:1406 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "" +"Bitte geben Sie Ihre GPG-Passphrase erneut ein oder klicken Sie auf " +"Abbrechen." + +#: ../src/gajim.py:1515 #, python-format msgid "New mail on %(gmail_mail_address)s" msgstr "Neue E-Mail auf %(gmail_mail_address)s" -#: ../src/gajim.py:1276 +#: ../src/gajim.py:1517 #, python-format msgid "You have %d new mail conversation" msgid_plural "You have %d new mail conversations" @@ -3942,7 +4686,7 @@ msgstr[1] "Sie haben %d ungelesene E-Mail-Nachrichten" #. 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 -#: ../src/gajim.py:1285 +#: ../src/gajim.py:1526 #, python-format msgid "" "\n" @@ -3951,329 +4695,430 @@ msgstr "" "\n" "Von: %(from_address)s" -#: ../src/gajim.py:1441 +#: ../src/gajim.py:1704 #, python-format msgid "%s wants to send you a file." msgstr "%s möchte ihnen eine Datei senden." -#: ../src/gajim.py:1506 +#: ../src/gajim.py:1769 #, 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:1510 +#: ../src/gajim.py:1773 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." msgstr "Dateitransfer %(filename)s von %(name)s wurde gestoppt." -#: ../src/gajim.py:1523 +#: ../src/gajim.py:1786 #, 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:1527 +#: ../src/gajim.py:1790 #, 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:1640 +#: ../src/gajim.py:1885 +msgid "Session negotiation cancelled" +msgstr "Sitzungs-Aushandlung abgebrochen" + +#: ../src/gajim.py:1886 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "Der Client bei %s hat die Sitzungs-Aushandlung abgebrochen." + +#: ../src/gajim.py:1927 ../src/gajim.py:1971 +msgid "Confirm these session options" +msgstr "Bestätigen Sie diese Sitzungs-Optionen" + +#: ../src/gajim.py:1928 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t\t%s\n" +"\n" +"\t\tAre these options acceptable?" +msgstr "" +"Der entfernte Client will eine Sitzung mit diesen Features aushandeln:\n" +"\n" +"\t\t%s\n" +"\n" +"\t\tSind diese Einstellungen akzeptabel?" + +#: ../src/gajim.py:1972 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" +"Der entfernte Client hat diese Optionen ausgewählt:\n" +"\n" +"%s\n" +"\n" +"Mit der Sitzung fortfahren?" + +#: ../src/gajim.py:2097 msgid "Username Conflict" msgstr "Benutzernamenkonflikt" -#: ../src/gajim.py:1641 +#: ../src/gajim.py:2098 msgid "Please type a new username for your local account" -msgstr "<b>Bitte geben Sie einen neuen Benutzernamen für Ihr lokales Konto ein</b>" +msgstr "Bitte geben Sie einen neuen Benutzernamen für Ihr lokales Konto ein" + +#: ../src/gajim.py:2115 +msgid "Ping?" +msgstr "Ping?" + +#: ../src/gajim.py:2123 +#, python-format +msgid "Pong! (%s s.)" +msgstr "Pong! (%s s.)" + +#: ../src/gajim.py:2129 +msgid "Error." +msgstr "Fehler:" + +#: ../src/gajim.py:2154 +msgid "Resource Conflict" +msgstr "Resourcenkonflikt" + +#: ../src/gajim.py:2155 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" +"Sie sind mit diesem Konto bereits mit derselben Ressource verbunden.Bitte " +"geben Sie eine neue ein" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1987 +#: ../src/gajim.py:2520 msgid "Could not save your settings and preferences" msgstr "Konnte Einstellungen nicht speichern" -#: ../src/gajim.py:2185 +#. sorted alphanum +#: ../src/gajim.py:2656 ../src/common/config.py:102 +#: ../src/common/config.py:413 ../src/common/optparser.py:206 +#: ../src/common/optparser.py:424 ../src/common/optparser.py:458 +msgid "default" +msgstr "Standard" + +#: ../src/gajim.py:2742 msgid "Network Manager support not available" msgstr "Unterstützung für Network Manager nicht verfügbar" -#: ../src/gajim.py:2264 +#: ../src/gajim.py:2847 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Sitzungsmanagment-Unterstützung nicht verfügbar (Modul gnome.ui fehlt)" -#: ../src/gajim-remote.py:65 +#: ../src/gajim-remote.py:73 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:68 +#: ../src/gajim-remote.py:76 msgid "command" msgstr "Befehl" -#: ../src/gajim-remote.py:69 +#: ../src/gajim-remote.py:77 msgid "show help on command" msgstr "zeige Hilfe für Befehl" -#: ../src/gajim-remote.py:73 +#: ../src/gajim-remote.py:81 msgid "Shows or hides the roster window" msgstr "Ein- oder Ausblenden des Hauptfensters" -#: ../src/gajim-remote.py:77 +#: ../src/gajim-remote.py:85 msgid "Pops up a window with the next pending event" msgstr "Zeige Popup-Fenster mit dem nächsten ungelesenen Ereignis" -#: ../src/gajim-remote.py:81 -msgid "Prints a list of all contacts in the roster. Each contact appears on a separate line" +#: ../src/gajim-remote.py:89 +msgid "" +"Prints a list of all contacts in the roster. Each contact appears on a " +"separate line" msgstr "Gibt eine Liste aller Kontakte im Roster aus. Eine Zeile je Kontakt" -#: ../src/gajim-remote.py:84 -#: ../src/gajim-remote.py:99 -#: ../src/gajim-remote.py:109 -#: ../src/gajim-remote.py:122 -#: ../src/gajim-remote.py:136 -#: ../src/gajim-remote.py:157 -#: ../src/gajim-remote.py:187 -#: ../src/gajim-remote.py:196 -#: ../src/gajim-remote.py:203 -#: ../src/gajim-remote.py:210 -#: ../src/gajim-remote.py:221 -#: ../src/gajim-remote.py:237 -#: ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:92 ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:117 ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:144 ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:174 ../src/gajim-remote.py:204 +#: ../src/gajim-remote.py:213 ../src/gajim-remote.py:220 +#: ../src/gajim-remote.py:227 ../src/gajim-remote.py:238 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:263 msgid "account" msgstr "Konto" -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:92 msgid "show only contacts of the given account" msgstr "zeige nur Kontakte für das gegebene Konto" -#: ../src/gajim-remote.py:90 +#: ../src/gajim-remote.py:98 msgid "Prints a list of registered accounts" msgstr "Gibt eine Liste registrierter Konten aus" -#: ../src/gajim-remote.py:94 +#: ../src/gajim-remote.py:102 msgid "Changes the status of account or accounts" msgstr "Ändere den Status eines oder mehrerer Konten" #. offline, online, chat, away, xa, dnd, invisible should not be translated -#: ../src/gajim-remote.py:97 +#: ../src/gajim-remote.py:105 msgid "status" msgstr "Status" -#: ../src/gajim-remote.py:97 +#: ../src/gajim-remote.py:105 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "Eins von: offline, online, chat, away, xa, dnd, invisible " -#: ../src/gajim-remote.py:98 -#: ../src/gajim-remote.py:119 -#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:106 ../src/gajim-remote.py:127 +#: ../src/gajim-remote.py:141 ../src/gajim-remote.py:152 msgid "message" msgstr "Nachricht" -#: ../src/gajim-remote.py:98 +#: ../src/gajim-remote.py:106 msgid "status message" msgstr "Statusnachricht" -#: ../src/gajim-remote.py:99 -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 "Ändere Status vom Konto \"account\". Falls nicht angegeben, ändere Status aller Konten für die \"Kontostatus mit globalem Status abgleichen\" aktiviert ist" +#: ../src/gajim-remote.py:107 +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 "" +"Ändere Status vom Konto \"account\". Falls nicht angegeben, ändere Status " +"aller Konten für die \"Kontostatus mit globalem Status abgleichen\" " +"aktiviert ist" -#: ../src/gajim-remote.py:105 +#: ../src/gajim-remote.py:113 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" +msgstr "" +"Zeige Chatfenster, so dass eine Nachricht an einen Kontakt gesendet werden " +"kann" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:115 msgid "JID of the contact that you want to chat with" msgstr "JID des Kontakts mit Sie chatten möchten" -#: ../src/gajim-remote.py:109 -#: ../src/gajim-remote.py:187 +#: ../src/gajim-remote.py:117 ../src/gajim-remote.py:204 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:114 -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 "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:122 +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 "" +"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:118 -#: ../src/gajim-remote.py:131 +#: ../src/gajim-remote.py:126 ../src/gajim-remote.py:139 msgid "JID of the contact that will receive the message" msgstr "JID des Kontakts, der die Nachricht empfängt" -#: ../src/gajim-remote.py:119 -#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:127 ../src/gajim-remote.py:141 +#: ../src/gajim-remote.py:152 msgid "message contents" msgstr "Nachrichteninhalt" -#: ../src/gajim-remote.py:120 -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:128 ../src/gajim-remote.py:142 msgid "pgp key" msgstr "PGP-Schlüssel" -#: ../src/gajim-remote.py:120 -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:128 ../src/gajim-remote.py:142 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:122 -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:130 ../src/gajim-remote.py:144 +#: ../src/gajim-remote.py:153 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:127 -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 einzelne Nachricht an einen 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:135 +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 einzelne Nachricht an einen 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:132 +#: ../src/gajim-remote.py:140 msgid "subject" msgstr "Betreff" -#: ../src/gajim-remote.py:132 -msgid "message subject" -msgstr "Nachrichten-Betreff" +#: ../src/gajim-remote.py:140 +msgid "message subject" +msgstr "Nachrichten-Betreff" + +#: ../src/gajim-remote.py:149 +msgid "Sends new message to a groupchat you've joined." +msgstr "" +"Sendet eine neue Nachricht an einen Gruppenchat, den Sie betreten haben." + +#: ../src/gajim-remote.py:151 +msgid "JID of the room that will receive the message" +msgstr "JID des Raums, der die Nachricht empfängt" -#: ../src/gajim-remote.py:141 +#: ../src/gajim-remote.py:158 msgid "Gets detailed info on a contact" msgstr "Zeige detaillierte Informationen über Kontakt" -#: ../src/gajim-remote.py:143 -#: ../src/gajim-remote.py:156 -#: ../src/gajim-remote.py:186 -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:160 ../src/gajim-remote.py:173 +#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:212 msgid "JID of the contact" msgstr "JID des Kontakts" -#: ../src/gajim-remote.py:147 +#: ../src/gajim-remote.py:164 msgid "Gets detailed info on a account" msgstr "Zeige detaillierte Informationen über ein Konto" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:166 msgid "Name of the account" msgstr "Name des Kontos" -#: ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:170 msgid "Sends file to a contact" msgstr "Sendet dem Kontakt eine Datei" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:172 msgid "file" msgstr "Datei" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:172 msgid "File path" msgstr "Dateipfad" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:174 msgid "if specified, file will be sent using this account" msgstr "Falls angegeben, wird die Nachricht über dieses Konto gesendet" -#: ../src/gajim-remote.py:162 +#: ../src/gajim-remote.py:179 msgid "Lists all preferences and their values" msgstr "Zeige alle Einstellung und ihre Werte" -#: ../src/gajim-remote.py:166 +#: ../src/gajim-remote.py:183 msgid "Sets value of 'key' to 'value'." msgstr "Setze Wert von 'Schlüssel' auf 'Wert'." -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:185 msgid "key=value" msgstr "key=value" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:185 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'key' ist der Name der Option, 'value' ist der der einzustellende Wert" -#: ../src/gajim-remote.py:173 +#: ../src/gajim-remote.py:190 msgid "Deletes a preference item" msgstr "Lösche eine Einstellung" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:192 msgid "key" msgstr "Schlüssel" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:192 msgid "name of the preference to be deleted" msgstr "Name der zu löschenden Einstellung" -#: ../src/gajim-remote.py:179 +#: ../src/gajim-remote.py:196 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:184 +#: ../src/gajim-remote.py:201 msgid "Removes contact from roster" msgstr "Entfernt den Kontakt aus dem Roster" -#: ../src/gajim-remote.py:193 +#: ../src/gajim-remote.py:210 msgid "Adds contact to roster" msgstr "Fügt Kontakt zum Roster hinzu" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:212 msgid "jid" msgstr "JID" -#: ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:213 msgid "Adds new contact to this account" msgstr "Fügt neuen Kontakt zu diesem Konto hinzu" -#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:218 msgid "Returns current status (the global one unless account is specified)" -msgstr "Gibt derzeitigen Status zurück (der globale Status, außer, es wird ein Account spezifiziert)" +msgstr "" +"Gibt derzeitigen Status zurück (der globale Status, außer, es wird ein " +"Account spezifiziert)" -#: ../src/gajim-remote.py:208 -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:225 +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:215 +#: ../src/gajim-remote.py:232 msgid "Returns number of unread messages" msgstr "Gibt die Anzahl der ungelesenen Nachrichten zurück" -#: ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:236 msgid "Opens 'Start Chat' dialog" msgstr "Öffnet den 'Chat starten' Dialog" -#: ../src/gajim-remote.py:221 +#: ../src/gajim-remote.py:238 msgid "Starts chat, using this account" msgstr "Starte Chat mit diesem Account" -#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:242 msgid "Sends custom XML" msgstr "Benutzerdefinierten XML-Code senden" -#: ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:244 msgid "XML to send" msgstr "Zu sendender XML-Code" -#: ../src/gajim-remote.py:228 -msgid "Account in which the xml will be sent; if not specified, xml will be sent to all accounts" -msgstr "Konto, an welchen XML gesendet wird; wenn nicht spezifiziert, wird XML an alle Konten gesendet" +#: ../src/gajim-remote.py:245 +msgid "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" +msgstr "" +"Konto, an welchen XML gesendet wird; wenn nicht spezifiziert, wird XML an " +"alle Konten gesendet" -#: ../src/gajim-remote.py:234 +#: ../src/gajim-remote.py:251 msgid "Handle a xmpp:/ uri" msgstr "Behandle eine xmpp:/ URI" -#: ../src/gajim-remote.py:236 +#: ../src/gajim-remote.py:253 msgid "uri" msgstr "URI" -#: ../src/gajim-remote.py:241 +#: ../src/gajim-remote.py:258 msgid "Join a MUC room" msgstr "Neuen Raum betreten" -#: ../src/gajim-remote.py:243 +#: ../src/gajim-remote.py:260 msgid "room" msgstr "Raum" -#: ../src/gajim-remote.py:244 +#: ../src/gajim-remote.py:261 msgid "nick" msgstr "Spitzname" -#: ../src/gajim-remote.py:245 +#: ../src/gajim-remote.py:262 msgid "password" msgstr "Passwort" -#: ../src/gajim-remote.py:268 +#: ../src/gajim-remote.py:285 msgid "Missing argument \"contact_jid\"" msgstr "Fehlendes Argument \"contact_jid\"" -#: ../src/gajim-remote.py:287 +#: ../src/gajim-remote.py:304 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -4282,11 +5127,11 @@ msgstr "" "'%s' ist nicht in ihrer Kontaktliste.\n" "Bitte geben Sie ein Konto zum Senden der Nachricht an." -#: ../src/gajim-remote.py:290 +#: ../src/gajim-remote.py:307 msgid "You have no active account" msgstr "Kein aktives Konto" -#: ../src/gajim-remote.py:354 +#: ../src/gajim-remote.py:371 #, python-format msgid "" "Usage: %s %s %s \n" @@ -4295,16 +5140,16 @@ msgstr "" "Verwendung: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:357 +#: ../src/gajim-remote.py:374 msgid "Arguments:" msgstr "Parameter:" -#: ../src/gajim-remote.py:361 +#: ../src/gajim-remote.py:378 #, python-format msgid "%s not found" msgstr "%s nicht gefunden" -#: ../src/gajim-remote.py:365 +#: ../src/gajim-remote.py:382 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -4313,7 +5158,7 @@ msgstr "" "Verwendung: %s Befehl [Argumente]\n" "Befehl ist einer von:\n" -#: ../src/gajim-remote.py:438 +#: ../src/gajim-remote.py:455 #, python-format msgid "" "Too many arguments. \n" @@ -4322,7 +5167,7 @@ msgstr "" "Zu viele Argumente. \n" "Geben Sie \"%s help %s\" ein für weitere Informationen" -#: ../src/gajim-remote.py:442 +#: ../src/gajim-remote.py:459 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -4331,229 +5176,291 @@ msgstr "" "Argument \"%s\" wurde nicht angegeben. \n" "Geben Sie \"%s help %s\" ein für Hilfe" -#: ../src/gajim-remote.py:460 +#: ../src/gajim-remote.py:477 msgid "Wrong uri" msgstr "Falscher URI" -#: ../src/gajim_themes_window.py:60 +#: ../src/gajim_themes_window.py:67 msgid "Theme" msgstr "Thema" +#: ../src/gajim_themes_window.py:105 +msgid "You cannot make changes to the default theme" +msgstr "Sie können ihr derzeitiges Theme nicht ändern" + +#: ../src/gajim_themes_window.py:106 +msgid "Please create a clean new theme with your desired name." +msgstr "" +"Bitte erstellen Sie ein neues leeres Thema mit Ihrem gewünschten Namen." + #. don't confuse translators -#: ../src/gajim_themes_window.py:155 +#: ../src/gajim_themes_window.py:180 msgid "theme name" msgstr "Name des Themas" -#: ../src/gajim_themes_window.py:172 +#: ../src/gajim_themes_window.py:197 msgid "You cannot delete your current theme" msgstr "Sie können ihr derzeitiges Theme nicht löschen" -#: ../src/gajim_themes_window.py:173 +#: ../src/gajim_themes_window.py:198 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:122 +#: ../src/groupchat_control.py:139 msgid "Sending private message failed" msgstr "Senden privater Nachricht fehlgeschlagen" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:124 +#: ../src/groupchat_control.py:141 #, python-format msgid "You are no longer in group chat \"%s\" or \"%s\" has left." -msgstr "Sie sind nicht mehr im Gruppenchat \"%s\" oder \"%s\" hat den Gruppenchat verlassen." +msgstr "" +"Sie sind nicht mehr im Gruppenchat \"%s\" oder \"%s\" hat den Gruppenchat " +"verlassen." -#: ../src/groupchat_control.py:322 +#: ../src/groupchat_control.py:350 msgid "Insert Nickname" msgstr "Spitzname einfügen" +#: ../src/groupchat_control.py:878 +msgid "Really send file?" +msgstr "Datei wirklich senden?" + +#: ../src/groupchat_control.py:879 +#, python-format +msgid "If you send a file to %s, he/she will know your real Jabber ID." +msgstr "" +"Wenn Sie eine Datei an %s senden wird er/sie Ihre echte Jabber ID kennen." + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:954 +msgid "Room logging is enabled" +msgstr "Raum-Mitschnitt ist aktiviert" + +#: ../src/groupchat_control.py:956 +msgid "A new room has been created" +msgstr "Ein neuer Raum wurde erstellt" + +#: ../src/groupchat_control.py:959 +msgid "The server has assigned or modified your roomnick" +msgstr "Der Server hat Ihren Raum-Nick zugewiesen oder verändert" + #. do not print 'kicked by None' -#: ../src/groupchat_control.py:844 +#: ../src/groupchat_control.py:965 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s wurde rausgeschmissen: %(reason)s" -#: ../src/groupchat_control.py:848 +#: ../src/groupchat_control.py:969 #, 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:855 +#: ../src/groupchat_control.py:976 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s wurde gebannt: %(reason)s" -#: ../src/groupchat_control.py:859 +#: ../src/groupchat_control.py:980 #, 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:867 +#: ../src/groupchat_control.py:989 #, python-format msgid "You are now known as %s" msgstr "Sie heißen nun %s" -#: ../src/groupchat_control.py:869 +#: ../src/groupchat_control.py:1025 ../src/groupchat_control.py:1029 +#: ../src/groupchat_control.py:1034 #, python-format -msgid "%s is now known as %s" -msgstr "%s heißt jetzt %s" +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s wurde von %(who)s rausgeschmissen: %(reason)s" -#: ../src/groupchat_control.py:955 +#: ../src/groupchat_control.py:1026 +#, fuzzy +msgid "affiliation changed" +msgstr "Zugehörigkeit: " + +#: ../src/groupchat_control.py:1031 +msgid "room configuration changed to members-only" +msgstr "Gruppenchatkonfiguration wurde auf ausschließlich Mitgleider geändert" + +#: ../src/groupchat_control.py:1036 +msgid "system shutdown" +msgstr "System wird heruntergefahren" + +#: ../src/groupchat_control.py:1135 #, python-format msgid "%s has left" msgstr "%s ist gegangen" -#: ../src/groupchat_control.py:960 +#: ../src/groupchat_control.py:1140 #, python-format msgid "%s has joined the group chat" msgstr "%s hat den Gruppenchat betreten" -#: ../src/groupchat_control.py:1082 -#: ../src/groupchat_control.py:1100 -#: ../src/groupchat_control.py:1193 -#: ../src/groupchat_control.py:1210 +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1253 ../src/groupchat_control.py:1532 +msgid "Invalid nickname" +msgstr "Ungültiger Benutzername" + +#: ../src/groupchat_control.py:1254 ../src/groupchat_control.py:1533 +msgid "The nickname has not allowed characters." +msgstr "Die Jabber-ID für den Gruppenchat enthält nicht erlaubte Zeichen." + +#: ../src/groupchat_control.py:1277 ../src/groupchat_control.py:1295 +#: ../src/groupchat_control.py:1379 ../src/groupchat_control.py:1396 #, python-format msgid "Nickname not found: %s" msgstr "Spitzname nicht gefunden: %s" -#: ../src/groupchat_control.py:1116 +#: ../src/groupchat_control.py:1311 msgid "This group chat has no subject" msgstr "Dieser Gruppenchat hat kein Thema" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1322 #, 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:1136 -#: ../src/groupchat_control.py:1164 -#, 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:1247 -#, 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:1270 -#, python-format -msgid "Commands: %s" -msgstr "Kommandos: %s" - -#: ../src/groupchat_control.py:1273 -#, python-format -msgid "Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the group chat, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "Bedienung: /%s <Spitzname|JID> [Grund], bannt die JID aus dem Gruppenchat. Der Spitzname eines Teilnehmers kann hinzugefügt werden, aber nicht, wenn es ein \"@\" enthält. Wenn die JID derzeit im Gruppenchat ist, wird er/sie/es ebenfalls gebannt. Unterstützt KEINE Leerzeichen im Spitznamen." - -#: ../src/groupchat_control.py:1280 -#, python-format -msgid "Usage: /%s <nickname>, opens a private chat window with the specified occupant." -msgstr "Verwendung: /%s <Spitzname>, öffnet ein privates Nachrichtenfenster mit dem Inhaber des angegebenen Spitznamens." - -#: ../src/groupchat_control.py:1284 -#, python-format -msgid "Usage: /%s, clears the text window." -msgstr "Bedienung: /%s, leert das Textfenster." - -#: ../src/groupchat_control.py:1286 +#: ../src/groupchat_control.py:1459 #, 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." +msgid "" +"Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " +"nickname of an occupant may be substituted, but not if it contains \"@\". If " +"the JID is currently in the group chat, he/she/it will also be kicked. Does " +"NOT support spaces in nickname." +msgstr "" +"Bedienung: /%s <Spitzname|JID> [Grund], bannt die JID aus dem Gruppenchat. " +"Der Spitzname eines Teilnehmers kann hinzugefügt werden, aber nicht, wenn es " +"ein \"@\" enthält. Wenn die JID derzeit im Gruppenchat ist, wird er/sie/es " +"ebenfalls gebannt. Unterstützt KEINE Leerzeichen im Spitznamen." -#: ../src/groupchat_control.py:1289 +#: ../src/groupchat_control.py:1466 #, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "Verwendung: /%s, versteckt die Chatbuttons." +msgid "" +"Usage: /%s <nickname>, opens a private chat window with the specified " +"occupant." +msgstr "" +"Verwendung: /%s <Spitzname>, öffnet ein privates Nachrichtenfenster mit dem " +"Inhaber des angegebenen Spitznamens." -#: ../src/groupchat_control.py:1292 +#: ../src/groupchat_control.py:1472 #, python-format -msgid "Usage: /%s <JID> [reason], invites JID to the current group chat, optionally providing a reason." -msgstr "Bedienung: /%s <JID> [Grund], lädt die JID in den aktuellen Gruppenchat ein, optional mit der Angabe eines Grundes." +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." -#: ../src/groupchat_control.py:1296 +#: ../src/groupchat_control.py:1478 #, python-format -msgid "Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Bedienung: /%s <Raum>@<Server> [/Spitzname], bietet den Beitritt zu Raum@Server an, optional mit Spitznamen." +msgid "" +"Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "" +"Bedienung: /%s <JID> [Grund], lädt die JID in den aktuellen Gruppenchat ein, " +"optional mit der Angabe eines Grundes." -#: ../src/groupchat_control.py:1300 +#: ../src/groupchat_control.py:1482 #, python-format -msgid "Usage: /%s <nickname> [reason], removes the occupant specified by nickname from the group chat and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "Bedienung: /%s <Spitzname> [Grund], verweist den Inhaber des Spitznamen des Gruppenchats und zeigt optional einen Grund. Unterstützt KEINE Leerzeichen im Spitznamen." +msgid "" +"Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Bedienung: /%s <Raum>@<Server> [/Spitzname], bietet den Beitritt zu " +"Raum@Server an, optional mit Spitznamen." -#: ../src/groupchat_control.py:1305 +#: ../src/groupchat_control.py:1486 #, python-format -msgid "Usage: /%s <action>, sends action to the current group chat. Use third person. (e.g. /%s explodes.)" -msgstr "Bedienung: /%s <Aktion>, sendet die Aktion im aktuellen Gruppenchat. Verwende dritte Person, z.B. /%s explodiert)." +msgid "" +"Usage: /%s <nickname> [reason], removes the occupant specified by nickname " +"from the group chat and optionally displays a reason. Does NOT support " +"spaces in nickname." +msgstr "" +"Bedienung: /%s <Spitzname> [Grund], verweist den Inhaber des Spitznamen des " +"Gruppenchats und zeigt optional einen Grund. Unterstützt KEINE Leerzeichen " +"im Spitznamen." -#: ../src/groupchat_control.py:1309 +#: ../src/groupchat_control.py:1495 #, python-format -msgid "Usage: /%s <nickname> [message], opens a private message window and sends message to the occupant specified by nickname." -msgstr "Verwendung: /%s <Spitzname> [Nachricht], öffnet ein privates Nachrichtenfenster und sendet die Nachricht zum Inhaber des angegebenen Spitznamens." +msgid "" +"Usage: /%s <nickname> [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"Verwendung: /%s <Spitzname> [Nachricht], öffnet ein privates " +"Nachrichtenfenster und sendet die Nachricht zum Inhaber des angegebenen " +"Spitznamens." -#: ../src/groupchat_control.py:1314 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Usage: /%s <nickname>, changes your nickname in current group chat." -msgstr "Bedienung: /%s <Spitzname>, ändert den Spitznamen im aktuellen Gruppenchat." +msgstr "" +"Bedienung: /%s <Spitzname>, ändert den Spitznamen im aktuellen Gruppenchat." -#: ../src/groupchat_control.py:1318 +#: ../src/groupchat_control.py:1504 #, python-format msgid "Usage: /%s , display the names of group chat occupants." msgstr "Benutzung: /%s , zeigt die Namen der Gruppenchatbesucher." -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1508 #, python-format msgid "Usage: /%s [topic], displays or updates the current group chat topic." -msgstr "Benutzung: /%s [topic], zeigt oder aktualisiert das derzeitige Gruppenchat-Thema." - -#: ../src/groupchat_control.py:1325 -#, python-format -msgid "Usage: /%s <message>, sends a message without looking for other commands." -msgstr "Benutzung: /%s <Nachricht>, sendet eine Nachricht ohne andere Befehle zu beachten." +msgstr "" +"Benutzung: /%s [topic], zeigt oder aktualisiert das derzeitige Gruppenchat-" +"Thema." -#: ../src/groupchat_control.py:1328 +#: ../src/groupchat_control.py:1511 #, python-format -msgid "No help info for /%s" -msgstr "Keine Hilfe vorhanden für /%s" +msgid "" +"Usage: /%s <message>, sends a message without looking for other commands." +msgstr "" +"Benutzung: /%s <Nachricht>, sendet eine Nachricht ohne andere Befehle zu " +"beachten." -#: ../src/groupchat_control.py:1391 +#: ../src/groupchat_control.py:1606 #, python-format msgid "Are you sure you want to leave group chat \"%s\"?" msgstr "Möchten Sie den Gruppenchat \"%s\" wirklich verlassen?" -#: ../src/groupchat_control.py:1393 -msgid "If you close this window, you will be disconnected from this group chat." -msgstr "Wenn Sie dieses Fenster schließen, wird die Verbindung zu diesem Gruppenchat geschlossen." +#: ../src/groupchat_control.py:1608 +msgid "" +"If you close this window, you will be disconnected from this group chat." +msgstr "" +"Wenn Sie dieses Fenster schließen, wird die Verbindung zu diesem Gruppenchat " +"geschlossen." -#: ../src/groupchat_control.py:1397 -#: ../src/roster_window.py:4058 +#: ../src/groupchat_control.py:1612 ../src/roster_window.py:4898 msgid "Do _not ask me again" msgstr "_Nicht noch einmal fragen" -#: ../src/groupchat_control.py:1431 +#: ../src/groupchat_control.py:1644 msgid "Changing Subject" msgstr "Thema ändern" -#: ../src/groupchat_control.py:1432 +#: ../src/groupchat_control.py:1645 msgid "Please specify the new subject:" msgstr "Bitte bestimmen Sie ein neues Thema" -#: ../src/groupchat_control.py:1441 +#: ../src/groupchat_control.py:1654 msgid "Changing Nickname" msgstr "Spitzname ändern" -#: ../src/groupchat_control.py:1442 +#: ../src/groupchat_control.py:1655 msgid "Please specify the new nickname you want to use:" msgstr "Bitte geben Sie an, welchen Spitznamen Sie verwenden möchten:" #. Ask for a reason -#: ../src/groupchat_control.py:1457 +#: ../src/groupchat_control.py:1670 #, python-format msgid "Destroying %s" msgstr "Zerstöre %s" -#: ../src/groupchat_control.py:1458 +#: ../src/groupchat_control.py:1671 msgid "" "You are going to definitively destroy this room.\n" "You may specify a reason below:" @@ -4561,715 +5468,876 @@ msgstr "" "Sie werden den Raum endgültig zerstören.\n" "Sie können hier einen Grund angeben:" -#: ../src/groupchat_control.py:1460 +#: ../src/groupchat_control.py:1673 msgid "You may also enter an alternate venue:" msgstr "Sie können auch einen alternativen Raum eintragen:" -#: ../src/groupchat_control.py:1490 +#: ../src/groupchat_control.py:1705 msgid "Bookmark already set" msgstr "Lesezeichen existiert schon" -#: ../src/groupchat_control.py:1491 +#: ../src/groupchat_control.py:1706 #, python-format msgid "Group Chat \"%s\" is already in your bookmarks." msgstr "Der Gruppenchat \"%s\" ist schon in den Lesezeichen." -#: ../src/groupchat_control.py:1500 +#: ../src/groupchat_control.py:1715 msgid "Bookmark has been added successfully" msgstr "Lesezeichen wurde erfolgreich hinzugefügt" -#: ../src/groupchat_control.py:1501 +#: ../src/groupchat_control.py:1716 msgid "You can manage your bookmarks via Actions menu in your roster." -msgstr "Sie können ihre Lesezeichen über das Aktionen-Menü in der Kontaktliste bearbeiten" +msgstr "" +"Sie können ihre Lesezeichen über das Aktionen-Menü in der Kontaktliste " +"bearbeiten" #. ask for reason -#: ../src/groupchat_control.py:1629 +#: ../src/groupchat_control.py:1868 #, python-format msgid "Kicking %s" msgstr "%s rausschmeißen" -#: ../src/groupchat_control.py:1630 -#: ../src/groupchat_control.py:1913 +#: ../src/groupchat_control.py:1869 ../src/groupchat_control.py:2169 msgid "You may specify a reason below:" msgstr "Sie können eine Begründung angeben:" #. ask for reason -#: ../src/groupchat_control.py:1912 +#: ../src/groupchat_control.py:2168 #, python-format msgid "Banning %s" msgstr "%s verbannen" -#: ../src/gtkexcepthook.py:41 +#: ../src/gtkexcepthook.py:46 msgid "A programming error has been detected" msgstr "Es wurde ein Programmfehler entdeckt" -#: ../src/gtkexcepthook.py:42 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." -msgstr "Es ist vermutlich nicht fatal, aber der Fehler sollte trotzdem den Entwicklern gemeldet werden" +#: ../src/gtkexcepthook.py:47 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"Es ist vermutlich nicht fatal, aber der Fehler sollte trotzdem den " +"Entwicklern gemeldet werden" -#: ../src/gtkexcepthook.py:48 +#: ../src/gtkexcepthook.py:53 msgid "_Report Bug" msgstr "Bug melden" -#: ../src/gtkexcepthook.py:71 +#: ../src/gtkexcepthook.py:76 msgid "Details" msgstr "Details" #. we talk about file -#: ../src/gtkgui_helpers.py:156 -#: ../src/gtkgui_helpers.py:171 +#: ../src/gtkgui_helpers.py:162 ../src/gtkgui_helpers.py:177 #, python-format msgid "Error: cannot open %s for reading" msgstr "Fehler: Kann %s kann nicht zum Lesen öffnen" -#: ../src/gtkgui_helpers.py:336 +#: ../src/gtkgui_helpers.py:347 msgid "Error reading file:" msgstr "Fehler beim Lesen der Datei:" -#: ../src/gtkgui_helpers.py:339 +#: ../src/gtkgui_helpers.py:350 msgid "Error parsing file:" msgstr "Fehler bei der Dateianalyse:" #. do not traceback (could be a permission problem) #. we talk about a file here -#: ../src/gtkgui_helpers.py:376 +#: ../src/gtkgui_helpers.py:387 #, python-format msgid "Could not write to %s. Session Management support will not work" -msgstr "Konnte nicht an %s schreiben. Sitzungmanagment-Unterstützung wird nicht funktionieren" +msgstr "" +"Konnte nicht an %s schreiben. Sitzungmanagment-Unterstützung wird nicht " +"funktionieren" #. xmpp: is currently handled by another program, so ask the user -#: ../src/gtkgui_helpers.py:694 +#: ../src/gtkgui_helpers.py:719 msgid "Gajim is not the default Jabber client" msgstr "Gajim ist nicht Ihr Standard-Jabber-Client" -#: ../src/gtkgui_helpers.py:695 +#: ../src/gtkgui_helpers.py:720 msgid "Would you like to make Gajim the default Jabber client?" msgstr "Möchten Sie Gajim zu Ihrem Standard-Jabber-Client machen?" -#: ../src/gtkgui_helpers.py:696 +#: ../src/gtkgui_helpers.py:721 msgid "Always check to see if Gajim is the default Jabber client on startup" -msgstr "Immer beim Programmstart prüfen, ob Gajim der Standard-Jabber-Client ist" +msgstr "" +"Immer beim Programmstart prüfen, ob Gajim der Standard-Jabber-Client ist" -#: ../src/gtkgui_helpers.py:795 +#: ../src/gtkgui_helpers.py:818 msgid "Extension not supported" msgstr "Erweiterung wird nicht unterstützt." -#: ../src/gtkgui_helpers.py:796 +#: ../src/gtkgui_helpers.py:819 #, 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?" +msgstr "" +"Bild kann nicht im %(type)s-Format gespeichert werden. Als %(new_filename)s " +"speichern?" -#: ../src/gtkgui_helpers.py:805 +#: ../src/gtkgui_helpers.py:828 msgid "Save Image as..." msgstr "Bild speichern unter ..." -#: ../src/history_manager.py:65 +#: ../src/history_manager.py:73 msgid "Cannot find history logs database" msgstr "Kann Verlaufs-Datenkbank nicht finden" #. holds jid -#: ../src/history_manager.py:108 +#: ../src/history_manager.py:113 msgid "Contacts" msgstr "Kontakte" #. holds time -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:86 +#: ../src/history_manager.py:126 ../src/history_manager.py:166 +#: ../src/history_window.py:121 msgid "Date" msgstr "Datum" #. holds nickname -#: ../src/history_manager.py:127 -#: ../src/history_manager.py:179 +#: ../src/history_manager.py:132 ../src/history_manager.py:184 msgid "Nickname" msgstr "Spitzname" #. holds message -#: ../src/history_manager.py:135 -#: ../src/history_manager.py:167 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:140 ../src/history_manager.py:172 +#: ../src/history_window.py:129 msgid "Message" msgstr "Nachricht" -#: ../src/history_manager.py:187 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" -msgstr "Möchten Sie die Datenbank aufräumen? (NICHT EMPFOHLEN, WENN GAJIM GERADE LÄUFT)" +#: ../src/history_manager.py:192 +msgid "" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Möchten Sie die Datenbank aufräumen? (NICHT EMPFOHLEN, WENN GAJIM GERADE " +"LÄUFT)" -#: ../src/history_manager.py:189 +#: ../src/history_manager.py:194 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 "" -"Der reservierte Datenbankspeicherplatz wird nicht freigegeben, er wird nur wiederverwendbar. Wenn Sie wirklich den Speicherplatz reduzieren möchten, klicken Sie JA, ansonsten NEIN.\n" +"Der reservierte 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 ..." -#: ../src/history_manager.py:401 +#: ../src/history_manager.py:406 msgid "Exporting History Logs..." msgstr "Exportiere Verlauf ..." -#: ../src/history_manager.py:476 +#: ../src/history_manager.py:481 #, 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:514 +#: ../src/history_manager.py:518 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?" +msgstr[1] "Möchten Sie wirklich alle Logs der ausgewählten Kontakte löschen?" -#: ../src/history_manager.py:518 -#: ../src/history_manager.py:554 +#: ../src/history_manager.py:522 ../src/history_manager.py:557 msgid "This is an irreversible operation." msgstr "Dies ist ein unwiderruflicher Vorgang." -#: ../src/history_manager.py:551 +#: ../src/history_manager.py:554 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:103 -#: ../src/history_window.py:105 +#: ../src/history_window.py:209 ../src/history_window.py:211 #, python-format msgid "Conversation History with %s" msgstr "Unterhaltungs-Verlauf mit %s" -#: ../src/history_window.py:258 +#: ../src/history_window.py:342 #, 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:262 -#: ../src/notify.py:199 +#: ../src/history_window.py:346 ../src/notify.py:219 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s ist jetzt %(status)s" -#: ../src/history_window.py:268 +#: ../src/history_window.py:352 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status ist jetzt: %(status)s: %(status_msg)s" -#: ../src/history_window.py:271 +#: ../src/history_window.py:355 #, python-format msgid "Status is now: %(status)s" msgstr "Status ist jetzt: %(status)s" -#: ../src/message_window.py:273 +#: ../src/htmltextview.py:586 ../src/htmltextview.py:597 +msgid "Timeout loading image" +msgstr "Konnte Bild nicht laden" + +#: ../src/htmltextview.py:607 +msgid "Image is too big" +msgstr "Das Bild ist zu groß" + +#: ../src/message_window.py:350 msgid "Chats" msgstr "Chats" -#: ../src/message_window.py:275 +#: ../src/message_window.py:352 msgid "Group Chats" msgstr "Gruppenchat" -#: ../src/message_window.py:277 +#: ../src/message_window.py:354 msgid "Private Chats" msgstr "Private Chats" -#: ../src/message_window.py:279 +#: ../src/message_window.py:356 msgid "Messages" msgstr "Nachrichten" -#: ../src/message_window.py:280 +#: ../src/message_window.py:357 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/notify.py:197 +#: ../src/negotiation.py:13 +msgid "- messages will be logged" +msgstr "- Nachrichten werden aufgezeichnet" + +#: ../src/negotiation.py:15 +msgid "- messages will not be logged" +msgstr "- Nachrichten werden nicht aufgezeichnet" + +#: ../src/negotiation.py:24 +msgid "OK to continue with negotiation?" +msgstr "In Ordnung mit der Verhandlung fortzufahren?" + +#: ../src/negotiation.py:25 +#, python-format +msgid "" +"You've begun an encrypted session with %s, but it can't be guaranteed that " +"you're talking directly to the person you think you are.\n" +"\n" +"You should speak with them directly (in person or on the phone) and confirm " +"that their Short Authentication String is identical to this one: %s\n" +"\n" +"Would you like to continue with the encrypted session?" +msgstr "" +"Sie haben eine verschlüsselte Sitzung mit %s begonnen, aber es kann nicht " +"garantiert werden, dass Sie tatsächlich mit der Person sprechen, die sie " +"vorgibt zu sein.\n" +"\n" +"Sie sollten mit der Person direkt (persönlich oder am Telefon) sprechen und " +"sich vergewissern, dass ihr kurzer Authentifizierungs-String mit diesem " +"übereinstimmt: %s\n" +"\n" +"Möchten Sie mit der verschlüsselten Sitzung fortfahren?" + +#: ../src/negotiation.py:31 +msgid "Yes, I verified the Short Authentication String" +msgstr "Ja, Ich habe den kurzen Authentifizierungs-String überprüft" + +#: ../src/notify.py:217 #, python-format msgid "%(nick)s Changed Status" msgstr "%(nick)s änderte Status" -#: ../src/notify.py:207 +#: ../src/notify.py:227 #, python-format msgid "%(nickname)s Signed In" msgstr "%(nickname)s angemeldet" -#: ../src/notify.py:215 +#: ../src/notify.py:235 #, python-format msgid "%(nickname)s Signed Out" msgstr "%(nickname)s abgemeldet" -#: ../src/notify.py:227 +#: ../src/notify.py:247 #, python-format msgid "New Single Message from %(nickname)s" msgstr "Neue einzelne Nachricht von %(nickname)s" -#: ../src/notify.py:235 +#: ../src/notify.py:255 #, python-format msgid "New Private Message from group chat %s" msgstr "Neue private Nachricht von Gruppenchat %s" -#: ../src/notify.py:236 +#: ../src/notify.py:257 #, python-format msgid "%(nickname)s: %(message)s" msgstr "%(nickname)s: %(message)s" -#: ../src/notify.py:242 +#: ../src/notify.py:260 +#, python-format +msgid "Messaged by %(nickname)s" +msgstr "Neue Nachricht von %(nickname)s" + +#: ../src/notify.py:266 #, python-format msgid "New Message from %(nickname)s" msgstr "Neue Nachricht von %(nickname)s" -#: ../src/profile_window.py:72 +#: ../src/profile_window.py:54 msgid "Retrieving profile..." msgstr "Empfange Profil ..." +#: ../src/profile_window.py:107 ../src/roster_window.py:1914 +msgid "File is empty" +msgstr "Datei ist leer" + +#: ../src/profile_window.py:110 ../src/roster_window.py:1917 +msgid "File does not exist" +msgstr "Datei existiert nicht" + #. keep identation -#: ../src/profile_window.py:143 +#. unknown format +#: ../src/profile_window.py:124 ../src/profile_window.py:140 +#: ../src/roster_window.py:1919 ../src/roster_window.py:1930 msgid "Could not load image" msgstr "Konnte Bild nicht laden" -#: ../src/profile_window.py:255 +#: ../src/profile_window.py:250 msgid "Information received" msgstr "Informationen empfangen" -#: ../src/profile_window.py:324 +#: ../src/profile_window.py:319 msgid "Without a connection you can not publish your contact information." -msgstr "Sie müssen angemeldet sein, um Kontakt-Informationen zu veröffentlichen" +msgstr "" +"Sie müssen angemeldet sein, um Kontakt-Informationen zu veröffentlichen" -#: ../src/profile_window.py:336 +#: ../src/profile_window.py:331 msgid "Sending profile..." msgstr "Sende Profil ..." -#: ../src/profile_window.py:351 +#: ../src/profile_window.py:346 msgid "Information NOT published" msgstr "Informationen NICHT veröffentlicht" -#: ../src/profile_window.py:358 +#: ../src/profile_window.py:353 msgid "vCard publication failed" msgstr "vCard Veröffentlichung fehlgeschlagen" -#: ../src/profile_window.py:359 -msgid "There was an error while publishing your personal information, try again later." -msgstr "Bei der Veröffentlichung Ihrer persönlichen Informationen ist ein Fehler aufgetreten, versuchen Sie es später nochmals." +#: ../src/profile_window.py:354 +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Bei der Veröffentlichung Ihrer persönlichen Informationen ist ein Fehler " +"aufgetreten, versuchen Sie es später nochmals." -#: ../src/roster_window.py:172 -#: ../src/roster_window.py:227 +#: ../src/roster_window.py:194 ../src/roster_window.py:249 msgid "Merged accounts" msgstr "Alle Konten" -#: ../src/roster_window.py:345 -#: ../src/common/helpers.py:43 +#: ../src/roster_window.py:370 ../src/roster_window.py:635 +#: ../src/roster_window.py:2143 ../src/common/contacts.py:312 +#: ../src/common/helpers.py:53 msgid "Observers" msgstr "Beobachter" -#: ../src/roster_window.py:692 -#: ../src/roster_window.py:3215 +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:454 ../src/roster_window.py:459 +#: ../src/roster_window.py:1967 ../src/roster_window.py:1970 +#: ../src/roster_window.py:2636 ../src/roster_window.py:2639 +#: ../src/roster_window.py:2664 ../src/roster_window.py:4759 +#: ../src/roster_window.py:4761 ../src/common/commands.py:199 +#: ../src/common/contacts.py:102 ../src/common/helpers.py:53 +msgid "Groupchats" +msgstr "Gruppenchat" + +#: ../src/roster_window.py:784 ../src/roster_window.py:4008 msgid "You cannot join a group chat while you are invisible" -msgstr "Sie können einem Gruppenchat nicht beitreten, wenn Sie unsichtbar sind." +msgstr "" +"Sie können einem Gruppenchat nicht beitreten, wenn Sie unsichtbar sind." #. new chat +#. single message #. for chat_with #. for single message -#: ../src/roster_window.py:884 -#: ../src/systray.py:206 -#: ../src/systray.py:211 +#. join gc +#: ../src/roster_window.py:1005 ../src/roster_window.py:1015 +#: ../src/roster_window.py:1024 ../src/systray.py:212 ../src/systray.py:217 +#: ../src/systray.py:223 #, python-format msgid "using account %s" msgstr "mit Konto %s" -#. the 'manage gc bookmarks' item is shown -#. below to avoid duplicate code #. add -#: ../src/roster_window.py:909 +#: ../src/roster_window.py:1031 #, python-format msgid "to %s account" msgstr "an Konto %s" #. disco -#: ../src/roster_window.py:914 +#: ../src/roster_window.py:1036 #, python-format msgid "using %s account" msgstr "mit Konto %s" +#: ../src/roster_window.py:1117 +msgid "_Manage Bookmarks..." +msgstr "_Verwalte Lesezeichen..." + #. profile, avatar -#: ../src/roster_window.py:989 +#: ../src/roster_window.py:1136 #, python-format msgid "of account %s" msgstr "von Konto %s" -#: ../src/roster_window.py:1009 -msgid "_Manage Bookmarks..." -msgstr "_Verwalte Lesezeichen..." - -#: ../src/roster_window.py:1038 +#: ../src/roster_window.py:1176 #, python-format msgid "for account %s" msgstr "für Konto %s" #. History manager -#: ../src/roster_window.py:1059 +#: ../src/roster_window.py:1200 msgid "History Manager" msgstr "_Verlaufsmanager" -#: ../src/roster_window.py:1068 +#: ../src/roster_window.py:1209 msgid "_Join New Group Chat" msgstr "_Gruppenchat betreten" -#: ../src/roster_window.py:1397 -#: ../src/roster_window.py:3410 -#: ../src/roster_window.py:3417 +#: ../src/roster_window.py:1576 ../src/roster_window.py:4213 +#: ../src/roster_window.py:4220 msgid "You have unread messages" msgstr "Sie haben ungelesene Nachrichten" -#: ../src/roster_window.py:1398 +#: ../src/roster_window.py:1577 msgid "You must read them before removing this transport." msgstr "Sie müssen sie alle lesen, bevor der Account entfernt wird." -#: ../src/roster_window.py:1401 +#: ../src/roster_window.py:1580 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" wird entfernt" -#: ../src/roster_window.py:1402 -msgid "You will no longer be able to send and receive messages from contacts using this transport." -msgstr "Sie können nun keine Nachrichten mehr mit Kontakten von diesem Transport austauschen." +#: ../src/roster_window.py:1581 +msgid "" +"You will no longer be able to send and receive messages from contacts using " +"this transport." +msgstr "" +"Sie können nun keine Nachrichten mehr mit Kontakten von diesem Transport " +"austauschen." -#: ../src/roster_window.py:1405 +#: ../src/roster_window.py:1584 msgid "Transports will be removed" msgstr "Transporte werden entfernt" -#: ../src/roster_window.py:1410 +#: ../src/roster_window.py:1589 #, 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" +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" #. it's jid -#: ../src/roster_window.py:1430 +#: ../src/roster_window.py:1755 msgid "Rename Contact" msgstr "Kontakt umbenennen" -#: ../src/roster_window.py:1431 +#: ../src/roster_window.py:1756 #, python-format msgid "Enter a new nickname for contact %s" msgstr "Geben Sie einen Spitznamen für den Kontakt %s ein" -#: ../src/roster_window.py:1438 +#: ../src/roster_window.py:1763 msgid "Rename Group" msgstr "Gruppe umbenennen" -#: ../src/roster_window.py:1439 +#: ../src/roster_window.py:1764 #, python-format msgid "Enter a new name for group %s" msgstr "Geben Sie einen neuen Namen für die Gruppe %s ein" -#: ../src/roster_window.py:1514 +#: ../src/roster_window.py:1839 msgid "Remove Group" msgstr "Gruppe entfernen" -#: ../src/roster_window.py:1515 +#: ../src/roster_window.py:1840 #, python-format msgid "Do you want to remove group %s from the roster?" msgstr "Möchten Sie wirklich die Gruppe %s von Ihrer Kontaktliste entfernen?" -#: ../src/roster_window.py:1516 +#: ../src/roster_window.py:1841 msgid "Remove also all contacts in this group from your roster" msgstr "Auch alle Kontakte dieser Gruppe von Ihrer Kontaktliste entfernen" -#: ../src/roster_window.py:1547 +#: ../src/roster_window.py:1872 msgid "Assign OpenPGP Key" msgstr "OpenPGP-Schlüssel Zuweisen" -#: ../src/roster_window.py:1548 +#: ../src/roster_window.py:1873 msgid "Select a key to apply to the contact" msgstr "Weisen Sie dem Kontakt einen Schüssel zu" -#: ../src/roster_window.py:1784 -#: ../src/roster_window.py:2045 -msgid "_New group chat" -msgstr "_Neuer Gruppenchat" +#: ../src/roster_window.py:2189 +msgid "_New Group Chat" +msgstr "Neuer Gruppenchat" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:2327 msgid "I would like to add you to my roster" msgstr "Ich würde dich gerne in meine Liste aufnehmen" -#: ../src/roster_window.py:2090 -#: ../src/roster_window.py:2137 +#. Send Group Message +#: ../src/roster_window.py:2461 ../src/roster_window.py:2673 msgid "Send Group M_essage" msgstr "_Sende Nachricht an Gruppe" -#: ../src/roster_window.py:2116 -msgid "Re_name" -msgstr "_Umbenennen" +#: ../src/roster_window.py:2480 +msgid "_New group chat" +msgstr "_Neuer Gruppenchat" + +#. Manage Transport submenu +#: ../src/roster_window.py:2518 +msgid "_Manage Contacts" +msgstr "Kontakte verwalten" + +#: ../src/roster_window.py:2579 +msgid "_Maximize" +msgstr "_Maximieren" + +#: ../src/roster_window.py:2586 +msgid "_Disconnect" +msgstr "_Verbindung trennen" -#: ../src/roster_window.py:2143 +#: ../src/roster_window.py:2665 +msgid "_Maximize All" +msgstr "Alle _maximieren" + +#: ../src/roster_window.py:2681 msgid "To all users" msgstr "An alle Benutzern" -#: ../src/roster_window.py:2146 +#: ../src/roster_window.py:2684 msgid "To all online users" msgstr "An alle angemeldeten Benutzer" -#: ../src/roster_window.py:2182 +#. Log Off +#: ../src/roster_window.py:2801 +msgid "_Log off" +msgstr "_Abmelden" + +#. Log on +#: ../src/roster_window.py:2807 msgid "_Log on" msgstr "_Anmelden" -#: ../src/roster_window.py:2192 -msgid "Log _off" -msgstr "_Abmelden" +#. Send single message +#: ../src/roster_window.py:2819 +msgid "Send Single Message" +msgstr "Sende _einzelne Nachricht" + +#. Manage Transport submenu +#: ../src/roster_window.py:2866 +msgid "_Manage Transport" +msgstr "Transports" -#: ../src/roster_window.py:2314 -#: ../src/roster_window.py:2385 +#. Modify Transport +#: ../src/roster_window.py:2874 +msgid "_Modify Transport" +msgstr "Trans_port ändern" + +#: ../src/roster_window.py:2988 ../src/roster_window.py:3062 msgid "_Change Status Message" msgstr "Ändere _Statusnachricht" -#: ../src/roster_window.py:2457 +#: ../src/roster_window.py:3134 msgid "Authorization has been sent" msgstr "Autorisierung wurde erneut gesendet" -#: ../src/roster_window.py:2458 +#: ../src/roster_window.py:3135 #, python-format msgid "Now \"%s\" will know your status." msgstr "\"%s\" kennt jetzt ihren Status." -#: ../src/roster_window.py:2478 +#: ../src/roster_window.py:3155 msgid "Subscription request has been sent" msgstr "Abonnement-Anforderung wurde gesendet" -#: ../src/roster_window.py:2479 +#: ../src/roster_window.py:3156 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Wenn \"%s\" diese Anfrage akzeptiert, erfahren Sie dessen Status." -#: ../src/roster_window.py:2491 +#: ../src/roster_window.py:3168 msgid "Authorization has been removed" msgstr "Autorisierung wurde entfernt" -#: ../src/roster_window.py:2492 +#: ../src/roster_window.py:3169 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "\"%s\" wird Sie nun immer als offline sehen." -#: ../src/roster_window.py:2684 +#: ../src/roster_window.py:3403 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakt \"%s\" wird von ihrer Kontaktliste entfernt" -#: ../src/roster_window.py:2688 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "Durch das Entfernen dieses Kontaktes entziehen Sie ihm auch die Berechtigung Ihren Status zu sehen, wodurch der Kontakt Sie nur noch als offline sehen wird." +#: ../src/roster_window.py:3407 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Durch das Entfernen dieses Kontaktes entziehen Sie ihm auch die Berechtigung " +"Ihren Status zu sehen, wodurch der Kontakt Sie nur noch als offline sehen " +"wird." -#: ../src/roster_window.py:2693 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "Durch das Entfernen dieses Kontaktes entziehen Sie ihm auch standardmäßig die Berechtigung Ihren Status zu sehen, wodurch der Kontakt Sie nur noch als offline sehen wird." +#: ../src/roster_window.py:3412 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Durch das Entfernen dieses Kontaktes entziehen Sie ihm auch standardmäßig " +"die Berechtigung Ihren Status zu sehen, wodurch der Kontakt Sie nur noch als " +"offline sehen wird." -#: ../src/roster_window.py:2696 +#: ../src/roster_window.py:3415 msgid "I want this contact to know my status after removal" -msgstr "Ich möchte, dass dieser Kontakt meinen Status auch nach dem Entfernen sieht" +msgstr "" +"Ich möchte, dass dieser Kontakt meinen Status auch nach dem Entfernen sieht" #. several contact to remove at the same time -#: ../src/roster_window.py:2700 +#: ../src/roster_window.py:3419 msgid "Contacts will be removed from your roster" msgstr "Kontakte werden von Ihrer Kontaktliste entfernt" -#: ../src/roster_window.py:2704 +#: ../src/roster_window.py:3423 #, python-format msgid "" "By removing these contacts:%s\n" "you also remove authorization resulting in them always seeing you as offline." msgstr "" "Durch das Entfernen dieser Kontakte:%s\n" -"entziehen Sie ihnen auch die Berechtigung Ihren Status zu sehen, wodurch die Kontakte Sie nur noch als offline sehen werden." +"entziehen Sie ihnen auch die Berechtigung Ihren Status zu sehen, wodurch die " +"Kontakte Sie nur noch als offline sehen werden." + +#: ../src/roster_window.py:3450 +msgid "" +"Gnome Keyring is installed but not correctly started (environment variable " +"probably not correctly set)" +msgstr "" +"Gnome Keyring ist installiert, aber nicht korrekt gestartet " +"(Umgebungsvariablen wahrscheinlich falsch gesetzt)" -#: ../src/roster_window.py:2736 -msgid "Gnome Keyring is installed but not correctly started (environment variable probably not correctly set)" -msgstr "Gnome Keyring ist installiert, aber nicht korrekt gestartet (Umgebungsvariablen wahrscheinlich falsch gesetzt)" +#: ../src/roster_window.py:3469 +msgid "GPG is not usable" +msgstr "GPG ist nicht benutzbar" -#. TODO: make this string translatable #. %s is the account name here -#: ../src/roster_window.py:2764 -#: ../src/common/connection.py:687 -#: ../src/common/zeroconf/connection_zeroconf.py:158 +#: ../src/roster_window.py:3470 ../src/common/connection_handlers.py:2153 +#: ../src/common/zeroconf/connection_zeroconf.py:171 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Sie werden ohne OpenPGP mit %s verbunden." -#: ../src/roster_window.py:2781 -msgid "Passphrase Required" -msgstr "Passphrase benötigt" - -#: ../src/roster_window.py:2782 -#, 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:2787 -msgid "Save passphrase" -msgstr "Passphrase speichern" - -#: ../src/roster_window.py:2795 -msgid "Wrong Passphrase" -msgstr "Falsche Passphrase" - -#: ../src/roster_window.py:2796 -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:2853 -#: ../src/roster_window.py:2913 +#: ../src/roster_window.py:3541 ../src/roster_window.py:3619 msgid "You are participating in one or more group chats" msgstr "Sie nehmen an einem oder mehreren Gruppenchats teil" -#: ../src/roster_window.py:2854 -#: ../src/roster_window.py:2914 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -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:3542 ../src/roster_window.py:3620 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +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:2871 +#: ../src/roster_window.py:3576 msgid "No account available" msgstr "Kein Konto vorhanden" -#: ../src/roster_window.py:2872 +#: ../src/roster_window.py:3577 msgid "You must create an account before you can chat with other contacts." -msgstr "Sie müssen ein Konto erstellen, bevor Sie sich zum Jabber-Netzwerk verbinden können." +msgstr "" +"Sie müssen ein Konto erstellen, bevor Sie sich zum Jabber-Netzwerk verbinden " +"können." -#: ../src/roster_window.py:2974 +#: ../src/roster_window.py:3726 #, python-format msgid "\"%(title)s\" by %(artist)s" msgstr "\"%(title)s\" von %(artist)s" -#: ../src/roster_window.py:3411 -#: ../src/roster_window.py:3418 -msgid "Messages will only be available for reading them later if you have history enabled." +#: ../src/roster_window.py:4214 ../src/roster_window.py:4221 +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:4008 +#: ../src/roster_window.py:4845 msgid "Metacontacts storage not supported by your server" -msgstr "Das Speichern von Metakontakten wird von Ihrem Server nicht unterstützt" +msgstr "" +"Das Speichern von Metakontakten wird von Ihrem Server nicht unterstützt" -#: ../src/roster_window.py:4010 -msgid "Your server does not support storing metacontacts information. So those information will not be save on next reconnection." -msgstr "Ihr Server unterstützt leider nicht das Speichern von Metakontakt-Informationen. Aus diesem Grund werden diese Informationen bei der nächsten Neuverbindung nicht gespeichert werden." +#: ../src/roster_window.py:4847 +msgid "" +"Your server does not support storing metacontacts information. So those " +"information will not be saved on next reconnection." +msgstr "" +"Ihr Server unterstützt leider nicht das Speichern von Metakontakt-" +"Informationen. Aus diesem Grund werden diese Informationen bei der nächsten " +"Neuverbindung nicht gespeichert werden." + +#: ../src/roster_window.py:4892 +msgid "" +"You are about to create a metacontact. Are you sure you want to continue?" +msgstr "" +"Sie sind dabei einen Metakontakt zu erstellen. Wollen Sie wirklich " +"fortfahren?" -#: ../src/roster_window.py:4052 -msgid "You are about to create a metacontact. Are you sure you want to continue?" -msgstr "Sie sind dabei einen Metakontakt zu erstellen. Wollen Sie wirklich fortfahren?" +#: ../src/roster_window.py:4894 +msgid "" +"Metacontacts are a way to regroup several contacts in one line. Generally it " +"is used when the same person has several Jabber accounts or transport " +"accounts." +msgstr "" +"Metakontakte sind eine Möglichkeit, mehrere Kontakte in einer Zeile zu " +"gruppieren. Normalerweise benutzt man Sie, wenn eine Person mehrere Jabber- " +"oder Transport-Konten hat." -#: ../src/roster_window.py:4054 -msgid "Metacontacts are a way to regroup several contacts in one line. Generally it is used when the same person has several Jabber accounts or transport accounts." -msgstr "Metakontakte sind eine Möglichkeit, mehrere Kontakte in einer Zeile zu gruppieren. Normalerweise benutzt man Sie, wenn eine Person mehrere Jabber- oder Transport-Konten hat." +#: ../src/roster_window.py:4989 +#, fuzzy +msgid "Invalid file URI:" +msgstr "Ungültige Datei" -#: ../src/roster_window.py:4132 -#, python-format -msgid "Do you want to send that file to %s:" +#: ../src/roster_window.py:5000 +#, fuzzy, python-format +msgid "Do you want to send this file to %s:" msgid_plural "Do you want to send those files to %s:" msgstr[0] "%s möchte ihnen eine Datei senden:" -msgstr[1] "%s möchte ihnen diese Datei senden:" - -#: ../src/roster_window.py:4237 -#, python-format -msgid "Drop %s in group %s" -msgstr "Setze %s in Gruppe %s" +msgstr[1] "%s möchte ihnen diese Dateien senden:" -#: ../src/roster_window.py:4244 -#, python-format -msgid "Make %s and %s metacontacts" -msgstr "Mache %s und %s Metakontakte" - -#: ../src/roster_window.py:4431 +#: ../src/roster_window.py:5328 msgid "Change Status Message..." msgstr "Ändere Statusnachricht ..." -#: ../src/systray.py:163 +#: ../src/search_window.py:91 +msgid "Waiting for results" +msgstr "Warte auf Ergebnisse" + +#: ../src/search_window.py:131 ../src/search_window.py:209 +msgid "Error in received dataform" +msgstr "Fehler den empfangenen Daten" + +#. No result +#: ../src/search_window.py:165 ../src/search_window.py:201 +msgid "No result" +msgstr "Kein Ergebnis" + +#: ../src/systray.py:169 msgid "_Change Status Message..." msgstr "Ändere _Statusnachricht..." -#: ../src/systray.py:251 +#: ../src/systray.py:254 msgid "Hide this menu" msgstr "Versteckt dieses Menü" -#: ../src/tooltips.py:309 -#: ../src/tooltips.py:492 +#: ../src/tooltips.py:317 ../src/tooltips.py:510 msgid "Jabber ID: " msgstr "Jabber-ID:" -#: ../src/tooltips.py:312 -#: ../src/tooltips.py:496 +#: ../src/tooltips.py:320 ../src/tooltips.py:514 msgid "Resource: " msgstr "Ressource: " -#: ../src/tooltips.py:317 +#: ../src/tooltips.py:325 #, python-format msgid "%(owner_or_admin_or_member)s of this group chat" msgstr "%(owner_or_admin_or_member)s dieses Gruppenchats" -#: ../src/tooltips.py:430 -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:423 +msgid " [blocked]" +msgstr " [blockiert]" + +#: ../src/tooltips.py:427 +msgid " [minimized]" +msgstr " [minimiert]" + +#: ../src/tooltips.py:442 ../src/tooltips.py:630 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:461 +#: ../src/tooltips.py:472 #, python-format msgid "Last status: %s" msgstr "Letzter Status: %s" -#: ../src/tooltips.py:463 +#: ../src/tooltips.py:474 #, python-format msgid " since %s" msgstr " seit %s" +#: ../src/tooltips.py:492 +msgid "Connected" +msgstr "Verbunden" + +#: ../src/tooltips.py:494 +msgid "Disconnected" +msgstr "Nicht verbunden" + #. ('both' is the normal sub so we don't show it) -#: ../src/tooltips.py:502 +#: ../src/tooltips.py:521 msgid "Subscription: " msgstr "Abonnement: " -#: ../src/tooltips.py:512 +#: ../src/tooltips.py:531 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:566 +#: ../src/tooltips.py:586 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:572 +#: ../src/tooltips.py:592 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:579 +#: ../src/tooltips.py:599 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:585 +#: ../src/tooltips.py:605 msgid "Transferred: " msgstr "Ãœbertragen: " -#: ../src/tooltips.py:588 -#: ../src/tooltips.py:609 +#: ../src/tooltips.py:608 ../src/tooltips.py:629 msgid "Not started" msgstr "Nicht gestartet" -#: ../src/tooltips.py:592 +#: ../src/tooltips.py:612 msgid "Stopped" msgstr "Angehalten" -#: ../src/tooltips.py:594 -#: ../src/tooltips.py:597 +#: ../src/tooltips.py:614 ../src/tooltips.py:617 msgid "Completed" msgstr "Abgeschlossen" -#: ../src/tooltips.py:601 +#: ../src/tooltips.py:621 msgid "?transfer status:Paused" msgstr "?Transferstatus:Pausiert" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:605 +#: ../src/tooltips.py:625 msgid "Stalled" msgstr "Steht still" -#: ../src/tooltips.py:607 +#: ../src/tooltips.py:627 msgid "Transferring" msgstr "Ãœbertrage" -#: ../src/tooltips.py:639 +#: ../src/tooltips.py:661 msgid "This service has not yet responded with detailed information" msgstr "Dieser Dienst hat nicht mit detaillierten Informationen geantwortet" -#: ../src/tooltips.py:642 +#: ../src/tooltips.py:664 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -5277,177 +6345,193 @@ msgstr "" "Dieser Dienst konnte nicht mit detaillierten Informationen antworten\n" "Er ist wahrscheinlich verwaltet oder defekt" -#: ../src/vcard.py:217 +#: ../src/vcard.py:245 msgid "?Client:Unknown" msgstr "Unbekannt" -#: ../src/vcard.py:219 +#: ../src/vcard.py:247 msgid "?OS:Unknown" msgstr "Unbekannt" -#: ../src/vcard.py:247 -#: ../src/vcard.py:449 +#: ../src/vcard.py:272 ../src/vcard.py:282 ../src/vcard.py:472 #, python-format msgid "since %s" msgstr "seit %s" -#: ../src/vcard.py:277 +#: ../src/vcard.py:311 msgid "Affiliation:" msgstr "Zugehörigkeit: " -#: ../src/vcard.py:285 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" -msgstr "Dieser Kontakt ist an Ihren Anwesenheitsinformationen interessiert, aber Sie sind nicht an seiner/ihrer Anwesenheit interessiert" +#: ../src/vcard.py:319 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Dieser Kontakt ist an Ihren Anwesenheitsinformationen interessiert, aber Sie " +"sind nicht an seiner/ihrer Anwesenheit interessiert" -#: ../src/vcard.py:287 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" -msgstr "Sie sind an den Anwesenheitsinformationen des Kontakts interessiert, aber er/sie ist nicht an ihren interessiert" +#: ../src/vcard.py:321 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Sie sind an den Anwesenheitsinformationen des Kontakts interessiert, aber er/" +"sie ist nicht an ihren interessiert" -#: ../src/vcard.py:289 +#: ../src/vcard.py:323 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" +msgstr "" +"Sie und der Kontakt sind an den Anwesenheitsinformationen des Anderen " +"interessiert" #. None -#: ../src/vcard.py:291 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" -msgstr "Sie sind nicht an der Anwesenheit des Kontakts interessiert, und er/sie ist nicht interessiert an ihrer" +#: ../src/vcard.py:325 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Sie sind nicht an der Anwesenheit des Kontakts interessiert, und er/sie ist " +"nicht interessiert an ihrer" -#: ../src/vcard.py:299 +#: ../src/vcard.py:333 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:311 -#: ../src/vcard.py:338 -#: ../src/vcard.py:482 +#: ../src/vcard.py:337 ../src/vcard.py:374 ../src/vcard.py:497 msgid " resource with priority " msgstr " resource mit Priorität " -#: ../src/common/check_paths.py:33 +#: ../src/common/check_paths.py:38 msgid "creating logs database" msgstr "Erstelle Log-Datenbank" -#: ../src/common/check_paths.py:89 -#: ../src/common/check_paths.py:100 -#: ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:112 +#: ../src/common/check_paths.py:119 #, python-format msgid "%s is a file but it should be a directory" msgstr "%s ist eine Datei, aber es sollte ein Verzeichnis sein" -#: ../src/common/check_paths.py:90 -#: ../src/common/check_paths.py:101 -#: ../src/common/check_paths.py:108 -#: ../src/common/check_paths.py:116 +#: ../src/common/check_paths.py:102 ../src/common/check_paths.py:113 +#: ../src/common/check_paths.py:120 ../src/common/check_paths.py:128 msgid "Gajim will now exit" msgstr "Gajim wird nun beendet" -#: ../src/common/check_paths.py:115 +#: ../src/common/check_paths.py:127 #, python-format msgid "%s is a directory but should be a file" msgstr "%s ist ein Verzeichnis, sollte aber eine Datei sein" -#: ../src/common/check_paths.py:131 +#: ../src/common/check_paths.py:143 #, python-format msgid "creating %s directory" msgstr "Erstelle Verzeichnis %s" -#: ../src/common/commands.py:69 +#: ../src/common/commands.py:74 msgid "Change status information" msgstr "Ändere Statusinformation" -#: ../src/common/commands.py:82 +#: ../src/common/commands.py:87 msgid "Change status" msgstr "Kontakt hat Status verändert" -#: ../src/common/commands.py:83 +#: ../src/common/commands.py:88 msgid "Set the presence type and description" msgstr "Lege den Anwesenheitstyp und die Beschreibung fest" -#: ../src/common/commands.py:89 +#: ../src/common/commands.py:94 msgid "Free for chat" msgstr "Frei zum Chatten" -#: ../src/common/commands.py:90 +#: ../src/common/commands.py:95 msgid "Online" msgstr "Online" -#: ../src/common/commands.py:92 +#: ../src/common/commands.py:97 msgid "Extended away" msgstr "Längere Zeit abwesend" -#: ../src/common/commands.py:93 +#: ../src/common/commands.py:98 msgid "Do not disturb" msgstr "Bitte nicht stören" -#: ../src/common/commands.py:94 +#: ../src/common/commands.py:99 msgid "Offline - disconnect" msgstr "Offline - Abgemeldet" -#: ../src/common/commands.py:99 +#: ../src/common/commands.py:104 msgid "Presence description:" msgstr "Anwesenheitsbeschreibung:" -#: ../src/common/commands.py:134 +#: ../src/common/commands.py:139 msgid "The status has been changed." msgstr "Der Status hat sich verändert." -#: ../src/common/commands.py:179 +#: ../src/common/commands.py:184 #, python-format msgid "%(nickname)s on %(room_jid)s" msgstr "%(nickname)s aus Gruppenchat %(room_jid)s" -#: ../src/common/commands.py:183 +#: ../src/common/commands.py:188 msgid "You have not joined a groupchat." msgstr "Sie haben keinen Gruppenchat betreten." -#: ../src/common/commands.py:189 +#: ../src/common/commands.py:194 msgid "Leave Groupchats" msgstr "Verlasse Gruppenchat" -#: ../src/common/commands.py:190 +#: ../src/common/commands.py:195 msgid "Choose the groupchats you want to leave" msgstr "Wählen Sie den Gruppenchat, den Sie verlassen möchten" -#: ../src/common/commands.py:194 -msgid "Groupchats" -msgstr "Gruppenchat" - -#: ../src/common/commands.py:230 +#: ../src/common/commands.py:235 msgid "You left the following groupchats:" msgstr "Sie haben folgende Gruppenchats verlassen:" -#: ../src/common/config.py:56 +#: ../src/common/commands.py:247 +msgid "Forward unread messages" +msgstr "Ungelesene Nachrichten weiterleiten" + +#: ../src/common/commands.py:267 +msgid "All unread messages have been forwarded." +msgstr "Alle ungelesenen Nachrichten wurden weitergeleitet." + +#: ../src/common/config.py:74 msgid "Use D-Bus and Notification-Daemon to show notifications" -msgstr "Verwende D-Bus und Notification-Daemon, um Benachrichtigungen zu zeigen" +msgstr "" +"Verwende D-Bus und Notification-Daemon, um Benachrichtigungen zu zeigen" -#: ../src/common/config.py:61 +#: ../src/common/config.py:79 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:62 +#: ../src/common/config.py:80 msgid "Away as a result of being idle" msgstr "Abwesend, da untätig" -#: ../src/common/config.py:64 +#: ../src/common/config.py:82 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:65 +#: ../src/common/config.py:83 msgid "Not available as a result of being idle" msgstr "Nicht verfügbar, da untätig" -#: ../src/common/config.py:83 -msgid "List (space separated) of rows (accounts and groups) that are collapsed." -msgstr "Liste (leerzeichengeteilt) von Reihen (Kontos und Gruppen), die eingeklappt sind." +#: ../src/common/config.py:101 +msgid "" +"List (space separated) of rows (accounts and groups) that are collapsed." +msgstr "" +"Liste (leerzeichengeteilt) von Reihen (Kontos und Gruppen), die eingeklappt " +"sind." -#: ../src/common/config.py:88 +#: ../src/common/config.py:106 msgid "Enable link-local/zeroconf messaging" msgstr "Aktiviere Anzeige von Kontakten im LAN über Zeroconf." -#: ../src/common/config.py:91 +#: ../src/common/config.py:109 msgid "Language used by speller" msgstr "Sprache der Rechtschreibprüfung" -#: ../src/common/config.py:92 +#: ../src/common/config.py:110 msgid "" "'always' - print time for every message.\n" "'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" @@ -5457,614 +6541,841 @@ msgstr "" "'sometimes' - Zeige Zeit alle print_ichat_every_foo_minutes Minuten.\n" "'never' - Zeige nie die Zeit." -#: ../src/common/config.py:93 -msgid "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 least precise one. This is used only if print_time is 'sometimes'." -msgstr "Zeige die Zeit in Chats mittels ungenauer Uhr an. Werte für die Ungenauigkeit sind 1 bis 4 oder 0, um die ungenaue Uhr zu deaktivieren. 1 ist am Genauesten, 4 ist am Ungenaueste. Dies wird nur verwendet, wenn print_time auf 'sometimes' gesetzt ist." +#: ../src/common/config.py:111 +msgid "" +"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 least precise one. " +"This is used only if print_time is 'sometimes'." +msgstr "" +"Zeige die Zeit in Chats mittels ungenauer Uhr an. Werte für die " +"Ungenauigkeit sind 1 bis 4 oder 0, um die ungenaue Uhr zu deaktivieren. 1 " +"ist am Genauesten, 4 ist am Ungenaueste. Dies wird nur verwendet, wenn " +"print_time auf 'sometimes' gesetzt ist." -#: ../src/common/config.py:96 +#: ../src/common/config.py:114 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Behandle * / _ Paare als mögliche Formatierungszeichen." -#: ../src/common/config.py:97 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Wenn aktiviert, wird */_ nicht entfernt. So wird *abc* fett gedruckt, aber * * wird nicht entfernt." +#: ../src/common/config.py:115 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Wenn aktiviert, wird */_ nicht entfernt. So wird *abc* fett gedruckt, aber * " +"* wird nicht entfernt." -#: ../src/common/config.py:100 -msgid "Uses ReStructured text markup to send HTML, plus ascii formatting if selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html (If you want to use this, install docutils)" -msgstr "Wenn aktiviert, wird reStructuredText für die HTML und ASCII-Formatierung verwendet (falls dies erwünscht ist, installieren Sie docutils). Informationen zur Syntax finden Sie unter http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html (Englisch)" +#: ../src/common/config.py:118 +msgid "" +"Uses ReStructured text markup to send HTML, plus ascii formatting if " +"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html (If you want to use this, install docutils)" +msgstr "" +"Wenn aktiviert, wird reStructuredText für die HTML und ASCII-Formatierung " +"verwendet (falls dies erwünscht ist, installieren Sie docutils). " +"Informationen zur Syntax finden Sie unter http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html (Englisch)" -#: ../src/common/config.py:109 -msgid "Character to add after nickname when using nick completion (tab) in group chat." -msgstr "Zeichen, das hinter Spitznamen angezeigt wird, wenn Spitznamenvervollständigung (Tab) im Gruppenchat verwendet wird." +#: ../src/common/config.py:127 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." +msgstr "" +"Zeichen, das hinter Spitznamen angezeigt wird, wenn " +"Spitznamenvervollständigung (Tab) im Gruppenchat verwendet wird." -#: ../src/common/config.py:110 -msgid "Character to propose to add after desired nickname when desired nickname is used by someone else in group chat." -msgstr "Zeichen, das hinter den gewünschten Spitznamen gehängt wird, falls der gewünschteName im Gruppenchat bereits vergeben ist." +#: ../src/common/config.py:128 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat." +msgstr "" +"Zeichen, das hinter den gewünschten Spitznamen gehängt wird, falls der " +"gewünschteName im Gruppenchat bereits vergeben ist." -#: ../src/common/config.py:133 -msgid "This option let you customize timestamp that is printed in conversation. For exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on strftime for full documentation: http://docs.python.org/lib/module-time.html" -msgstr "Hiermit lässt sich der Zeitstempel anpassen, der in den Unterhaltungen verwendet wird. Zum Beispiel wird \"[%H:%M] \" zu \"[Stunde:Minute] \". Weitere Informationen finden Sie in der Python-Dokumentation zu 'strftime' unter http://docs.python.org/lib/module-time.html (Englisch)." +#: ../src/common/config.py:151 +msgid "" +"This option let you customize timestamp that is printed in conversation. For " +"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " +"strftime for full documentation: http://docs.python.org/lib/module-time.html" +msgstr "" +"Hiermit lässt sich der Zeitstempel anpassen, der in den Unterhaltungen " +"verwendet wird. Zum Beispiel wird \"[%H:%M] \" zu \"[Stunde:Minute] \". " +"Weitere Informationen finden Sie in der Python-Dokumentation zu 'strftime' " +"unter http://docs.python.org/lib/module-time.html (Englisch)." -#: ../src/common/config.py:134 +#: ../src/common/config.py:152 msgid "Characters that are printed before the nickname in conversations" msgstr "Zeichen, die vor dem Spitzname gedruckt werden" -#: ../src/common/config.py:135 +#: ../src/common/config.py:153 msgid "Characters that are printed after the nickname in conversations" msgstr "Zeichen, die nach dem Spitznamen gedruckt werden" -#: ../src/common/config.py:142 +#: ../src/common/config.py:156 +msgid "" +"If checked, Gajim can regularly poll a Last.fm account and adjust the status " +"message to reflect recently played songs. " +"set_status_msg_from_current_music_track option must be False." +msgstr "" + +#: ../src/common/config.py:157 +msgid "The username used to identify the Last.fm account." +msgstr "" + +#: ../src/common/config.py:162 msgid "Add * and [n] in roster title?" msgstr "Füge * und [n] in die Kontaktleiste?" -#: ../src/common/config.py:143 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Wie viele Zeilen von der vorherigen Unterhaltung gespeichert werden, wenn ein Chat Tab/Fenster wieder geöffnet wird." +#: ../src/common/config.py:163 +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Wie viele Zeilen von der vorherigen Unterhaltung gespeichert werden, wenn " +"ein Chat Tab/Fenster wieder geöffnet wird." -#: ../src/common/config.py:144 +#: ../src/common/config.py:164 msgid "How many minutes should last lines from previous conversation last." -msgstr "Wie viele Minuten die Zeilen vom vorherigen Chat angezeigt werden sollen." +msgstr "" +"Wie viele Minuten die Zeilen vom vorherigen Chat angezeigt werden sollen." -#: ../src/common/config.py:145 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "Sende Nachricht mit Strg+Enter und mache bei Enter einen Zeilenumbruch (Mirabilis ICQ-Client Standardeinstellung)." +#: ../src/common/config.py:165 +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Sende Nachricht mit Strg+Enter und mache bei Enter einen Zeilenumbruch " +"(Mirabilis ICQ-Client Standardeinstellung)." -#: ../src/common/config.py:147 +#: ../src/common/config.py:167 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Wie viele Zeilen für Strg+BildAuf gespeichert werden." -#: ../src/common/config.py:150 +#: ../src/common/config.py:170 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "Entweder eine spezielle URL mit %s, wobei %s das Word/Phrase ist oder 'WIKTIONARY', was bedeutet, dass das Wörterbuch Wiktionary verwendet wird." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Entweder eine spezielle URL mit %s, wobei %s das Word/Phrase ist oder " +"'WIKTIONARY', was bedeutet, dass das Wörterbuch Wiktionary verwendet wird." -#: ../src/common/config.py:153 +#: ../src/common/config.py:173 msgid "If checked, Gajim can be controlled remotely using gajim-remote." -msgstr "Falls aktiviert, kann Gajim von Außerhalb mittels gajim-remote kontrolliert werden." +msgstr "" +"Falls aktiviert, kann Gajim von Außerhalb mittels gajim-remote kontrolliert " +"werden." -#: ../src/common/config.py:154 -msgid "If True, listen to D-Bus signals from NetworkManager and change the status of accounts (provided they do not have listen_to_network_manager set to False and they sync with global status) based upon the status of the network connection." -msgstr "Wenn aktiviert, reagiere auf D-Bus-Signale vom NetworkManager und ändere den Status von Konten (vorausgesetzt, sie haben listen_to_network_manager nicht auf False gesetzt und sie synchronisieren sich mit dem globalen Status) basierend auf dem Status der Netzwerkverbindung." +#: ../src/common/config.py:174 +msgid "" +"If True, listen to D-Bus signals from NetworkManager and change the status " +"of accounts (provided they do not have listen_to_network_manager set to " +"False and they sync with global status) based upon the status of the network " +"connection." +msgstr "" +"Wenn aktiviert, reagiere auf D-Bus-Signale vom NetworkManager und ändere den " +"Status von Konten (vorausgesetzt, sie haben listen_to_network_manager nicht " +"auf False gesetzt und sie synchronisieren sich mit dem globalen Status) " +"basierend auf dem Status der Netzwerkverbindung." -#: ../src/common/config.py:155 -msgid "Sent chat state notifications. Can be one of all, composing_only, disabled." -msgstr "Chat-Statusbenachrichtigungen gesendet. Kann eine von allen sein, composing_only deaktiviert." +#: ../src/common/config.py:175 +msgid "" +"Sent chat state notifications. Can be one of all, composing_only, disabled." +msgstr "" +"Chat-Statusbenachrichtigungen gesendet. Kann eine von allen sein, " +"composing_only deaktiviert." -#: ../src/common/config.py:156 -msgid "Displayed chat state notifications in chat windows. Can be one of all, composing_only, disabled." -msgstr "Angezeigte Chat-Status Benachrichtigungen im Chatfenster. Kann all, composing_only oder disabled sein." +#: ../src/common/config.py:176 +msgid "" +"Displayed chat state notifications in chat windows. Can be one of all, " +"composing_only, disabled." +msgstr "" +"Angezeigte Chat-Status Benachrichtigungen im Chatfenster. Kann all, " +"composing_only oder disabled sein." -#: ../src/common/config.py:158 -msgid "When not printing time for every message (print_time==sometimes), print it every x minutes." -msgstr "Wenn die Uhrzeit nicht für jede Nachricht angezeigt werden soll (print_time==sometimes), zeige sie alle x Minuten." +#: ../src/common/config.py:178 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes." +msgstr "" +"Wenn die Uhrzeit nicht für jede Nachricht angezeigt werden soll " +"(print_time==sometimes), zeige sie alle x Minuten." -#: ../src/common/config.py:159 +#: ../src/common/config.py:179 msgid "Ask before closing a group chat tab/window." msgstr "Fragen, bevor ein Gruppenchat Tab/Fenster geschlossen wird." -#: ../src/common/config.py:160 -msgid "Always ask before closing group chat tab/window in this space separated list of group chat jids." -msgstr "Immer fragen, bevor ein Gruppenchat-Fenster/Tab aus der Leerzeichen-seperierten Liste von Gruppchatnamen geschlossen wird." +#: ../src/common/config.py:180 +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Immer fragen, bevor ein Gruppenchat-Fenster/Tab aus der Leerzeichen-" +"seperierten Liste von Gruppchatnamen geschlossen wird." -#: ../src/common/config.py:161 -msgid "Never ask before closing group chat tab/window in this space separated list of group chat jids." -msgstr "Niemals fragen, bevor ein Gruppenchat-Fenster/Tab aus der Leerzeichen-seperierten Liste von Gruppenchatnamen geschlossen wird." +#: ../src/common/config.py:181 +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Niemals fragen, bevor ein Gruppenchat-Fenster/Tab aus der Leerzeichen-" +"seperierten Liste von Gruppenchatnamen geschlossen wird." -#: ../src/common/config.py:164 +#: ../src/common/config.py:184 #, fuzzy -msgid "Comma separated list of hosts that we send, in addition of local interfaces, for File Transfer in case of address translation/port forwarding." -msgstr "Ãœberschreibt den Host für Datenübertragung für den Fall von NAT/Port-Forwarding" +msgid "" +"Comma separated list of hosts that we send, in addition of local interfaces, " +"for File Transfer in case of address translation/port forwarding." +msgstr "" +"Ãœberschreibt den Host für Datenübertragung für den Fall von NAT/Port-" +"Forwarding" -#: ../src/common/config.py:166 +#: ../src/common/config.py:186 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." msgstr "IEC-Standard sagt KiB = 1024 Byte, kB = 1000 Byte." -#: ../src/common/config.py:168 +#: ../src/common/config.py:188 msgid "Notify of events in the system trayicon." msgstr "Benachrichtige über Ereignisse durch das Trayicon" -#: ../src/common/config.py:174 +#: ../src/common/config.py:194 msgid "Show tab when only one conversation?" msgstr "Tab bei einer einzelnen Unterhaltung anzeigen?" -#: ../src/common/config.py:175 +#: ../src/common/config.py:195 msgid "Show tabbed notebook border in chat windows?" msgstr "Tab-Grenze im Chat-Fenster anzeigen?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:196 msgid "Show close button in tab?" msgstr "Schließen-Button im Tab anzeigen?" -#: ../src/common/config.py:189 -msgid "A semicolon-separated list of words that will be highlighted in group chats." -msgstr "Eine mit Semilkolon seperierte Liste von Worten, die in einem Gruppenchat hervorgehoben werden." +#: ../src/common/config.py:197 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "" +"Soll Gajim beim Aushandeln einer verschlüsselten Sitzung annehmen, dass Sie " +"Ihre Nachricht mitschneiden wollen?" + +#: ../src/common/config.py:198 +msgid "" +"When negotiating an encrypted session, should Gajim prefer to use public " +"keys for identification?" +msgstr "" +"Soll Gajim bei Aushandeln einer verschlüsselten Situng öffentliche Schlüssel " +"zur Identifikation bevorzugen?" + +#: ../src/common/config.py:207 +#, fuzzy +msgid "Preview new messages in notification popup?" +msgstr "Sende Statusbenachrichtigungen:" + +#: ../src/common/config.py:212 +msgid "" +"A semicolon-separated list of words that will be highlighted in group chats." +msgstr "" +"Eine mit Semilkolon seperierte Liste von Worten, die in einem Gruppenchat " +"hervorgehoben werden." -#: ../src/common/config.py:190 -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 "Falls aktiviert, wird Gajim beendet, wenn der X-Button des Fenstermanagers geklickt wird. Diese Option wird nur beachtet, wenn die Trayicon-Unterstützung aktiv ist." +#: ../src/common/config.py:213 +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 "" +"Falls aktiviert, wird Gajim beendet, wenn der X-Button des Fenstermanagers " +"geklickt wird. Diese Option wird nur beachtet, wenn die Trayicon-" +"Unterstützung aktiv ist." -#: ../src/common/config.py:191 -msgid "If True, Gajim will check if it's the default jabber client on each startup." -msgstr "Wenn aktiviert, wird Gajim beim Starten überprüfen, ob Gajim der Standard-Jabber-Client ist." +#: ../src/common/config.py:214 +msgid "" +"If True, Gajim will check if it's the default jabber client on each startup." +msgstr "" +"Wenn aktiviert, wird Gajim beim Starten überprüfen, ob Gajim der Standard-" +"Jabber-Client ist." -#: ../src/common/config.py:192 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Falls aktiviert, wird Gajim ein Icon auf jedem Tab mit ungelesenen Nachrichten anzeigen. Abhängig vom Thema kann dieses Icon animiert sein." +#: ../src/common/config.py:215 +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Falls aktiviert, wird Gajim ein Icon auf jedem Tab mit ungelesenen " +"Nachrichten anzeigen. Abhängig vom Thema kann dieses Icon animiert sein." -#: ../src/common/config.py:193 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window." -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:216 +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window." +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:195 -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 "Falls aktiviert fragt Gajim nach einem Avatar für jeden Kontakt, der beim letzten Mal keinen hatte oder einen veralteten hat." +#: ../src/common/config.py:218 +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 "" +"Falls aktiviert fragt Gajim nach einem Avatar für jeden Kontakt, der beim " +"letzten Mal keinen hatte oder einen veralteten hat." -#: ../src/common/config.py:196 -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 "Falls deaktiviert, werden Sie keine Statuszeile im Chat sehen, wenn ein Kontakt seinen Status und/oder seine Statusnachricht ändert." +#: ../src/common/config.py:219 +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 "" +"Falls deaktiviert, werden Sie keine Statuszeile im Chat sehen, wenn ein " +"Kontakt seinen Status und/oder seine Statusnachricht ändert." -#: ../src/common/config.py:197 -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 group chat." -msgstr "Kann \"none\", \"all\" oder \"in_and_out\" sein. Falls \"none\", wird Gajim keine Status-Zeilen mehr in Gruppenchats anzeigen, wenn ein Mitglied seinen Status oder seine Statusnachricht ändert. Falls \"all\", wird Gajim alle Statusnachrichten anzeigen. Falls \"in_and_out\", wird Gajim nur einen Status anzeigen, wenn jemand den Gruppenchat betritt oder verlässt." +#: ../src/common/config.py:220 +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 " +"group chat." +msgstr "" +"Kann \"none\", \"all\" oder \"in_and_out\" sein. Falls \"none\", wird Gajim " +"keine Status-Zeilen mehr in Gruppenchats anzeigen, wenn ein Mitglied seinen " +"Status oder seine Statusnachricht ändert. Falls \"all\", wird Gajim alle " +"Statusnachrichten anzeigen. Falls \"in_and_out\", wird Gajim nur einen " +"Status anzeigen, wenn jemand den Gruppenchat betritt oder verlässt." -#: ../src/common/config.py:199 +#: ../src/common/config.py:222 msgid "Background color of contacts when they just signed in." msgstr "Hintergrundfarbe von Kontakten wenn sie sich gerade noch anmeldeten." -#: ../src/common/config.py:200 +#: ../src/common/config.py:223 msgid "Background color of contacts when they just signed out." msgstr "Hintergrundfarbe von Kontakten wenn sie sich gerade noch abmeldeten." -#: ../src/common/config.py:202 -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:225 +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:203 +#: ../src/common/config.py:226 msgid "Don't show avatar for the transport itself." msgstr "Zeige keinen Avatar für den Transport selber." -#: ../src/common/config.py:204 +#: ../src/common/config.py:227 msgid "Don't show roster in the system taskbar." msgstr "Kontaktliste nicht in der System-Taskleiste anzeigen." -#: ../src/common/config.py:205 -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 "Wenn aktiviert und die installierten GTK+ und PyGTK Versionen wenigstens 2.8 sind, lasse das Fenster bei neuen Ereignissen aufblitzen (Standardverhalten in den meisten Window-Managers) " +#: ../src/common/config.py:228 +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 "" +"Wenn aktiviert und die installierten GTK+ und PyGTK Versionen wenigstens 2.8 " +"sind, lasse das Fenster bei neuen Ereignissen aufblitzen (Standardverhalten " +"in den meisten Window-Managers) " -#: ../src/common/config.py:207 -msgid "Jabberd1.4 does not like sha info when one join a password protected group chat. Turn this option to False to stop sending sha info in group chat presences." -msgstr "Jabberd1.4 mag keine SHA-Informationen wenn ein passwortgeschützter Gruppenchat betreten wird. Deaktivieren Sie diese Option um keine SHA-Informationen in Gruppenchats zu senden" +#: ../src/common/config.py:230 +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected group " +"chat. Turn this option to False to stop sending sha info in group chat " +"presences." +msgstr "" +"Jabberd1.4 mag keine SHA-Informationen wenn ein passwortgeschützter " +"Gruppenchat betreten wird. Deaktivieren Sie diese Option um keine SHA-" +"Informationen in Gruppenchats zu senden" #. always, never, peracct, pertype should not be translated -#: ../src/common/config.py:210 +#: ../src/common/config.py:233 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 "" "Kontrolliert das Fenster in dem neue Nachrichten platziert werden.\n" "'always' - Alle Nachrichten landen in einem einzelnen Fenster.\n" "'never' - Alle Nachrichten bekommen ihr eigenes Fenster.\n" -"'peracct' - Nachrichten für jeden Account landen in einem speziellen Fenster.\n" -"'pertype' - Jede Nachrichtentyp (z.B. Chat vs. Gruppenchat) landet in in einem speziellen Fenster. Falls Sie diese Option ändern, muss Gajim neu gestartet werden, damit die Änderungen übernommen werden" +"'peracct' - Nachrichten für jeden Account landen in einem speziellen " +"Fenster.\n" +"'pertype' - Jede Nachrichtentyp (z.B. Chat vs. Gruppenchat) landet in in " +"einem speziellen Fenster. Falls Sie diese Option ändern, muss Gajim neu " +"gestartet werden, damit die Änderungen übernommen werden" -#: ../src/common/config.py:211 +#: ../src/common/config.py:234 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." +msgstr "" +"Wenn deaktiviert, werden Sie den Avatar nicht mehr im Chatfenster sehen." -#: ../src/common/config.py:212 +#: ../src/common/config.py:235 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:213 -msgid "Hides the buttons in group chat window." +#: ../src/common/config.py:236 +msgid "Hides the buttons in chat windows." msgstr "Versteckt die Knöpfe im Gruppenchat-Fenster." -#: ../src/common/config.py:214 -msgid "Hides the buttons in two persons chat window." -msgstr "Versteckt die Knöpfe im Zwei-Personen-Chatfenster" - -#: ../src/common/config.py:215 +#: ../src/common/config.py:237 msgid "Hides the banner in a group chat window" msgstr "Versteckt das Banner im Gruppenchat-Fenster" -#: ../src/common/config.py:216 +#: ../src/common/config.py:238 msgid "Hides the banner in two persons chat window" msgstr "Versteckt das Banner im Zwei-Personen-Chatfenster" -#: ../src/common/config.py:217 +#: ../src/common/config.py:239 msgid "Hides the group chat occupants list in group chat window." msgstr "Versteckt die Gruppenchat-Benutzerliste im Gruppenchat-Fenster." -#: ../src/common/config.py:218 -msgid "In a chat, show the nickname at the beginning of a line only when it's not the same person talking than in previous message." -msgstr "Zeige in einem Chat den Spitznamen nur dann am Beginn einer Linie, wenn es nicht die selbe Person ist die schon die letzte Nachricht geschrieben hat." +#: ../src/common/config.py:240 +msgid "" +"In a chat, show the nickname at the beginning of a line only when it's not " +"the same person talking than in previous message." +msgstr "" +"Zeige in einem Chat den Spitznamen nur dann am Beginn einer Linie, wenn es " +"nicht die selbe Person ist die schon die letzte Nachricht geschrieben hat." -#: ../src/common/config.py:219 +#: ../src/common/config.py:241 msgid "Indentation when using merge consecutive nickname." -msgstr "Einrückung, wenn das Zusammenführen nachfolgender Spitznamen verwendet wird." +msgstr "" +"Einrückung, wenn das Zusammenführen nachfolgender Spitznamen verwendet wird." -#: ../src/common/config.py:220 +#: ../src/common/config.py:242 +#, fuzzy +msgid "Smooth scroll message in conversation window" +msgstr "Nachricht senden und Fenster schließen" + +#: ../src/common/config.py:243 msgid "List of colors that will be used to color nicknames in group chats." -msgstr "Farbliste, die für die Einfärbung von Spitzenamen im Gruppenchat verwendet wird." +msgstr "" +"Farbliste, die für die Einfärbung von Spitzenamen im Gruppenchat verwendet " +"wird." -#: ../src/common/config.py:221 +#: ../src/common/config.py:244 msgid "Ctrl-Tab go to next composing tab when none is unread." -msgstr "Strg-Tab, um zum nächsten Reiter zu gehen, wenn kein Anderer neue Nachrichten enthält." +msgstr "" +"Strg-Tab, um zum nächsten Reiter zu gehen, wenn kein Anderer neue " +"Nachrichten enthält." -#: ../src/common/config.py:222 -msgid "Should we show the confirm metacontacts creation dialog or not? Empty string means we never show the dialog." -msgstr "Soll der Bestätigungsdialog beim Erstellen von Metakontakten angezeigt werden oder nicht? Bei leerer Zeichenfolge wird der Dialog nie gezeigt." +#: ../src/common/config.py:245 +msgid "" +"Should we show the confirm metacontacts creation dialog or not? Empty string " +"means we never show the dialog." +msgstr "" +"Soll der Bestätigungsdialog beim Erstellen von Metakontakten angezeigt " +"werden oder nicht? Bei leerer Zeichenfolge wird der Dialog nie gezeigt." -#: ../src/common/config.py:223 -msgid "If True, you will be able to set a negative priority to your account in account modification window. BE CAREFUL, when you are logged in with a negative priority, you will NOT receive any message from your server." -msgstr "Wenn aktiviert, werden Sie in der Lage sein eine negative Priorität für Ihr Konto im Konto-Bearbeiten Fenster zu setzen. SEIEN SIE VORSICHTIG, wenn Sie mit einer negativen Priorität angemeldet sind: Sie werden KEINE Nachrichten mehr von Ihrem Server erhalten." +#: ../src/common/config.py:246 +msgid "" +"If True, you will be able to set a negative priority to your account in " +"account modification window. BE CAREFUL, when you are logged in with a " +"negative priority, you will NOT receive any message from your server." +msgstr "" +"Wenn aktiviert, werden Sie in der Lage sein eine negative Priorität für Ihr " +"Konto im Konto-Bearbeiten Fenster zu setzen. SEIEN SIE VORSICHTIG, wenn Sie " +"mit einer negativen Priorität angemeldet sind: Sie werden KEINE Nachrichten " +"mehr von Ihrem Server erhalten." -#: ../src/common/config.py:224 -msgid "If True, Gajim will use Gnome Keyring (if available) to store account passwords." -msgstr "Wenn aktiviert, wird Gnome Keyring (falls verfügbar) verwendet, um die Passwörter der Konten zu speichern." +#: ../src/common/config.py:247 +msgid "" +"If True, Gajim will use Gnome Keyring (if available) to store account " +"passwords." +msgstr "" +"Wenn aktiviert, wird Gnome Keyring (falls verfügbar) verwendet, um die " +"Passwörter der Konten zu speichern." -#: ../src/common/config.py:225 -msgid "If True, Gajim will show number of online and total contacts in account and group rows." -msgstr "Wenn aktiviert, wird Gajim die Anzahl der angemeldeten und gesamten Kontakte in den Konto- und Gruppenreihen anzeigen." +#: ../src/common/config.py:248 +msgid "" +"If True, Gajim will show number of online and total contacts in account and " +"group rows." +msgstr "" +"Wenn aktiviert, wird Gajim die Anzahl der angemeldeten und gesamten Kontakte " +"in den Konto- und Gruppenreihen anzeigen." -#: ../src/common/config.py:226 -msgid "Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages as if they were of this type" -msgstr "Kann leer, 'chat' oder 'normal' sein. Wenn nicht leer, dann werden alle eingehenden Nachrichten so behandelt, als wären sie von diesem Typ." +#: ../src/common/config.py:249 +msgid "" +"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " +"as if they were of this type" +msgstr "" +"Kann leer, 'chat' oder 'normal' sein. Wenn nicht leer, dann werden alle " +"eingehenden Nachrichten so behandelt, als wären sie von diesem Typ." -#: ../src/common/config.py:227 -msgid "If True, Gajim will scroll and select the contact who sent you the last message, if chat window is not already opened." -msgstr "Wenn aktiviert, wird Gajim automatisch zu der Person springen und auswählen, die die letzte Nachricht geschickt hat, falls das Chat Fenster nicht bereits offen ist." +#: ../src/common/config.py:250 +msgid "" +"If True, Gajim will scroll and select the contact who sent you the last " +"message, if chat window is not already opened." +msgstr "" +"Wenn aktiviert, wird Gajim automatisch zu der Person springen und auswählen, " +"die die letzte Nachricht geschickt hat, falls das Chat Fenster nicht bereits " +"offen ist." -#: ../src/common/config.py:238 -msgid "Priority will change automatically according to your status. Priorities are defined in autopriority_* options." -msgstr "Die Priorität wird automatisch dem Status entsprechend geändert. Prioritäten sind in den autopriority_* Optionen definiert." +#: ../src/common/config.py:251 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" +"Falls 'true', wird Gajim eine Zeichenkette zwischen $$ und $$ mittels dvips " +"vor dem Einfügen in ein Chat-Fenster in ein Bild umwandeln." + +#: ../src/common/config.py:252 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "" +"Benötigte Inaktivitäts-Zeit bevor das 'Status ändern'-Fenster geschlossen " +"wird." + +#: ../src/common/config.py:253 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "" +"Maximale Anzahl Zeilen, die in einem Gespräch angezeigt werden. Die ältesten " +"Zeilen werden gelöscht." + +#: ../src/common/config.py:254 +msgid "" +"If True, notification windows from notification-daemon will be attached to " +"systray icon." +msgstr "" + +#: ../src/common/config.py:265 +msgid "" +"Priority will change automatically according to your status. Priorities are " +"defined in autopriority_* options." +msgstr "" +"Die Priorität wird automatisch dem Status entsprechend geändert. Prioritäten " +"sind in den autopriority_* Optionen definiert." #. yes, no, ask -#: ../src/common/config.py:267 +#: ../src/common/config.py:293 msgid "Jabberd2 workaround" msgstr "Jabberd2 Workaround" -#: ../src/common/config.py:271 -msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." -msgstr "Wenn aktiviert, wird Gajim Ihre IP und die in der file_transfer_proxies Option definierten Proxies für den Datentransfer verwenden." +#: ../src/common/config.py:297 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"Wenn aktiviert, wird Gajim Ihre IP und die in der file_transfer_proxies " +"Option definierten Proxies für den Datentransfer verwenden." -#: ../src/common/config.py:330 +#: ../src/common/config.py:356 msgid "Is OpenPGP enabled for this contact?" msgstr "Ist OpenPGP für diesen Kontakt aktiviert?" -#: ../src/common/config.py:331 -#: ../src/common/config.py:334 +#: ../src/common/config.py:357 ../src/common/config.py:360 msgid "Language for which we want to check misspelled words" msgstr "Sprache für, die nach falsch geschriebenen Wörtern gesucht werden soll" -#: ../src/common/config.py:340 +#: ../src/common/config.py:366 msgid "all or space separated status" msgstr "alle oder Leerzeichen-getrennter Status" -#: ../src/common/config.py:341 +#: ../src/common/config.py:367 msgid "'yes', 'no', or 'both'" msgstr "'ja', 'nein' oder 'beide'" -#: ../src/common/config.py:342 -#: ../src/common/config.py:344 -#: ../src/common/config.py:345 -#: ../src/common/config.py:348 -#: ../src/common/config.py:349 +#: ../src/common/config.py:368 ../src/common/config.py:370 +#: ../src/common/config.py:371 ../src/common/config.py:374 +#: ../src/common/config.py:375 msgid "'yes', 'no' or ''" msgstr "'ja, 'nein' oder ''" -#: ../src/common/config.py:355 +#: ../src/common/config.py:381 msgid "Sleeping" msgstr "Schlafen" -#: ../src/common/config.py:356 +#: ../src/common/config.py:382 msgid "Back soon" msgstr "Bin gleich wieder da" -#: ../src/common/config.py:356 +#: ../src/common/config.py:382 msgid "Back in some minutes." msgstr "Bin in ein paar Minuten zurück." -#: ../src/common/config.py:357 +#: ../src/common/config.py:383 msgid "Eating" msgstr "Essen" -#: ../src/common/config.py:357 +#: ../src/common/config.py:383 msgid "I'm eating, so leave me a message." msgstr "Ich esse gerade, also hinterlasst eine Nachricht." -#: ../src/common/config.py:358 +#: ../src/common/config.py:384 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:358 +#: ../src/common/config.py:384 msgid "I'm watching a movie." msgstr "Ich sehe mir einen Film an." -#: ../src/common/config.py:359 +#: ../src/common/config.py:385 msgid "Working" msgstr "Arbeiten" -#: ../src/common/config.py:359 +#: ../src/common/config.py:385 msgid "I'm working." msgstr "Ich arbeite." -#: ../src/common/config.py:360 +#: ../src/common/config.py:386 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:360 +#: ../src/common/config.py:386 msgid "I'm on the phone." msgstr "Ich telefoniere." -#: ../src/common/config.py:361 +#: ../src/common/config.py:387 msgid "Out" msgstr "Draußen" -#: ../src/common/config.py:361 +#: ../src/common/config.py:387 msgid "I'm out enjoying life." msgstr "Ich bin draußen und genieße das Leben." -#: ../src/common/config.py:365 +#: ../src/common/config.py:391 msgid "I'm available." msgstr "Ich bin angemeldet." -#: ../src/common/config.py:366 +#: ../src/common/config.py:392 msgid "I'm free for chat." msgstr "Ich bin frei zum Chatten." -#: ../src/common/config.py:368 +#: ../src/common/config.py:394 msgid "I'm not available." msgstr "Ich bin nicht verfügbar." -#: ../src/common/config.py:369 +#: ../src/common/config.py:395 msgid "Do not disturb." msgstr "Bitte nicht stören." -#: ../src/common/config.py:370 -#: ../src/common/config.py:371 +#: ../src/common/config.py:396 ../src/common/config.py:397 msgid "Bye!" msgstr "Auf Wiedersehen!" -#: ../src/common/config.py:380 -msgid "Sound to play when a group chat message contains one of the words in muc_highlight_words, or when a group chat message contains your nickname." -msgstr "Abzuspielender Ton, falls eine Gruppenchat-Nachricht eines der Wörter aus der muc_highlights_works-Liste oder Ihren Spitznamen enthält." +#: ../src/common/config.py:406 +msgid "" +"Sound to play when a group chat message contains one of the words in " +"muc_highlight_words, or when a group chat message contains your nickname." +msgstr "" +"Abzuspielender Ton, falls eine Gruppenchat-Nachricht eines der Wörter aus " +"der muc_highlights_works-Liste oder Ihren Spitznamen enthält." -#: ../src/common/config.py:381 +#: ../src/common/config.py:407 msgid "Sound to play when any MUC message arrives." -msgstr "Ton der beim empfangen einer Gruppenchat-Nachricht abgespielt werden soll" +msgstr "" +"Ton der beim empfangen einer Gruppenchat-Nachricht abgespielt werden soll" -#: ../src/common/config.py:390 -#: ../src/common/optparser.py:195 +#: ../src/common/config.py:416 ../src/common/optparser.py:220 msgid "green" msgstr "grün" -#: ../src/common/config.py:394 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:420 ../src/common/optparser.py:206 msgid "grocery" msgstr "gemüse" -#: ../src/common/config.py:398 +#: ../src/common/config.py:424 msgid "human" msgstr "menschlich" -#: ../src/common/config.py:402 +#: ../src/common/config.py:428 msgid "marine" msgstr "Marine" -#: ../src/common/connection_handlers.py:52 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 +#: ../src/common/connection_handlers.py:61 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:49 msgid "Unable to load idle module" msgstr "Konnte Idle-Modus nicht laden" -#: ../src/common/connection_handlers.py:180 -#: ../src/common/connection_handlers.py:215 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +#: ../src/common/connection_handlers.py:219 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 msgid "Wrong host" msgstr "Falscher Host" -#: ../src/common/connection_handlers.py:180 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 -#, python-format -msgid "The host %s you configured as the ft_add_hosts_to_send advanced option is not valid, so ignored." -msgstr "Der Host %s, 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:216 +#: ../src/common/connection_handlers.py:220 msgid "Invalid local address? :-O" msgstr "Ungültige Lokale Adresse? :-O" -#: ../src/common/connection_handlers.py:607 +#: ../src/common/connection_handlers.py:618 #, python-format msgid "Registration information for transport %s has not arrived in time" -msgstr "Registrierungsinformation für Transport %s sind nicht rechtzeitig angekommen" +msgstr "" +"Registrierungsinformation für Transport %s sind nicht rechtzeitig angekommen" -#: ../src/common/connection_handlers.py:1544 +#: ../src/common/connection_handlers.py:1802 #, python-format msgid "Nickname not allowed: %s" msgstr "Spitzname nicht erlaubt: %s" -#. password required to join #. we are banned #. group chat does not exist -#: ../src/common/connection_handlers.py:1609 -#: ../src/common/connection_handlers.py:1612 -#: ../src/common/connection_handlers.py:1615 -#: ../src/common/connection_handlers.py:1618 -#: ../src/common/connection_handlers.py:1621 -#: ../src/common/connection_handlers.py:1624 -#: ../src/common/connection_handlers.py:1632 +#: ../src/common/connection_handlers.py:1872 +#: ../src/common/connection_handlers.py:1875 +#: ../src/common/connection_handlers.py:1878 +#: ../src/common/connection_handlers.py:1881 +#: ../src/common/connection_handlers.py:1885 +#: ../src/common/connection_handlers.py:1894 msgid "Unable to join group chat" msgstr "Fehler beim Betreten des Gruppenchats" -#: ../src/common/connection_handlers.py:1610 -msgid "A password is required to join this group chat." -msgstr "Für das Betreten dieses Gruppenchats ist ein Passwort nötig." - -#: ../src/common/connection_handlers.py:1613 -msgid "You are banned from this group chat." -msgstr "Sie sind von diesem Gruppenchat gebannt." +#: ../src/common/connection_handlers.py:1873 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Sie sind von Gruppenchat %s gebannt." -#: ../src/common/connection_handlers.py:1616 -msgid "Such group chat does not exist." +#: ../src/common/connection_handlers.py:1876 +#, python-format +msgid "Group chat %s does not exist." msgstr "Dieser Gruppenchat existiert nicht." -#: ../src/common/connection_handlers.py:1619 +#: ../src/common/connection_handlers.py:1879 msgid "Group chat creation is restricted." msgstr "Gruppenchaterstellung ist beschränkt." -#: ../src/common/connection_handlers.py:1622 -msgid "Your registered nickname must be used." +#: ../src/common/connection_handlers.py:1882 +#, python-format +msgid "Your registered nickname must be used in group chat %s." msgstr "Sie müssen Ihren registrierten Spitznamen verwenden" -#: ../src/common/connection_handlers.py:1625 -msgid "You are not in the members list." +#: ../src/common/connection_handlers.py:1886 +#, python-format +msgid "You are not in the members list in groupchat %s." msgstr "Sie sind nicht in der Mitgliedliste" -#: ../src/common/connection_handlers.py:1633 +#: ../src/common/connection_handlers.py:1895 +#, python-format msgid "" -"Your desired nickname is in use or registered by another occupant.\n" +"Your desired nickname in group chat %s is in use or registered by another " +"occupant.\n" "Please specify another nickname below:" msgstr "" -"Der gewünschte Benutzername wird bereits verwendet oder ist von einem anderen Benutzer registriert.\n" +"Der gewünschte Benutzername wird bereits verwendet oder ist von einem " +"anderen Benutzer registriert.\n" "Bitte geben Sie einen anderen Benutzernamen an:" #. Room has been destroyed. see #. http://www.xmpp.org/extensions/xep-0045.html#destroyroom -#: ../src/common/connection_handlers.py:1676 +#: ../src/common/connection_handlers.py:1926 msgid "Room has been destroyed" msgstr "Raum wurde zerstört" -#: ../src/common/connection_handlers.py:1683 +#: ../src/common/connection_handlers.py:1933 #, python-format msgid "You can join this room instead: %s" msgstr "Sie können stattdessen diesem Raum beitreten: %s" -#: ../src/common/connection_handlers.py:1709 +#: ../src/common/connection_handlers.py:1960 msgid "I would like to add you to my roster." msgstr "Ich würde dich gerne zu meiner Liste hinzufügen." #. BE CAREFUL: no con.updateRosterItem() in a callback -#: ../src/common/connection_handlers.py:1730 +#: ../src/common/connection_handlers.py:1981 #, python-format msgid "we are now subscribed to %s" msgstr "wir haben jetzt %s abonniert" -#: ../src/common/connection_handlers.py:1732 +#: ../src/common/connection_handlers.py:1983 #, python-format msgid "unsubscribe request from %s" msgstr "Anfrage zur Kündigung des Abonnements von %s" -#: ../src/common/connection_handlers.py:1734 +#: ../src/common/connection_handlers.py:1985 #, python-format msgid "we are now unsubscribed from %s" msgstr "%s hat das Abonnement beendet" -#: ../src/common/connection_handlers.py:1851 +#: ../src/common/connection_handlers.py:2112 #, 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 <http://jru.jabberstudio.org/>, um ihn zu entfernen" +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 <http://jru.jabberstudio.org/>, " +"um ihn zu entfernen" -#: ../src/common/connection.py:193 -#: ../src/common/zeroconf/connection_zeroconf.py:196 +#. We didn't set a passphrase +#: ../src/common/connection_handlers.py:2151 +#: ../src/common/zeroconf/connection_zeroconf.py:169 +msgid "OpenPGP passphrase was not given" +msgstr "Keine OpenPGP-Passphrase gewählt" + +#: ../src/common/connection.py:243 +#: ../src/common/zeroconf/connection_zeroconf.py:209 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Verbindung mit Konto \"%s\" abgebrochen" -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:244 msgid "Reconnect manually." msgstr "Manuelle Neuverbindung." -#: ../src/common/connection.py:205 -#: ../src/common/connection.py:232 -#, python-format -msgid "Transport %s answered wrongly to register request: %s" -msgstr "Transport %s beantwortete unsere Registrierungsanfrage nicht korrekt: %s" +#: ../src/common/connection.py:255 +#, fuzzy, python-format +msgid "Server %s answered wrongly to register request: %s" +msgstr "" +"Transport %s beantwortete unsere Registrierungsanfrage nicht korrekt: %s" #. wrong answer -#: ../src/common/connection.py:231 +#: ../src/common/connection.py:263 msgid "Invalid answer" msgstr "Ungültige Antwort" -#: ../src/common/connection.py:379 +#: ../src/common/connection.py:264 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "" +"Transport %s beantwortete unsere Registrierungsanfrage nicht korrekt: %s" + +#: ../src/common/connection.py:410 msgid "Connection to proxy failed" msgstr "Verbindung mit Proxy fehlgeschlagen" -#: ../src/common/connection.py:433 -#: ../src/common/connection.py:531 -#: ../src/common/connection.py:984 -#: ../src/common/zeroconf/connection_zeroconf.py:217 +#: ../src/common/connection.py:464 ../src/common/connection.py:510 +#: ../src/common/connection.py:1080 +#: ../src/common/zeroconf/connection_zeroconf.py:243 #, python-format msgid "Could not connect to \"%s\"" msgstr "Konnte nicht mit %s verbinden" -#: ../src/common/connection.py:447 +#: ../src/common/connection.py:478 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Verbunden mit Server %s:%s mit %s" -#: ../src/common/connection.py:460 -#, python-format -msgid "Security error connecting to \"%s\"" -msgstr "Konnte nicht mit %s verbinden" - -#: ../src/common/connection.py:461 -msgid "The server's key has changed, or someone is trying to hack your connection." -msgstr "Der Schlüssel des Servers wurde geändert oder jemand versucht ihre Verbindung zu hacken." - -#: ../src/common/connection.py:468 -#, python-format -msgid "Unable to check fingerprint for %s. Connection could be insecure." -msgstr "Konnte Fingerabdruck von %s nicht überprüfen. Die Verbindung ist möglicherweise unsicher." - -#: ../src/common/connection.py:510 -#, python-format -msgid "Missing fingerprint in SSL connection to %s" -msgstr "Fehlender Fingerabdruck in der SSL-Verbindung zu %s" - -#: ../src/common/connection.py:516 -#, python-format -msgid "Fingerprint mismatch for %s: Got %s, expected %s" -msgstr "Fingerabdruck von %s stimmt nicht überein: Erhalten %s, erwartet %s" - -#: ../src/common/connection.py:532 +#: ../src/common/connection.py:511 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:558 +#: ../src/common/connection.py:536 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Authentifizierung mit \"%s\" fehlgeschlagen" -#: ../src/common/connection.py:559 +#: ../src/common/connection.py:538 msgid "Please check your login and password for correctness." msgstr "Bitte überprüfen Sie ihren Benutzernamen und Passwort." -#: ../src/common/connection.py:586 +#: ../src/common/connection.py:581 msgid "Error while removing privacy list" msgstr "Fehler beim Entfernen der Privatliste" -#: ../src/common/connection.py:587 +#: ../src/common/connection.py:582 #, python-format -msgid "Privacy list %s has not been removed. It is maybe active in one of your connected resources. Deactivate it and try again." -msgstr "Privatliste %s wurde nicht entfernt. Möglicherweise ist die Privatliste noch in einer Ihrer Verbindungen aktiv. Deaktivieren Sie diese und versuchen Sie es erneut." - -#. We didn't set a passphrase -#: ../src/common/connection.py:685 -#: ../src/common/zeroconf/connection_zeroconf.py:156 -msgid "OpenPGP passphrase was not given" -msgstr "Keine OpenPGP-Passphrase gewählt" +msgid "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." +msgstr "" +"Privatliste %s wurde nicht entfernt. Möglicherweise ist die Privatliste noch " +"in einer Ihrer Verbindungen aktiv. Deaktivieren Sie diese und versuchen Sie " +"es erneut." #. we're not english #. one in locale and one en -#: ../src/common/connection.py:814 +#: ../src/common/connection.py:855 msgid "[This message is *encrypted* (See :JEP:`27`]" msgstr "[Diese Nachricht ist *verschlüsselt* (Siehe: JEP:`27`)]" -#: ../src/common/connection.py:870 -#: ../src/common/zeroconf/connection_zeroconf.py:397 +#: ../src/common/connection.py:929 +#: ../src/common/zeroconf/connection_zeroconf.py:437 #, python-format msgid "" "Subject: %s\n" @@ -6073,486 +7384,487 @@ msgstr "" "Thema: %s\n" "%s" -#: ../src/common/connection.py:1010 +#: ../src/common/connection.py:1112 msgid "Not fetched because of invisible status" msgstr "Nicht abgeholt aufgrund eines Unsichtbar-Status" -#: ../src/common/contacts.py:271 +#: ../src/common/contacts.py:299 msgid "Not in roster" msgstr "Nicht in der Kontaktliste" #. only say that to non Windows users -#: ../src/common/dbus_support.py:33 +#: ../src/common/dbus_support.py:41 msgid "D-Bus python bindings are missing in this computer" msgstr "Auf diesem Computer fehlen die Python Bibliotheken für D-Bus" -#: ../src/common/dbus_support.py:34 +#: ../src/common/dbus_support.py:42 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Gajims D-BUS-Möglichkeiten können nicht genutzt werden" -#: ../src/common/exceptions.py:22 +#: ../src/common/exceptions.py:27 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:30 +#: ../src/common/exceptions.py:44 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" +msgstr "" +"Dienst nicht verfügbar: Gajim ist nicht aktiv oder remote_control ist " +"deaktiviert" -#: ../src/common/exceptions.py:38 +#: ../src/common/exceptions.py:52 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:46 +#: ../src/common/exceptions.py:60 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" -msgstr "Sitzungsbus ist nicht verfügbar.\"Bitte lesen Sie http://trac.gajim.org/wiki/GajimDBus (Englisch)" +msgstr "" +"Sitzungsbus ist nicht verfügbar.\"Bitte lesen Sie http://trac.gajim.org/wiki/" +"GajimDBus (Englisch)" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "one" msgstr "Eins" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "two" msgstr "Zwei" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "three" msgstr "Drei" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "four" msgstr "Vier" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "five" msgstr "Fünf" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "six" msgstr "Sechs" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "seven" msgstr "Sieben" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eight" msgstr "Acht" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "nine" msgstr "Neun" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "ten" msgstr "Zehn" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eleven" msgstr "Elf" -#: ../src/common/fuzzyclock.py:44 +#: ../src/common/fuzzyclock.py:49 msgid "twelve" msgstr "Zwölf" #. 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). ''' #. A "singular-form". It is used when talking about hour 0 -#: ../src/common/fuzzyclock.py:47 -#: ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "$0 o'clock" msgstr "%0 Uhr" -#: ../src/common/fuzzyclock.py:47 -#: ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "five past $0" msgstr "fünf nach %0" -#: ../src/common/fuzzyclock.py:48 -#: ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 msgid "ten past $0" msgstr "zehn nach %0" -#: ../src/common/fuzzyclock.py:48 -#: ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 msgid "quarter past $0" msgstr "viertel nach %0" -#: ../src/common/fuzzyclock.py:49 -#: ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 msgid "twenty past $0" msgstr "zwanzig nach %0" -#: ../src/common/fuzzyclock.py:49 -#: ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 msgid "twenty five past $0" msgstr "fünfundzwanzig nach %0" -#: ../src/common/fuzzyclock.py:50 -#: ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 msgid "half past $0" msgstr "dreißig nach %0" -#: ../src/common/fuzzyclock.py:50 -#: ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 msgid "twenty five to $1" msgstr "fünfundzwanzig vor %1" -#: ../src/common/fuzzyclock.py:51 -#: ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 msgid "twenty to $1" msgstr "zwanzig vor %1" -#: ../src/common/fuzzyclock.py:51 -#: ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 msgid "quarter to $1" msgstr "viertel vor %1" -#: ../src/common/fuzzyclock.py:52 -#: ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 msgid "ten to $1" msgstr "zehn vor %1" -#: ../src/common/fuzzyclock.py:52 -#: ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 msgid "five to $1" msgstr "fünf vor %1" -#: ../src/common/fuzzyclock.py:52 -#: ../src/common/fuzzyclock.py:61 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:66 msgid "$1 o'clock" msgstr "%1 Uhr" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Night" msgstr "Nacht" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Early morning" msgstr "Früh Morgens" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Morning" msgstr "Morgen" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Almost noon" msgstr "Fast Mittag" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Noon" msgstr "Mittag" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Afternoon" msgstr "Nachmittag" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Evening" msgstr "Abend" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Late evening" msgstr "Später Abend" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "Start of week" msgstr "Anfang der Woche" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "Middle of week" msgstr "Mitte der Woche" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "End of week" msgstr "Ende der Woche" -#: ../src/common/fuzzyclock.py:68 +#: ../src/common/fuzzyclock.py:73 msgid "Weekend!" msgstr "Wochenende!" -#: ../src/common/helpers.py:114 +#: ../src/common/helpers.py:124 msgid "Invalid character in username." msgstr "Ungültiges Zeichen im Benutzernamen" -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:129 msgid "Server address required." msgstr "Server-Adresse wird benötigt." -#: ../src/common/helpers.py:124 +#: ../src/common/helpers.py:134 msgid "Invalid character in hostname." msgstr "Ungültiges Zeichen in Hostname." -#: ../src/common/helpers.py:130 +#: ../src/common/helpers.py:140 msgid "Invalid character in resource." msgstr "Ungültiges Zeichen in Resource." #. GiB means gibibyte -#: ../src/common/helpers.py:170 +#: ../src/common/helpers.py:180 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:183 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:177 +#: ../src/common/helpers.py:187 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:180 +#: ../src/common/helpers.py:190 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:184 +#: ../src/common/helpers.py:194 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:187 +#: ../src/common/helpers.py:197 #, python-format msgid "%s KB" msgstr "%s kB" #. B means bytes -#: ../src/common/helpers.py:190 +#: ../src/common/helpers.py:200 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:219 +#: ../src/common/helpers.py:231 msgid "_Busy" msgstr "_Beschäftigt" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:233 msgid "Busy" msgstr "Beschäftigt" -#: ../src/common/helpers.py:224 +#: ../src/common/helpers.py:236 msgid "_Not Available" msgstr "_Nicht verfügbar" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:241 msgid "_Free for Chat" msgstr "_Frei zum Chatten" -#: ../src/common/helpers.py:231 +#: ../src/common/helpers.py:243 msgid "Free for Chat" msgstr "Frei zum Chatten" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:246 msgid "_Available" msgstr "_Angemeldet" -#: ../src/common/helpers.py:236 -msgid "Available" -msgstr "Angemeldet" - -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:250 msgid "Connecting" msgstr "Verbinde" -#: ../src/common/helpers.py:241 +#: ../src/common/helpers.py:253 msgid "A_way" msgstr "Ab_wesend" -#: ../src/common/helpers.py:246 +#: ../src/common/helpers.py:258 msgid "_Offline" msgstr "A_bgemeldet" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:260 msgid "Offline" msgstr "Abgemeldet" -#: ../src/common/helpers.py:251 +#: ../src/common/helpers.py:263 msgid "_Invisible" msgstr "_Unsichtbar" -#: ../src/common/helpers.py:257 +#: ../src/common/helpers.py:269 msgid "?contact has status:Unknown" msgstr "Unbekannt" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:271 msgid "?contact has status:Has errors" msgstr "Hat Fehler" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:276 msgid "?Subscription we already have:None" msgstr "Keine" -#: ../src/common/helpers.py:266 +#: ../src/common/helpers.py:278 msgid "To" msgstr "An" -#: ../src/common/helpers.py:270 +#: ../src/common/helpers.py:282 msgid "Both" msgstr "Beide" -#: ../src/common/helpers.py:278 +#: ../src/common/helpers.py:290 msgid "?Ask (for Subscription):None" msgstr "Keine" -#: ../src/common/helpers.py:280 +#: ../src/common/helpers.py:292 msgid "Subscribe" msgstr "Abonnieren" -#: ../src/common/helpers.py:289 +#: ../src/common/helpers.py:301 msgid "?Group Chat Contact Role:None" msgstr "Keine" -#: ../src/common/helpers.py:292 +#: ../src/common/helpers.py:304 msgid "Moderators" msgstr "Moderatoren" -#: ../src/common/helpers.py:294 +#: ../src/common/helpers.py:306 msgid "Moderator" msgstr "Moderator" -#: ../src/common/helpers.py:297 +#: ../src/common/helpers.py:309 msgid "Participants" msgstr "Teilnehmer" -#: ../src/common/helpers.py:299 +#: ../src/common/helpers.py:311 msgid "Participant" msgstr "Teilnehmer" -#: ../src/common/helpers.py:302 +#: ../src/common/helpers.py:314 msgid "Visitors" msgstr "Besucher" -#: ../src/common/helpers.py:304 +#: ../src/common/helpers.py:316 msgid "Visitor" msgstr "Besucher" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:322 msgid "?Group Chat Contact Affiliation:None" msgstr "?Gruppenchat Kontaktverbindung:Keine" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:324 msgid "Owner" msgstr "Besitzer" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:326 msgid "Administrator" msgstr "Administrator" -#: ../src/common/helpers.py:316 +#: ../src/common/helpers.py:328 msgid "Member" msgstr "Mitglied" -#: ../src/common/helpers.py:355 +#: ../src/common/helpers.py:367 msgid "is paying attention to the conversation" msgstr "beobachtet diese Unterhaltung" -#: ../src/common/helpers.py:357 +#: ../src/common/helpers.py:369 msgid "is doing something else" msgstr "tut etwas anderes" -#: ../src/common/helpers.py:359 +#: ../src/common/helpers.py:371 msgid "is composing a message..." msgstr "schreibt im Moment" #. paused means he or she was composing but has stopped for a while -#: ../src/common/helpers.py:362 +#: ../src/common/helpers.py:374 msgid "paused composing a message" msgstr "macht gerade eine Schreibpause" -#: ../src/common/helpers.py:364 +#: ../src/common/helpers.py:376 msgid "has closed the chat window or tab" msgstr "hat das Chatfenster oder den Tab geschlossen" -#: ../src/common/helpers.py:890 +#: ../src/common/helpers.py:947 ../src/common/helpers.py:954 #, python-format -msgid " %d unread message" -msgid_plural " %d unread messages" -msgstr[0] " %d ungelesene Nachricht" -msgstr[1] " %d ungelesene Nachrichten" +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "%d Nachricht schwebend" +msgstr[1] "%d Nachrichten schwebend" -#: ../src/common/helpers.py:896 +#: ../src/common/helpers.py:960 #, python-format -msgid " %d unread single message" -msgid_plural " %d unread single messages" -msgstr[0] " %d ungelesene Einzel-Nachricht" -msgstr[1] " %d ungelesene Einzel-Nachrichten" +msgid " from room %s" +msgstr "Von Gruppenchat %s" -#: ../src/common/helpers.py:902 +#: ../src/common/helpers.py:963 ../src/common/helpers.py:982 #, python-format -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" +msgid " from user %s" +msgstr "Von Benutzer %s" -#: ../src/common/helpers.py:908 +#: ../src/common/helpers.py:965 #, 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" +msgid " from %s" +msgstr "Von %s" -#: ../src/common/helpers.py:918 -#: ../src/common/helpers.py:920 +#: ../src/common/helpers.py:972 ../src/common/helpers.py:979 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "%d Ereignis anstehend" +msgstr[1] "%d Ereignisse anstehend" + +#: ../src/common/helpers.py:1012 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" #. we talk about a file -#: ../src/common/optparser.py:59 +#: ../src/common/optparser.py:65 #, python-format msgid "error: cannot open %s for reading" msgstr "Fehler: %s kann nicht zum Lesen geöffnet werden" -#: ../src/common/optparser.py:181 -msgid "gtk+" -msgstr "gtk+" - -#: ../src/common/optparser.py:190 -#: ../src/common/optparser.py:191 +#: ../src/common/optparser.py:215 ../src/common/optparser.py:216 msgid "cyan" msgstr "cyan" -#: ../src/common/optparser.py:308 +#: ../src/common/optparser.py:332 msgid "migrating logs database to indices" msgstr "migriere Logdatenbank zu Indices" -#: ../src/common/passwords.py:82 +#: ../src/common/passwords.py:88 #, python-format msgid "Gajim account %s" msgstr "Gajim-Konto %s" -#: ../src/common/zeroconf/client_zeroconf.py:189 -msgid "Connection to host could not be established: Incorrect answer from server." -msgstr "Verbindung zum Host konnte nicht aufgebaut werden: Fehlerhafte Antwort vom Server." - -#: ../src/common/zeroconf/client_zeroconf.py:205 +#: ../src/common/zeroconf/client_zeroconf.py:149 +#: ../src/common/zeroconf/client_zeroconf.py:232 msgid "Connection to host could not be established" msgstr "Verbindung zu Host konnte nicht hergestellt werden" -#: ../src/common/zeroconf/client_zeroconf.py:339 -msgid "Connection to host could not be established: Timeout while sending data." -msgstr "Verbindung zum Host konnte nicht hergestellt werden: Zeitüberschreitung beim Senden von Daten." +#: ../src/common/zeroconf/client_zeroconf.py:206 +msgid "" +"Connection to host could not be established: Incorrect answer from server." +msgstr "" +"Verbindung zum Host konnte nicht aufgebaut werden: Fehlerhafte Antwort vom " +"Server." + +#: ../src/common/zeroconf/client_zeroconf.py:366 +msgid "" +"Connection to host could not be established: Timeout while sending data." +msgstr "" +"Verbindung zum Host konnte nicht hergestellt werden: Zeitüberschreitung beim " +"Senden von Daten." -#: ../src/common/zeroconf/client_zeroconf.py:632 +#: ../src/common/zeroconf/client_zeroconf.py:652 msgid "Contact is offline. Your message could not be sent." msgstr "Kontakt ist offline. Ihre Nachricht konnte nicht versendet werden." -#: ../src/common/zeroconf/connection_zeroconf.py:197 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 +#, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"Der Host %s, den Sie für die erweiterte Option ft_override_host_to_send " +"angeben haben ist ungültig und wird ignoriert." + +#: ../src/common/zeroconf/connection_zeroconf.py:210 msgid "To continue sending and receiving messages, you will need to reconnect." -msgstr "Um weiterhin Nachrichten Senden und Empfangen zu können, müssen Sie sich erneut verbinden." +msgstr "" +"Um weiterhin Nachrichten Senden und Empfangen zu können, müssen Sie sich " +"erneut verbinden." -#: ../src/common/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:233 msgid "Avahi error" msgstr "Avahi-Fehler" -#: ../src/common/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:233 #, python-format msgid "" "%s\n" @@ -6561,233 +7873,567 @@ msgstr "" "%s\n" "Lokaler Nachrichtenversand funktioniert eventuell nicht richtig." -#: ../src/common/zeroconf/connection_zeroconf.py:218 +#: ../src/common/zeroconf/connection_zeroconf.py:244 msgid "Please check if Avahi is installed." msgstr "Bitte überprüfen Sie, ob Avahi installiert ist." -#: ../src/common/zeroconf/connection_zeroconf.py:227 -#: ../src/common/zeroconf/connection_zeroconf.py:231 +#: ../src/common/zeroconf/connection_zeroconf.py:253 +#: ../src/common/zeroconf/connection_zeroconf.py:257 msgid "Could not start local service" msgstr "Lokaler Dienst konnte nicht gestartet werden" -#: ../src/common/zeroconf/connection_zeroconf.py:228 +#: ../src/common/zeroconf/connection_zeroconf.py:254 #, python-format msgid "Unable to bind to port %d." msgstr "Konnte nicht mit Port %d verbinden." -#: ../src/common/zeroconf/connection_zeroconf.py:232 -#: ../src/common/zeroconf/connection_zeroconf.py:325 +#: ../src/common/zeroconf/connection_zeroconf.py:258 +#: ../src/common/zeroconf/connection_zeroconf.py:353 msgid "Please check if avahi-daemon is running." msgstr "Bitte überprüfen Sie, ob avahi-daemon läuft." -#: ../src/common/zeroconf/connection_zeroconf.py:324 +#: ../src/common/zeroconf/connection_zeroconf.py:352 #, python-format msgid "Could not change status of account \"%s\"" msgstr "Der Status des Kontos \"%s\" konnte nicht geändert werden." -#: ../src/common/zeroconf/connection_zeroconf.py:341 -msgid "You are not connected or not visible to others. Your message could not be sent." -msgstr "Sie sind nicht verbunden oder für andere nicht sichtbar. Ihre Nachricht konnte nicht versendet werden." +#: ../src/common/zeroconf/connection_zeroconf.py:369 +msgid "" +"You are not connected or not visible to others. Your message could not be " +"sent." +msgstr "" +"Sie sind nicht verbunden oder für andere nicht sichtbar. Ihre Nachricht " +"konnte nicht versendet werden." #. we're not english -#: ../src/common/zeroconf/connection_zeroconf.py:353 +#: ../src/common/zeroconf/connection_zeroconf.py:381 msgid "[This message is encrypted]" msgstr "[Diese Nachricht ist verschlüsselt]" -#: ../src/common/zeroconf/zeroconf.py:180 +#: ../src/common/zeroconf/zeroconf_avahi.py:183 +#: ../src/common/zeroconf/zeroconf_bonjour.py:194 #, python-format msgid "Error while adding service. %s" msgstr "Fehler beim Hinzufügen des Dienstes. %s" +#, fuzzy +#~ msgid "Select the account with which to synchronise" +#~ msgstr "JID des Kontakts mit dem Sie chatten möchten" + +#~ msgid "Save passphrase" +#~ msgstr "Passphrase speichern" + +#~ msgid "" +#~ "To continue, Gajim needs to access your stored secrets. Enter your " +#~ "passphrase" +#~ msgstr "" +#~ "Um fortzufahren benötigt Gajim Zugriff auf Ihre gespeicherten Passwörter. " +#~ "Geben Sie Ihre Passphrase ein" + +#, fuzzy +#~ msgid "Confirm Passphrase" +#~ msgstr "Falsche Passphrase" + +#, fuzzy +#~ msgid "Enter your new passphrase again for confirmation" +#~ msgstr "Erneut eingeben zur Bestätigung:" + +#, fuzzy +#~ msgid "Create Passphrase" +#~ msgstr "Passphrase speichern" + +#~ msgid "Passphrases did not match.\n" +#~ msgstr "Passwörter stimmen nicht überein.\n" + +#~ msgid "Gajim needs you to create a passphrase to encrypt stored secrets" +#~ msgstr "" +#~ "Sie müssen eine Passphrase angeben um Ihre gespeicherten Passwörter zu " +#~ "verschlüsseln" + +#~ msgid "Invite _Friends" +#~ msgstr "_Freunde einladen" + +#~ msgid "Build custom query" +#~ msgstr "Personalisierte Anfrage bauen" + +#~ msgid "" +#~ "Enter a contact jid or MUC jid here to view its history.\n" +#~ "If a contact is connected you can even enter his nick name.\n" +#~ msgstr "" +#~ "Geben Sie hier eine JID ein, im ihren Verlauf anzusehen.\n" +#~ "Wenn ein Kontakt eingeloggt ist, können Sie sogar seinen Spitznamen " +#~ "eingeben.\n" + +#~ msgid "Query Builder..." +#~ msgstr "Anfrage-Baukasten ..." + +#~ msgid "%s does not appear to be a valid JID" +#~ msgstr "%s scheint keine gültige JID zu sein" + +#~ msgid "_Discover Services..." +#~ msgstr "_Durchsuche Dienste..." + +#~ msgid "_Retype Password:" +#~ msgstr "Passwort e_rneut eingeben:" + +#~ msgid "_Use proxy" +#~ msgstr "_Proxy benutzen" + +#~ msgid "Accounts" +#~ msgstr "Konten" + +#~ msgid "" +#~ "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.\n" +#~ "This is only available if python-avahi is installed and avahi-daemon is " +#~ "running." +#~ msgstr "" +#~ "Wenn aktiviert, werden alle lokalen Kontakte, welche einen zu Bonjour " +#~ "kompatiblen Chat-Client (Wie z.B. iChat, Trillian oder Gaim) nutzen, in " +#~ "Ihrer Kontaktliste angezeigt. Dafür müssen Sie nicht mit einem Jabber-" +#~ "Server verbunden sein.\n" +#~ "Dies ist nur möglich, wenn python-avahi verfügbar ist und avahi-daemon " +#~ "läuft (Automatische Diensterkennung)." + +#~ msgid "" +#~ "If you have 2 or more accounts and this 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 nur ein Konto" + +#~ msgid "_Enable link-local messaging" +#~ msgstr "_Kontakte im LAN anzeigen" + +#~ msgid "_Modify" +#~ msgstr "_Ändern" + +#~ msgid "_Compact View Alt+C" +#~ msgstr "_Kompakte Ansicht Alt+C" + +#~ msgid "<b>Interface Customization</b>" +#~ msgstr "<b>Benutzerdefiniertes Aussehen</b>" + +#~ msgid "Also known as iChat style" +#~ msgstr "Auch als iChat-Stil bekannt" + +#~ msgid "Chat" +#~ msgstr "Chat" + +#~ msgid "E_very 5 minutes" +#~ msgstr "Alle 5 _Minuten" + +#~ msgid "" +#~ "Gajim will automatically show new events by popping up the relevant window" +#~ msgstr "" +#~ "Gajim wird neue Ereignisse automatisch anzeigen, indem das betreffende " +#~ "Fenster geöffnet wird" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ 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 aktiviert, erinnert sich Gajim an die Position und Größe der " +#~ "Kontaktliste auf dem Bildschirm beim nächsten Start" + +#~ msgid "On every _message" +#~ msgstr "In jeder _Zeile" + +#~ msgid "Outgoing Chat state noti_fications:" +#~ msgstr "_Sende Chatstatus:" + +#~ msgid "Print time:" +#~ msgstr "Zeit anzeigen:" + +#~ msgid "Save _position and size for roster and chat windows" +#~ msgstr "Speichere _Position und Größe der Kontaktliste und Chatfenster" + +#~ msgid "Show only in _roster" +#~ msgstr "Nur in der _Kontaktliste anzeigen" + +#~ msgid "Use t_rayicon (aka. notification area icon)" +#~ msgstr "Verwende _Trayicon (Benachrichtigungs-Icon)" + +#~ 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" + +#~ msgid "_Never" +#~ msgstr "_Nie" + +#~ msgid "_Notify me about it" +#~ msgstr "Be_nachrichtigen" + +#~ msgid "_Pop it up" +#~ msgstr "_Öffnen" + +#~ msgid "_Remove from Roster" +#~ msgstr "Entfernen von _Kontaktliste" + +#~ msgid "_Filter:" +#~ msgstr "_Filter:" + +#~ msgid "" +#~ "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" +#~ "\n" +#~ "Highlighting misspelled words feature will not be used" +#~ msgstr "" +#~ "Wenn das nicht die Sprache ist, für die Sie falschgeschriebene Wörter " +#~ "hervorheben möchten, setzen Sie bitte Ihre $LANG entsprechend. Z.B. für " +#~ "Französisch: export LANG=fr_FR oder export LANG=fr_FR.UTF-8 in ~/." +#~ "bash_profile or global in /etc/profile.\n" +#~ "\n" +#~ "Falschgeschriebene Wörter werden nicht hervorgehoben" + +#~ msgid "Every %s _minutes" +#~ msgstr "Alle %s _Minuten" + +#~ msgid "You must enter a password for the new account." +#~ msgstr "Sie müssen ein Passwort für das neue Konto eingeben." + +#~ msgid "Drop %s in group %s" +#~ msgstr "Setze %s in Gruppe %s" + +#~ msgid "Make %s and %s metacontacts" +#~ msgstr "Mache %s und %s Metakontakte" + +#~ msgid "Hides the buttons in two persons chat window." +#~ msgstr "Versteckt die Knöpfe im Zwei-Personen-Chatfenster" + +#~ msgid "Security error connecting to \"%s\"" +#~ msgstr "Konnte nicht mit %s verbinden" + +#~ msgid "" +#~ "The server's key has changed, or someone is trying to hack your " +#~ "connection." +#~ msgstr "" +#~ "Der Schlüssel des Servers wurde geändert oder jemand versucht ihre " +#~ "Verbindung zu hacken." + +#~ msgid "Unable to check fingerprint for %s. Connection could be insecure." +#~ msgstr "" +#~ "Konnte Fingerabdruck von %s nicht überprüfen. Die Verbindung ist " +#~ "möglicherweise unsicher." + +#~ msgid "Missing fingerprint in SSL connection to %s" +#~ msgstr "Fehlender Fingerabdruck in der SSL-Verbindung zu %s" + +#~ msgid "Fingerprint mismatch for %s: Got %s, expected %s" +#~ msgstr "Fingerabdruck von %s stimmt nicht überein: Erhalten %s, erwartet %s" + +#~ msgid " %d unread single message" +#~ msgid_plural " %d unread single messages" +#~ msgstr[0] " %d ungelesene Einzel-Nachricht" +#~ msgstr[1] " %d ungelesene Einzel-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" + +#~ msgid " %d unread private message" +#~ msgid_plural " %d unread private messages" +#~ msgstr[0] " %d ungelesene private Nachricht" +#~ msgstr[1] " %d ungelesene private Nachrichten" + +#~ msgid "gtk+" +#~ msgstr "gtk+" + #~ msgid "Private Chat" #~ msgstr "Privater Chat" + #~ msgid "Group Chat" #~ msgstr "Gruppenchat" + #~ msgid "invisible" #~ msgstr "unsichtbar" + #~ msgid "offline" #~ msgstr "abgemeldet" + #~ msgid "I'm %s" #~ msgstr "Ich bin %s" + #~ msgid "2003-12-13T18:30:02Z" #~ msgstr "2003-12-13T18:30:02Z" + #~ msgid "<small>Romeo and Juliet</small>" #~ msgstr "<small>Romeo und Julia</small>" + #~ msgid "Old stories" #~ msgstr "Alte Geschichten" + #~ msgid "Soliloquy" #~ msgstr "Selbstgespräch" + #~ msgid "A_fter nickname:" #~ msgstr "Nach dem Spit_znamen:" + #~ msgid "B_efore nickname:" #~ msgstr "Vor d_em Spitznamen:" + #~ msgid "_After time:" #~ msgstr "_Nach der Zeit:" + #~ msgid "_Before time:" #~ msgstr "_Vor der Zeit:" + #~ msgid "_Publish" #~ msgstr "_Veröffentlichen" + #~ msgid "_Retrieve" #~ msgstr "Ab_rufen" + #~ msgid "Information published" #~ msgstr "Informationen veröffentlicht" + #~ msgid "Without a connection, you can not get your contact information." #~ msgstr "Sie müssen angemeldet sein, um Kontakt-Informationen abzurufen" + #~ msgid "This is result of query." #~ msgstr "Dies ist das Ergebnis der Anfrage." + #~ msgid "Edit items on the list" #~ msgstr "Bearbeite Punkte auf der Liste" + #~ msgid "Receive a Message" #~ msgstr "Nachricht empfangen" + #~ msgid "Role: " #~ msgstr "Rolle:" -#~ msgid "Affiliation: " -#~ msgstr "Zugehörigkeit: " + #~ 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 "" #~ "Abzuspielender Ton, falls eine MUC-Nachricht ankommt. (Diese Einstellung " #~ "wirdnur beachtet, wenn notify_on_all_muc_messages aktiviert ist)" + #~ msgid "Create your own Privacy Lists" #~ msgstr "Erstelle eigene Privatliste" + #~ msgid "Server-based Privacy Lists" #~ msgstr "Server-basierte Privatliste" + #~ msgid "Contact _Info" #~ msgstr "Kontakt-_Info" + #~ msgid "Jabber ID" #~ msgstr "Jabber-ID" + #~ msgid "User ID" #~ msgstr "Benutzer-ID" + #~ msgid "Invalid room or server name" #~ msgstr "Ungültiger Raum oder Servername" + #~ msgid "Unknown D-Bus version: %s" #~ msgstr "Unbekannte D-BUS-Version: %s" + #~ msgid "vCard publication succeeded" #~ msgstr "vCard erfolgreich veröffentlicht" + #~ msgid "Your personal information has been published successfully." #~ msgstr "Ihre persönlichen Informationen wurden erfolgreich veröffentlicht." + #~ msgid "Gajim - %d unread message" #~ msgid_plural "Gajim - %d unread messages" #~ msgstr[0] "Gajim - %d ungelesene Nachricht" #~ msgstr[1] "Gajim - %d ungelesene Nachrichten" + #~ msgid "Since %s" #~ msgstr "Seit %s" + #~ msgid "Personal details" #~ msgstr "Persönliche Details" + #~ msgid "Be right back" #~ msgstr "Bin gleich zurück" + #~ msgid "Jabber" #~ msgstr "Jabber" + #~ msgid "Migrating Logs..." #~ msgstr "Migriere Logs ..." + #~ msgid "Automatically authorize contact" #~ msgstr "Kontakt automatisch autorisieren" + #~ msgid "Send File" #~ msgstr "Datei Senden" + #~ msgid "Underline" #~ msgstr "Unterstreichen" + #~ msgid "_Join New Room..." #~ msgstr "_Neuen Raum betreten..." -#~ msgid "Usage: /%s, sets the groupchat window to compact mode." -#~ msgstr "Bedienung: /%s, stellt das Gruppenchat-Fenster auf Kompaktmodus." + #~ msgid "<b>Please modify your special notification below</b>" #~ msgstr "<b>Bitte wählen Sie eine der Optionen:</b>" + #~ msgid "Delete Message of the Day" #~ msgstr "Lösche Nachricht des Tages" -#~ msgid "I want a notification popup:" -#~ msgstr "Sende Statusbenachrichtigungen:" + #~ msgid "I want to listen to:" #~ msgstr "%s möchte ihnen eine Datei senden:" + #~ msgid "Send _New Message..." #~ msgstr "Sende _neue Nachricht..." + #~ msgid "Set Message of the Day" #~ msgstr "Setze Message of the Day" + #~ msgid "Update Message of the Day" #~ msgstr "Aktualisiere Nachricht des Tages (MOTD)" + #~ msgid "_XML Console..." #~ msgstr "_XML Konsole..." -#~ msgid "Choose Avatar" -#~ msgstr "Avatar auswählen" + #~ msgid "Use compact view when you open a chat window" #~ msgstr "Kompaktansicht verwenden, wenn Sie ein Chatfenster öffnen" + #~ msgid "Use compact view when you open a group chat window" #~ msgstr "Verwende Kompaktansicht wenn ein Gruppenchat-Fenster geöffnet wird" + #~ msgid "plain" #~ msgstr "plain" + #~ msgid "Send" #~ msgstr "Senden" + #~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." #~ msgstr "" #~ "%(nickname)s im Raum %(room_name)s hat Ihnen eine neue Nachricht gesendet." + #~ msgid "%s has sent you a new message." #~ msgstr "%s hat Ihnen eine neue Nachricht gesendet." + #~ msgid "GUI Migration failed" #~ msgstr "vCard Veröffentlichung fehlgeschlagen" + #~ msgid "Logs have been successfully migrated to the database." #~ msgstr "Logs wurden erfolgreich in die Datenbank migriert." + #~ msgid "If checked, Gajim will also have a trayicon" #~ msgstr "Wenn aktiviert, wird Gajim ein Tray-Symbol verwenden" + #~ msgid "Start Chat with Contact" #~ msgstr "Starte Chat mit Account %s" + #~ msgid "All contacts in this group are offline or have errors" #~ msgstr "Alle Kontakte dieser Gruppe sind abgemeldet oder haben Fehler" + #~ msgid "Size: " #~ msgstr "Größe: " + #~ msgid "Session bus is not available" #~ msgstr "Session-Bus nicht verfügbar" + #~ msgid "Sound" #~ msgstr "Sound" + #~ msgid "Image" #~ msgstr "Bild" -#~ msgid "From %s" -#~ msgstr "Von %s" + #~ msgid "To %s" #~ msgstr "An %s" + #~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" #~ msgstr "Sie wurden in den Raum %(room_jid)s von %(contact_jid)s eingeladen" + #~ msgid "Manage Emoticons" #~ msgstr "Emoticons anpassen" + #~ msgid "Or choose a preset message:" #~ msgstr "Oder wählen Sie eine voreingestellte Nachricht:" + #~ msgid "Use _emoticons" #~ msgstr "_Emoticons verwenden" + #~ msgid "_Set Image..." #~ msgstr "_Bild wählen..." + #~ msgid "Switch to %s" #~ msgstr "Wechseln zu %s" + #~ msgid "using account " #~ msgstr "mit Konto" + #~ msgid "The filesize of image \"%s\" is too large" #~ msgstr "Die Dateigröße des Bildes \"%s\" ist zu groß" + #~ msgid "The file must not be more than 32 kilobytes." #~ msgstr "Die Datei darf nicht größer als 32 Kilobytes sein." + #~ msgid "Timeout" #~ msgstr "Timeout" + #~ msgid "account: " #~ msgstr "Konto: " + #~ msgid "Are you sure you want to leave rooms \"%s\"?" #~ msgstr "Möchten Sie die Räume \"%s\" wirklich verlassen?" + #~ msgid "If you close this window, you will be disconnected from these rooms." #~ msgstr "" #~ "Wenn Sie dieses Fenster schließen, wird die Verbindung mit diesen Räumen " #~ "abgebrochen." + #~ msgid "Activate/Disable notification for when a file transfer is complete" #~ msgstr "Benachrichtigung für beendete Dateitransfers ein/ausschalten" + #~ msgid "Removing selected file transfer" #~ msgstr "Ausgewählten Dateitransfer entfernen" + #~ msgid "Stoping selected file transfer" #~ msgstr "Bricht den ausgewählten Dateitransfer ab" + #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." #~ msgstr "" #~ "Wenn Sie diesen Reiter schließen und die History abgeschaltet haben, ist " #~ "die Nachricht verloren." + #~ msgid "Cannot remove last group" #~ msgstr "Letzte Gruppe kann nicht entfernt werden" + #~ msgid "At least one contact group must be present." #~ msgstr "Mindestens eine Gruppe wird benötigt." + #~ msgid "" #~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " #~ "pysqlite3, if you want to migrate your logs to the new database, please " @@ -6797,47 +8443,64 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ "Sie pysqlite2installiert haben, wenn Sie Ihre Logs in die neue Datenbank " #~ "migrieren möchte, lesen Siebitte: http://trac.gajim.org/wiki/" #~ "MigrateLogToDot9DB Beende ..." -#~ msgid "Image is too big" -#~ msgstr "Das Bild ist zu groß" + #~ msgid "" #~ "Image for emoticon has to be less than or equal to 24 pixels in width and " #~ "24 in height." #~ msgstr "" #~ "Das Bild darf eine Höhe und Breite von je 24 Pixeln nicht überschreiten." + #~ msgid "<b>Changes in latest version</b>" #~ msgstr "<b>Änderungen in der neuesten Version</b>" + #~ msgid "Check for new _version on Gajim startup" #~ msgstr "Beim Start von Gajim auf neue _Versionen prüfen" + #~ msgid "Log history" #~ msgstr "Log-Verlauf" + #~ msgid "New version of Gajim available" #~ msgstr "Es ist eine neue Version von Gajim verfügbar" + #~ msgid "Open Download Page" #~ msgstr "Download-Seite öffnen" + #~ msgid "(%s/s)" #~ msgstr "(%s/s)" + #~ msgid "Session bus is not available." #~ msgstr "Session-Bus nicht verfügbar." + #~ msgid "with account " #~ msgstr "Konto: " + #~ msgid "Chat with" #~ msgstr "Unterhalten mit" + #~ msgid "as %s" #~ msgstr "als %s" + #~ msgid "as " #~ msgstr "als " + #~ msgid "Send _New Message" #~ msgstr "Sende _neue Nachricht" + #~ msgid "Re_quest Authorization from" #~ msgstr "Autorisierung anfordern" + #~ msgid "Send Authorization to" #~ msgstr "Autorisierung senden" + #~ msgid "<b>Log</b>" #~ msgstr "<b>Log</b>" + #~ msgid "Log presences in _contact's log file" #~ msgstr "Anwesenheit in _Kontakt-Logdateien schreiben" + #~ msgid "Log presences in an _external file" #~ msgstr "Anwesenheit in eine _externe Datei speichern" + #~ 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." @@ -6845,12 +8508,14 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ "Sie können die erweiterten Konten-Optionen durch Klicken des Erweitert-" #~ "Buttons erreichen, oder später durch klicken des Konten Menüitems im " #~ "Bearbeiten-Menü." + #~ msgid "" #~ "Set value of 'key' to 'value'. If there is no such key, new item in the " #~ "preferences is inserted." #~ msgstr "" #~ "Setze den Wert von 'key' auf 'value'. Wenn kein solcher key existiert " #~ "wirdeine neuer Wert in den Einstellungen erstellt." + #~ 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 " @@ -6859,20 +8524,28 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ "Wenn eine neue Nachricht von einem neuen Kontakt in einem Chatfenster " #~ "empfangen wird, können die drei folgenden Aktionen ausgeführt werden, um " #~ "Sie darüber zu informieren" + #~ msgid "_Earliest" #~ msgstr "_Erste" + #~ msgid "_Latest" #~ msgstr "_Letzte" + #~ msgid "_Previous" #~ msgstr "_Vorherige" + #~ msgid "Filter query too short" #~ msgstr "Filteranfrage zu kurz" + #~ msgid "Query must be at least 3 characters long." #~ msgstr "Anfrage muss wenigstens 3 Zeichen lang sein." + #~ msgid "%s is now %s: %s" #~ msgstr "%s ist jetzt %s (%s)" + #~ msgid "Allow controlling Gajim via D-Bus service." #~ msgstr "Erlaube die Steuerung von Gajim mit dem D-Bus Dienst." + #~ msgid "" #~ "\n" #~ "\n" @@ -6885,6 +8558,7 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ "\n" #~ "== Originalnachricht ==\n" #~ "%s" + #~ msgid "" #~ "Your new account has been created successfully.\n" #~ "You can set advanced account options by pressing Advanced button,\n" @@ -6893,6 +8567,7 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ msgstr "" #~ "Konto wurde erfolgreich hinzugefügt.\n" #~ "Erweiterte Optionen sind über \"Ändern->Konten\" zu erreichen." + #~ msgid "" #~ "When we remove a contact, remove both his and our subscription, so we do " #~ "not receive his presence anymore and he ours." @@ -6900,18 +8575,17 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ "Wenn wir einen Kontakt entfernen, lösche sowohl sein als auch unser " #~ "Abonnement, damitwir nicht mehr gegenseitig über die Präsenz informiert " #~ "werden" + #~ msgid "" #~ "Should Gajim send inactive (\"is doing something else\") on just focus " #~ "out of window/switch to another tab?" #~ msgstr "" #~ "Soll Gajim Inaktivitätsbenachrichtungen von Tabs im Fokus an andere " #~ "Fenster/Tabs senden?" -#~ msgid "Error:" -#~ msgstr "Fehler:" + #~ msgid "Service" #~ msgstr "Dienst" -#~ msgid "Node" -#~ msgstr "Node" + #~ 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 " @@ -6919,49 +8593,69 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ msgstr "" #~ "Ihr neues Konto wurde erstellt und der Gajimkonfiguration hinzugefügt.\n" #~ "Erweiterte Optionen sind über \"Ändern->Konten\" zu erreichen." + #~ msgid "You need to enter a valid server address to add an account." #~ msgstr "" #~ "Sie müssen einen gültigen Server angeben, um ein neues Konto zu erstellen." + #~ msgid "Contact names must be of the form \"user@servername\"." #~ msgstr "Benutzernamen müssen die Form \"benutzer@servername\" haben." + #~ msgid "Invalid contact ID" #~ msgstr "Ungültige Benutzer-ID" + #~ msgid "Contact ID must be of the form \"username@servername\"." #~ msgstr "Benutzer-ID muss in der Form \"username@servername\" sein." + #~ msgid "Account registration successful" #~ msgstr "Kontoregistrierung erfolgreich" + #~ msgid "The account \"%s\" has been registered with the Jabber server." #~ msgstr "Konto \"%s\" wurde auf dem Jabberserver registriert." + #~ msgid "theme_name" #~ msgstr "thema_name" + #~ msgid "Edit" #~ msgstr "_Ändern" + #~ msgid "<b>Please fill in the data for your existing account</b>" #~ msgstr "<b>Bitte tragen Sie die Daten für ihr bestehendes Konto ein</b>" + #~ msgid "Check if you want to register for a new jabber account" #~ msgstr "Prüfen Sie, ob Sie ein neues Konto erstellen möchten" + #~ msgid "Click to get contact's extended information" #~ msgstr "Klicken, um erweiterte Informationen des Kontaktes einzusehen" + #~ msgid "_Compact View" #~ msgstr "_Kompakte Ansicht" + #~ msgid "_Refresh" #~ msgstr "_Aktualisieren" + #~ msgid "_Register new account" #~ msgstr "Neues Konto e_rstellen" + #~ msgid "You just received a new message in room \"%s\"" #~ msgstr "Sie haben eine neue Nachricht im Raum \"%s\" erhalten" + #~ msgid "" #~ "If you close this window and you have history disabled, this message will " #~ "be lost." #~ msgstr "" #~ "Wenn sie das Fenster schließen und die History abgeschaltet haben, geht " #~ "die Nachricht verloren." + #~ msgid "New _Room" #~ msgstr "Neuer _Raum" + #~ msgid "Always use compact _view" #~ msgstr "Benutze immer die kompakte Ansicht" + #~ msgid "Banner:" #~ msgstr "Banner:" + #~ 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 " @@ -6972,28 +8666,34 @@ msgstr "Fehler beim Hinzufügen des Dienstes. %s" #~ "den Chat- und Chatraumfenstern ausgeblendet. Mit Alt+C können Sie " #~ "schnell zwischen der kompakten und der normalen Ansicht umschalten. " #~ "Achtung: die jeweils letzte Ansicht wird nicht beibehalten" + #~ msgid "Inactivate account" #~ msgstr "Kein aktives Konto" -#~ msgid "Join _Group Chat..." -#~ msgstr "_Chatraum beitreten..." + #~ msgid "Po_sition:" #~ msgstr "Position:" + #~ msgid "Show roster window on Gajim startup" #~ msgstr "Kontaktliste beim Start von Gajim anzeigen" + #~ msgid "_Service Discovery" #~ msgstr "_Dienste durchsuchen" + #~ msgid "_Service Discovery..." #~ msgstr "_Dienste durchsuchen..." + #~ msgid "error appeared while processing xmpp:" #~ msgstr "Fehler während der Verarbeitung von 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 "" #~ "Stoppt den ausgewählten Dateitransfer. Unvollständige Dateien werden " #~ "gelöscht. Diese Aktion ist nicht rückgangig zu machen." + #~ msgid "Chan_ge" #~ msgstr "_Ändern" + #~ msgid "Unknown type %s " #~ msgstr "Unbekannter Typ %s " - diff --git a/po/fr.po b/po/fr.po index 7c2f285493..7149ff9ffd 100644 --- a/po/fr.po +++ b/po/fr.po @@ -2524,19 +2524,19 @@ msgstr "texte du message d'état :" #: ../src/config.py:1036 msgid "First Message Received" -msgstr "Premier Message Reçu" +msgstr "Premier message reçu" #: ../src/config.py:1037 msgid "Next Message Received" -msgstr "Message Suivant Reçu" +msgstr "Message reçu suivant" #: ../src/config.py:1038 msgid "Contact Connected" -msgstr "Contacte Connecté" +msgstr "Contact connecté" #: ../src/config.py:1039 msgid "Contact Disconnected" -msgstr "Contacte déconnecté" +msgstr "Contact déconnecté" #: ../src/config.py:1040 msgid "Message Sent" diff --git a/po/gl_ES.po b/po/gl.po similarity index 100% rename from po/gl_ES.po rename to po/gl.po diff --git a/po/it.po b/po/it.po index fbaf570e1f..1cf26330b3 100644 --- a/po/it.po +++ b/po/it.po @@ -5,17 +5,18 @@ # Mauro Brenna <malloblenne@gmail.com>, 2005,2006. # Andrea Ratti <scimiot@yahoo.it>, 2005. # Matteo Dell'Amico <della@linux.it>, 2005, 2006. -#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:210 -#: ../src/gajim-remote.py:236 ../src/gajim-remote.py:237 -#: ../src/gajim-remote.py:243 ../src/gajim-remote.py:244 +# Daniel Coppi <neoex.dc@gmail.com>, 2007. +#: ../src/gajim-remote.py:212 ../src/gajim-remote.py:219 #: ../src/gajim-remote.py:245 ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:252 ../src/gajim-remote.py:253 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:255 msgid "" msgstr "" "Project-Id-Version: Gajim 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-01-19 11:39+0100\n" -"PO-Revision-Date: 2007-01-31 14:26+0100\n" -"Last-Translator: Matteo Dell'Amico <della@linux.it>\n" +"POT-Creation-Date: 2007-09-14 21:09+0200\n" +"PO-Revision-Date: 2007-09-14 20:53+0100\n" +"Last-Translator: neoex <neoex.dc@gmail.com>\n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,35 +36,35 @@ msgid "Jabber IM Client" msgstr "Client IM Jabber" #: ../data/glade/account_context_menu.glade.h:1 -msgid "Send Single _Message..." -msgstr "Invia _messaggio singolo..." +#: ../data/glade/roster_window.glade.h:8 +msgid "Join _Group Chat..." +msgstr "Entra in chat di _gruppo..." #: ../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/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_Ricerca servizi" -#: ../data/glade/account_context_menu.glade.h:4 ../src/disco.py:1145 +#: ../data/glade/account_context_menu.glade.h:4 msgid "_Execute Command..." -msgstr "Esegui _comando..." +msgstr "_Esegui comando..." #: ../data/glade/account_context_menu.glade.h:5 -#: ../data/glade/roster_window.glade.h:16 -#: ../data/glade/systray_context_menu.glade.h:6 -msgid "_Group Chat" -msgstr "Chat di _gruppo" +msgid "_Modify Account" +msgstr "_Modifica account" #: ../data/glade/account_context_menu.glade.h:6 -#: ../data/glade/zeroconf_context_menu.glade.h:1 -msgid "_Modify Account..." -msgstr "_Modifica account..." +msgid "_Open Gmail Inbox" +msgstr "_Apri posta ricevuta" #: ../data/glade/account_context_menu.glade.h:7 -msgid "_Open Gmail Inbox" -msgstr "_Apri composizione email" +#: ../data/glade/roster_window.glade.h:22 +msgid "_Start Chat..." +msgstr "_Inizia chat..." #: ../data/glade/account_context_menu.glade.h:8 #: ../data/glade/zeroconf_context_menu.glade.h:2 @@ -72,11 +73,11 @@ msgstr "_Stato" #: ../data/glade/account_creation_wizard_window.glade.h:1 msgid "" -"<b>Account is being created</b>\n" +"<b>Connecting to server</b>\n" "\n" "Please wait..." msgstr "" -"<b>Creazione dell'account in corso</b>\n" +"<b>Connessione al server</b>\n" "\n" "Attendere prego..." @@ -89,50 +90,68 @@ msgid "<b>Please fill in the data for your new account</b>" msgstr "<b>Inserire i dati per il nuovo account</b>" #: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "<b>Please select a server</b>" +msgstr "<b>Selezionare un server</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 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" +"Clicca per vedere i servizi (come i trasporti MSN o ICQ) dei server Jabber" -#: ../data/glade/account_creation_wizard_window.glade.h:7 +#: ../data/glade/account_creation_wizard_window.glade.h:8 msgid "Connect when I press Finish" -msgstr "Collegati alla pressione di Fine" +msgstr "Connettiti alla pressione di Fine" -#: ../data/glade/account_creation_wizard_window.glade.h:8 +#: ../data/glade/account_creation_wizard_window.glade.h:9 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" +#: ../data/glade/account_creation_wizard_window.glade.h:10 +#, fuzzy +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 +#: ../data/glade/account_creation_wizard_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:22 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:38 -msgid "Save pass_word" -msgstr "_Memorizza password" +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "Gestisci..." #: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Prox_y:" +msgstr "Prox_y:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:48 +msgid "Save pass_word" +msgstr "Ricorda la pass_word" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 msgid "Servers Features" msgstr "Servizi del server" -#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_creation_wizard_window.glade.h:17 msgid "Set my profile when I connect" -msgstr "Imposta il profilo durante la connessione" +msgstr "Configura il mio profilo appena effettuata la connessione" -#: ../data/glade/account_creation_wizard_window.glade.h:16 +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "Usa hostname/porta personalizzati" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 msgid "" "You need to have an account in order to connect\n" "to the Jabber network." @@ -140,67 +159,63 @@ msgstr "" "È necessario avere un account per connettersi\n" "alla rete Jabber." -#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_creation_wizard_window.glade.h:21 msgid "Your JID:" msgstr "Il tuo JID:" -#: ../data/glade/account_creation_wizard_window.glade.h:19 -#: ../data/glade/roster_window.glade.h:11 +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 msgid "_Advanced" msgstr "_Avanzato" -#: ../data/glade/account_creation_wizard_window.glade.h:20 +#: ../data/glade/account_creation_wizard_window.glade.h:23 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:24 +msgid "_Hostname:" +msgstr "Nome dell'_host: " -#: ../data/glade/account_creation_wizard_window.glade.h:22 -#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 msgid "_Password:" msgstr "_Password:" -#: ../data/glade/account_creation_wizard_window.glade.h:23 -#: ../data/glade/manage_proxies_window.glade.h:10 +#: ../data/glade/account_creation_wizard_window.glade.h:26 +#: ../data/glade/manage_proxies_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:27 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 +#: ../data/glade/account_creation_wizard_window.glade.h:28 +#: ../data/glade/manage_proxies_window.glade.h:12 msgid "_Username:" msgstr "_Nome utente:" #: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 #: ../data/glade/preferences_window.glade.h:8 msgid "<b>Miscellaneous</b>" msgstr "<b>Varie</b>" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "<b>OpenPGP</b>" msgstr "<b>OpenPGP</b>" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "<b>Personal Information</b>" msgstr "<b>Informazioni personali</b>" #: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 msgid "Account" msgstr "Account" @@ -209,68 +224,93 @@ msgid "Account Modification" msgstr "Modifica account" #: ../data/glade/account_modification_window.glade.h:6 -msgid "Auto-reconnect when connection is lost" -msgstr "Riconnettiti automaticamente quando si perde la connessione" +#: ../data/glade/accounts_window.glade.h:5 +msgid "Administration operations" +msgstr "Operazioni amministrative" #: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 +msgid "Auto-reconnect when connection is lost" +msgstr "Riconnetti automaticamente quando si perde la connessione" + +#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 #: ../data/glade/zeroconf_properties_window.glade.h:3 msgid "C_onnect on Gajim startup" -msgstr "_Connetti all'avvio di Gajim" +msgstr "C_onnetti all'avvio di Gajim" -#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 msgid "Chan_ge Password" msgstr "_Cambia password" -#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/accounts_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." +"Se marcato, 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 +#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/accounts_window.glade.h:10 #: ../data/glade/zeroconf_properties_window.glade.h:4 msgid "Choose _Key..." msgstr "Scegli _chiave..." -#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_window.glade.h:11 msgid "Click to change account's password" -msgstr "Cliccare per cambiare la password dell'account" +msgstr "Clicca per cambiare la password dell'account" -#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "" +"Clicca per richiedere l'autorizzazione a tutti i contatti di un altro account" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 msgid "Connection" msgstr "Connessione" -#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 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:458 -#: ../src/notify.py:480 ../src/notify.py:492 ../src/common/helpers.py:914 +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:471 +#: ../src/notify.py:493 ../src/notify.py:505 ../src/common/helpers.py:964 +#: ../src/common/helpers.py:976 msgid "Gajim" msgstr "Gajim" -#. Contact is not in a group, so count it in General group -#: ../data/glade/account_modification_window.glade.h:15 -#: ../data/glade/preferences_window.glade.h:51 +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 #: ../data/glade/zeroconf_properties_window.glade.h:7 -#: ../src/roster_window.py:346 ../src/roster_window.py:1225 -#: ../src/roster_window.py:1436 ../src/roster_window.py:2112 -#: ../src/roster_window.py:2154 ../src/common/contacts.py:280 +#: ../src/roster_window.py:359 ../src/roster_window.py:624 +#: ../src/roster_window.py:1360 ../src/roster_window.py:1728 +#: ../src/roster_window.py:2112 ../src/roster_window.py:2628 +#: ../src/roster_window.py:2746 ../src/common/contacts.py:309 msgid "General" msgstr "Generale" -#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 msgid "Hostname: " msgstr "Nome dell'host: " -#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 msgid "" "If checked, Gajim will also broadcast some more IPs except from just your " "IP, so file transfer has higher chances of working." @@ -279,7 +319,8 @@ msgstr "" "su cui viene eseguito, di modo che il trasferimento file abbia maggiori " "possibilità di funzionare correttamente." -#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/accounts_window.glade.h:23 msgid "" "If checked, Gajim will send keep-alive packets to prevent connection timeout " "which results in disconnection" @@ -287,94 +328,107 @@ 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 +#: ../data/glade/account_modification_window.glade.h:22 +#: ../data/glade/accounts_window.glade.h:24 #: ../data/glade/zeroconf_properties_window.glade.h:8 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" +"di lettura solo per l'utente corrente" -#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/accounts_window.glade.h:25 #: ../data/glade/zeroconf_properties_window.glade.h:9 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." +"usando questo account" -#: ../data/glade/account_modification_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/accounts_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:10 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" +"Se marcato, ogni cambio allo stato globale (gestito dal menu a tendina sotto " +"la lista contatti) cambierà anche lo stato di questo account" -#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/account_modification_window.glade.h:25 +#: ../data/glade/accounts_window.glade.h:29 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 -#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1617 -#: ../src/config.py:3409 +#: ../data/glade/account_modification_window.glade.h:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1524 +#: ../src/config.py:2010 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:1197 -#: ../src/config.py:1202 ../src/config.py:1386 ../src/config.py:1607 -#: ../src/config.py:1616 ../src/config.py:1675 ../src/config.py:1749 -#: ../src/config.py:3399 ../src/config.py:3408 ../src/dialogs.py:281 -#: ../src/dialogs.py:283 +#. GPG Key +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1110 +#: ../src/config.py:1181 ../src/config.py:1430 ../src/config.py:1435 +#: ../src/config.py:1906 ../src/config.py:1993 ../src/config.py:2009 +#: ../src/config.py:3109 ../src/config.py:3155 ../src/dialogs.py:286 +#: ../src/dialogs.py:288 ../src/roster_window.py:1832 +#: ../src/roster_window.py:1839 ../src/roster_window.py:1846 msgid "None" msgstr "Nessuno" -#: ../data/glade/account_modification_window.glade.h:28 -#: ../data/glade/profile_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 +#: ../data/glade/profile_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:17 msgid "Personal Information" msgstr "Informazioni personali" -#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 msgid "Port: " msgstr "Porta: " -#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 msgid "Priori_ty:" -msgstr "Pr_iorità :" +msgstr "Priori_tà :" -#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/accounts_window.glade.h:40 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." +"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 +#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 msgid "Priority will change automatically according to your status." msgstr "La priorità cambierà automaticamente in funzione del tuo stato." -#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 msgid "Proxy:" msgstr "Proxy:" -#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 msgid "Resour_ce:" msgstr "_Risorsa: " -#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/accounts_window.glade.h:45 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 " @@ -383,97 +437,132 @@ msgid "" "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 " +"client connessi allo stesso account. 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)." +"contemporaneamente. La risorsa con la priorità maggiore riceverà gli eventi. " +"(vedi sotto)" -#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/accounts_window.glade.h:46 #: ../data/glade/zeroconf_properties_window.glade.h:18 msgid "Save _passphrase (insecure)" msgstr "Salva _passphrase (non sicuro)" -#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:47 #: ../data/glade/zeroconf_properties_window.glade.h:19 msgid "Save conversation _logs for all contacts" -msgstr "Memorizza i _log delle conversazioni con tutti i contatti" +msgstr "_Registra le conversazioni con tutti i contatti" -#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:49 msgid "Send keep-alive packets" msgstr "Invia pacchetti di keep-alive" -#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:50 #: ../data/glade/zeroconf_properties_window.glade.h:20 msgid "Synch_ronize account status with global status" -msgstr "_Sincronizza lo stato dell'account con lo stato globale" +msgstr "Sinc_ronizza lo stato dell'account con lo stato globale" -#: ../data/glade/account_modification_window.glade.h:41 -msgid "Use _SSL (legacy)" -msgstr "Usa _SSL (legacy)" +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:51 +msgid "Synchronise contacts" +msgstr "Sincronizza contatti" -#: ../data/glade/account_modification_window.glade.h:42 -msgid "Use custom hostname/port" -msgstr "Usa hostname/port personalizzati" +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 +msgid "Use _SSL (legacy)" +msgstr "Usa _SSL (vecchio)" -#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 msgid "Use file transfer proxies" msgstr "Usa proxy per il trasferimento file" -#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 msgid "_Adjust to status" msgstr "_Modifica lo stato" -#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 msgid "_Jabber ID:" msgstr "ID _Jabber:" -#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/account_modification_window.glade.h:49 msgid "_Name:" msgstr "_Nome:" -#: ../data/glade/accounts_window.glade.h:1 -msgid "Accounts" -msgstr "Account" +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "E-Mail:" -#: ../data/glade/accounts_window.glade.h:2 -msgid "" -"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.\n" -"This is only available if python-avahi is installed and avahi-daemon is " -"running." -msgstr "" -"Se selezionato, tutti i contatti locali che usano un client chat compatibile " -"con Bonjour (es. IChat, Trillian or Gaim) saranno visibili nella lista " -"contatti. Non è necessario essere connesso a un server jabber affinché " -"funzioni.\n" -"Questo è possibile solo se python-avahi è installato e avahi-daemon è in " -"esecuzione." +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Abilita" -#: ../data/glade/accounts_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "Nome:" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 msgid "" -"If you have 2 or more accounts and this is checked, Gajim will list all " -"contacts as if you had one account" +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." msgstr "" -"Se marcato e se sono presenti 2 o più account, Gajim mostrerà tutti i " -"contatti come se ci fosse un unico account" +"Se la porta predefinita usata per i messaggi in entrata non si adatta alle " +"tue configurazioni puoi selezionarne un'altra qui.\n" +"Potresti considerare di cambiare la configurazione del firewall" -#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:453 +msgid "Jabber ID:" +msgstr "ID Jabber: " + +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "Cognome:" + +#: ../data/glade/accounts_window.glade.h:33 msgid "Mer_ge accounts" msgstr "_Unisci account" -#: ../data/glade/accounts_window.glade.h:6 -msgid "_Enable link-local messaging" -msgstr "_Abilita la messaggistica sulla rete locale" +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2698 +msgid "Re_name" +msgstr "Ri_nomina" -#: ../data/glade/accounts_window.glade.h:7 -msgid "_Modify" -msgstr "_Modifica" +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Usa porta personalizzata:" -#: ../data/glade/accounts_window.glade.h:8 -#: ../data/glade/remove_account_window.glade.h:4 -msgid "_Remove" -msgstr "_Elimina" +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "gtk-add" + +#: ../data/glade/accounts_window.glade.h:60 +msgid "gtk-close" +msgstr "gtk-close" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "gtk-remove" #: ../data/glade/add_new_contact_window.glade.h:1 msgid "A_ccount:" @@ -508,8 +597,8 @@ msgid "" "You must be connected to the transport to be able\n" "to add a contact from this protocol." msgstr "" -"È necessario essere connesso all'account per poter aggiungere\n" -" un contatto da questo protocollo" +"È necessario essere connesso al trasporto per poter aggiungere\n" +" un contatto da questo protocollo." #: ../data/glade/add_new_contact_window.glade.h:11 msgid "_Group:" @@ -533,11 +622,11 @@ msgstr "_ID utente:" #: ../data/glade/adhoc_commands_window.glade.h:1 msgid "<b>An error has occurred:</b>" -msgstr "<b>È avvenuto un errore:</b>" +msgstr "<b>Si è verificato un errore:</b>" #: ../data/glade/adhoc_commands_window.glade.h:2 msgid "<b>Choose command to execute:</b>" -msgstr "<b>Scegliere il comando da eseguire:</b>" +msgstr "<b>Scegli il comando da eseguire:</b>" #: ../data/glade/adhoc_commands_window.glade.h:3 msgid "Ad-hoc Commands - Gajim" @@ -545,7 +634,7 @@ msgstr "Comandi ad-hoc - Gajim" #: ../data/glade/adhoc_commands_window.glade.h:4 msgid "Check once more" -msgstr "Controlla un'altra volta" +msgstr "Controlla ancora" #: ../data/glade/adhoc_commands_window.glade.h:5 msgid "Error description..." @@ -557,7 +646,7 @@ msgstr "Attendere durante il recupero della lista comandi..." #: ../data/glade/adhoc_commands_window.glade.h:7 msgid "Please wait while the command is sending..." -msgstr "Attendere durante l'invio del comando.." +msgstr "Attendere durante l'invio del comando..." #: ../data/glade/adhoc_commands_window.glade.h:8 msgid "Please wait..." @@ -565,7 +654,7 @@ msgstr "Attendere..." #: ../data/glade/adhoc_commands_window.glade.h:9 msgid "This jabber entity does not expose any commands." -msgstr "Questa entità jabber non mostra alcun comando." +msgstr "Questa entità Jabber non mostra alcun comando." #: ../data/glade/advanced_configuration_window.glade.h:1 msgid "<b>Description</b>" @@ -573,7 +662,9 @@ msgstr "<b>Descrizione</b>" #: ../data/glade/advanced_configuration_window.glade.h:2 msgid "<b>NOTE:</b> You should restart Gajim for some settings to take effect" -msgstr "<b>NOTA:</b> È necessario riavviare Gajim perché alcune impostazioni abbiano effetto" +msgstr "" +"<b>NOTA:</b> È necessario riavviare Gajim perché alcune impostazioni abbiano " +"effetto" #: ../data/glade/advanced_configuration_window.glade.h:3 msgid "Advanced Configuration Editor" @@ -592,44 +683,40 @@ 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 users currently connected to this server" -msgstr "Invia un messaggio agli utenti attualmenti connessi a questo server" +msgid "Edit _Privacy Lists..." +msgstr "Modifica liste _privacy..." #: ../data/glade/advanced_menuitem_menu.glade.h:4 -msgid "Set MOTD" -msgstr "Imposta MOTD" +msgid "Sends a message to users currently connected to this server" +msgstr "Invia un messaggio agli utenti attualmenti connessi a questo server" #: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Set MOTD..." +msgstr "Imposta MOTD..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 msgid "Sets Message of the Day" msgstr "Imposta messaggio del giorno" -#: ../data/glade/advanced_menuitem_menu.glade.h:6 +#: ../data/glade/advanced_menuitem_menu.glade.h:7 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 "Update MOTD..." +msgstr "Aggiorna MOTD..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 msgid "Updates Message of the Day" msgstr "Aggiorna il messaggio del giorno" -#: ../data/glade/advanced_menuitem_menu.glade.h:9 +#: ../data/glade/advanced_menuitem_menu.glade.h:10 msgid "_Administrator" msgstr "_Amministratore" -#: ../data/glade/advanced_menuitem_menu.glade.h:10 -msgid "_Privacy Lists" -msgstr "_Liste privacy" - #: ../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" +msgid "_Send Server Message..." +msgstr "_Invia messaggio server..." #: ../data/glade/advanced_notifications_window.glade.h:1 msgid " a window/tab opened with that contact " @@ -644,7 +731,7 @@ msgid "<b>Conditions</b>" msgstr "<b>Condizioni</b>" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "<b>Sounds</b>" msgstr "<b>Suoni</b>" @@ -654,14 +741,14 @@ msgstr "Azioni avanzate" #: ../data/glade/advanced_notifications_window.glade.h:6 msgid "Advanced Notifications Control" -msgstr "Controllo notifiche avanzato" +msgstr "Gestione avanzata delle notifiche" #: ../data/glade/advanced_notifications_window.glade.h:7 msgid "All statuses" msgstr "Tutti gli stati" #: ../data/glade/advanced_notifications_window.glade.h:8 -#: ../src/common/commands.py:91 ../src/common/helpers.py:243 +#: ../src/common/commands.py:91 ../src/common/helpers.py:246 msgid "Away" msgstr "Assente" @@ -678,7 +765,7 @@ msgid "Have " msgstr "Ho " #: ../data/glade/advanced_notifications_window.glade.h:12 -#: ../src/common/helpers.py:253 +#: ../src/common/helpers.py:256 msgid "Invisible" msgstr "Invisibile" @@ -687,7 +774,7 @@ msgid "Launch a command" msgstr "Lancia un comando" #: ../data/glade/advanced_notifications_window.glade.h:14 -#: ../src/common/helpers.py:226 +#: ../src/common/helpers.py:229 msgid "Not Available" msgstr "Non disponibile" @@ -701,7 +788,7 @@ msgstr "Online / Libero per chat" #: ../data/glade/advanced_notifications_window.glade.h:17 msgid "Play a sound" -msgstr "Riproduci suono" +msgstr "Riproduci un suono" #: ../data/glade/advanced_notifications_window.glade.h:18 msgid "" @@ -752,7 +839,7 @@ msgstr "_Disabilita l'evento di apparizione nella lista contatti" #: ../data/glade/advanced_notifications_window.glade.h:32 msgid "_Disable showing event in systray" -msgstr "_Disabilita l'evento di apparizione nell'area di notifica" +msgstr "_Disabilita la visualizzazione dell'evento nell'area di notifica" #: ../data/glade/advanced_notifications_window.glade.h:33 msgid "_Inform me with a popup window" @@ -768,11 +855,11 @@ msgstr "Mostra evento nella lista _contatti" #: ../data/glade/advanced_notifications_window.glade.h:36 msgid "_Show event in systray" -msgstr "Mostra evento nella s_ystray" +msgstr "_Mostra evento nell'area di notifica" #: ../data/glade/advanced_notifications_window.glade.h:37 msgid "and I " -msgstr "ed io" +msgstr "ed io " #: ../data/glade/advanced_notifications_window.glade.h:38 msgid "" @@ -793,38 +880,22 @@ msgid "when I'm in" msgstr "quando sono in" #: ../data/glade/atom_entry_window.glade.h:1 -msgid "2003-12-13T18:30:02Z" -msgstr "2003-12-13T18:30:02Z" - -#: ../data/glade/atom_entry_window.glade.h:2 -msgid "<small>Romeo and Juliet</small>" -msgstr "<small>Romeo e Giulietta</small>" - -#: ../data/glade/atom_entry_window.glade.h:3 msgid "Entry:" msgstr "Voce:" -#: ../data/glade/atom_entry_window.glade.h:4 +#: ../data/glade/atom_entry_window.glade.h:2 msgid "Feed name:" msgstr "Nome feed:" -#: ../data/glade/atom_entry_window.glade.h:5 +#: ../data/glade/atom_entry_window.glade.h:3 msgid "Last modified:" msgstr "Ultima modifica:" -#: ../data/glade/atom_entry_window.glade.h:6 +#: ../data/glade/atom_entry_window.glade.h:4 msgid "New entry received" msgstr "Nuova voce ricevuta" -#: ../data/glade/atom_entry_window.glade.h:7 -msgid "Old stories" -msgstr "Vecchie storie" - -#: ../data/glade/atom_entry_window.glade.h:8 -msgid "Soliloquy" -msgstr "Soliloquio" - -#: ../data/glade/atom_entry_window.glade.h:9 +#: ../data/glade/atom_entry_window.glade.h:5 msgid "You have received new entry:" msgstr "Hai ricevuto un nuovo evento:" @@ -857,15 +928,13 @@ 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:10 -msgid "_Add to Roster" -msgstr "_Aggiungi ai contatti" +#: ../data/glade/roster_contact_context_menu.glade.h:12 +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" +msgstr "_Copia JID/indirizzo email" #: ../data/glade/chat_context_menu.glade.h:4 msgid "_Copy Link Location" @@ -880,7 +949,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:20 #: ../data/glade/subscription_request_popup_menu.glade.h:1 #: ../data/glade/systray_context_menu.glade.h:7 msgid "_Start Chat" @@ -888,34 +956,43 @@ 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" +msgstr "Clicca 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:8 +msgid "Invite _Friends" +msgstr "Invita _amici" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 #: ../data/glade/zeroconf_contact_context_menu.glade.h:4 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:4 +msgid "Toggle End to End Encryption" +msgstr "Attiva cifratura end-to-end" #: ../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" +msgid "Toggle Open_PGP Encryption" +msgstr "Attiva cifratura Open_PGP" #: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "_Aggiungi ai contatti" + +#: ../data/glade/chat_control_popup_menu.glade.h:7 #: ../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:13 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 #: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2567 msgid "_History" msgstr "_Cronologia" #: ../data/glade/data_form_window.glade.h:1 msgid "Fill in the form." -msgstr "Completa nel form" +msgstr "Completa nel form." #: ../data/glade/data_form_window.glade.h:2 msgid "Room Configuration" @@ -979,7 +1056,7 @@ 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:769 +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:774 msgid "_Continue" msgstr "_Continua" @@ -987,7 +1064,7 @@ msgstr "_Continua" 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 +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:186 msgid "_Open Containing Folder" msgstr "_Apri cartella" @@ -1048,16 +1125,16 @@ msgid "" "MUC\n" "Messages" msgstr "" -"Messaggi\n" -"MUC" +"Messaggi di una\n" +"chat di gruppo" #: ../data/glade/gajim_themes_window.glade.h:15 msgid "" "MUC Directed\n" "Messages" msgstr "" -"Messaggi diretti\n" -"a MUC" +"Messaggi inviati in\n" +"una chat di gruppo" #: ../data/glade/gajim_themes_window.glade.h:17 msgid "Paused" @@ -1076,58 +1153,70 @@ msgid "_Background:" msgstr "_Sfondo:" #: ../data/glade/gc_control_popup_menu.glade.h:1 -msgid "Change _Nickname" -msgstr "Cambia _nickname" +msgid "Change _Nickname..." +msgstr "Cambia _nickname..." #: ../data/glade/gc_control_popup_menu.glade.h:2 -msgid "Change _Subject" -msgstr "Cambia _oggetto" +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" +msgstr "Clicca 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" +msgid "Configure _Room..." +msgstr "Configura la _stanza..." #: ../data/glade/gc_control_popup_menu.glade.h:5 -msgid "_Bookmark This Room" -msgstr "Inserire un _segnalibro per questa stanza" +msgid "_Bookmark" +msgstr "Aggiungi _segnalibro" + +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" +msgstr "_Elimina stanza" + +#: ../data/glade/gc_control_popup_menu.glade.h:8 +msgid "_Manage Room" +msgstr "Gestisci stanza" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "_Minimizza alla chiusura" #: ../data/glade/gc_occupants_menu.glade.h:1 msgid "Mo_derator" msgstr "Mo_deratore" -#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:2 +msgid "Occupant Actions" +msgstr "Azioni partecipante" + +#: ../data/glade/gc_occupants_menu.glade.h:5 msgid "_Admin" -msgstr "_Admin" +msgstr "_Amministratore" -#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:6 msgid "_Ban" msgstr "_Bandisci" -#: ../data/glade/gc_occupants_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:8 msgid "_Kick" msgstr "_Caccia" -#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:9 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 +#: ../data/glade/gc_occupants_menu.glade.h:10 msgid "_Owner" msgstr "_Proprietario" -#: ../data/glade/gc_occupants_menu.glade.h:10 +#: ../data/glade/gc_occupants_menu.glade.h:11 msgid "_Send Private Message" msgstr "_Invia messaggio privato" -#: ../data/glade/gc_occupants_menu.glade.h:11 +#: ../data/glade/gc_occupants_menu.glade.h:12 msgid "_Voice" msgstr "_Voce" @@ -1135,7 +1224,7 @@ msgstr "_Voce" msgid "Create new post" msgstr "Crea nuovo post" -#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:268 +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:271 msgid "From" msgstr "Da" @@ -1155,15 +1244,15 @@ msgid "" "If you plan to do massive deletions, please make sure Gajim is not running. " "Generally avoid deletions with contacts you currently chat with." msgstr "" -"<big><b>Benvenuti al gestore delle cronologie di Gajim</b></big>\n" +"<big><b>Benvenuto nel gestore della cronologia di Gajim</b></big>\n" "\n" -"Si possono selezionare elementi alla sinistra e/o cercare nella base dati da " -"sotto.\n" +"Puoi selezionare le conversazioni da sinistra e/o cercare nel database " +"tramite il campo in basso.\n" "\n" "<b>ATTENZIONE:</B>\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." +"Se hai intenzione di cancellare molte cose, verifica che Gajim non sia in " +"esecuzione. Generalmente evita di eliminare conversazioni dei contatti con " +"cui stai chattando." #: ../data/glade/history_manager.glade.h:7 msgid "Delete" @@ -1175,29 +1264,51 @@ msgstr "Esporta" #: ../data/glade/history_manager.glade.h:9 msgid "Gajim History Logs Manager" -msgstr "Gestore delle cronologie di Gajim" +msgstr "Gestore cronologia di Gajim" #: ../data/glade/history_manager.glade.h:10 msgid "_Search Database" -msgstr "_Cerca base dati" +msgstr "_Cerca nel database" #: ../data/glade/history_window.glade.h:1 +msgid "<b>History Viewer</b>" +msgstr "<b>Gestore cronologia</b>" + +#: ../data/glade/history_window.glade.h:2 +msgid "<b>JID Selection</b>" +msgstr "<b>Selezione JID</b>" + +#: ../data/glade/history_window.glade.h:3 msgid "Build custom query" msgstr "Costruisci richiesta personalizzata" -#: ../data/glade/history_window.glade.h:2 +#: ../data/glade/history_window.glade.h:4 ../src/history_window.py:199 msgid "Conversation History" msgstr "Cronologia conversazione" -#: ../data/glade/history_window.glade.h:3 +#: ../data/glade/history_window.glade.h:5 +msgid "" +"Enter a contact jid or MUC jid here to view its history.\n" +"If a contact is connected you can even enter his nick name.\n" +msgstr "" +"Inserisci il JID di un contatto o di una stanza di gruppo per visualizzarne " +"la cronologia.\n" +"Se il contatto è connesso puoi anche inserire il suo nickname.\n" + +#: ../data/glade/history_window.glade.h:8 msgid "Query Builder..." msgstr "Costruttore richieste..." -#: ../data/glade/history_window.glade.h:4 +#: ../data/glade/history_window.glade.h:9 msgid "Search" msgstr "Cerca" -#: ../data/glade/history_window.glade.h:5 +#: ../data/glade/history_window.glade.h:10 +#: ../data/glade/zeroconf_information_window.glade.h:10 +msgid "_Log conversation history" +msgstr "_Memorizza cronologia conversazione" + +#: ../data/glade/history_window.glade.h:11 ../src/disco.py:1172 msgid "_Search" msgstr "_Cerca" @@ -1214,7 +1325,7 @@ msgstr "Nega" msgid "Invitation Received" msgstr "Invito ricevuto" -#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1148 +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1265 msgid "Join Group Chat" msgstr "Entra in chat di gruppo" @@ -1223,14 +1334,14 @@ msgid "Join this room automatically when I connect" msgstr "Entra automaticamente in questa stanza alla connessione" #: ../data/glade/join_groupchat_window.glade.h:3 -#: ../data/glade/manage_bookmarks_window.glade.h:4 -#: ../data/glade/profile_window.glade.h:23 -#: ../data/glade/vcard_information_window.glade.h:29 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/profile_window.glade.h:24 +#: ../data/glade/vcard_information_window.glade.h:31 msgid "Nickname:" msgstr "Nickname:" #: ../data/glade/join_groupchat_window.glade.h:4 -#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:6 msgid "Password:" msgstr "Password:" @@ -1239,12 +1350,12 @@ msgid "Recently:" msgstr "Recenti:" #: ../data/glade/join_groupchat_window.glade.h:6 -#: ../data/glade/manage_bookmarks_window.glade.h:7 +#: ../data/glade/manage_bookmarks_window.glade.h:8 msgid "Room:" msgstr "Stanza:" -#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1163 -#: ../src/disco.py:1546 +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1160 +#: ../src/disco.py:1615 msgid "_Join" msgstr "_Entra" @@ -1258,21 +1369,25 @@ 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" +msgstr "Se marcato, Gajim entrerà in questa chat di gruppo all'avvio" #: ../data/glade/manage_bookmarks_window.glade.h:3 msgid "Manage Bookmarks" msgstr "Gestisci segnalibri" -#: ../data/glade/manage_bookmarks_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "Minimizza automaticamente" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 msgid "Print status:" msgstr "Scrivi stato:" -#: ../data/glade/manage_bookmarks_window.glade.h:8 +#: ../data/glade/manage_bookmarks_window.glade.h:9 msgid "Server:" msgstr "Server:" -#: ../data/glade/manage_bookmarks_window.glade.h:9 +#: ../data/glade/manage_bookmarks_window.glade.h:10 msgid "Title:" msgstr "Titolo:" @@ -1285,46 +1400,59 @@ msgid "<b>Settings</b>" msgstr "<b>Impostazioni</b>" #: ../data/glade/manage_proxies_window.glade.h:3 -msgid "HTTP Connect" -msgstr "Connessione HTTP" +#, fuzzy +msgid "" +"HTTP Connect\n" +"SOCKS5" +msgstr "" +"Connessione HTTP\n" +"SOCKS5" -#: ../data/glade/manage_proxies_window.glade.h:4 +#: ../data/glade/manage_proxies_window.glade.h:5 msgid "Manage Proxy Profiles" msgstr "Gestisci profili proxy" -#: ../data/glade/manage_proxies_window.glade.h:5 -#: ../data/glade/profile_window.glade.h:22 -#: ../data/glade/vcard_information_window.glade.h:28 +#: ../data/glade/manage_proxies_window.glade.h:6 +#: ../data/glade/profile_window.glade.h:23 +#: ../data/glade/vcard_information_window.glade.h:30 msgid "Name:" msgstr "Nome:" #: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "Pass_word:" + +#: ../data/glade/manage_proxies_window.glade.h:8 msgid "Type:" msgstr "Tipo:" -#: ../data/glade/manage_proxies_window.glade.h:8 +#: ../data/glade/manage_proxies_window.glade.h:9 msgid "Use authentication" msgstr "Usa autenticazione" +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_Host:" + #: ../data/glade/message_window.glade.h:1 msgid "Click to insert an emoticon (Alt+M)" -msgstr "Cliccare per inserire un emoticon (Alt+M)" +msgstr "Clicca per inserire un emoticon (Alt+M)" -#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1109 +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1213 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:10 +#: ../data/glade/roster_window.glade.h:12 #: ../data/glade/subscription_request_window.glade.h:6 msgid "_Actions" -msgstr "A_zioni" +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:253 +#: ../src/filetransfers_window.py:243 msgid "_Send" msgstr "_Invia" @@ -1340,36 +1468,48 @@ msgstr "<b>Editor di configurazione avanzata</b>" msgid "<b>Applications</b>" msgstr "<b>Applicazioni</b>" +#: ../data/glade/preferences_window.glade.h:3 +msgid "<b>Chat Appearance</b>" +msgstr "<b>Aspetto della chat</b>" + #. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../data/glade/preferences_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:5 msgid "<b>Custom</b>" msgstr "<b>Personalizzato</b>" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "<b>Format of a line</b>" msgstr "<b>Formato di una linea</b>" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "<b>GMail Options</b>" msgstr "<b>Opzioni GMail</b>" -#: ../data/glade/preferences_window.glade.h:7 -msgid "<b>Interface Customization</b>" -msgstr "<b>Personalizzazione dell'interfaccia</b>" - #: ../data/glade/preferences_window.glade.h:9 msgid "<b>Preset Status Messages</b>" msgstr "<b>Messaggi di stato predefiniti</b>" +#: ../data/glade/preferences_window.glade.h:10 +msgid "<b>Privacy</b>" +msgstr "<b>Privacy</b>" + #: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "<b>Aspetto lista contatti</b>" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "<b>Themes</b>" +msgstr "<b>Temi</b>" + +#: ../data/glade/preferences_window.glade.h:14 msgid "<b>Visual Notifications</b>" msgstr "<b>Notifiche visuali</b>" -#: ../data/glade/preferences_window.glade.h:12 +#: ../data/glade/preferences_window.glade.h:15 msgid "Advanced" msgstr "Avanzato" -#: ../data/glade/preferences_window.glade.h:13 +#: ../data/glade/preferences_window.glade.h:16 msgid "" "All chat states\n" "Composing only\n" @@ -1379,45 +1519,41 @@ msgstr "" "Solo composizione\n" "Disattivato" -#: ../data/glade/preferences_window.glade.h:16 +#: ../data/glade/preferences_window.glade.h:19 msgid "Allow _OS information to be sent" msgstr "Consentire invio di informazioni sull'_OS" -#: ../data/glade/preferences_window.glade.h:17 +#: ../data/glade/preferences_window.glade.h:20 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:18 -msgid "Also known as iChat style" -msgstr "Conosciuto anche come stile iChat" - -#: ../data/glade/preferences_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:21 msgid "Always check to see if Gajim is the _default Jabber client on startup" msgstr "Verifica sempre se Gajim è il client Jabber _predefinito all'avvio" -#: ../data/glade/preferences_window.glade.h:20 +#: ../data/glade/preferences_window.glade.h:22 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 "" "Un esempio: se si ha abilitato il messaggio di stato per l'assenza, Gajim " -"non chiederà più il messaggio di stato si diventa assente; verrà usato il " -"valore predefinito impostato qui" +"non chiederà più il messaggio di stato quando si diventa assente; verrà " +"usato il valore predefinito impostato qui" -#: ../data/glade/preferences_window.glade.h:21 +#: ../data/glade/preferences_window.glade.h:23 msgid "Ask status message when I:" msgstr "Chiedi messaggio di stato per:" -#: ../data/glade/preferences_window.glade.h:22 +#: ../data/glade/preferences_window.glade.h:24 msgid "Auto _away after:" msgstr "_Assente automaticamente dopo:" -#: ../data/glade/preferences_window.glade.h:23 +#: ../data/glade/preferences_window.glade.h:25 msgid "Auto _not available after:" -msgstr "N_on disponibile automaticamente dopo:" +msgstr "_Non disponibile automaticamente dopo:" -#: ../data/glade/preferences_window.glade.h:24 +#: ../data/glade/preferences_window.glade.h:26 msgid "" "Autodetect on every Gajim startup\n" "Always use GNOME default applications\n" @@ -1425,34 +1561,29 @@ msgid "" "Always use XFCE4 default applications\n" "Custom" msgstr "" -"Ricerca in automatico ad ogni avvio di Gajim\n" +"Rilevamento automatico ad ogni avvio di Gajim\n" "Usa sempre le applicazioni predefinite di GNOME\n" "Usa sempre le applicazioni predefinite di KDE\n" "Usa sempre le applicazioni predefinite XFCE4\n" -"Personalizza" - -#: ../data/glade/preferences_window.glade.h:29 ../src/chat_control.py:852 -msgid "Chat" -msgstr "Chat" +"Personalizzate" -#: ../data/glade/preferences_window.glade.h:30 +#: ../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, because 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. Usare con cautela: verranno bloccati tutti i messaggi ricevuti da chi non è membro della lista contatti." +msgstr "" +"Selezionare questa opzione solo se qualche utente fuori dalla lista contatti " +"spamma o disturba. Usare con cautela, poiché verranno bloccati tutti i " +"messaggi ricevuti da chi non è membro della lista contatti." -#: ../data/glade/preferences_window.glade.h:31 +#: ../data/glade/preferences_window.glade.h:32 msgid "Configure color and font of the interface" msgstr "Configura colore e tipo di carattere per l'interfaccia" -#: ../data/glade/preferences_window.glade.h:32 -msgid "Default Status Messages" -msgstr "Messaggio di stato" - #: ../data/glade/preferences_window.glade.h:33 -msgid "Default status _iconset:" -msgstr "_Icone stato predefinite:" +msgid "Default Status Messages" +msgstr "Messaggi di stato preimpostati" #: ../data/glade/preferences_window.glade.h:34 msgid "" @@ -1466,33 +1597,25 @@ msgstr "" #: ../data/glade/preferences_window.glade.h:37 msgid "Display _extra email details" -msgstr "Mostra _dettagli email extra" +msgstr "Mostra dettagli email _extra" #: ../data/glade/preferences_window.glade.h:38 msgid "Display a_vatars of contacts in roster" -msgstr "Mostra gli a_vatar dei contatti nella lista" +msgstr "Mostra gli a_vatar dei contatti nella lista contatti" #: ../data/glade/preferences_window.glade.h:39 msgid "Display status _messages of contacts in roster" -msgstr "Mostra i _messaggi di stato dei contatti nella lista" +msgstr "Mostra i _messaggi di stato dei contatti nella lista contatti" #: ../data/glade/preferences_window.glade.h:40 -msgid "Displayed Chat state noti_fications:" -msgstr "Noti_fiche dello stato di chat" - -#: ../data/glade/preferences_window.glade.h:41 -msgid "E_very 5 minutes" -msgstr "_Ogni 5 minuti" - -#: ../data/glade/preferences_window.glade.h:42 msgid "Emoticons:" msgstr "Emoticon:" -#: ../data/glade/preferences_window.glade.h:43 +#: ../data/glade/preferences_window.glade.h:41 msgid "Events" msgstr "Eventi" -#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/preferences_window.glade.h:42 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 " @@ -1500,9 +1623,9 @@ msgid "" 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." +"si vogliono visualizzare nella finestra di chat." -#: ../data/glade/preferences_window.glade.h:45 +#: ../data/glade/preferences_window.glade.h:43 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 " @@ -1510,30 +1633,9 @@ msgid "" 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:46 -msgid "" -"Gajim will automatically show new events by popping up the relevant window" -msgstr "Gajim mostrerà automaticamente i nuovi eventi sollevando la finestra relativa" - -#: ../data/glade/preferences_window.glade.h:47 -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:48 -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" +"si vogliono inviare al contatto." -#: ../data/glade/preferences_window.glade.h:49 +#: ../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" @@ -1541,12 +1643,11 @@ msgstr "" "Gajim notificherà tramite popup nell'angolo in fondo a destra dello schermo " "quando un contatto si disconnette" -#: ../data/glade/preferences_window.glade.h:50 -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:46 +msgid "Hides buttons in chatwindows to " +msgstr "Nasconde i pulsanti nella finestra di chat" -#: ../data/glade/preferences_window.glade.h:52 +#: ../data/glade/preferences_window.glade.h:47 msgid "" "If checked, Gajim will also include information about the sender of the new " "emails" @@ -1554,7 +1655,7 @@ msgstr "" "Se selezionato, Gajim includerà informazioni riguardo al mittente delle " "nuove email" -#: ../data/glade/preferences_window.glade.h:53 +#: ../data/glade/preferences_window.glade.h:48 msgid "" "If checked, Gajim will display avatars of contacts in roster window and in " "group chats" @@ -1562,7 +1663,7 @@ msgstr "" "Se marcato, Gajim mostrerà gli avatar dei contatti nella lista contatti e " "nelle chat di gruppo" -#: ../data/glade/preferences_window.glade.h:54 +#: ../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" @@ -1570,25 +1671,17 @@ 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:55 -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:56 +#: ../data/glade/preferences_window.glade.h:50 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, " +"(es. un contatto MSN avrà l'icona MSN equivalente per gli stati disponibile, " "assente, occupato, ecc...)" -#: ../data/glade/preferences_window.glade.h:57 +#: ../data/glade/preferences_window.glade.h:51 msgid "" "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " "animated or static graphical emoticons" @@ -1596,15 +1689,15 @@ msgstr "" "Se marcato, Gajim sostituirà gli smiley ASCII come ':)' con gli equivalenti " "emoticon grafici animati o statici" -#: ../data/glade/preferences_window.glade.h:58 +#: ../data/glade/preferences_window.glade.h:52 msgid "Ignore rich content in incoming messages" -msgstr "Ignora il rich content dei messaggi ricevuti" +msgstr "Ignora la formattazione dei messaggi ricevuti" -#: ../data/glade/preferences_window.glade.h:59 +#: ../data/glade/preferences_window.glade.h:53 msgid "Ma_nage..." msgstr "_Gestisci..." -#: ../data/glade/preferences_window.glade.h:60 +#: ../data/glade/preferences_window.glade.h:54 msgid "" "Never\n" "Always\n" @@ -1616,211 +1709,197 @@ msgstr "" "Per account\n" "Per tipo" -#: ../data/glade/preferences_window.glade.h:64 -msgid "Notify me about contacts that: " -msgstr "Notificare i contatti che eseguono:" +#: ../data/glade/preferences_window.glade.h:58 +msgid "Notify me about contacts that sign _in" +msgstr "Mostra notifica per i contatti che si _connettono" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Notify me about contacts that sign _out" +msgstr "Mostra notifica per i contatti che si _disconnettono" -#: ../data/glade/preferences_window.glade.h:65 +#: ../data/glade/preferences_window.glade.h:60 msgid "Notify on new _GMail email" msgstr "Notifica le nuove e-mail su _Gmail" -#: ../data/glade/preferences_window.glade.h:66 -msgid "On every _message" -msgstr "In _tutti i messaggi" - -#: ../data/glade/preferences_window.glade.h:67 -msgid "One message _window:" -msgstr "Una _finestra messaggi:" - -#: ../data/glade/preferences_window.glade.h:68 -msgid "Outgoing Chat state noti_fications:" -msgstr "Noti_fiche dello stato di chat" - -#: ../data/glade/preferences_window.glade.h:69 +#: ../data/glade/preferences_window.glade.h:61 msgid "Play _sounds" msgstr "Riproduci _suoni" -#: ../data/glade/preferences_window.glade.h:70 +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" +"Mostra immediatamente\n" +"Mostra una notifica\n" +"Mostra solo nella lista contatti" + +#: ../data/glade/preferences_window.glade.h:65 msgid "Preferences" msgstr "Preferenze" -#: ../data/glade/preferences_window.glade.h:71 -msgid "Print time:" -msgstr "Scrivi ora:" - -#: ../data/glade/preferences_window.glade.h:72 -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:66 +msgid "Privacy" +msgstr "Privacy" -#: ../data/glade/preferences_window.glade.h:73 +#: ../data/glade/preferences_window.glade.h:67 msgid "Set status message to reflect currently playing _music track" msgstr "" -"Imposta il messaggio di stato in modo che rifletta la traccia _musicale " -"correntemente ascoltata" - -#: ../data/glade/preferences_window.glade.h:74 -msgid "Show only in _roster" -msgstr "Mostra solo nella lista _contatti" +"Imposta il messaggio di stato in modo che rifletta la traccia _musicale in " +"riproduzione" -#: ../data/glade/preferences_window.glade.h:75 +#: ../data/glade/preferences_window.glade.h:68 msgid "Sign _in" msgstr "C_onnessione" -#: ../data/glade/preferences_window.glade.h:76 +#: ../data/glade/preferences_window.glade.h:69 msgid "Sign _out" msgstr "_Disconnessione" -#: ../data/glade/preferences_window.glade.h:77 +#: ../data/glade/preferences_window.glade.h:70 msgid "" "Some messages may include rich content (formatting, colors etc). If checked, " "Gajim will just display the raw message text." msgstr "" -"Alcuni messaggi potrebbero includere con contenuto ricco (formattazione, " -"colori, ecc.). Se selezionato, Gajim li mostrerà come messaggi semplici." +"Alcuni messaggi potrebbero includere contenuto ricco (formattazione, colori, " +"ecc.). Se selezionato, Gajim li mostrerà come messaggi semplici." -#: ../data/glade/preferences_window.glade.h:78 +#: ../data/glade/preferences_window.glade.h:71 msgid "Status" msgstr "Stato" -#: ../data/glade/preferences_window.glade.h:79 +#: ../data/glade/preferences_window.glade.h:72 +msgid "Status _iconset:" +msgstr "_Icone di stato:" + +#: ../data/glade/preferences_window.glade.h:73 msgid "T_heme:" msgstr "T_ema:" -#: ../data/glade/preferences_window.glade.h:80 +#: ../data/glade/preferences_window.glade.h:74 msgid "The auto away status message" msgstr "Il messaggio di stato per l'assenza automatica" -#: ../data/glade/preferences_window.glade.h:81 +#: ../data/glade/preferences_window.glade.h:75 msgid "The auto not available status message" msgstr "Il messaggio di stato per il 'non disponibile' automatico" -#: ../data/glade/preferences_window.glade.h:82 +#: ../data/glade/preferences_window.glade.h:76 msgid "Treat all incoming messages as:" msgstr "Trattare tutti i messaggi in arrivo come:" -#: ../data/glade/preferences_window.glade.h:83 +#: ../data/glade/preferences_window.glade.h:77 msgid "Use _transports iconsets" msgstr "Usa le icone dei _trasporti" -#: ../data/glade/preferences_window.glade.h:84 +#: ../data/glade/preferences_window.glade.h:78 +msgid "Use only one message _window:" +msgstr "Usa solo una _finestra dei messaggi:" + +#: ../data/glade/preferences_window.glade.h:79 msgid "Use system _default" msgstr "Usa il sistema _predefinito" -#: ../data/glade/preferences_window.glade.h:85 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Usa _icona nell'area di notifica" - -#: ../data/glade/preferences_window.glade.h:86 -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:87 -msgid "When new event is received" -msgstr "Quando si riceve un nuovo evento" +#: ../data/glade/preferences_window.glade.h:80 +msgid "When new event is received:" +msgstr "Quando si riceve un nuovo evento:" -#: ../data/glade/preferences_window.glade.h:88 +#: ../data/glade/preferences_window.glade.h:81 msgid "" "Works for Rhythmbox and Muine players. For more players, please visit http://" "trac.gajim.org/wiki/GajimAndMusicPlayer" msgstr "" -"Funziona con Rhythmbox e Muine. Per altri player visita http://trac.gajim." +"Funziona con Rhythmbox e Muine. Per altri player, visita http://trac.gajim." "org/wiki/GajimAndMusicPlayer" -#: ../data/glade/preferences_window.glade.h:89 +#: ../data/glade/preferences_window.glade.h:82 msgid "_Advanced Notifications Control..." msgstr "Controllo notifiche _avanzato..." -#: ../data/glade/preferences_window.glade.h:90 +#: ../data/glade/preferences_window.glade.h:83 msgid "_Browser:" msgstr "_Browser:" -#: ../data/glade/preferences_window.glade.h:91 +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Display chat state notifications:" +msgstr "Notifica dello stato di chat in _entrata:" + +#: ../data/glade/preferences_window.glade.h:85 msgid "_File manager:" -msgstr "Gestore _file:" +msgstr "_File manager:" -#: ../data/glade/preferences_window.glade.h:92 +#: ../data/glade/preferences_window.glade.h:86 msgid "_Font:" msgstr "_Carattere:" -#: ../data/glade/preferences_window.glade.h:93 +#: ../data/glade/preferences_window.glade.h:87 msgid "_Highlight misspelled words" -msgstr "Evidenzia _parole scorrette" +msgstr "_Evidenzia parole errate" -#: ../data/glade/preferences_window.glade.h:94 +#: ../data/glade/preferences_window.glade.h:88 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:95 +#: ../data/glade/preferences_window.glade.h:89 msgid "_Incoming message:" msgstr "Messaggio in _arrivo:" -#: ../data/glade/preferences_window.glade.h:96 +#: ../data/glade/preferences_window.glade.h:90 msgid "_Log status changes of contacts" msgstr "_Registra i cambiamenti di stato dei contatti" -#: ../data/glade/preferences_window.glade.h:97 +#: ../data/glade/preferences_window.glade.h:91 msgid "_Mail client:" -msgstr "_Client mail:" - -#: ../data/glade/preferences_window.glade.h:98 -msgid "_Never" -msgstr "_Mai" +msgstr "_Client di posta:" -#: ../data/glade/preferences_window.glade.h:99 -msgid "_Notify me about it" -msgstr "_Notifica" +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Make message windows compact" +msgstr "Rendi compatta la finestra dei _messaggi" -#: ../data/glade/preferences_window.glade.h:100 +#: ../data/glade/preferences_window.glade.h:93 msgid "_Open..." msgstr "_Apri..." -#: ../data/glade/preferences_window.glade.h:101 +#: ../data/glade/preferences_window.glade.h:94 msgid "_Outgoing message:" msgstr "Messaggio in _uscita:" -#: ../data/glade/preferences_window.glade.h:102 +#: ../data/glade/preferences_window.glade.h:95 msgid "_Player:" msgstr "_Riproduttore:" -#: ../data/glade/preferences_window.glade.h:103 -msgid "_Pop it up" -msgstr "_Mostra" - -#: ../data/glade/preferences_window.glade.h:104 +#: ../data/glade/preferences_window.glade.h:96 msgid "_Reset to Default Colors" msgstr "_Reimposta ai colori di default" -#: ../data/glade/preferences_window.glade.h:105 +#: ../data/glade/preferences_window.glade.h:97 +msgid "_Send chat state notifications:" +msgstr "Notifica dello stato di chat in usci_ta:" + +#: ../data/glade/preferences_window.glade.h:98 msgid "_Sort contacts by status" msgstr "_Ordina i contatti per stato" -#: ../data/glade/preferences_window.glade.h:106 +#: ../data/glade/preferences_window.glade.h:99 msgid "_Status message:" msgstr "Messaggio di _stato:" -#: ../data/glade/preferences_window.glade.h:107 +#: ../data/glade/preferences_window.glade.h:100 msgid "_URL:" msgstr "_URL:" -#: ../data/glade/preferences_window.glade.h:108 +#: ../data/glade/preferences_window.glade.h:101 msgid "minutes" msgstr "minuti" #: ../data/glade/privacy_lists_window.glade.h:1 msgid "Privacy Lists:" -msgstr "Liste utenti bloccati:" +msgstr "Liste privacy:" #: ../data/glade/privacy_list_window.glade.h:1 msgid "<b>Add / Edit a rule</b>" -msgstr "<b>Aggiungi/ modifica una regola</b>" +msgstr "<b>Aggiungi/modifica una regola</b>" #: ../data/glade/privacy_list_window.glade.h:2 msgid "<b>List of rules</b>" @@ -1832,15 +1911,15 @@ msgstr "<i>Lista privacy</i>" #: ../data/glade/privacy_list_window.glade.h:4 msgid "Active for this session" -msgstr "Attivo per la sessione corrente" +msgstr "Attiva per questa sessione" #: ../data/glade/privacy_list_window.glade.h:5 msgid "Active on each startup" -msgstr "Attivo ad ogni avvio di Gajim" +msgstr "Attiva ad ogni avvio di Gajim" #: ../data/glade/privacy_list_window.glade.h:6 msgid "All" -msgstr "Tutti" +msgstr "a tutti" #: ../data/glade/privacy_list_window.glade.h:7 msgid "Allow" @@ -1854,17 +1933,17 @@ msgstr "ID Jabber" msgid "Order:" msgstr "Ordine:" -#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:1862 +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2104 msgid "Privacy List" -msgstr "Lista utenti bloccati" +msgstr "Lista privacy" #: ../data/glade/privacy_list_window.glade.h:12 msgid "all by subscription" -msgstr "tutti per abbonamento" +msgstr "a tutti per abbonamento" #: ../data/glade/privacy_list_window.glade.h:13 msgid "all in the group" -msgstr "tutti nel gruppo" +msgstr "a tutti nel gruppo" #: ../data/glade/privacy_list_window.glade.h:14 msgid "" @@ -1880,19 +1959,19 @@ msgstr "" #: ../data/glade/privacy_list_window.glade.h:18 msgid "to send me messages" -msgstr "invio di messaggi" +msgstr "di inviarmi messaggi" #: ../data/glade/privacy_list_window.glade.h:19 msgid "to send me queries" -msgstr "invio di richieste" +msgstr "di inviarmi richieste" #: ../data/glade/privacy_list_window.glade.h:20 msgid "to send me status" -msgstr "invio di stato" +msgstr "di inviarmi uno stato" #: ../data/glade/privacy_list_window.glade.h:21 msgid "to view my status" -msgstr "vedere il mio stato" +msgstr "di vedere il mio stato" #. "About" is the text of a tab of vcard window #: ../data/glade/profile_window.glade.h:2 @@ -1920,121 +1999,118 @@ msgid "City:" msgstr "Città :" #: ../data/glade/profile_window.glade.h:7 +msgid "Click to set your avatar" +msgstr "Clicca per inserire l'avatar" + +#: ../data/glade/profile_window.glade.h:8 #: ../data/glade/vcard_information_window.glade.h:10 msgid "Company:" msgstr "Società :" -#: ../data/glade/profile_window.glade.h:8 -#: ../data/glade/vcard_information_window.glade.h:13 -msgid "Country:" -msgstr "Paese:" - #: ../data/glade/profile_window.glade.h:9 #: ../data/glade/vcard_information_window.glade.h:14 -msgid "Department:" -msgstr "Dipartimento:" +msgid "Country:" +msgstr "Paese:" #: ../data/glade/profile_window.glade.h:10 #: ../data/glade/vcard_information_window.glade.h:15 -#: ../data/glade/zeroconf_information_window.glade.h:2 -#: ../data/glade/zeroconf_properties_window.glade.h:5 -msgid "E-Mail:" -msgstr "E-Mail:" +msgid "Department:" +msgstr "Dipartimento:" -#: ../data/glade/profile_window.glade.h:11 -#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/profile_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:17 msgid "Extra Address:" msgstr "Indirizzo extra:" #. Family Name -#: ../data/glade/profile_window.glade.h:13 -#: ../data/glade/vcard_information_window.glade.h:18 +#: ../data/glade/profile_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:19 msgid "Family:" msgstr "Cognome:" #. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) -#: ../data/glade/profile_window.glade.h:15 -#: ../data/glade/vcard_information_window.glade.h:20 +#: ../data/glade/profile_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:21 msgid "Format: YYYY-MM-DD" msgstr "Formato: AAAA-MM-GG" -#. Given Name #: ../data/glade/profile_window.glade.h:17 #: ../data/glade/vcard_information_window.glade.h:22 +msgid "Full Name" +msgstr "Nome completo" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 msgid "Given:" msgstr "Nome:" -#: ../data/glade/profile_window.glade.h:18 -#: ../data/glade/vcard_information_window.glade.h:23 +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 msgid "Homepage:" msgstr "Homepage:" #. Middle Name -#: ../data/glade/profile_window.glade.h:20 -#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 msgid "Middle:" msgstr "Secondo nome:" -#: ../data/glade/profile_window.glade.h:21 -#: ../data/glade/vcard_information_window.glade.h:27 -msgid "More" -msgstr "Ancora" - -#: ../data/glade/profile_window.glade.h:24 -#: ../data/glade/vcard_information_window.glade.h:31 +#: ../data/glade/profile_window.glade.h:25 +#: ../data/glade/vcard_information_window.glade.h:34 msgid "Personal Info" msgstr "Informazioni personali" -#: ../data/glade/profile_window.glade.h:26 -#: ../data/glade/vcard_information_window.glade.h:32 +#: ../data/glade/profile_window.glade.h:27 +#: ../data/glade/vcard_information_window.glade.h:35 msgid "Phone No.:" msgstr "Telefono:" -#: ../data/glade/profile_window.glade.h:27 -#: ../data/glade/vcard_information_window.glade.h:33 +#: ../data/glade/profile_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:36 msgid "Position:" msgstr "Titolo:" -#: ../data/glade/profile_window.glade.h:28 -#: ../data/glade/vcard_information_window.glade.h:34 +#: ../data/glade/profile_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:37 msgid "Postal Code:" msgstr "Codice postale:" #. Prefix in Name -#: ../data/glade/profile_window.glade.h:30 -#: ../data/glade/vcard_information_window.glade.h:36 +#: ../data/glade/profile_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:39 msgid "Prefix:" msgstr "Prefisso:" -#: ../data/glade/profile_window.glade.h:31 -#: ../data/glade/vcard_information_window.glade.h:38 ../src/vcard.py:273 +#: ../data/glade/profile_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:302 msgid "Role:" msgstr "Ruolo:" -#: ../data/glade/profile_window.glade.h:32 -#: ../data/glade/vcard_information_window.glade.h:39 +#: ../data/glade/profile_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:42 msgid "State:" msgstr "Regione:" -#: ../data/glade/profile_window.glade.h:33 -#: ../data/glade/vcard_information_window.glade.h:41 +#: ../data/glade/profile_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:44 msgid "Street:" msgstr "Via:" #. Suffix in Name -#: ../data/glade/profile_window.glade.h:35 -#: ../data/glade/vcard_information_window.glade.h:45 +#: ../data/glade/profile_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:48 msgid "Suffix:" msgstr "Suffisso:" -#: ../data/glade/profile_window.glade.h:36 -#: ../data/glade/vcard_information_window.glade.h:46 +#: ../data/glade/profile_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:50 msgid "Work" msgstr "Lavoro" #: ../data/glade/remove_account_window.glade.h:1 msgid "<b>What do you want to do?</b>" -msgstr "<b>Cosa fare?</b>" +msgstr "<b>Cosa vuoi fare?</b>" #: ../data/glade/remove_account_window.glade.h:2 msgid "Remove account _only from Gajim" @@ -2042,135 +2118,165 @@ 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" +msgstr "Rimuovi l'account da Gajim e dal _server" + +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2524 ../src/roster_window.py:2734 +#: ../src/roster_window.py:2870 +msgid "_Remove" +msgstr "_Elimina" #: ../data/glade/roster_contact_context_menu.glade.h:1 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 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 -msgid "Add Special _Notification" -msgstr "Crea _notifica speciale" +msgid "Add Special _Notification..." +msgstr "Aggiungi _notifica speciale..." #: ../data/glade/roster_contact_context_menu.glade.h:3 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 -msgid "Assign Open_PGP Key" -msgstr "Assegna chiave Open_PGP" +msgid "Assign Open_PGP Key..." +msgstr "Assegna chiave Open_PGP..." #: ../data/glade/roster_contact_context_menu.glade.h:4 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 -#: ../src/roster_window.py:2076 -msgid "Edit _Groups" -msgstr "Modifica _gruppi" +msgid "Edit _Groups..." +msgstr "Modifica _gruppi..." +#. Execute Command #: ../data/glade/roster_contact_context_menu.glade.h:5 -#: ../src/roster_window.py:2211 +#: ../src/roster_window.py:2827 msgid "Execute Command..." -msgstr "Esegui Comando..." +msgstr "Esegui comando..." +#. Invite to Groupchat #: ../data/glade/roster_contact_context_menu.glade.h:6 -#: ../src/roster_window.py:2034 +#: ../src/roster_window.py:2440 msgid "In_vite to" msgstr "In_vita a " +#. Send Custom Status #: ../data/glade/roster_contact_context_menu.glade.h:7 -#: ../data/glade/systray_context_menu.glade.h:2 -msgid "Send Single _Message" -msgstr "Invia _messaggio singolo" +#: ../src/roster_window.py:2664 ../src/roster_window.py:2798 +msgid "Send Cus_tom Status" +msgstr "Invia s_tato personalizzato" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "Invia _messaggio singolo..." #: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "Send _File..." +msgstr "Invia _file..." + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "Imposta _avatar personalizzato..." + +#: ../data/glade/roster_contact_context_menu.glade.h:11 #: ../data/glade/zeroconf_contact_context_menu.glade.h:5 msgid "Start _Chat" msgstr "Inizia _chat" -#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/roster_contact_context_menu.glade.h:13 msgid "_Allow him/her to see my status" msgstr "Permetti di _vedere il mio stato" -#: ../data/glade/roster_contact_context_menu.glade.h:12 -msgid "_Forbid him/her to see my status" -msgstr "_Proibisci di vedere il mio stato" - -#. Remove group #: ../data/glade/roster_contact_context_menu.glade.h:14 -#: ../src/roster_window.py:2028 ../src/roster_window.py:2125 -#: ../src/roster_window.py:2232 -msgid "_Remove from Roster" -msgstr "_Elimina dai contatti" +#: ../src/roster_window.py:2514 ../src/roster_window.py:2725 +msgid "_Block" +msgstr "_Blocca" #: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Forbid him/her to see my status" +msgstr "_Proibisci di vedere il mio stato" + +#: ../data/glade/roster_contact_context_menu.glade.h:17 #: ../data/glade/zeroconf_contact_context_menu.glade.h:7 -#: ../src/roster_window.py:2220 -msgid "_Rename" -msgstr "_Rinomina" +msgid "_Manage Contact" +msgstr "_Gestisci contatto" -#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_contact_context_menu.glade.h:19 +msgid "_Rename..." +msgstr "_Rinomina..." + +#: ../data/glade/roster_contact_context_menu.glade.h:20 msgid "_Subscription" msgstr "_Abbonamento" +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2508 ../src/roster_window.py:2719 +msgid "_Unblock" +msgstr "_Sblocca" + #: ../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" +msgid "Add _Contact..." +msgstr "Aggiungi _contatto......" #: ../data/glade/roster_window.glade.h:3 +msgid "Fea_tures" +msgstr "Fun_zioni" + +#: ../data/glade/roster_window.glade.h:4 msgid "File _Transfers" msgstr "_Trasferimenti file" -#: ../data/glade/roster_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:5 msgid "Frequently Asked Questions (online)" msgstr "Domande frequenti (online)" -#: ../data/glade/roster_window.glade.h:6 +#: ../data/glade/roster_window.glade.h:7 msgid "Help online" msgstr "Aiuto online" -#: ../data/glade/roster_window.glade.h:7 +#: ../data/glade/roster_window.glade.h:9 msgid "Profile, A_vatar" msgstr "Profilo, a_vatar" -#: ../data/glade/roster_window.glade.h:8 +#: ../data/glade/roster_window.glade.h:10 msgid "Show Trans_ports" msgstr "Mostra tras_porti" -#: ../data/glade/roster_window.glade.h:9 +#: ../data/glade/roster_window.glade.h:11 msgid "Show _Offline Contacts" msgstr "Mostra contatti _offline" -#: ../data/glade/roster_window.glade.h:12 +#: ../data/glade/roster_window.glade.h:14 msgid "_Contents" msgstr "_Contenuti" -#: ../data/glade/roster_window.glade.h:13 -msgid "_Discover Services" -msgstr "_Ricerca servizi" - -#: ../data/glade/roster_window.glade.h:14 ../src/disco.py:1284 -#: ../src/roster_window.py:2203 +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1348 msgid "_Edit" msgstr "_Modifica" -#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/roster_window.glade.h:17 msgid "_FAQ" msgstr "_Domande frequenti" -#: ../data/glade/roster_window.glade.h:17 +#: ../data/glade/roster_window.glade.h:18 msgid "_Help" msgstr "_Aiuto" -#: ../data/glade/roster_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:19 msgid "_Preferences" msgstr "_Preferenze" -#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:20 msgid "_Quit" msgstr "_Esci" #: ../data/glade/roster_window.glade.h:21 +msgid "_Send Single Message..." +msgstr "Invia _messaggio singolo..." + +#: ../data/glade/roster_window.glade.h:23 msgid "_View" msgstr "_Visualizza" @@ -2182,10 +2288,6 @@ msgstr "_Vai" 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" @@ -2250,7 +2352,8 @@ msgstr "Autorizza il contatto affinché sappia quando sei connesso" msgid "" "Deny authorization from contact so he or she cannot know when you're " "connected" -msgstr "Nega l'autorizzazione al contatto cosicché non sappia quando sei connesso" +msgstr "" +"Nega l'autorizzazione al contatto cosicché non sappia quando sei connesso" #: ../data/glade/subscription_request_window.glade.h:4 msgid "Subscription Request" @@ -2264,6 +2367,10 @@ msgstr "_Nega" msgid "Mute Sounds" msgstr "Disabilita suoni" +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "Invia _messaggio singolo" + #: ../data/glade/systray_context_menu.glade.h:3 msgid "Show All Pending _Events" msgstr "Mostra tutti gli _eventi in attesa" @@ -2276,6 +2383,10 @@ msgstr "Mostra lista _contatti" msgid "Sta_tus" msgstr "Sta_to" +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "Chat di _gruppo" + #. Given Name #: ../data/glade/vcard_information_window.glade.h:5 msgid "Ask:" @@ -2290,43 +2401,44 @@ msgid "Comments" msgstr "Commenti" #: ../data/glade/vcard_information_window.glade.h:11 +msgid "Configured avatar:" +msgstr "Avatar personalizzato:" + +#: ../data/glade/vcard_information_window.glade.h:12 #: ../data/glade/zeroconf_information_window.glade.h:1 msgid "Contact" msgstr "Contatto" -#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:13 msgid "Contact Information" msgstr "Informazioni sul contatto" -#: ../data/glade/vcard_information_window.glade.h:24 -#: ../data/glade/zeroconf_information_window.glade.h:4 -#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:416 -msgid "Jabber ID:" -msgstr "ID Jabber: " +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "Ancora" -#: ../data/glade/vcard_information_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:33 msgid "OS:" msgstr "OS:" -#: ../data/glade/vcard_information_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:40 #: ../data/glade/zeroconf_information_window.glade.h:8 msgid "Resource:" msgstr "Risorsa:" -#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/vcard_information_window.glade.h:43 #: ../data/glade/zeroconf_information_window.glade.h:9 msgid "Status:" msgstr "Stato:" #. Family Name -#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/vcard_information_window.glade.h:46 msgid "Subscription:" msgstr "Abbonamento:" -#: ../data/glade/vcard_information_window.glade.h:47 -#: ../data/glade/zeroconf_information_window.glade.h:10 -msgid "_Log conversation history" -msgstr "_Memorizza cronologia conversazione" +#: ../data/glade/vcard_information_window.glade.h:49 +msgid "User avatar:" +msgstr "Avatar dell'utente:" #: ../data/glade/xml_console_window.glade.h:1 msgid "<b>Jabber Traffic</b>" @@ -2336,11 +2448,6 @@ msgstr "<b>Traffico Jabber</b>" msgid "<b>XML Input</b>" msgstr "<b>Inserimento XML</b>" -#. 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" @@ -2349,7 +2456,7 @@ msgstr "Info/Richiesta (Info/Query)" #. Info/Query: all(?) jabber xml start with <iq Leaving it _IQ is not a bad idea unless you are sure your lang has this somehow else translated (NOTE: xml still will still say <iq in your language (of course)) #: ../data/glade/xml_console_window.glade.h:8 msgid "_IQ" -msgstr "I_Q" +msgstr "_IQ" #: ../data/glade/xml_console_window.glade.h:9 msgid "_Message" @@ -2359,42 +2466,42 @@ msgstr "_Messaggio" msgid "_Presence" msgstr "_Presenza" -#: ../data/glade/zeroconf_information_window.glade.h:3 -#: ../data/glade/zeroconf_properties_window.glade.h:6 -msgid "First Name:" -msgstr "Nome:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Crea _notifica speciale" -#: ../data/glade/zeroconf_information_window.glade.h:5 -#: ../data/glade/zeroconf_properties_window.glade.h:14 -msgid "Last Name:" -msgstr "Cognome:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Assegna chiave Open_PGP" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2497 +msgid "Edit _Groups" +msgstr "Modifica _gruppi" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2854 +msgid "_Rename" +msgstr "_Rinomina" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Modifica account..." #: ../data/glade/zeroconf_information_window.glade.h:6 msgid "Local jid:" -msgstr "Jid locale:" +msgstr "JID locale:" #: ../data/glade/zeroconf_information_window.glade.h:7 msgid "Personal" msgstr "Informazioni personali" -#: ../data/glade/zeroconf_properties_window.glade.h:11 -msgid "" -"If the default port that is used for incoming messages is unfitting for your " -"setup you can select another one here.\n" -"You might consider to change possible firewall settings." -msgstr "" -"Se la porta predefinita usata per i messaggi in ricezione non si adatta alle " -"tue configurazioni puoi selezionarne un'altra qui.\n" -"Potresti considerare di cambiare la configurazione del firewall" - #: ../data/glade/zeroconf_properties_window.glade.h:15 msgid "Modify Account" msgstr "Modifica account" -#: ../data/glade/zeroconf_properties_window.glade.h:21 -msgid "Use custom port:" -msgstr "Usa porta personalizzata:" - #. For i18n #: ../src/advanced.py:51 msgid "Activated" @@ -2447,205 +2554,241 @@ msgstr "Nascosta" #. #!/bin/sh #. LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done) #. echo "{_('en'):'en'",$LANG"}" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "English" msgstr "Inglese" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Belarusian" msgstr "Bielorusso" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Bulgarian" msgstr "Bulgaro" -#: ../src/chat_control.py:52 -msgid "Briton" +#: ../src/chat_control.py:55 +msgid "Breton" msgstr "Bretone" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Czech" msgstr "Ceco" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "German" msgstr "Tedesco" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Greek" msgstr "Greco" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "British" msgstr "Britannico" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Esperanto" msgstr "Esperanto" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Spanish" msgstr "Spagnolo" -#: ../src/chat_control.py:52 -msgid "Basc" +#: ../src/chat_control.py:55 +msgid "Basque" msgstr "Basco" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "French" msgstr "Francese" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Croatian" msgstr "Croato" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Italian" msgstr "Italiano" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Norwegian (b)" msgstr "Norvegese (b)" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Dutch" msgstr "Olandese" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Norwegian" msgstr "Norvegese" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Polish" msgstr "Polacco" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Portuguese" msgstr "Portoghese" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Brazilian Portuguese" msgstr "Brasiliano" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Russian" msgstr "Russo" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 +msgid "Serbian" +msgstr "Serbo" + +#: ../src/chat_control.py:55 msgid "Slovak" msgstr "Slovacco" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Swedish" msgstr "Svedese" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:55 msgid "Chinese (Ch)" msgstr "Cinese (Ch)" -#: ../src/chat_control.py:208 ../src/dialogs.py:1516 -msgid "" -"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" -"\n" -"Highlighting misspelled words feature will not be used" -msgstr "" -"Se questa non è la lingua per cui si vogliono evidenziare le parole " -"scorrette, impostare $LANG in maniera appropriata. Per esempio, per " -"l'italiano eseguire \"export LANG=it_IT\" o \"export LANG=it_IT.UTF-8\" in " -"~/.bash_profile o, per rendere la modifica globale, in /etc/profile.\n" -"\n" -"Non verrà usata la caratteristica di evidenziatura parole scorrette" - -#: ../src/chat_control.py:247 +#: ../src/chat_control.py:283 msgid "Spelling language" msgstr "Lingua per la correzione ortografica" #. we are not connected -#: ../src/chat_control.py:270 ../src/chat_control.py:476 +#: ../src/chat_control.py:306 ../src/chat_control.py:512 msgid "A connection is not available" msgstr "Nessuna connessione disponibile" -#: ../src/chat_control.py:271 ../src/chat_control.py:477 -msgid "Your message can not be sent until you are connected." -msgstr "Il messaggio non può venire inviato finché non si è connessi." +#: ../src/chat_control.py:307 ../src/chat_control.py:513 +msgid "Your message can not be sent until you are connected." +msgstr "Il messaggio non può venire inviato finché non si è connessi." + +#: ../src/chat_control.py:1139 +#, python-format +msgid "%(nickname)s from group chat %(room_name)s" +msgstr "%(nickname)s della chat di gruppo %(room_name)s" + +#. we talk about a contact here +#: ../src/chat_control.py:1227 +#, python-format +msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" +msgstr "" +"%s non ha annunciato una chiave OpenPGP e non gliene è stata assegnata una" + +#: ../src/chat_control.py:1266 ../src/groupchat_control.py:1411 +#, 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/chat_control.py:1273 ../src/groupchat_control.py:1434 +#, python-format +msgid "Commands: %s" +msgstr "Comandi: %s" + +#: ../src/chat_control.py:1276 ../src/groupchat_control.py:1448 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "Utilizzo: /%s, pulisce la finestra di testo." + +#: ../src/chat_control.py:1279 ../src/groupchat_control.py:1453 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "Utilizzo: /%s, nasconde i pulsanti di chat." + +#: ../src/chat_control.py:1282 ../src/groupchat_control.py:1469 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Utilizzo: /%s <azione>, invia l'azione alla stanza corrente. Usare la terza " +"persona (esempio: /%s esplode)." -#: ../src/chat_control.py:852 -msgid "Chats" -msgstr "Chat" +#: ../src/chat_control.py:1286 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "Utilizzo: /%s, invia un ping al contatto" -#: ../src/chat_control.py:1034 +#: ../src/chat_control.py:1289 #, python-format -msgid "%(nickname)s from group chat %(room_name)s" -msgstr "%(nickname)s della chat di gruppo %(room_name)s" +msgid "Usage: /%s, send the message to the contact" +msgstr "Utilizzo: /%s, invia il messaggio al contatto" -#. we talk about a contact here -#: ../src/chat_control.py:1123 +#: ../src/chat_control.py:1292 ../src/groupchat_control.py:1492 #, python-format -msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" -msgstr "" -"%s non ha annunciato una chiave OpenPGP e non gliene è stata assegnata una" +msgid "No help info for /%s" +msgstr "Non esiste aiuto per /%s" -#: ../src/chat_control.py:1259 +#: ../src/chat_control.py:1430 ../src/chat_control.py:1456 msgid "Encryption enabled" msgstr "Cifratura attivata" -#: ../src/chat_control.py:1264 +#: ../src/chat_control.py:1435 +msgid "Session WILL be logged" +msgstr "La sessione SARÀ registrata" + +#: ../src/chat_control.py:1437 +msgid "Session WILL NOT be logged" +msgstr "La sessione NON SARÀ registrata" + +#: ../src/chat_control.py:1444 +msgid "The following message was NOT encrypted" +msgstr "Il seguente messaggio NON è stato cifrato" + +#: ../src/chat_control.py:1448 ../src/chat_control.py:1461 +#: ../src/chat_control.py:2090 msgid "Encryption disabled" msgstr "Cifratura disattivata" #. add_to_roster_menuitem -#: ../src/chat_control.py:1406 ../src/conversation_textview.py:493 -#: ../src/dialogs.py:629 ../src/gajim.py:842 ../src/gajim.py:843 -#: ../src/gajim.py:1187 ../src/roster_window.py:332 -#: ../src/roster_window.py:410 ../src/roster_window.py:1498 -#: ../src/roster_window.py:1508 ../src/roster_window.py:1684 -#: ../src/roster_window.py:1890 ../src/roster_window.py:2475 -#: ../src/roster_window.py:3900 ../src/roster_window.py:3902 -#: ../src/common/contacts.py:73 ../src/common/helpers.py:43 -#: ../src/common/helpers.py:255 +#: ../src/chat_control.py:1618 ../src/conversation_textview.py:562 +#: ../src/dialogs.py:674 ../src/gajim.py:894 ../src/gajim.py:895 +#: ../src/gajim.py:1369 ../src/gajim.py:1662 ../src/roster_window.py:345 +#: ../src/roster_window.py:429 ../src/roster_window.py:1790 +#: ../src/roster_window.py:1800 ../src/roster_window.py:2039 +#: ../src/roster_window.py:2277 ../src/roster_window.py:3125 +#: ../src/roster_window.py:3351 ../src/roster_window.py:4711 +#: ../src/roster_window.py:4713 ../src/common/contacts.py:84 +#: ../src/common/helpers.py:44 ../src/common/helpers.py:258 msgid "Not in Roster" msgstr "Non nei contatti" #. %s is being replaced in the code with JID -#: ../src/chat_control.py:1550 +#: ../src/chat_control.py:1762 #, python-format msgid "You just received a new message from \"%s\"" msgstr "Hai appena ricevuto un nuovo messaggio da \"%s\"" -#: ../src/chat_control.py:1551 +#: ../src/chat_control.py:1763 msgid "" "If you close this tab and you have history disabled, this message will be " "lost." msgstr "" -"Se questa scheda viene chiusa e la cronologia è disabilitata, questo " -"messaggio verrà perso." +"Se chiudi questa scheda e la cronologia è disabilitata, questo messaggio " +"verrà perso." -#: ../src/config.py:137 ../src/config.py:588 +#: ../src/config.py:122 ../src/config.py:544 msgid "Disabled" msgstr "Disabilitato" -#: ../src/config.py:231 -#, python-format -msgid "Every %s _minutes" -msgstr "Ogni %s _minuti" - -#: ../src/config.py:353 +#: ../src/config.py:288 msgid "Active" msgstr "Attivo" -#: ../src/config.py:361 +#: ../src/config.py:296 msgid "Event" msgstr "Evento" -#: ../src/config.py:684 ../src/gajim.py:2222 +#: ../src/config.py:617 ../src/dialogs.py:958 #, python-format msgid "Dictionary for lang %s not available" msgstr "Dizionario per lingua %s non disponibile" -#: ../src/config.py:685 ../src/gajim.py:2223 +#: ../src/config.py:618 #, python-format msgid "" "You have to install %s dictionary to use spellchecking, or choose another " @@ -2654,249 +2797,256 @@ msgstr "" "E' necessario installare il dizionario %s per usare il controllo " "ortografico, o configurare un'altra lingua nelle opzioni speller_language" -#: ../src/config.py:1009 +#: ../src/config.py:969 msgid "status message title" msgstr "titolo del messaggio di stato" -#: ../src/config.py:1009 +#: ../src/config.py:969 msgid "status message text" msgstr "testo del messaggio di stato" -#: ../src/config.py:1045 +#: ../src/config.py:1005 msgid "First Message Received" msgstr "Primo messaggio ricevuto" -#: ../src/config.py:1046 +#: ../src/config.py:1006 msgid "Next Message Received" msgstr "Prossimo messaggio ricevuto" -#: ../src/config.py:1047 +#: ../src/config.py:1007 msgid "Contact Connected" msgstr "Contatto connesso" -#: ../src/config.py:1048 +#: ../src/config.py:1008 msgid "Contact Disconnected" msgstr "Contatto disconnesso" -#: ../src/config.py:1049 +#: ../src/config.py:1009 msgid "Message Sent" msgstr "Messaggio inviato" -#: ../src/config.py:1050 +#: ../src/config.py:1010 msgid "Group Chat Message Highlight" msgstr "Evidenziatura messaggi in chat di gruppo" -#: ../src/config.py:1051 +#: ../src/config.py:1011 msgid "Group Chat Message Received" msgstr "Messaggio ricevuto in chat di gruppo" -#: ../src/config.py:1058 +#: ../src/config.py:1018 msgid "GMail Email Received" msgstr "Email GMail ricevuta" -#: ../src/config.py:1261 +#. Name column +#: ../src/config.py:1287 ../src/dialogs.py:1397 ../src/dialogs.py:1461 +#: ../src/disco.py:736 ../src/disco.py:1559 ../src/disco.py:1805 +#: ../src/history_window.py:108 +msgid "Name" +msgstr "Nome" + +#: ../src/config.py:1395 ../src/common/config.py:375 +msgid "Be right back." +msgstr "Torno subito." + +#: ../src/config.py:1399 +msgid "Relogin now?" +msgstr "Effettuare un nuovo login?" + +#: ../src/config.py:1400 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "" +"Se si vogliono applicare subito i cambiamenti, è necessario effettuare un " +"nuovo login." + +#: ../src/config.py:1495 ../src/config.py:1594 msgid "OpenPGP is not usable in this computer" msgstr "Non è possibile usare OpenPGP su questo computer" -#: ../src/config.py:1307 +#: ../src/config.py:1630 ../src/config.py:1674 +msgid "Unread events" +msgstr "Eventi non letti" + +#: ../src/config.py:1631 +msgid "Read all pending events before removing this account." +msgstr "Leggere tutti gli eventi in attesa prima di rimuovere questo account." + +#: ../src/config.py:1660 +#, python-format +msgid "You have opened chat in account %s" +msgstr "Hai aperto una chat nell'account %s" + +#: ../src/config.py:1661 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "" +"Tutte le finestre di chat e le chat di gruppo saranno chiuse. Desideri " +"continuare?" + +#: ../src/config.py:1670 msgid "You are currently connected to the server" msgstr "Si è ora connessi al server" -#: ../src/config.py:1308 +#: ../src/config.py:1671 msgid "To change the account name, you must be disconnected." msgstr "Per cambiare nome account, è necessario disconnettersi." -#: ../src/config.py:1311 ../src/config.py:1905 -msgid "Unread events" -msgstr "Eventi non letti" - -#: ../src/config.py:1312 +#: ../src/config.py:1675 msgid "To change the account name, you must read all pending events." -msgstr "Per cambiare nome account, è necessario leggere tutti gli eventi in attesa." +msgstr "" +"Per cambiare nome account, è necessario leggere tutti gli eventi in attesa." -#: ../src/config.py:1316 +#: ../src/config.py:1681 msgid "Account Name Already Used" msgstr "Nome account già in uso" -#: ../src/config.py:1317 +#: ../src/config.py:1682 msgid "" "This name is already used by another of your accounts. Please choose another " "name." msgstr "Questo nome è già usato da un altro account. Scegliere un altro nome." -#: ../src/config.py:1321 ../src/config.py:1325 +#: ../src/config.py:1686 ../src/config.py:1690 msgid "Invalid account name" msgstr "Il nome account non è valido" -#: ../src/config.py:1322 +#: ../src/config.py:1687 msgid "Account name cannot be empty." msgstr "Il nome account non può essere vuoto." -#: ../src/config.py:1326 +#: ../src/config.py:1691 msgid "Account name cannot contain spaces." msgstr "Il nome account non può contenere spazi." -#: ../src/config.py:1334 ../src/config.py:1340 ../src/config.py:1350 -#: ../src/config.py:3008 +#: ../src/config.py:1755 +msgid "Rename Account" +msgstr "Rinomina account" + +#: ../src/config.py:1756 +#, python-format +msgid "Enter a new name for account %s" +msgstr "Inserisci un nuovo nome per l'account %s" + +#: ../src/config.py:1774 ../src/config.py:1782 ../src/config.py:1822 +#: ../src/config.py:3048 msgid "Invalid Jabber ID" msgstr "ID Jabber non valido" -#: ../src/config.py:1341 +#: ../src/config.py:1783 msgid "A Jabber ID must be in the form \"user@servername\"." msgstr "Un ID Jabber deve essere nella forma \"utente@nomeserver\"." -#: ../src/config.py:1400 +#: ../src/config.py:1968 ../src/config.py:3119 msgid "Invalid entry" msgstr "Voce non valida" -#: ../src/config.py:1401 +#: ../src/config.py:1969 ../src/config.py:3120 msgid "Custom port must be a port number." msgstr "Si deve scegliere un numero di porta." -#: ../src/config.py:1529 ../src/common/config.py:366 -msgid "Be right back." -msgstr "Torno subito." +#: ../src/config.py:1990 +msgid "Failed to get secret keys" +msgstr "Fallimento nella ricezione delle chiavi segrete" -#: ../src/config.py:1539 -msgid "Relogin now?" -msgstr "Effettuare un nuovo login?" +#: ../src/config.py:1991 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "C'è stato un problema nel recuperare le chiavi segrete OpenPGP." -#: ../src/config.py:1540 -msgid "If you want all the changes to apply instantly, you must relogin." -msgstr "" -"Se si vogliono applicare subito i cambiamenti, è necessario effettuare un " -"nuovo login." +#: ../src/config.py:1994 +msgid "OpenPGP Key Selection" +msgstr "Scelta chiave OpenPGP" -#: ../src/config.py:1566 +#: ../src/config.py:1995 +msgid "Choose your OpenPGP key" +msgstr "Scegliere la chiave OpenPGP" + +#: ../src/config.py:2052 msgid "No such account available" msgstr "Questo account non è disponibile" -#: ../src/config.py:1567 +#: ../src/config.py:2053 msgid "You must create your account before editing your personal information." msgstr "" "È necessario creare un nuovo account prima di poter modificare le " "informazioni personali." -#: ../src/config.py:1574 ../src/dialogs.py:1130 ../src/dialogs.py:1316 -#: ../src/disco.py:419 ../src/profile_window.py:313 +#: ../src/config.py:2060 ../src/dialogs.py:1244 ../src/dialogs.py:1385 +#: ../src/dialogs.py:1565 ../src/disco.py:420 ../src/profile_window.py:325 msgid "You are not connected to the server" msgstr "Non si è connessi al server" -#: ../src/config.py:1575 +#: ../src/config.py:2061 msgid "Without a connection, you can not edit your personal information." msgstr "" "Senza una connessione, non è possibile modificare le informazioni personali." -#: ../src/config.py:1579 +#: ../src/config.py:2065 msgid "Your server doesn't support Vcard" msgstr "Il server non supporta Vcard" -#: ../src/config.py:1580 +#: ../src/config.py:2066 msgid "Your server can't save your personal information." msgstr "Il server non può salvare le informazioni personali." -#: ../src/config.py:1604 ../src/config.py:3396 -msgid "Failed to get secret keys" -msgstr "Fallimento nella ricezione delle chiavi segrete" - -#: ../src/config.py:1605 ../src/config.py:3397 -msgid "There was a problem retrieving your OpenPGP secret keys." -msgstr "C'è stato un problema nel recuperare le chiavi segrete OpenPGP." - -#: ../src/config.py:1608 ../src/config.py:3400 -msgid "OpenPGP Key Selection" -msgstr "Scelta chiave OpenPGP" - -#: ../src/config.py:1609 ../src/config.py:3401 -msgid "Choose your OpenPGP key" -msgstr "Scegliere la chiave OpenPGP" - -#. Name column -#: ../src/config.py:1839 ../src/disco.py:740 ../src/disco.py:1495 -#: ../src/disco.py:1733 ../src/history_window.py:78 -msgid "Name" -msgstr "Nome" - -#: ../src/config.py:1842 -msgid "Server" -msgstr "Server" - -#: ../src/config.py:1906 -msgid "Read all pending events before removing this account." -msgstr "Leggere tutti gli eventi in attesa prima di rimuovere questo account." - -#: ../src/config.py:1943 -#, python-format -msgid "You have opened chat in account %s" -msgstr "Hai aperto una chat nell'account %s" - -#: ../src/config.py:1944 -msgid "All chat and groupchat windows will be closed. Do you want to continue?" -msgstr "" -"Tutte le finestre di chat e le chat di gruppo saranno chiuse. Desideri " -"continuare?" - -#: ../src/config.py:2003 +#: ../src/config.py:2097 msgid "Account Local already exists." msgstr "Nome account già in uso" -#: ../src/config.py:2004 +#: ../src/config.py:2098 msgid "Please rename or remove it before enabling link-local messaging." msgstr "" "Per favore rinominalo o rimuovilo prima di abilitare la messaggistica sulla " "rete locale." -#: ../src/config.py:2238 +#: ../src/config.py:2274 #, python-format msgid "Edit %s" msgstr "Modifica %s" -#: ../src/config.py:2240 +#: ../src/config.py:2276 #, python-format msgid "Register to %s" msgstr "Registra a %s" #. list at the beginning -#: ../src/config.py:2306 +#: ../src/config.py:2312 msgid "Ban List" msgstr "Lista utenti bloccati" -#: ../src/config.py:2307 +#: ../src/config.py:2313 msgid "Member List" msgstr "Lista membri" -#: ../src/config.py:2308 +#: ../src/config.py:2314 msgid "Owner List" msgstr "Lista proprietari" -#: ../src/config.py:2309 +#: ../src/config.py:2315 msgid "Administrator List" msgstr "Lista amministratori" #. Address column #. holds JID (who said this) -#: ../src/config.py:2342 ../src/disco.py:747 ../src/history_manager.py:155 +#: ../src/config.py:2364 ../src/disco.py:743 ../src/history_manager.py:155 msgid "JID" msgstr "JID" -#: ../src/config.py:2350 +#: ../src/config.py:2372 msgid "Reason" msgstr "Motivo" -#: ../src/config.py:2355 +#: ../src/config.py:2377 msgid "Nick" msgstr "Nickname" -#: ../src/config.py:2359 +#: ../src/config.py:2381 msgid "Role" msgstr "Ruolo" -#: ../src/config.py:2380 +#: ../src/config.py:2406 msgid "Banning..." msgstr "Sto bloccando..." #. You can move '\n' before user@domain if that line is TOO BIG -#: ../src/config.py:2382 +#: ../src/config.py:2408 msgid "" "<b>Whom do you want to ban?</b>\n" "\n" @@ -2904,11 +3054,11 @@ msgstr "" "<b>Chi si vuole bloccare?</b>\n" "\n" -#: ../src/config.py:2384 +#: ../src/config.py:2410 msgid "Adding Member..." msgstr "Aggiunta membro..." -#: ../src/config.py:2385 +#: ../src/config.py:2411 msgid "" "<b>Whom do you want to make a member?</b>\n" "\n" @@ -2916,11 +3066,11 @@ msgstr "" "<b>Chi si vuole rendere membro?</b>\n" "\n" -#: ../src/config.py:2387 +#: ../src/config.py:2413 msgid "Adding Owner..." msgstr "Aggiunta proprietario..." -#: ../src/config.py:2388 +#: ../src/config.py:2414 msgid "" "<b>Whom do you want to make an owner?</b>\n" "\n" @@ -2928,11 +3078,11 @@ msgstr "" "<b>Chi si vuole rendere proprietario?</b>\n" "\n" -#: ../src/config.py:2390 +#: ../src/config.py:2416 msgid "Adding Administrator..." msgstr "Aggiunta amministratore..." -#: ../src/config.py:2391 +#: ../src/config.py:2417 msgid "" "<b>Whom do you want to make an administrator?</b>\n" "\n" @@ -2940,7 +3090,7 @@ msgstr "" "<b>Chi si vuole rendere amministratore?</b>\n" "\n" -#: ../src/config.py:2392 +#: ../src/config.py:2418 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -2957,124 +3107,119 @@ msgstr "" "4. dominio (il dominio corrisponde, così come qualsiasi utente@dominio,\n" "dominio/risorsa, o indirizzo contenente un sottodominio)." -#: ../src/config.py:2497 +#: ../src/config.py:2522 #, python-format msgid "Removing %s account" msgstr "Eliminazione account %s" -#: ../src/config.py:2514 ../src/roster_window.py:2733 +#: ../src/config.py:2539 ../src/gajim.py:1312 ../src/roster_window.py:3410 msgid "Password Required" msgstr "Password richiesta" -#: ../src/config.py:2515 ../src/roster_window.py:2729 +#: ../src/config.py:2540 ../src/roster_window.py:3406 #, python-format msgid "Enter your password for account %s" msgstr "Inserire la password per l'account %s" -#: ../src/config.py:2516 ../src/roster_window.py:2734 +#: ../src/config.py:2541 ../src/roster_window.py:3411 msgid "Save password" msgstr "Memorizza password" -#: ../src/config.py:2530 +#: ../src/config.py:2555 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "L'account \"%s\" è connesso al server" -#: ../src/config.py:2531 +#: ../src/config.py:2556 msgid "If you remove it, the connection will be lost." msgstr "Se viene rimosso, la connessione verrà persa." -#: ../src/config.py:2616 +#: ../src/config.py:2649 msgid "Default" msgstr "Predefinito" -#: ../src/config.py:2616 +#: ../src/config.py:2649 msgid "?print_status:All" msgstr "?print_status:Tutti" -#: ../src/config.py:2617 +#: ../src/config.py:2650 msgid "Enter and leave only" msgstr "Solo ingresso ed uscita" -#: ../src/config.py:2618 +#: ../src/config.py:2651 msgid "?print_status:None" msgstr "Nessuno" -#: ../src/config.py:2686 +#: ../src/config.py:2720 msgid "New Group Chat" msgstr "Nuova chat di gruppo" -#: ../src/config.py:2719 +#: ../src/config.py:2753 msgid "This bookmark has invalid data" msgstr "Questo segnalibro contiene dati non validi" -#: ../src/config.py:2720 +#: ../src/config.py:2754 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:2983 +#: ../src/config.py:3031 msgid "Invalid username" msgstr "Nome utente non valido" -#: ../src/config.py:2984 +#: ../src/config.py:3033 msgid "You must provide a username to configure this account." msgstr "È necessario inserire un nome utente per configurare questo account." -#: ../src/config.py:2994 ../src/dialogs.py:1335 -msgid "Invalid password" -msgstr "Password non valida" - -#: ../src/config.py:2995 -msgid "You must enter a password for the new account." -msgstr "È necessario inserire una password per il nuovo account." - -#: ../src/config.py:2999 ../src/dialogs.py:1340 -msgid "Passwords do not match" -msgstr "Le password non coincidono" - -#: ../src/config.py:3000 ../src/dialogs.py:1341 -msgid "The passwords typed in both fields must be identical." -msgstr "Le password immesse nei due campi devono essere identiche." - -#: ../src/config.py:3019 +#: ../src/config.py:3059 msgid "Duplicate Jabber ID" msgstr "ID Jabber duplicato" -#: ../src/config.py:3020 +#: ../src/config.py:3060 msgid "This account is already configured in Gajim." msgstr "Questo account è già configurato in Gajim." -#: ../src/config.py:3037 +#: ../src/config.py:3077 msgid "Account has been added successfully" msgstr "L'account è stato aggiunto con successo" -#: ../src/config.py:3038 ../src/config.py:3073 +#: ../src/config.py:3078 ../src/config.py:3223 msgid "" "You can set advanced account options by pressing the Advanced button, or " "later by choosing the Accounts menuitem under the Edit menu from the main " "window." -msgstr "È possibile impostare ora le opzioni avanzate premendo il pulsante \"Avanzate\", o farlo più tardi scegliendo la voce \"Account\" nel menu \"Modifica\" della finestra principale." +msgstr "" +"È possibile impostare ora le opzioni avanzate premendo il pulsante \"Avanzate" +"\", o farlo più tardi scegliendo la voce \"Account\" nel menu \"Modifica\" " +"della finestra principale." -#: ../src/config.py:3072 -msgid "Your new account has been created successfully" -msgstr "Il nuovo account è stato creato con successo" +#: ../src/config.py:3095 +msgid "Invalid server" +msgstr "Server non valido" + +#: ../src/config.py:3096 +msgid "Please provide a server on which you want to register." +msgstr "Per favore fornire il server su cui vuoi registrarti." -#: ../src/config.py:3090 +#: ../src/config.py:3202 ../src/config.py:3241 msgid "An error occurred during account creation" msgstr "Si è verificato un errore durante la creazione dell'account" -#: ../src/config.py:3148 +#: ../src/config.py:3222 +msgid "Your new account has been created successfully" +msgstr "Il nuovo account è stato creato con successo" + +#: ../src/config.py:3327 msgid "Account name is in use" msgstr "Il nome account è già in uso" -#: ../src/config.py:3149 +#: ../src/config.py:3328 msgid "You already have an account using this name." msgstr "Esiste già un account con lo stesso nome" -#: ../src/conversation_textview.py:271 +#: ../src/conversation_textview.py:337 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -3082,518 +3227,583 @@ 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:340 +#: ../src/conversation_textview.py:409 #, python-format msgid "_Actions for \"%s\"" msgstr "_Azioni per \"%s\"" -#: ../src/conversation_textview.py:352 +#: ../src/conversation_textview.py:421 msgid "Read _Wikipedia Article" msgstr "Leggi l'articolo di _Wikipedia" -#: ../src/conversation_textview.py:357 +#: ../src/conversation_textview.py:426 msgid "Look it up in _Dictionary" msgstr "Controlla nel _Dizionario" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:373 +#: ../src/conversation_textview.py:442 #, 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:386 +#: ../src/conversation_textview.py:455 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "Manca un \"%s\" nell'URL di ricerca su web" -#: ../src/conversation_textview.py:389 +#: ../src/conversation_textview.py:458 msgid "Web _Search for it" msgstr "_Cercalo nel Web" -#: ../src/conversation_textview.py:395 +#: ../src/conversation_textview.py:464 msgid "Open as _Link" msgstr "Apri come _Link" -#: ../src/conversation_textview.py:752 +#: ../src/conversation_textview.py:929 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:756 +#: ../src/conversation_textview.py:933 #, python-format msgid "%i days ago" msgstr "%i giorni fa" #. if we have subject, show it too! -#: ../src/conversation_textview.py:790 +#: ../src/conversation_textview.py:967 #, python-format msgid "Subject: %s\n" msgstr "Oggetto: %s\n" -#: ../src/dialogs.py:59 +#: ../src/dialogs.py:64 #, python-format msgid "Contact name: <i>%s</i>" msgstr "Nome contatto: <i>%s</i>" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:66 #, python-format msgid "Jabber ID: <i>%s</i>" msgstr "ID Jabber: <i>%s</i>" -#: ../src/dialogs.py:211 +#: ../src/dialogs.py:216 msgid "Group" msgstr "Gruppo" -#: ../src/dialogs.py:218 +#: ../src/dialogs.py:223 msgid "In the group" msgstr "Nel gruppo" -#: ../src/dialogs.py:269 +#: ../src/dialogs.py:274 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:272 +#: ../src/dialogs.py:277 msgid "Contact name" msgstr "Nome contatto" -#: ../src/dialogs.py:318 +#: ../src/dialogs.py:323 #, python-format msgid "%s Status Message" msgstr "Messaggio di stato %s" -#: ../src/dialogs.py:320 +#: ../src/dialogs.py:325 msgid "Status Message" msgstr "Messaggio di stato" -#: ../src/dialogs.py:395 +#: ../src/dialogs.py:425 msgid "Save as Preset Status Message" msgstr "Salva come messaggio di stato predefinito" -#: ../src/dialogs.py:396 +#: ../src/dialogs.py:426 msgid "Please type a name for this status message" msgstr "Inserire un nome per questo messaggio di stato" -#: ../src/dialogs.py:417 +#: ../src/dialogs.py:437 +msgid "Overwrite Status Message?" +msgstr "Sovrascrivere messaggio di stato?" + +#: ../src/dialogs.py:438 +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "" +"Questo nome è già stato utilizzato. Vuoi sovrascrivere questo messaggio di " +"stato?" + +#: ../src/dialogs.py:454 msgid "AIM Address:" msgstr "Indirizzo AIM:" -#: ../src/dialogs.py:418 +#: ../src/dialogs.py:455 msgid "GG Number:" msgstr "Numero GG:" -#: ../src/dialogs.py:419 +#: ../src/dialogs.py:456 msgid "ICQ Number:" msgstr "Numero ICQ:" -#: ../src/dialogs.py:420 +#: ../src/dialogs.py:457 msgid "MSN Address:" msgstr "Indirizzo MSN:" -#: ../src/dialogs.py:421 +#: ../src/dialogs.py:458 msgid "Yahoo! Address:" msgstr "Indirizzo Yahoo!:" -#: ../src/dialogs.py:457 +#: ../src/dialogs.py:495 #, 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:459 +#: ../src/dialogs.py:497 msgid "Please fill in the data of the contact you want to add" msgstr "Inserire i dati del contatto che si vuole aggiungere" -#: ../src/dialogs.py:609 ../src/dialogs.py:615 +#: ../src/dialogs.py:654 ../src/dialogs.py:660 msgid "Invalid User ID" msgstr "ID utente non valido" -#: ../src/dialogs.py:616 +#: ../src/dialogs.py:661 msgid "The user ID must not contain a resource." msgstr "L'identificatore dell'utente deve non contenere una risorsa." -#: ../src/dialogs.py:630 +#: ../src/dialogs.py:675 msgid "Contact already in roster" -msgstr "Contatto già presente nella lista" +msgstr "Contatto già presente nella lista contatti" -#: ../src/dialogs.py:631 +#: ../src/dialogs.py:676 msgid "This contact is already listed in your roster." -msgstr "Questo contatto è già presente nella lista." +msgstr "Questo contatto è già presente nella lista contatti." -#: ../src/dialogs.py:668 +#: ../src/dialogs.py:712 msgid "User ID:" msgstr "ID utente:" -#: ../src/dialogs.py:731 +#: ../src/dialogs.py:774 msgid "A GTK+ jabber client" msgstr "Un client jabber GTK+" -#: ../src/dialogs.py:732 +#: ../src/dialogs.py:775 msgid "GTK+ Version:" msgstr "Versione di GTK+:" -#: ../src/dialogs.py:733 +#: ../src/dialogs.py:776 msgid "PyGTK Version:" msgstr "Versione di PyGTK:" -#: ../src/dialogs.py:747 +#: ../src/dialogs.py:790 msgid "Current Developers:" msgstr "Sviluppatori attuali:" -#: ../src/dialogs.py:749 +#: ../src/dialogs.py:792 msgid "Past Developers:" msgstr "Sviluppatori precedenti:" -#: ../src/dialogs.py:759 +#: ../src/dialogs.py:802 msgid "THANKS:" msgstr "GRAZIE:" #. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:765 +#: ../src/dialogs.py:808 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 <someone@somewhere> -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:821 msgid "translator-credits" msgstr "" "Mauro Brenna <malloblenne@gmail.com>\n" "Andrea Ratti <scimiot@yahoo.it>\n" -"Matteo Dell'Amico <della@linux.it>" +"Matteo Dell'Amico <della@linux.it>\n" +"Daniel Coppi <neoex.dc@gmail.com>" -#: ../src/dialogs.py:908 +#: ../src/dialogs.py:951 #, python-format msgid "Unable to bind to port %s." msgstr "Non è possibile fare il bind alla porta %s" -#: ../src/dialogs.py:909 +#: ../src/dialogs.py:952 msgid "" "Maybe you have another running instance of Gajim. File Transfer will be " "cancelled." -msgstr "Potrebbe essere in esecuzione un altra istanza di Gajim. Il trasferimento file verrà annullato." +msgstr "" +"Potrebbe essere in esecuzione un altra istanza di Gajim. Il trasferimento " +"file verrà annullato." + +#: ../src/dialogs.py:959 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"E' necessario installare il dizionario %s per usare il controllo " +"ortografico, o configurare un'altra lingua nelle opzioni speller_language.\n" +"\n" +"L'evidenziazione delle parole errate non verrà usata" -#: ../src/dialogs.py:1060 +#: ../src/dialogs.py:1173 #, python-format msgid "Subscription request for account %s from %s" msgstr "Richiesta di abbonamento per l'account %s da %s" -#: ../src/dialogs.py:1063 +#: ../src/dialogs.py:1176 #, python-format msgid "Subscription request from %s" msgstr "Richiesta di abbonamento da %s" -#: ../src/dialogs.py:1123 ../src/roster_window.py:687 +#: ../src/dialogs.py:1237 ../src/roster_window.py:763 #, python-format msgid "You are already in group chat %s" msgstr "Si è già nella stanza %s" -#: ../src/dialogs.py:1131 +#: ../src/dialogs.py:1245 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:1146 +#: ../src/dialogs.py:1263 #, python-format msgid "Join Group Chat with account %s" msgstr "Entra in chat di gruppo con l'account %s" -#: ../src/dialogs.py:1214 ../src/dialogs.py:1220 +#: ../src/dialogs.py:1333 ../src/dialogs.py:1339 +#: ../src/groupchat_control.py:1662 msgid "Invalid group chat Jabber ID" msgstr "ID Jabber non valido" -#: ../src/dialogs.py:1215 ../src/dialogs.py:1221 +#: ../src/dialogs.py:1334 ../src/dialogs.py:1340 +#: ../src/groupchat_control.py:1663 msgid "The group chat Jabber ID has not allowed characters." msgstr "Il nome della stanza o del server contiene caratteri non permessi." -#: ../src/dialogs.py:1227 +#: ../src/dialogs.py:1346 msgid "This is not a group chat" msgstr "Questa non è una chat di gruppo" -#: ../src/dialogs.py:1228 +#: ../src/dialogs.py:1347 #, python-format msgid "%s is not the name of a group chat." msgstr "%s non è il nome di una chat di gruppo" -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1386 +msgid "Without a connection, you can not synchronise your contacts." +msgstr "Senza una connessione, non puoi sincronizzare i tuoi contatti." + +#: ../src/dialogs.py:1400 +msgid "Server" +msgstr "Server" + +#: ../src/dialogs.py:1433 +msgid "This account is not connected to the server" +msgstr "Questo account non è connesso al server" + +#: ../src/dialogs.py:1434 +msgid "You cannot synchronize with an account unless it is connected." +msgstr "Non puoi sincronizzarti con un account a meno che non sia connesso." + +#: ../src/dialogs.py:1458 +msgid "Synchronise" +msgstr "Sincronizza" + +#: ../src/dialogs.py:1516 #, python-format msgid "Start Chat with account %s" msgstr "Inizia chat con l'account %s" -#: ../src/dialogs.py:1269 +#: ../src/dialogs.py:1518 msgid "Start Chat" msgstr "Inizia chat" -#: ../src/dialogs.py:1270 +#: ../src/dialogs.py:1519 msgid "" "Fill in the nickname or the Jabber ID of the contact you would like\n" "to send a chat message to:" msgstr "Introdurre il nickname o l'ID del contatto con cui chattare:" #. if offline or connecting -#: ../src/dialogs.py:1295 ../src/dialogs.py:1654 ../src/dialogs.py:1785 +#: ../src/dialogs.py:1544 ../src/dialogs.py:1891 ../src/dialogs.py:2027 msgid "Connection not available" msgstr "Connessione non disponibile" -#: ../src/dialogs.py:1296 ../src/dialogs.py:1655 ../src/dialogs.py:1786 +#: ../src/dialogs.py:1545 ../src/dialogs.py:1892 ../src/dialogs.py:2028 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Assicurarsi di essere connesso con \"%s\"." -#: ../src/dialogs.py:1305 ../src/dialogs.py:1308 +#: ../src/dialogs.py:1554 ../src/dialogs.py:1557 msgid "Invalid JID" msgstr "ID Jabber non valido" -#: ../src/dialogs.py:1308 +#: ../src/dialogs.py:1557 #, python-format msgid "Unable to parse \"%s\"." msgstr "Impossibile processare \"%s\"." -#: ../src/dialogs.py:1317 +#: ../src/dialogs.py:1566 msgid "Without a connection, you can not change your password." msgstr "Senza una connessione, non è possibile cambiare la password." -#: ../src/dialogs.py:1336 +#: ../src/dialogs.py:1584 +msgid "Invalid password" +msgstr "Password non valida" + +#: ../src/dialogs.py:1585 msgid "You must enter a password." msgstr "È necessario inserire una password." +#: ../src/dialogs.py:1589 +msgid "Passwords do not match" +msgstr "Le password non coincidono" + +#: ../src/dialogs.py:1590 +msgid "The passwords typed in both fields must be identical." +msgstr "Le password immesse nei due campi devono essere identiche." + #. img to display #. default value -#: ../src/dialogs.py:1383 ../src/notify.py:212 ../src/notify.py:416 +#: ../src/dialogs.py:1632 ../src/notify.py:219 ../src/notify.py:429 msgid "Contact Signed In" msgstr "Contatto connesso" -#: ../src/dialogs.py:1385 ../src/notify.py:220 ../src/notify.py:418 +#: ../src/dialogs.py:1634 ../src/notify.py:227 ../src/notify.py:431 msgid "Contact Signed Out" msgstr "Contatto disconnesso" #. chat message -#: ../src/dialogs.py:1387 ../src/notify.py:239 ../src/notify.py:420 +#: ../src/dialogs.py:1636 ../src/notify.py:250 ../src/notify.py:433 msgid "New Message" msgstr "Nuovo messaggio" #. single message -#: ../src/dialogs.py:1387 ../src/notify.py:224 ../src/notify.py:420 +#: ../src/dialogs.py:1636 ../src/notify.py:231 ../src/notify.py:433 msgid "New Single Message" msgstr "Nuovo messaggio singolo" #. private message -#: ../src/dialogs.py:1388 ../src/notify.py:231 ../src/notify.py:421 +#: ../src/dialogs.py:1637 ../src/notify.py:238 ../src/notify.py:434 msgid "New Private Message" msgstr "Nuovo messaggio privato" -#: ../src/dialogs.py:1388 ../src/gajim.py:1282 ../src/notify.py:429 +#: ../src/dialogs.py:1637 ../src/gajim.py:1465 ../src/notify.py:442 msgid "New E-mail" msgstr "Nuova e-mail" -#: ../src/dialogs.py:1390 ../src/gajim.py:1435 ../src/notify.py:423 +#: ../src/dialogs.py:1639 ../src/gajim.py:1682 ../src/notify.py:436 msgid "File Transfer Request" msgstr "Richiesta di trasferimento file" -#: ../src/dialogs.py:1392 ../src/gajim.py:1254 ../src/gajim.py:1411 -#: ../src/notify.py:425 +#: ../src/dialogs.py:1641 ../src/gajim.py:1437 ../src/gajim.py:1649 +#: ../src/notify.py:438 msgid "File Transfer Error" msgstr "Errore nel trasferimento file" -#: ../src/dialogs.py:1394 ../src/gajim.py:1474 ../src/gajim.py:1496 -#: ../src/gajim.py:1513 ../src/notify.py:427 +#: ../src/dialogs.py:1643 ../src/gajim.py:1721 ../src/gajim.py:1743 +#: ../src/gajim.py:1760 ../src/notify.py:440 msgid "File Transfer Completed" msgstr "Trasferimento file completato" -#: ../src/dialogs.py:1395 ../src/gajim.py:1477 ../src/notify.py:427 +#: ../src/dialogs.py:1644 ../src/gajim.py:1724 ../src/notify.py:440 msgid "File Transfer Stopped" msgstr "Trasferimento file fermato" -#: ../src/dialogs.py:1397 ../src/gajim.py:1151 ../src/notify.py:431 +#: ../src/dialogs.py:1646 ../src/gajim.py:1333 ../src/notify.py:444 msgid "Groupchat Invitation" msgstr "Invito a chat di gruppo" -#: ../src/dialogs.py:1399 ../src/notify.py:204 ../src/notify.py:433 +#: ../src/dialogs.py:1648 ../src/notify.py:211 ../src/notify.py:446 msgid "Contact Changed Status" msgstr "Stato Contatto Cambiato" -#: ../src/dialogs.py:1584 +#: ../src/dialogs.py:1821 #, python-format msgid "Single Message using account %s" msgstr "Messaggio singolo con l'account %s" -#: ../src/dialogs.py:1586 +#: ../src/dialogs.py:1823 #, python-format msgid "Single Message in account %s" msgstr "Messaggio singolo nell'account %s" -#: ../src/dialogs.py:1588 +#: ../src/dialogs.py:1825 msgid "Single Message" msgstr "Messaggio singolo" #. prepare UI for Sending -#: ../src/dialogs.py:1591 +#: ../src/dialogs.py:1828 #, python-format msgid "Send %s" msgstr "Invia %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1614 +#: ../src/dialogs.py:1851 #, 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:1686 +#: ../src/dialogs.py:1928 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1687 +#: ../src/dialogs.py:1929 #, python-format msgid "%s wrote:\n" msgstr "%s ha scritto:\n" -#: ../src/dialogs.py:1731 +#: ../src/dialogs.py:1973 #, python-format msgid "XML Console for %s" msgstr "Console XML per %s" -#: ../src/dialogs.py:1733 +#: ../src/dialogs.py:1975 msgid "XML Console" msgstr "Console XML" -#: ../src/dialogs.py:1856 +#: ../src/dialogs.py:2098 #, python-format msgid "Privacy List <b><i>%s</i></b>" msgstr "Lista privacy <b><i>%s</i></b>" -#: ../src/dialogs.py:1860 +#: ../src/dialogs.py:2102 #, python-format msgid "Privacy List for %s" msgstr "Lista privacy per %s" -#: ../src/dialogs.py:1908 +#: ../src/dialogs.py:2158 #, python-format msgid "Order: %s, action: %s, type: %s, value: %s" msgstr "Ordine: %s, azione: %s, tipo: %s, valore: %s" -#: ../src/dialogs.py:1911 +#: ../src/dialogs.py:2161 #, python-format msgid "Order: %s, action: %s" msgstr "Ordine: %s, azione: %s" -#: ../src/dialogs.py:1953 +#: ../src/dialogs.py:2203 msgid "<b>Edit a rule</b>" msgstr "<b>Modifica una regola</b>" -#: ../src/dialogs.py:2040 +#: ../src/dialogs.py:2290 msgid "<b>Add a rule</b>" msgstr "<b>Aggiungi una regola</b>" -#: ../src/dialogs.py:2136 +#: ../src/dialogs.py:2386 #, python-format msgid "Privacy Lists for %s" msgstr "Lista privacy per %s" -#: ../src/dialogs.py:2138 +#: ../src/dialogs.py:2388 msgid "Privacy Lists" msgstr "Liste privacy" -#: ../src/dialogs.py:2208 +#: ../src/dialogs.py:2458 msgid "Invalid List Name" msgstr "Nome lista non valido" -#: ../src/dialogs.py:2209 +#: ../src/dialogs.py:2459 msgid "You must enter a name to create a privacy list." msgstr "È necessario inserire una nome per creare una lista privacy" -#. Don't translate $Contact -#: ../src/dialogs.py:2243 +#: ../src/dialogs.py:2496 +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact ti ha invitato a partecipare a una discussione" + +#: ../src/dialogs.py:2498 #, python-format msgid "$Contact has invited you to group chat %(room_jid)s" msgstr "$Contact ti ha invitato alla chat di gruppo %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:2255 +#: ../src/dialogs.py:2510 #, python-format msgid "Comment: %s" msgstr "Commento: %s" -#: ../src/dialogs.py:2317 +#: ../src/dialogs.py:2576 msgid "Choose Sound" msgstr "Scegliere il suono" -#: ../src/dialogs.py:2327 ../src/dialogs.py:2372 +#: ../src/dialogs.py:2586 ../src/dialogs.py:2634 msgid "All files" msgstr "Tutti i file" -#: ../src/dialogs.py:2332 +#: ../src/dialogs.py:2591 msgid "Wav Sounds" msgstr "Suoni Wav" -#: ../src/dialogs.py:2362 +#: ../src/dialogs.py:2624 msgid "Choose Image" msgstr "Scegli immagine" -#: ../src/dialogs.py:2377 +#: ../src/dialogs.py:2639 msgid "Images" msgstr "Immagini" -#: ../src/dialogs.py:2434 +#: ../src/dialogs.py:2703 #, python-format msgid "When %s becomes:" msgstr "Quando %s diventa:" -#: ../src/dialogs.py:2436 +#: ../src/dialogs.py:2705 #, python-format msgid "Adding Special Notification for %s" msgstr "Creazione notifica speciale per %s" #. # means number -#: ../src/dialogs.py:2507 +#: ../src/dialogs.py:2776 msgid "#" msgstr "#" -#: ../src/dialogs.py:2513 +#: ../src/dialogs.py:2782 msgid "Condition" msgstr "Condizione" -#: ../src/dialogs.py:2634 +#: ../src/dialogs.py:2900 msgid "when I am " msgstr "quando io sono " -#: ../src/disco.py:103 +#: ../src/disco.py:104 msgid "Others" msgstr "Altri" -#: ../src/disco.py:104 ../src/disco.py:105 ../src/disco.py:1281 -#: ../src/gajim.py:596 ../src/roster_window.py:271 ../src/roster_window.py:329 -#: ../src/roster_window.py:368 ../src/roster_window.py:451 -#: ../src/roster_window.py:483 ../src/roster_window.py:485 -#: ../src/roster_window.py:3896 ../src/roster_window.py:3898 -#: ../src/common/contacts.py:267 ../src/common/helpers.py:43 +#: ../src/disco.py:105 ../src/disco.py:106 ../src/disco.py:1345 +#: ../src/gajim.py:644 ../src/roster_window.py:282 ../src/roster_window.py:342 +#: ../src/roster_window.py:382 ../src/roster_window.py:490 +#: ../src/roster_window.py:522 ../src/roster_window.py:524 +#: ../src/roster_window.py:4707 ../src/roster_window.py:4709 +#: ../src/common/contacts.py:290 ../src/common/contacts.py:305 +#: ../src/common/helpers.py:44 msgid "Transports" msgstr "Trasporti" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:107 +#: ../src/disco.py:108 msgid "Conference" msgstr "Conferenze" -#: ../src/disco.py:420 +#: ../src/disco.py:421 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:495 #, python-format msgid "Service Discovery using account %s" msgstr "Ricerca servizi usando l'account %s" -#: ../src/disco.py:501 +#: ../src/disco.py:497 msgid "Service Discovery" msgstr "Ricerca servizi" -#: ../src/disco.py:641 +#: ../src/disco.py:637 msgid "The service could not be found" msgstr "Il servizio non è stato trovato" -#: ../src/disco.py:642 +#: ../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." @@ -3601,64 +3811,72 @@ msgstr "" "Il servizio all'indirizzo immesso non risponde o è inesistente. Controllare " "l'indirizzo e riprovare." -#: ../src/disco.py:646 ../src/disco.py:927 +#: ../src/disco.py:642 ../src/disco.py:923 msgid "The service is not browsable" msgstr "Non è possibile consultare il servizio" -#: ../src/disco.py:647 +#: ../src/disco.py:643 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:727 +#: ../src/disco.py:723 #, python-format msgid "Browsing %s using account %s" msgstr "Consulta %s usando l'account %s" -#: ../src/disco.py:766 +#: ../src/disco.py:762 msgid "_Browse" msgstr "C_onsulta" -#: ../src/disco.py:928 +#: ../src/disco.py:924 msgid "This service does not contain any items to browse." msgstr "Questo servizio non contiene oggetti da consultare." -#: ../src/disco.py:1155 ../src/disco.py:1286 +#: ../src/disco.py:1142 +msgid "_Execute Command" +msgstr "_Esegui comando" + +#: ../src/disco.py:1152 ../src/disco.py:1350 msgid "Re_gister" msgstr "_Registra" -#: ../src/disco.py:1323 +#: ../src/disco.py:1387 #, python-format msgid "Scanning %d / %d.." msgstr "Analisi %d / %d..." #. Users column -#: ../src/disco.py:1504 +#: ../src/disco.py:1569 msgid "Users" msgstr "Utenti" #. Description column -#: ../src/disco.py:1511 +#: ../src/disco.py:1577 msgid "Description" msgstr "Descrizione" #. Id column -#: ../src/disco.py:1518 +#: ../src/disco.py:1585 msgid "Id" msgstr "Id" -#: ../src/disco.py:1741 +#: ../src/disco.py:1814 msgid "Subscribed" msgstr "Abbonati" -#: ../src/disco.py:1767 +#: ../src/disco.py:1822 +msgid "Node" +msgstr "Nodo" + +#: ../src/disco.py:1879 msgid "New post" msgstr "Nuovo post" -#: ../src/disco.py:1773 +#: ../src/disco.py:1885 msgid "_Subscribe" msgstr "A_bbonati" -#: ../src/disco.py:1779 +#: ../src/disco.py:1891 msgid "_Unsubscribe" msgstr "Disa_bbonati" @@ -3674,102 +3892,102 @@ msgstr "Tempo" msgid "Progress" msgstr "Progresso" -#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 +#: ../src/filetransfers_window.py:159 ../src/filetransfers_window.py:213 #, python-format msgid "Filename: %s" msgstr "Nome file: %s" -#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:298 +#: ../src/filetransfers_window.py:160 ../src/filetransfers_window.py:288 #, 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:173 ../src/filetransfers_window.py:183 +#: ../src/filetransfers_window.py:169 ../src/filetransfers_window.py:179 #: ../src/history_manager.py:463 msgid "You" msgstr "Tu" -#: ../src/filetransfers_window.py:174 +#: ../src/filetransfers_window.py:170 #, python-format msgid "Sender: %s" msgstr "Mittente: %s" -#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:572 -#: ../src/tooltips.py:573 +#: ../src/filetransfers_window.py:171 ../src/filetransfers_window.py:577 +#: ../src/tooltips.py:586 msgid "Recipient: " msgstr "Destinatario: " -#: ../src/filetransfers_window.py:186 +#: ../src/filetransfers_window.py:182 #, python-format msgid "Saved in: %s" msgstr "Memorizzato in: %s" -#: ../src/filetransfers_window.py:188 +#: ../src/filetransfers_window.py:184 msgid "File transfer completed" msgstr "Trasferimento file completato" -#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:204 msgid "File transfer cancelled" msgstr "Trasferimento file annullato" -#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:205 msgid "Connection with peer cannot be established." msgstr "La connessione non può essere stabilita." -#: ../src/filetransfers_window.py:224 +#: ../src/filetransfers_window.py:214 #, python-format msgid "Recipient: %s" msgstr "Destinatario: %s" -#: ../src/filetransfers_window.py:226 +#: ../src/filetransfers_window.py:216 #, python-format msgid "Error message: %s" msgstr "Messaggio di errore: %s" -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:217 msgid "File transfer stopped by the contact at the other end" msgstr "Trasferimento file fermato dal contatto dall'altra parte" -#: ../src/filetransfers_window.py:244 +#: ../src/filetransfers_window.py:234 msgid "Choose File to Send..." msgstr "Scegliere il file da inviare..." -#: ../src/filetransfers_window.py:263 +#: ../src/filetransfers_window.py:253 msgid "Gajim cannot access this file" msgstr "Gajim non riesce a leggere questo file" -#: ../src/filetransfers_window.py:264 +#: ../src/filetransfers_window.py:254 msgid "This file is being used by another process." msgstr "Questo file è in uso da un altro processo." -#: ../src/filetransfers_window.py:296 +#: ../src/filetransfers_window.py:286 #, python-format msgid "File: %s" msgstr "File: %s" -#: ../src/filetransfers_window.py:301 +#: ../src/filetransfers_window.py:291 #, python-format msgid "Type: %s" msgstr "Tipo: %s" -#: ../src/filetransfers_window.py:303 +#: ../src/filetransfers_window.py:293 #, python-format msgid "Description: %s" msgstr "Descrizione: %s" -#: ../src/filetransfers_window.py:304 +#: ../src/filetransfers_window.py:294 #, python-format msgid "%s wants to send you a file:" msgstr "%s vuole inviarti un file:" -#: ../src/filetransfers_window.py:318 ../src/gtkgui_helpers.py:747 +#: ../src/filetransfers_window.py:308 ../src/gtkgui_helpers.py:767 #, python-format msgid "Cannot overwrite existing file \"%s\"" msgstr "Non è possibile sovrascrivere il file esistente \"%s\"" -#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:749 +#: ../src/filetransfers_window.py:309 ../src/gtkgui_helpers.py:769 msgid "" "A file with this name already exists and you do not have permission to " "overwrite it." @@ -3777,31 +3995,31 @@ msgstr "" "Un file con lo stesso nome è già presente e non si ha il permesso per " "sovrascriverlo" -#: ../src/filetransfers_window.py:326 ../src/gtkgui_helpers.py:753 +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 msgid "This file already exists" msgstr "Questo file esiste già " -#: ../src/filetransfers_window.py:326 ../src/gtkgui_helpers.py:753 +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 msgid "What do you want to do?" msgstr "Cosa fare?" -#: ../src/filetransfers_window.py:338 ../src/gtkgui_helpers.py:763 +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:783 #, python-format msgid "Directory \"%s\" is not writable" msgstr "La cartella \"%s\" non è scrivibile." -#: ../src/filetransfers_window.py:338 ../src/gtkgui_helpers.py:764 +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:784 msgid "You do not have permission to create files in this directory." msgstr "Non si ha il permesso di creare file in questa cartella." -#: ../src/filetransfers_window.py:348 +#: ../src/filetransfers_window.py:338 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:429 +#: ../src/filetransfers_window.py:419 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -3809,65 +4027,66 @@ 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:505 +#: ../src/filetransfers_window.py:508 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:544 ../src/filetransfers_window.py:547 +#: ../src/filetransfers_window.py:547 ../src/filetransfers_window.py:550 msgid "Invalid File" msgstr "File non valido" -#: ../src/filetransfers_window.py:544 +#: ../src/filetransfers_window.py:547 msgid "File: " msgstr "File: " -#: ../src/filetransfers_window.py:548 +#: ../src/filetransfers_window.py:551 msgid "It is not possible to send empty files" msgstr "Non è possibile inviare file vuoti" -#: ../src/filetransfers_window.py:568 ../src/tooltips.py:563 +#: ../src/filetransfers_window.py:573 ../src/tooltips.py:576 msgid "Name: " msgstr "Nome: " -#: ../src/filetransfers_window.py:570 ../src/tooltips.py:567 +#: ../src/filetransfers_window.py:575 ../src/tooltips.py:580 msgid "Sender: " msgstr "Mittente: " -#: ../src/filetransfers_window.py:758 +#: ../src/filetransfers_window.py:763 msgid "Pause" msgstr "Pausa" -#: ../src/gajim.py:47 +#: ../src/gajim.py:50 #, python-format msgid "%s is not a valid loglevel" msgstr "%s non è un livello di log valido" -#: ../src/gajim.py:122 +#: ../src/gajim.py:143 msgid "Gajim needs X server to run. Quiting..." msgstr "Gajim ha bisogno di un server X per essere eseguito. Uscita..." -#: ../src/gajim.py:126 +#: ../src/gajim.py:147 msgid "Gajim needs PyGTK 2.8 or above" msgstr "Gajim ha bisogno di PyGTK 2.8 o superiore" -#: ../src/gajim.py:127 +#: ../src/gajim.py:148 msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." -msgstr "Gajim ha bisogno di PyGTK 2.8 o superiore per essere eseguito. Uscita..." +msgstr "" +"Gajim ha bisogno di PyGTK 2.8 o superiore per essere eseguito. Uscita..." -#: ../src/gajim.py:129 +#: ../src/gajim.py:150 msgid "Gajim needs GTK 2.8 or above" msgstr "Gajim ha bisogno di GTK2.8 o superiore" -#: ../src/gajim.py:130 +#: ../src/gajim.py:151 msgid "Gajim needs GTK 2.8 or above to run. Quiting..." msgstr "Gajim ha bisogno di GTK2.8 o superiore per essere eseguito. Uscita..." -#: ../src/gajim.py:135 +#: ../src/gajim.py:156 msgid "GTK+ runtime is missing libglade support" msgstr "Supporto libglade mancante nel runtime GTK+" -#: ../src/gajim.py:137 +#: ../src/gajim.py:158 #, python-format msgid "" "Please remove your current GTK+ runtime and install the latest stable " @@ -3876,20 +4095,20 @@ msgstr "" "Eliminare il runtime GTK+ corrente ed installare l'ultima versione stabile " "da %s" -#: ../src/gajim.py:139 +#: ../src/gajim.py:160 msgid "" "Please make sure that GTK+ and PyGTK have libglade support in your system." msgstr "Verificare che GTK+ e PyGTK abbiano supporto libglade sul sistema." -#: ../src/gajim.py:144 +#: ../src/gajim.py:165 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim ha bisogno di PySQLite2 per essere eseguito" -#: ../src/gajim.py:152 +#: ../src/gajim.py:173 msgid "Gajim needs pywin32 to run" msgstr "Gajim ha bisogno di pywin32 per essere eseguito" -#: ../src/gajim.py:153 +#: ../src/gajim.py:174 #, python-format msgid "" "Please make sure that Pywin32 is installed on your system. You can get it at " @@ -3899,11 +4118,11 @@ msgstr "" "%s" #. set the icon to all newly opened wind -#: ../src/gajim.py:296 +#: ../src/gajim.py:317 msgid "Gajim is already running" msgstr "Gajim è già in esecuzione" -#: ../src/gajim.py:297 +#: ../src/gajim.py:318 msgid "" "Another instance of Gajim seems to be running\n" "Run anyway?" @@ -3911,83 +4130,140 @@ msgstr "" "Un'altra istanza di Gajim sembra essere in esecuzione\n" "Continuare comunque?" -#: ../src/gajim.py:403 +#: ../src/gajim.py:341 ../src/common/connection_handlers.py:896 +#: ../src/common/connection_handlers.py:1597 +#: ../src/common/connection_handlers.py:1626 +#: ../src/common/connection_handlers.py:1636 +#: ../src/common/connection_handlers.py:1655 +#: ../src/common/connection_handlers.py:1892 +#: ../src/common/connection_handlers.py:2004 ../src/common/connection.py:925 +msgid "Disk Write Error" +msgstr "Errore di scrittura su disco" + +#: ../src/gajim.py:434 +msgid "Do you accept this request?" +msgstr "Accettare questa richiesta?" + +#: ../src/gajim.py:437 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "Autorizzazione HTTP (%s) per %s (id: %s)" -#: ../src/gajim.py:404 -msgid "Do you accept this request?" -msgstr "Accettare questa richiesta?" - -#: ../src/gajim.py:450 ../src/notify.py:435 +#: ../src/gajim.py:484 ../src/notify.py:448 msgid "Connection Failed" msgstr "Connessione fallita" -#: ../src/gajim.py:767 +#: ../src/gajim.py:817 #, python-format msgid "Subject: %s" msgstr "Oggetto: %s" #. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) -#: ../src/gajim.py:812 ../src/gajim.py:825 +#: ../src/gajim.py:864 ../src/gajim.py:877 #, python-format msgid "error while sending %s ( %s )" msgstr "errore durante l'invio di %s ( %s )" -#: ../src/gajim.py:858 +#: ../src/gajim.py:910 msgid "Authorization accepted" msgstr "Autorizzazione accettata" -#: ../src/gajim.py:859 +#: ../src/gajim.py:911 #, 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:867 +#: ../src/gajim.py:919 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Il contatto \"%s\" ha eliminato il tuo abbonamento verso di lui" -#: ../src/gajim.py:868 +#: ../src/gajim.py:920 msgid "You will always see him or her as offline." msgstr "Lo vedrai sempre come offline." -#: ../src/gajim.py:911 +#: ../src/gajim.py:964 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Non si può contattare \"%s\"" -#: ../src/gajim.py:912 ../src/common/connection.py:417 +#: ../src/gajim.py:965 ../src/common/connection.py:466 msgid "Check your connection or try again later." msgstr "Controllare la connessione o riprovare più tardi." -#: ../src/gajim.py:1061 ../src/roster_window.py:1218 +#: ../src/gajim.py:1136 ../src/roster_window.py:1348 #, python-format msgid "%s is now %s (%s)" msgstr "%s è ora %s (%s)" #. No status message -#: ../src/gajim.py:1064 ../src/groupchat_control.py:944 -#: ../src/roster_window.py:1221 +#: ../src/gajim.py:1139 ../src/groupchat_control.py:1120 +#: ../src/roster_window.py:1351 #, python-format msgid "%s is now %s" msgstr "%s è ora %s" -#: ../src/gajim.py:1161 +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1260 ../src/groupchat_control.py:932 +msgid "Any occupant is allowed to see your full JID" +msgstr "Tutti i partecipanti possono vedere il tuo JID" + +#: ../src/gajim.py:1263 +msgid "Room now shows unavailable member" +msgstr "La stanza ora mostra i membri non disponibili" + +#: ../src/gajim.py:1265 +msgid "room now does not show unavailable members" +msgstr "la stanza ora non mostra i membri non disponibili" + +#: ../src/gajim.py:1268 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "" +"E' stata effettuata una modifica alla configurazione della stanza che non " +"riguarda la privacy" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1271 +msgid "Room logging is now enabled" +msgstr "La registrazione dei messaggi della stanza è stata attivata" + +#: ../src/gajim.py:1273 +msgid "Room logging is now disabled" +msgstr "La registrazione dei messaggi della stanza è stata disattivata" + +#: ../src/gajim.py:1275 +msgid "Room is now non-anonymous" +msgstr "La stanza è ora completamente non anonima" + +#: ../src/gajim.py:1278 +msgid "Room is now semi-anonymous" +msgstr "La stanza è ora semi-anonima" + +#: ../src/gajim.py:1281 +msgid "Room is now fully-anonymous" +msgstr "La stanza è ora completamente anonima" + +#: ../src/gajim.py:1313 +#, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "" +"È necessaria una password per entrare nella stanza %s. Inserisci la password" + +#: ../src/gajim.py:1343 msgid "Your passphrase is incorrect" msgstr "Passphrase errata" -#: ../src/gajim.py:1162 +#: ../src/gajim.py:1344 msgid "You are currently connected without your OpenPGP key." -msgstr "Si è connessi senza la chiave OpenPGP" +msgstr "Sei connesso senza la chiave OpenPGP." -#: ../src/gajim.py:1265 +#: ../src/gajim.py:1448 #, python-format msgid "New mail on %(gmail_mail_address)s" msgstr "Nuova e-mail su %(gmail_mail_address)s" -#: ../src/gajim.py:1267 +#: ../src/gajim.py:1450 #, python-format msgid "You have %d new mail conversation" msgid_plural "You have %d new mail conversations" @@ -3997,7 +4273,7 @@ msgstr[1] "Ci sono %d nuove conversazioni in e-mail" #. 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 -#: ../src/gajim.py:1276 +#: ../src/gajim.py:1459 #, python-format msgid "" "\n" @@ -4006,52 +4282,126 @@ msgstr "" "\n" "Da: %(from_address)s" -#: ../src/gajim.py:1432 +#: ../src/gajim.py:1679 #, python-format msgid "%s wants to send you a file." msgstr "%s vuole inviarti un file." -#: ../src/gajim.py:1497 +#: ../src/gajim.py:1744 #, python-format msgid "You successfully received %(filename)s from %(name)s." msgstr "%(filename)s ricevuto con successo da %(name)s." #. ft stopped -#: ../src/gajim.py:1501 +#: ../src/gajim.py:1748 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." msgstr "Il trasferimento file di %(filename)s da %(name)s è fermo." -#: ../src/gajim.py:1514 +#: ../src/gajim.py:1761 #, python-format msgid "You successfully sent %(filename)s to %(name)s." msgstr "Invio di %(filename)s a %(name)s effettuato con successo." #. ft stopped -#: ../src/gajim.py:1518 +#: ../src/gajim.py:1765 #, python-format msgid "File transfer of %(filename)s to %(name)s stopped." msgstr "Trasferimento file di %(filename)s a %(name)s fermato." -#: ../src/gajim.py:1631 +#: ../src/gajim.py:1860 +msgid "Session negotiation cancelled" +msgstr "Negoziazione della sessione annullata" + +#: ../src/gajim.py:1861 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "Il client a %s ha annullato la negoziazione della sessione." + +#: ../src/gajim.py:1901 ../src/gajim.py:1942 +msgid "Confirm these session options" +msgstr "Conferma queste opzioni di sessione" + +#: ../src/gajim.py:1902 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t%s\n" +"\n" +"\tAre these options acceptable?" +msgstr "" +"Il client remoto vuole negoziare una sessione con queste caratteristiche:\n" +"\n" +"\t%s\n" +"\n" +"\tQueste opzioni sono accettabili?" + +#: ../src/gajim.py:1943 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" +"Il client remoto ha selezionato queste opzioni:\n" +"\n" +"%s\n" +"\n" +"Continuare la sessione?" + +#: ../src/gajim.py:2055 msgid "Username Conflict" msgstr "Conflitto di nomi utenti" -#: ../src/gajim.py:1632 +#: ../src/gajim.py:2056 msgid "Please type a new username for your local account" msgstr "Inserire un nuovo nome utente per l'account locale" +#: ../src/gajim.py:2073 +msgid "Ping?" +msgstr "Ping?" + +#: ../src/gajim.py:2081 +#, python-format +msgid "Pong! (%s s.)" +msgstr "Pong! (%s s.)" + +#: ../src/gajim.py:2087 +msgid "Error." +msgstr "Errore." + +#: ../src/gajim.py:2112 +msgid "Resource Conflict" +msgstr "Conflitto tra risorse" + +#: ../src/gajim.py:2113 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" +"Sei già connesso a questo account con la stessa risorsa. Inseriscine un'altra" + #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1972 +#: ../src/gajim.py:2475 msgid "Could not save your settings and preferences" msgstr "Impossibile salvare impostazioni e preferenze" -#: ../src/gajim.py:2170 +#. sorted alphanum +#: ../src/gajim.py:2610 ../src/common/config.py:86 ../src/common/config.py:395 +#: ../src/common/optparser.py:194 ../src/common/optparser.py:412 +#: ../src/common/optparser.py:446 +msgid "default" +msgstr "predefinito" + +#: ../src/gajim.py:2697 msgid "Network Manager support not available" msgstr "Supporto Network Manager non disponibile" -#: ../src/gajim.py:2249 +#: ../src/gajim.py:2798 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Supporto gestione sessioni non disponibile (modulo gnome.ui mancante)" @@ -4084,11 +4434,11 @@ msgstr "Scrive la lista contatti. Ogni contatto appare su una linea separata" #: ../src/gajim-remote.py:84 ../src/gajim-remote.py:99 #: ../src/gajim-remote.py:109 ../src/gajim-remote.py:122 -#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:157 -#: ../src/gajim-remote.py:187 ../src/gajim-remote.py:196 -#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:210 -#: ../src/gajim-remote.py:221 ../src/gajim-remote.py:237 -#: ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:145 +#: ../src/gajim-remote.py:166 ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:205 ../src/gajim-remote.py:212 +#: ../src/gajim-remote.py:219 ../src/gajim-remote.py:230 +#: ../src/gajim-remote.py:246 ../src/gajim-remote.py:255 msgid "account" msgstr "account" @@ -4115,7 +4465,7 @@ msgstr "" "uno fra: offline, online, chat, assente, xa, non disturbare, invisibile" #: ../src/gajim-remote.py:98 ../src/gajim-remote.py:119 -#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:144 msgid "message" msgstr "messaggio" @@ -4140,7 +4490,7 @@ msgstr "Mostra la finestra di chat per mandare messaggi ad un contatto" msgid "JID of the contact that you want to chat with" msgstr "JID del contatto con cui si vuole chattare" -#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:187 +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:196 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" @@ -4160,6 +4510,7 @@ msgid "JID of the contact that will receive the message" msgstr "JID del contatto che riceverà il messaggio" #: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:144 msgid "message contents" msgstr "contenuti messaggi" @@ -4173,6 +4524,7 @@ msgstr "" "se specificato, il messaggio verrà cifrato usando questa chiave pubblica" #: ../src/gajim-remote.py:122 ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:145 msgid "if specified, the message will be sent using this account" msgstr "se specificato, il messaggio verrà inviato usando questo account" @@ -4195,121 +4547,129 @@ msgid "message subject" msgstr "oggetto del messaggio " #: ../src/gajim-remote.py:141 +msgid "Sends new message to a groupchat you've joined." +msgstr "Invia nuovi messaggi alla chat di gruppo in cui sei entrato." + +#: ../src/gajim-remote.py:143 +msgid "JID of the room that will receive the message" +msgstr "JID della stanza che riceverà il messaggio" + +#: ../src/gajim-remote.py:150 msgid "Gets detailed info on a contact" msgstr "Ottiene informazioni dettagliate su un contatto" -#: ../src/gajim-remote.py:143 ../src/gajim-remote.py:156 -#: ../src/gajim-remote.py:186 ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:152 ../src/gajim-remote.py:165 +#: ../src/gajim-remote.py:195 ../src/gajim-remote.py:204 msgid "JID of the contact" msgstr "JID del contatto" -#: ../src/gajim-remote.py:147 +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a account" msgstr "Ottiene informazioni dettagliate su un contatto" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:158 msgid "Name of the account" msgstr "Nome dell'account" -#: ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:162 msgid "Sends file to a contact" msgstr "Invia file ad un contatto" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:164 msgid "file" msgstr "file" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:164 msgid "File path" msgstr "Percorso file" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:166 msgid "if specified, file will be sent using this account" msgstr "se specificato, il file verrà inviato usando questo account" -#: ../src/gajim-remote.py:162 +#: ../src/gajim-remote.py:171 msgid "Lists all preferences and their values" msgstr "Mostra tutte le preferenze ed i relativi valori" -#: ../src/gajim-remote.py:166 +#: ../src/gajim-remote.py:175 msgid "Sets value of 'key' to 'value'." msgstr "Imposta il valore di 'chiave' a 'valore'." -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:177 msgid "key=value" msgstr "chiave=valore" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:177 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:173 +#: ../src/gajim-remote.py:182 msgid "Deletes a preference item" msgstr "Elimina un oggetto dalle preferenze" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:184 msgid "key" msgstr "chiave" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:184 msgid "name of the preference to be deleted" msgstr "nome della preferenza da eliminare" -#: ../src/gajim-remote.py:179 +#: ../src/gajim-remote.py:188 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:184 +#: ../src/gajim-remote.py:193 msgid "Removes contact from roster" msgstr "Elimina il contatto dalla lista" -#: ../src/gajim-remote.py:193 +#: ../src/gajim-remote.py:202 msgid "Adds contact to roster" msgstr "Aggiunge il contatto alla lista" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:204 msgid "jid" msgstr "jid" -#: ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:205 msgid "Adds new contact to this account" msgstr "Aggiunge un nuovo contatto a questo account" -#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:210 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:208 +#: ../src/gajim-remote.py:217 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:215 +#: ../src/gajim-remote.py:224 msgid "Returns number of unread messages" msgstr "Restituisce il numero di messaggi non letti" -#: ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:228 msgid "Opens 'Start Chat' dialog" msgstr "Apre la finestra di inizio chat" -#: ../src/gajim-remote.py:221 +#: ../src/gajim-remote.py:230 msgid "Starts chat, using this account" msgstr "Inizia chat usando questo account" -#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:234 msgid "Sends custom XML" msgstr "Invia XML personalizzato" -#: ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:236 msgid "XML to send" msgstr "XML da inviare" -#: ../src/gajim-remote.py:228 +#: ../src/gajim-remote.py:237 msgid "" "Account in which the xml will be sent; if not specified, xml will be sent to " "all accounts" @@ -4317,35 +4677,35 @@ msgstr "" "L'account al quale l'xml è inviato; se non specificato, l'xml sarà spedito a " "tutti gli account." -#: ../src/gajim-remote.py:234 +#: ../src/gajim-remote.py:243 msgid "Handle a xmpp:/ uri" msgstr "Gestisci un uri xmpp:/" -#: ../src/gajim-remote.py:236 +#: ../src/gajim-remote.py:245 msgid "uri" msgstr "uri" -#: ../src/gajim-remote.py:241 +#: ../src/gajim-remote.py:250 msgid "Join a MUC room" msgstr "Entra in una stanza MUC" -#: ../src/gajim-remote.py:243 +#: ../src/gajim-remote.py:252 msgid "room" msgstr "stanza" -#: ../src/gajim-remote.py:244 +#: ../src/gajim-remote.py:253 msgid "nick" msgstr "nickname" -#: ../src/gajim-remote.py:245 +#: ../src/gajim-remote.py:254 msgid "password" msgstr "password" -#: ../src/gajim-remote.py:268 +#: ../src/gajim-remote.py:277 msgid "Missing argument \"contact_jid\"" msgstr "Parametro mancante \"contact_jid\"" -#: ../src/gajim-remote.py:287 +#: ../src/gajim-remote.py:296 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -4354,38 +4714,38 @@ msgstr "" "'%s' non appartiene alla lista contatti.\n" "Specificare l'account per l'invio del messaggio." -#: ../src/gajim-remote.py:290 +#: ../src/gajim-remote.py:299 msgid "You have no active account" msgstr "Non ci sono account attivi" -#: ../src/gajim-remote.py:354 +#: ../src/gajim-remote.py:363 #, python-format msgid "" "Usage: %s %s %s \n" "\t %s" msgstr "" -"Uso: %s %s %s \n" +"Utilizzo: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:357 +#: ../src/gajim-remote.py:366 msgid "Arguments:" msgstr "Parametri:" -#: ../src/gajim-remote.py:361 +#: ../src/gajim-remote.py:370 #, python-format msgid "%s not found" msgstr "%s non trovato" -#: ../src/gajim-remote.py:365 +#: ../src/gajim-remote.py:374 #, python-format msgid "" "Usage: %s command [arguments]\n" "Command is one of:\n" msgstr "" -"Uso: %s comando [parametri]\n" +"Utilizzo: %s comando [parametri]\n" "Il comando è uno fra:\n" -#: ../src/gajim-remote.py:438 +#: ../src/gajim-remote.py:447 #, python-format msgid "" "Too many arguments. \n" @@ -4394,7 +4754,7 @@ msgstr "" "Troppi parametri. \n" "Scrivere \"%s help %s\" per maggiori informazioni" -#: ../src/gajim-remote.py:442 +#: ../src/gajim-remote.py:451 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -4403,131 +4763,160 @@ msgstr "" "Il parametro \"%s\" non è specificato. \n" "Scrivere\"%s help %s\" per maggiori informazioni" -#: ../src/gajim-remote.py:460 +#: ../src/gajim-remote.py:469 msgid "Wrong uri" -msgstr "Uri errato" +msgstr "URI errato" -#: ../src/gajim_themes_window.py:60 +#: ../src/gajim_themes_window.py:62 msgid "Theme" msgstr "Tema" +#: ../src/gajim_themes_window.py:100 +msgid "You cannot make changes to the default theme" +msgstr "Non è possibile modificare il tema di default" + +#: ../src/gajim_themes_window.py:101 +msgid "Please create a clean new theme with your desired name." +msgstr "Creare un nuovo tema con il nome desiderato." + #. don't confuse translators -#: ../src/gajim_themes_window.py:155 +#: ../src/gajim_themes_window.py:175 msgid "theme name" msgstr "nome del tema" -#: ../src/gajim_themes_window.py:172 +#: ../src/gajim_themes_window.py:192 msgid "You cannot delete your current theme" msgstr "Non è possibile eliminare il tema corrente" -#: ../src/gajim_themes_window.py:173 +#: ../src/gajim_themes_window.py:193 msgid "Please first choose another for your current theme." msgstr "Scegliere prima un altro tema." -#: ../src/groupchat_control.py:106 -msgid "Private Chat" -msgstr "Chat privata" - -#: ../src/groupchat_control.py:106 -msgid "Private Chats" -msgstr "Chat private" - -#: ../src/groupchat_control.py:123 +#: ../src/groupchat_control.py:134 msgid "Sending private message failed" msgstr "Invio messaggio privato fallito" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:125 +#: ../src/groupchat_control.py:136 #, python-format msgid "You are no longer in group chat \"%s\" or \"%s\" has left." msgstr "Non sei più nella stanza \"%s\" o \"%s\" è uscito." -#: ../src/groupchat_control.py:144 -msgid "Group Chat" -msgstr "Chat di gruppo" - -#: ../src/groupchat_control.py:144 -msgid "Group Chats" -msgstr "Chat di gruppo" - -#: ../src/groupchat_control.py:318 +#: ../src/groupchat_control.py:343 msgid "Insert Nickname" msgstr "Inserisci nickname" +#: ../src/groupchat_control.py:859 +msgid "Really send file?" +msgstr "" + +#: ../src/groupchat_control.py:860 +#, python-format +msgid "If you send a file to %s, he/she will know your real Jabber ID." +msgstr "" + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:935 +msgid "Room logging is enabled" +msgstr "La registrazione dei messaggi della stanza è stata attivata" + +#: ../src/groupchat_control.py:937 +msgid "A new room has been created" +msgstr "E' stata creata una nuova stanza" + +#: ../src/groupchat_control.py:940 +msgid "The server has assigned or modified your roomnick" +msgstr "Il server ha assegnato o modificato il tuo nickname" + #. do not print 'kicked by None' -#: ../src/groupchat_control.py:829 +#: ../src/groupchat_control.py:946 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s è stato cacciato: %(reason)s" -#: ../src/groupchat_control.py:833 +#: ../src/groupchat_control.py:950 #, 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:840 +#: ../src/groupchat_control.py:957 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s è stato bloccato: %(reason)s" -#: ../src/groupchat_control.py:844 +#: ../src/groupchat_control.py:961 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s è stato bloccato da %(who)s : %(reason)s" -#: ../src/groupchat_control.py:852 +#. Someone changed his or her nick +#. We changed our nick +#: ../src/groupchat_control.py:968 #, python-format msgid "You are now known as %s" msgstr "Sei ora conosciuto come %s" -#: ../src/groupchat_control.py:854 +#: ../src/groupchat_control.py:970 #, python-format msgid "%s is now known as %s" msgstr "%s è ora conosciuto come %s" -#: ../src/groupchat_control.py:937 +#: ../src/groupchat_control.py:1003 ../src/groupchat_control.py:1007 +#: ../src/groupchat_control.py:1012 +#, python-format +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s è stato cacciato dalla stanza (%(reason)s)" + +#: ../src/groupchat_control.py:1004 +msgid "affiliation changed" +msgstr "l'affiliazione è stata cambiata" + +#: ../src/groupchat_control.py:1009 +msgid "room configuration changed to members-only" +msgstr "la stanza è ora accessibile solo ai membri" + +#: ../src/groupchat_control.py:1014 +#, fuzzy +msgid "system shutdown" +msgstr "spegnimento del sistema" + +#: ../src/groupchat_control.py:1113 #, python-format msgid "%s has left" msgstr "%s se ne è andato" -#: ../src/groupchat_control.py:942 +#: ../src/groupchat_control.py:1118 #, python-format msgid "%s has joined the group chat" msgstr "%s è entrato nella chat di gruppo" -#: ../src/groupchat_control.py:1063 ../src/groupchat_control.py:1081 -#: ../src/groupchat_control.py:1174 ../src/groupchat_control.py:1191 +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1231 ../src/groupchat_control.py:1510 +msgid "Invalid nickname" +msgstr "Nickname non valido" + +#: ../src/groupchat_control.py:1232 ../src/groupchat_control.py:1511 +msgid "The nickname has not allowed characters." +msgstr "Il nickname contiene caratteri non consentiti." + +#: ../src/groupchat_control.py:1255 ../src/groupchat_control.py:1273 +#: ../src/groupchat_control.py:1357 ../src/groupchat_control.py:1374 #, python-format msgid "Nickname not found: %s" msgstr "Nickname non trovato: %s" -#: ../src/groupchat_control.py:1097 +#: ../src/groupchat_control.py:1289 msgid "This group chat has no subject" msgstr "Questa stanza non ha oggetto" -#: ../src/groupchat_control.py:1110 +#: ../src/groupchat_control.py:1300 #, 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:1117 ../src/groupchat_control.py:1145 -#, python-format -msgid "%s does not appear to be a valid JID" -msgstr "%s non sembra essere un JID valido" - -#: ../src/groupchat_control.py:1228 -#, 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:1251 -#, python-format -msgid "Commands: %s" -msgstr "Comandi: %s" - -#: ../src/groupchat_control.py:1253 +#: ../src/groupchat_control.py:1437 #, python-format msgid "" "Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " @@ -4535,176 +4924,174 @@ msgid "" "the JID is currently in the group chat, he/she/it will also be kicked. Does " "NOT support spaces in nickname." msgstr "" -"Uso: /%s <nickname|JID> [motivo], bandisce il JID dalla stanza. Il nickname " -"di un partecipante può venire usato al posto del JID, ma non se contiene \"@" -"\". Se il JID è correntemente nella stanza, verrà anche cacciato. NON " -"supporta la presenza di spazi nel nickname." +"Utilizzo: /%s <nickname|JID> [motivo], bandisce il JID dalla stanza. Il " +"nickname di un partecipante può venire usato al posto del JID, ma non se " +"contiene \"@\". Se il JID è correntemente nella stanza, verrà anche " +"cacciato. NON supporta la presenza di spazi nel nickname." -#: ../src/groupchat_control.py:1260 +#: ../src/groupchat_control.py:1444 #, python-format msgid "" "Usage: /%s <nickname>, opens a private chat window with the specified " "occupant." msgstr "" -"Uso: /%s <nickname>, apre una finestra di chat privata al partecipante " +"Utilizzo: /%s <nickname>, apre una finestra di chat privata al partecipante " "specificato." -#: ../src/groupchat_control.py:1264 -#, python-format -msgid "Usage: /%s, clears the text window." -msgstr "Uso: /%s, pulisce la finestra di testo." - -#: ../src/groupchat_control.py:1266 +#: ../src/groupchat_control.py:1450 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " "specified." msgstr "" -"Uso: /%s [motivo], chiude la finestra oi scheda corrente, mostrando il " +"Utilizzo: /%s [motivo], chiude la finestra oi scheda corrente, mostrando il " "motivo se specificato." -#: ../src/groupchat_control.py:1269 -#, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "Uso: /%s, nasconde i pulsanti di chat." - -#: ../src/groupchat_control.py:1272 +#: ../src/groupchat_control.py:1456 #, python-format msgid "" "Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " "providing a reason." msgstr "" -"Uso: /%s <JID> [motivo], invita JID alla stanza corrente, opzionalmente " +"Utilizzo: /%s <JID> [motivo], invita JID alla stanza corrente, opzionalmente " "fornendo un motivo." -#: ../src/groupchat_control.py:1276 +#: ../src/groupchat_control.py:1460 #, python-format msgid "" "Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " "using specified nickname." msgstr "" -"Uso: /%s <stanza>@<server>[/nickname], offre la possibilità di entrare in " -"stanza@server, opzionalmente usando il nickname specificato." +"Utilizzo: /%s <stanza>@<server>[/nickname], offre la possibilità di entrare " +"in stanza@server, opzionalmente usando il nickname specificato." -#: ../src/groupchat_control.py:1280 +#: ../src/groupchat_control.py:1464 #, python-format msgid "" "Usage: /%s <nickname> [reason], removes the occupant specified by nickname " "from the group chat and optionally displays a reason. Does NOT support " "spaces in nickname." msgstr "" -"Uso: /%s <nickname> [motivo], rimuove il partecipante specificato per " +"Utilizzo: /%s <nickname> [motivo], rimuove il partecipante specificato per " "nickname dalla stanza e opzionalmente mostra un motivo. NON supporta la " "presenza di spazi nel nickname." -#: ../src/groupchat_control.py:1285 -#, python-format -msgid "" -"Usage: /%s <action>, sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"Uso: /%s <azione>, invia l'azione alla stanza corrente. Usare la terza " -"persona (esempio: /%s esplode)." - -#: ../src/groupchat_control.py:1289 +#: ../src/groupchat_control.py:1473 #, python-format msgid "" "Usage: /%s <nickname> [message], opens a private message window and sends " "message to the occupant specified by nickname." msgstr "" -"Uso: /%s <nickname> [messaggio], apre una finestra di messaggi privati ed " -"invia il messaggio al partecipante specificato per nickname." +"Utilizzo: /%s <nickname> [messaggio], apre una finestra di messaggi privati " +"ed invia il messaggio al partecipante specificato per nickname." -#: ../src/groupchat_control.py:1294 +#: ../src/groupchat_control.py:1478 #, python-format msgid "Usage: /%s <nickname>, changes your nickname in current group chat." -msgstr "Uso: /%s <nickname>, cambia il tuo nickname nella stanza corrente." +msgstr "" +"Utilizzo: /%s <nickname>, cambia il tuo nickname nella stanza corrente." -#: ../src/groupchat_control.py:1298 +#: ../src/groupchat_control.py:1482 #, python-format msgid "Usage: /%s , display the names of group chat occupants." msgstr "" -"Uso: /%s [argomento], mostra o aggiorna l'argomento della stanza corrente." +"Utilizzo: /%s [argomento], mostra o aggiorna l'argomento della stanza " +"corrente." -#: ../src/groupchat_control.py:1302 +#: ../src/groupchat_control.py:1486 #, python-format msgid "Usage: /%s [topic], displays or updates the current group chat topic." msgstr "" -"Uso: /%s [argomento], mostra o aggiorna l'argomento della stanza corrente." +"Utilizzo: /%s [argomento], mostra o aggiorna l'argomento della stanza " +"corrente." -#: ../src/groupchat_control.py:1305 +#: ../src/groupchat_control.py:1489 #, python-format msgid "" "Usage: /%s <message>, sends a message without looking for other commands." msgstr "" -"Uso: /%s <messaggio>, invia un messaggio senza considerare gli altri comandi." - -#: ../src/groupchat_control.py:1308 -#, python-format -msgid "No help info for /%s" -msgstr "Non esiste aiuto per /%s" +"Utilizzo: /%s <messaggio>, invia un messaggio senza considerare gli altri " +"comandi." -#: ../src/groupchat_control.py:1359 +#: ../src/groupchat_control.py:1584 #, python-format msgid "Are you sure you want to leave group chat \"%s\"?" msgstr "Si è sicuri di voler uscire dalla stanza \"%s\"?" -#: ../src/groupchat_control.py:1361 +#: ../src/groupchat_control.py:1586 msgid "" "If you close this window, you will be disconnected from this group chat." msgstr "Chiudendo questa finestra, si verrà disconnessi da questa stanza." -#: ../src/groupchat_control.py:1365 ../src/roster_window.py:4036 +#: ../src/groupchat_control.py:1590 ../src/roster_window.py:4855 msgid "Do _not ask me again" msgstr "_Non chiederlo più" -#: ../src/groupchat_control.py:1399 +#: ../src/groupchat_control.py:1624 msgid "Changing Subject" msgstr "Cambio oggetto" -#: ../src/groupchat_control.py:1400 +#: ../src/groupchat_control.py:1625 msgid "Please specify the new subject:" msgstr "Specificare il nuovo oggetto:" -#: ../src/groupchat_control.py:1409 +#: ../src/groupchat_control.py:1634 msgid "Changing Nickname" msgstr "Cambio nickname" -#: ../src/groupchat_control.py:1410 +#: ../src/groupchat_control.py:1635 msgid "Please specify the new nickname you want to use:" msgstr "Specificare il nuovo nickname da usare:" -#: ../src/groupchat_control.py:1435 +#. Ask for a reason +#: ../src/groupchat_control.py:1650 +#, python-format +msgid "Destroying %s" +msgstr "Eliminazione %s" + +#: ../src/groupchat_control.py:1651 +msgid "" +"You are going to definitively destroy this room.\n" +"You may specify a reason below:" +msgstr "" +"Stai per cancellare definitivamente questa stanza.\n" +"Puoi specificare il motivo qui sotto:" + +#: ../src/groupchat_control.py:1653 +msgid "You may also enter an alternate venue:" +msgstr "Puoi anche inserire un nome alternativo:" + +#: ../src/groupchat_control.py:1684 msgid "Bookmark already set" msgstr "Segnalibro già impostato" -#: ../src/groupchat_control.py:1436 +#: ../src/groupchat_control.py:1685 #, python-format msgid "Group Chat \"%s\" is already in your bookmarks." msgstr "La stanza \"%s\" è già tra i segnalibri." -#: ../src/groupchat_control.py:1445 +#: ../src/groupchat_control.py:1694 msgid "Bookmark has been added successfully" msgstr "Il segnalibro è stato aggiunto con successo" -#: ../src/groupchat_control.py:1446 +#: ../src/groupchat_control.py:1695 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:1574 +#: ../src/groupchat_control.py:1847 #, python-format msgid "Kicking %s" msgstr "Sto cacciando %s" -#: ../src/groupchat_control.py:1575 ../src/groupchat_control.py:1858 +#: ../src/groupchat_control.py:1848 ../src/groupchat_control.py:2148 msgid "You may specify a reason below:" msgstr "Specifica un motivo qui sotto:" #. ask for reason -#: ../src/groupchat_control.py:1857 +#: ../src/groupchat_control.py:2147 #, python-format msgid "Banning %s" msgstr "Sto bandendo %s" @@ -4730,56 +5117,56 @@ msgid "Details" msgstr "Dettagli" #. we talk about file -#: ../src/gtkgui_helpers.py:156 ../src/gtkgui_helpers.py:171 +#: ../src/gtkgui_helpers.py:157 ../src/gtkgui_helpers.py:172 #, python-format msgid "Error: cannot open %s for reading" msgstr "Errore: impossibile aprire %s in lettura" -#: ../src/gtkgui_helpers.py:336 +#: ../src/gtkgui_helpers.py:337 msgid "Error reading file:" msgstr "Errore leggendo il file:" -#: ../src/gtkgui_helpers.py:339 +#: ../src/gtkgui_helpers.py:340 msgid "Error parsing file:" msgstr "Errore processando il file:" #. do not traceback (could be a permission problem) #. we talk about a file here -#: ../src/gtkgui_helpers.py:376 +#: ../src/gtkgui_helpers.py:377 #, python-format msgid "Could not write to %s. Session Management support will not work" msgstr "" "Non si è potuto scrivere su %s. Il supporto gestione sessioni non funzionerà " #. xmpp: is currently handled by another program, so ask the user -#: ../src/gtkgui_helpers.py:691 +#: ../src/gtkgui_helpers.py:711 msgid "Gajim is not the default Jabber client" msgstr "Gajim non è il client Jabber predefinito" -#: ../src/gtkgui_helpers.py:692 +#: ../src/gtkgui_helpers.py:712 msgid "Would you like to make Gajim the default Jabber client?" msgstr "Si vuole rendere Gajim il client Jabber predefinito?" -#: ../src/gtkgui_helpers.py:693 +#: ../src/gtkgui_helpers.py:713 msgid "Always check to see if Gajim is the default Jabber client on startup" msgstr "Verifica sempre se Gajim è il client Jabber predefinito all'avvio" -#: ../src/gtkgui_helpers.py:792 +#: ../src/gtkgui_helpers.py:812 msgid "Extension not supported" msgstr "Dbus non è supportato." -#: ../src/gtkgui_helpers.py:793 +#: ../src/gtkgui_helpers.py:813 #, python-format msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" msgstr "" "L'immagine non può essere salvata in formato %(type)s. Salvarla come %" "(new_filename)s?" -#: ../src/gtkgui_helpers.py:802 +#: ../src/gtkgui_helpers.py:822 msgid "Save Image as..." msgstr "Salva immagine come..." -#: ../src/history_manager.py:65 +#: ../src/history_manager.py:68 msgid "Cannot find history logs database" msgstr "Impossibile trovare la base dati delle cronologie" @@ -4790,7 +5177,7 @@ msgstr "Contatti" #. holds time #: ../src/history_manager.py:121 ../src/history_manager.py:161 -#: ../src/history_window.py:86 +#: ../src/history_window.py:116 msgid "Date" msgstr "Data" @@ -4801,7 +5188,7 @@ msgstr "Nickname" #. holds message #: ../src/history_manager.py:135 ../src/history_manager.py:167 -#: ../src/history_window.py:94 +#: ../src/history_window.py:124 msgid "Message" msgstr "Messaggio" @@ -4853,71 +5240,96 @@ msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Si vuole davvero eliminare il messaggio selezionato?" msgstr[1] "Si vogliono davvero eliminare i messaggi selezionati?" -#: ../src/history_window.py:103 ../src/history_window.py:105 +#: ../src/history_window.py:185 ../src/history_window.py:187 #, python-format msgid "Conversation History with %s" msgstr "Cronologia conversazione con %s" -#: ../src/history_window.py:258 +#: ../src/history_window.py:332 #, 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:262 ../src/notify.py:199 +#: ../src/history_window.py:336 ../src/notify.py:206 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s è ora %(status)s" -#: ../src/history_window.py:268 +#: ../src/history_window.py:342 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Lo stato ora è: %(status)s: %(status_msg)s" -#: ../src/history_window.py:271 +#: ../src/history_window.py:345 #, python-format msgid "Status is now: %(status)s" msgstr "Lo stato ora è: %(status)s" -#: ../src/message_window.py:273 +#: ../src/htmltextview.py:583 ../src/htmltextview.py:594 +msgid "Timeout loading image" +msgstr "Impossibile caricare l'immagine" + +#: ../src/htmltextview.py:604 +msgid "Image is too big" +msgstr "L'immagine è troppo grande" + +#: ../src/message_window.py:288 +msgid "Chats" +msgstr "Chat" + +#: ../src/message_window.py:290 +msgid "Group Chats" +msgstr "Chat di gruppo" + +#: ../src/message_window.py:292 +msgid "Private Chats" +msgstr "Chat private" + +#: ../src/message_window.py:294 msgid "Messages" msgstr "Messaggi" -#: ../src/message_window.py:274 +#: ../src/message_window.py:295 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/notify.py:197 +#: ../src/notify.py:204 #, python-format msgid "%(nick)s Changed Status" msgstr "%(nick)s ha cambiato stato" -#: ../src/notify.py:207 +#: ../src/notify.py:214 #, python-format msgid "%(nickname)s Signed In" msgstr "%(nickname)s connesso" -#: ../src/notify.py:215 +#: ../src/notify.py:222 #, python-format msgid "%(nickname)s Signed Out" msgstr "%(nickname)s disconnesso" -#: ../src/notify.py:227 +#: ../src/notify.py:234 #, python-format msgid "New Single Message from %(nickname)s" msgstr "Nuovo messaggio singolo da %(nickname)s" -#: ../src/notify.py:235 +#: ../src/notify.py:242 #, python-format msgid "New Private Message from group chat %s" msgstr "Nuovo messaggio privato dalla stanza %s" -#: ../src/notify.py:236 +#: ../src/notify.py:244 #, python-format msgid "%(nickname)s: %(message)s" msgstr "%(nickname)s: %(message)s" -#: ../src/notify.py:242 +#: ../src/notify.py:247 +#, python-format +msgid "Messaged by %(nickname)s" +msgstr "Messaggio inviato da %(nickname)s" + +#: ../src/notify.py:253 #, python-format msgid "New Message from %(nickname)s" msgstr "Nuovo messaggio da %(nickname)s" @@ -4926,37 +5338,42 @@ msgstr "Nuovo messaggio da %(nickname)s" msgid "Retrieving profile..." msgstr "Recupero profilo..." -#: ../src/profile_window.py:107 ../src/profile_window.py:210 -#: ../src/profile_window.py:219 -msgid "Click to set your avatar" -msgstr "Cliccare per inserire l'avatar" +#: ../src/profile_window.py:123 ../src/roster_window.py:1882 +msgid "File is empty" +msgstr "Il file è vuoto" + +#: ../src/profile_window.py:126 ../src/roster_window.py:1885 +msgid "File does not exist" +msgstr "Il file non esiste" #. keep identation -#: ../src/profile_window.py:137 +#. unknown format +#: ../src/profile_window.py:140 ../src/profile_window.py:156 +#: ../src/roster_window.py:1887 ../src/roster_window.py:1898 msgid "Could not load image" msgstr "Impossibile caricare l'immagine" -#: ../src/profile_window.py:245 +#: ../src/profile_window.py:257 msgid "Information received" -msgstr "Informazione ricevuta" +msgstr "Informazioni ricevute" -#: ../src/profile_window.py:314 +#: ../src/profile_window.py:326 msgid "Without a connection you can not publish your contact information." msgstr "Senza una connessione non è possibile pubblicare i dati personali." -#: ../src/profile_window.py:326 +#: ../src/profile_window.py:338 msgid "Sending profile..." msgstr "Invio del profilo..." -#: ../src/profile_window.py:341 +#: ../src/profile_window.py:353 msgid "Information NOT published" msgstr "Informazione NON pubblicata" -#: ../src/profile_window.py:348 +#: ../src/profile_window.py:360 msgid "vCard publication failed" msgstr "Pubblicazione della vCard fallita" -#: ../src/profile_window.py:349 +#: ../src/profile_window.py:361 msgid "" "There was an error while publishing your personal information, try again " "later." @@ -4964,89 +5381,105 @@ msgstr "" "C'è stato un errore nella pubblicazione delle informazioni personali, " "riprovare più tardi." -#: ../src/roster_window.py:171 ../src/roster_window.py:226 +#: ../src/roster_window.py:182 ../src/roster_window.py:237 msgid "Merged accounts" msgstr "Account uniti" -#: ../src/roster_window.py:344 ../src/common/helpers.py:43 +#: ../src/roster_window.py:357 ../src/roster_window.py:622 +#: ../src/roster_window.py:2110 ../src/common/contacts.py:307 +#: ../src/common/helpers.py:44 msgid "Observers" msgstr "Osservatori" -#: ../src/roster_window.py:692 ../src/roster_window.py:3201 +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:441 ../src/roster_window.py:446 +#: ../src/roster_window.py:1935 ../src/roster_window.py:1938 +#: ../src/roster_window.py:2607 ../src/roster_window.py:2610 +#: ../src/roster_window.py:2635 ../src/roster_window.py:4715 +#: ../src/roster_window.py:4717 ../src/common/commands.py:194 +#: ../src/common/contacts.py:97 ../src/common/helpers.py:44 +msgid "Groupchats" +msgstr "Chat di gruppo" + +#: ../src/roster_window.py:771 ../src/roster_window.py:3971 msgid "You cannot join a group chat while you are invisible" msgstr "Non è possibile unirsi ad una stanza quando si è invisibile" #. new chat +#. single message #. for chat_with #. for single message -#: ../src/roster_window.py:884 ../src/systray.py:187 ../src/systray.py:192 +#. join gc +#: ../src/roster_window.py:984 ../src/roster_window.py:994 +#: ../src/roster_window.py:1003 ../src/systray.py:207 ../src/systray.py:212 +#: ../src/systray.py:218 #, python-format msgid "using account %s" msgstr "usando l'account %s" -#. the 'manage gc bookmarks' item is shown -#. below to avoid duplicate code #. add -#: ../src/roster_window.py:909 +#: ../src/roster_window.py:1010 #, python-format msgid "to %s account" msgstr "all'account %s" #. disco -#: ../src/roster_window.py:914 +#: ../src/roster_window.py:1015 #, python-format msgid "using %s account" msgstr "usando l'account %s" +#: ../src/roster_window.py:1096 +msgid "_Manage Bookmarks..." +msgstr "_Gestione segnalibri..." + #. profile, avatar -#: ../src/roster_window.py:989 +#: ../src/roster_window.py:1115 #, python-format msgid "of account %s" msgstr "dell'account %s" -#: ../src/roster_window.py:1009 -msgid "_Manage Bookmarks..." -msgstr "_Gestione segnalibri..." - -#: ../src/roster_window.py:1038 +#: ../src/roster_window.py:1155 #, python-format msgid "for account %s" msgstr "per l'account %s" #. History manager -#: ../src/roster_window.py:1059 +#: ../src/roster_window.py:1176 msgid "History Manager" msgstr "Gestore cronologia" -#: ../src/roster_window.py:1068 +#: ../src/roster_window.py:1185 msgid "_Join New Group Chat" -msgstr "_Entrare in chat di gruppo" +msgstr "_Nuova chat di gruppo" -#: ../src/roster_window.py:1398 ../src/roster_window.py:3394 -#: ../src/roster_window.py:3401 +#: ../src/roster_window.py:1544 ../src/roster_window.py:4169 +#: ../src/roster_window.py:4176 msgid "You have unread messages" msgstr "Ci sono messaggi non letti" -#: ../src/roster_window.py:1399 +#: ../src/roster_window.py:1545 msgid "You must read them before removing this transport." msgstr "Leggere tutti gli eventi pendenti prima di rimuovere questo account." -#: ../src/roster_window.py:1402 +#: ../src/roster_window.py:1548 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Il trasporto \"%s\" verrà rimosso" -#: ../src/roster_window.py:1403 +#: ../src/roster_window.py:1549 msgid "" "You will no longer be able to send and receive messages from contacts using " "this transport." -msgstr "Non si potranno più inviare e ricevere messaggi verso i contatti di questo trasporto." +msgstr "" +"Non si potranno più inviare e ricevere messaggi verso i contatti di questo " +"trasporto." -#: ../src/roster_window.py:1406 +#: ../src/roster_window.py:1552 msgid "Transports will be removed" msgstr "I trasporti verranno rimossi" -#: ../src/roster_window.py:1411 +#: ../src/roster_window.py:1557 #, python-format msgid "" "You will no longer be able to send and receive messages to contacts from " @@ -5056,114 +5489,154 @@ msgstr "" "trasporti:%s" #. it's jid -#: ../src/roster_window.py:1431 +#: ../src/roster_window.py:1723 msgid "Rename Contact" msgstr "Rinomina contatto" -#: ../src/roster_window.py:1432 +#: ../src/roster_window.py:1724 #, python-format msgid "Enter a new nickname for contact %s" msgstr "Inserire un nuovo nickname per il contatto %s." -#: ../src/roster_window.py:1439 +#: ../src/roster_window.py:1731 msgid "Rename Group" msgstr "Rinomina Gruppo" -#: ../src/roster_window.py:1440 +#: ../src/roster_window.py:1732 #, python-format msgid "Enter a new name for group %s" msgstr "Inserire un nome per il gruppo %s." -#: ../src/roster_window.py:1515 +#: ../src/roster_window.py:1807 msgid "Remove Group" msgstr "Elimina Gruppo" -#: ../src/roster_window.py:1516 +#: ../src/roster_window.py:1808 #, python-format msgid "Do you want to remove group %s from the roster?" msgstr "Rimuovere il gruppo %s dalla lista?" -#: ../src/roster_window.py:1517 +#: ../src/roster_window.py:1809 msgid "Remove also all contacts in this group from your roster" msgstr "Elimina anche tutti i contatti di questo gruppo dalla lista" -#: ../src/roster_window.py:1546 +#: ../src/roster_window.py:1840 msgid "Assign OpenPGP Key" msgstr "Assegna chiave OpenPGP" -#: ../src/roster_window.py:1547 +#: ../src/roster_window.py:1841 msgid "Select a key to apply to the contact" msgstr "Seleziona una chiave da applicare al contatto" -#: ../src/roster_window.py:1782 ../src/roster_window.py:2043 -msgid "_New group chat" +#: ../src/roster_window.py:2156 +msgid "_New Group Chat" msgstr "_Nuova chat di gruppo" -#: ../src/roster_window.py:1913 +#: ../src/roster_window.py:2298 msgid "I would like to add you to my roster" msgstr "Vorrei aggiungerti ai miei contatti" -#: ../src/roster_window.py:2088 ../src/roster_window.py:2135 +#. Send Group Message +#: ../src/roster_window.py:2432 ../src/roster_window.py:2644 msgid "Send Group M_essage" msgstr "Invia _messaggio di gruppo" -#: ../src/roster_window.py:2114 -msgid "Re_name" -msgstr "Ri_nomina" +#: ../src/roster_window.py:2451 +msgid "_New group chat" +msgstr "_Nuova chat di gruppo" -#: ../src/roster_window.py:2141 +#. Manage Transport submenu +#: ../src/roster_window.py:2489 +msgid "_Manage Contacts" +msgstr "_Gestisci contatti" + +#: ../src/roster_window.py:2550 +msgid "_Maximize" +msgstr "_Massimizza" + +#: ../src/roster_window.py:2557 +msgid "_Disconnect" +msgstr "_Disconnetti" + +#: ../src/roster_window.py:2636 +msgid "_Maximize All" +msgstr "_Massimizza tutti" + +#: ../src/roster_window.py:2652 msgid "To all users" msgstr "A tutti gli utenti" -#: ../src/roster_window.py:2144 +#: ../src/roster_window.py:2655 msgid "To all online users" msgstr "Utenti _online" -#: ../src/roster_window.py:2180 +#. Log Off +#: ../src/roster_window.py:2772 +msgid "_Log off" +msgstr "_Disconnetti" + +#. Log on +#: ../src/roster_window.py:2778 msgid "_Log on" msgstr "_Connetti" -#: ../src/roster_window.py:2190 -msgid "Log _off" -msgstr "_Disconnetti" +#. Send single message +#: ../src/roster_window.py:2790 +msgid "Send Single Message" +msgstr "Invia messaggio singolo" + +#. Manage Transport submenu +#: ../src/roster_window.py:2837 +msgid "_Manage Transport" +msgstr "_Gestisci trasporto" + +#. Modify Transport +#: ../src/roster_window.py:2845 +msgid "_Modify Transport" +msgstr "_Modifica trasporto" -#: ../src/roster_window.py:2312 ../src/roster_window.py:2383 +#. Information +#: ../src/roster_window.py:2882 +msgid "_Information" +msgstr "_Informazioni" + +#: ../src/roster_window.py:2959 ../src/roster_window.py:3033 msgid "_Change Status Message" msgstr "_Cambia messaggio di stato" -#: ../src/roster_window.py:2455 +#: ../src/roster_window.py:3105 msgid "Authorization has been sent" msgstr "Autorizzazione inviata" -#: ../src/roster_window.py:2456 +#: ../src/roster_window.py:3106 #, python-format msgid "Now \"%s\" will know your status." msgstr "Ora \"%s\" conoscerà il tuo stato." -#: ../src/roster_window.py:2476 +#: ../src/roster_window.py:3126 msgid "Subscription request has been sent" msgstr "La richiesta di abbonamento è stata inviata" -#: ../src/roster_window.py:2477 +#: ../src/roster_window.py:3127 #, 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:2489 +#: ../src/roster_window.py:3139 msgid "Authorization has been removed" msgstr "L'autorizzazione è stata rimossa" -#: ../src/roster_window.py:2490 +#: ../src/roster_window.py:3140 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Ora \"%s\" ti vedrà sempre come offline." -#: ../src/roster_window.py:2680 +#: ../src/roster_window.py:3357 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Il contatto \"%s\" sarà rimosso dalla tua lista" -#: ../src/roster_window.py:2684 +#: ../src/roster_window.py:3361 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -5171,7 +5644,7 @@ msgstr "" "Eliminando questo contatto ne verrà rimossa anche l'autorizzazione. Questi " "ti vedrà sempre offline." -#: ../src/roster_window.py:2689 +#: ../src/roster_window.py:3366 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -5179,16 +5652,16 @@ msgstr "" "Eliminando questo contatto ne rimuoverai anche l'autorizzazione. Questi ti " "vedrà sempre offline." -#: ../src/roster_window.py:2692 +#: ../src/roster_window.py:3369 msgid "I want this contact to know my status after removal" msgstr "Voglio che questo contatto conosca il mio stato dopo la rimozione" #. several contact to remove at the same time -#: ../src/roster_window.py:2696 +#: ../src/roster_window.py:3373 msgid "Contacts will be removed from your roster" msgstr "Il contatto sarà rimosso dalla tua lista" -#: ../src/roster_window.py:2700 +#: ../src/roster_window.py:3377 #, python-format msgid "" "By removing these contacts:%s\n" @@ -5197,46 +5670,51 @@ msgstr "" "Eliminando questi contatti:%s\n" "ne verrà rimossa anche l'autorizzazione. Ti vedranno sempre offline." -#: ../src/roster_window.py:2732 +#: ../src/roster_window.py:3409 msgid "" -"Gnomekeyring is installed but not correctly started (environment variable " +"Gnome Keyring is installed but not correctly started (environment variable " "probably not correctly set)" -msgstr "Gnomekeyring è installato ma non avviato correttamente (la variabile d'ambiente è probabilmente impostata in maniera scorretta)" +msgstr "" +"Gnome Keyring è installato ma non avviato correttamente (la variabile " +"d'ambiente è probabilmente impostata in maniera non corretta)" + +#: ../src/roster_window.py:3436 +msgid "GPG is not usable" +msgstr "Non è possibile utilizzare GPG" -#. TODO: make this string translatable #. %s is the account name here -#: ../src/roster_window.py:2760 ../src/common/connection.py:671 -#: ../src/common/zeroconf/connection_zeroconf.py:158 +#: ../src/roster_window.py:3436 ../src/common/connection.py:684 +#: ../src/common/zeroconf/connection_zeroconf.py:165 #, python-format msgid "You will be connected to %s without OpenPGP." -msgstr "Ci si connetterà a %s senza OpenPGP" +msgstr "Ti connetterai a %s senza OpenPGP." -#: ../src/roster_window.py:2777 +#: ../src/roster_window.py:3453 msgid "Passphrase Required" msgstr "Passphrase richiesta" -#: ../src/roster_window.py:2778 +#: ../src/roster_window.py:3454 #, 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:2783 +#: ../src/roster_window.py:3459 msgid "Save passphrase" msgstr "Memorizza passphrase" -#: ../src/roster_window.py:2791 +#: ../src/roster_window.py:3467 msgid "Wrong Passphrase" msgstr "Passphrase errata" -#: ../src/roster_window.py:2792 +#: ../src/roster_window.py:3468 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Riscrivere la passphrase GPG o premere Annulla." -#: ../src/roster_window.py:2849 ../src/roster_window.py:2909 +#: ../src/roster_window.py:3551 ../src/roster_window.py:3628 msgid "You are participating in one or more group chats" msgstr "Si sta partecipando ad una o più chat di gruppo" -#: ../src/roster_window.py:2850 ../src/roster_window.py:2910 +#: ../src/roster_window.py:3552 ../src/roster_window.py:3629 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -5244,21 +5722,21 @@ msgstr "" "Impostare lo stato invisibile ti farà disconnettere da queste chat di " "gruppo. Diventare veramente invisibile?" -#: ../src/roster_window.py:2867 +#: ../src/roster_window.py:3586 msgid "No account available" msgstr "Nessun account disponibile" -#: ../src/roster_window.py:2868 +#: ../src/roster_window.py:3587 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:2966 +#: ../src/roster_window.py:3715 #, python-format msgid "\"%(title)s\" by %(artist)s" msgstr "\"%(title)s\" di %(artist)s" -#: ../src/roster_window.py:3395 ../src/roster_window.py:3402 +#: ../src/roster_window.py:4170 ../src/roster_window.py:4177 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -5266,24 +5744,25 @@ msgstr "" "I messaggi saranno disponibili per una lettura successiva solo se la " "cronologia è abilitata" -#: ../src/roster_window.py:3986 +#: ../src/roster_window.py:4801 msgid "Metacontacts storage not supported by your server" msgstr "Il supporto metacontatti non è supportato dal tuo server" -#: ../src/roster_window.py:3988 +#: ../src/roster_window.py:4803 +#, fuzzy msgid "" "Your server does not support storing metacontacts information. So those " -"information will not be save on next reconnection." +"information will not be saved on next reconnection." msgstr "" "Il tuo server non supporta il salvataggio di informazioni metacontatti. " "Perciò queste informazioni non saranno salvate al prossimo riavvio." -#: ../src/roster_window.py:4030 +#: ../src/roster_window.py:4849 msgid "" "You are about to create a metacontact. Are you sure you want to continue?" msgstr "Stai per creare un metacontatto. Continuare?" -#: ../src/roster_window.py:4032 +#: ../src/roster_window.py:4851 msgid "" "Metacontacts are a way to regroup several contacts in one line. Generally it " "is used when the same person has several Jabber accounts or transport " @@ -5293,110 +5772,123 @@ msgstr "" "Generalmente si usano quando la stessa persona ha più account jabber o su " "vari transport." -#: ../src/roster_window.py:4199 -#, python-format -msgid "Drop %s in group %s" -msgstr "Sposta %s nel gruppo %s" - -#: ../src/roster_window.py:4206 +#: ../src/roster_window.py:4949 #, python-format -msgid "Make %s and %s metacontacts" -msgstr "Rendi %s e %s metacontatti" +msgid "Do you want to send that file to %s:" +msgid_plural "Do you want to send those files to %s:" +msgstr[0] "Vuoi inviare questo file a %s:" +msgstr[1] "Vuoi inviare questi file a %s:" -#: ../src/roster_window.py:4393 +#: ../src/roster_window.py:5232 msgid "Change Status Message..." msgstr "Cambia messaggio di stato..." -#: ../src/systray.py:144 +#: ../src/systray.py:164 msgid "_Change Status Message..." msgstr "_Cambia messaggio di stato..." -#: ../src/systray.py:232 +#: ../src/systray.py:249 msgid "Hide this menu" msgstr "Nascondi questo menu" -#: ../src/tooltips.py:309 ../src/tooltips.py:492 +#: ../src/tooltips.py:310 ../src/tooltips.py:503 msgid "Jabber ID: " msgstr "ID Jabber: " -#: ../src/tooltips.py:312 ../src/tooltips.py:496 +#: ../src/tooltips.py:313 ../src/tooltips.py:507 msgid "Resource: " msgstr "Risorsa: " -#: ../src/tooltips.py:317 +#: ../src/tooltips.py:318 #, python-format msgid "%(owner_or_admin_or_member)s of this group chat" msgstr "%(owner_or_admin_or_member)s di questa chat di gruppo" -#: ../src/tooltips.py:430 ../src/tooltips.py:610 +#: ../src/tooltips.py:416 +msgid " [blocked]" +msgstr " [bloccato]" + +#: ../src/tooltips.py:420 +msgid " [minimized]" +msgstr " [minimizzata]" + +#: ../src/tooltips.py:435 ../src/tooltips.py:623 msgid "Status: " msgstr "Stato: " -#: ../src/tooltips.py:461 +#: ../src/tooltips.py:465 #, python-format msgid "Last status: %s" msgstr "Ultimo stato: %s" -#: ../src/tooltips.py:463 +#: ../src/tooltips.py:467 #, python-format msgid " since %s" -msgstr "da %s" +msgstr " dalle %s" + +#: ../src/tooltips.py:485 +msgid "Connected" +msgstr "Connesso" + +#: ../src/tooltips.py:487 +msgid "Disconnected" +msgstr "Disconnesso" #. ('both' is the normal sub so we don't show it) -#: ../src/tooltips.py:502 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Abbonamento: " -#: ../src/tooltips.py:512 +#: ../src/tooltips.py:524 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:566 +#: ../src/tooltips.py:579 msgid "Download" msgstr "Scarica" -#: ../src/tooltips.py:572 +#: ../src/tooltips.py:585 msgid "Upload" msgstr "Invia" -#: ../src/tooltips.py:579 +#: ../src/tooltips.py:592 msgid "Type: " msgstr "Tipo: " -#: ../src/tooltips.py:585 +#: ../src/tooltips.py:598 msgid "Transferred: " msgstr "Trasferito: " -#: ../src/tooltips.py:588 ../src/tooltips.py:609 +#: ../src/tooltips.py:601 ../src/tooltips.py:622 msgid "Not started" msgstr "Non iniziato" -#: ../src/tooltips.py:592 +#: ../src/tooltips.py:605 msgid "Stopped" msgstr "Fermato" -#: ../src/tooltips.py:594 ../src/tooltips.py:597 +#: ../src/tooltips.py:607 ../src/tooltips.py:610 msgid "Completed" msgstr "Completato" -#: ../src/tooltips.py:601 +#: ../src/tooltips.py:614 msgid "?transfer status:Paused" msgstr "?transfer status:In pausa" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:605 +#: ../src/tooltips.py:618 msgid "Stalled" msgstr "In stallo" -#: ../src/tooltips.py:607 +#: ../src/tooltips.py:620 msgid "Transferring" msgstr "Trasferimento in corso" -#: ../src/tooltips.py:639 +#: ../src/tooltips.py:652 msgid "This service has not yet responded with detailed information" msgstr "Questo servizio non ha ancora inviato informazioni dettagliate" -#: ../src/tooltips.py:642 +#: ../src/tooltips.py:655 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -5404,24 +5896,24 @@ msgstr "" "Questo servizio non ha inviato informazioni dettagliate.\n" "È probabilmente vecchio o malfunzionante" -#: ../src/vcard.py:217 +#: ../src/vcard.py:240 msgid "?Client:Unknown" msgstr "?Client:Sconosciuto" -#: ../src/vcard.py:219 +#: ../src/vcard.py:242 msgid "?OS:Unknown" msgstr "Sconosciuto" -#: ../src/vcard.py:247 ../src/vcard.py:449 +#: ../src/vcard.py:267 ../src/vcard.py:277 ../src/vcard.py:467 #, python-format msgid "since %s" -msgstr "da %s" +msgstr "dalle %s" -#: ../src/vcard.py:277 +#: ../src/vcard.py:306 msgid "Affiliation:" msgstr "Affiliazione: " -#: ../src/vcard.py:285 +#: ../src/vcard.py:314 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -5429,7 +5921,7 @@ msgstr "" "Questo contatto è interessato alle informazioni sulla tua presenza, ma tu " "non sei interessato alla sua" -#: ../src/vcard.py:287 +#: ../src/vcard.py:316 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -5437,14 +5929,14 @@ msgstr "" "Sei interessato alle informazioni sulla presenza di questo contatto, ma lui/" "lei non è interessato/a alla tua" -#: ../src/vcard.py:289 +#: ../src/vcard.py:318 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:291 +#: ../src/vcard.py:320 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -5452,12 +5944,12 @@ msgstr "" "Non sei interessato alla presenza del contatto, e lui/lei non è interessato " "alla tua" -#: ../src/vcard.py:299 +#: ../src/vcard.py:328 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:311 ../src/vcard.py:338 ../src/vcard.py:482 +#: ../src/vcard.py:332 ../src/vcard.py:369 ../src/vcard.py:492 msgid " resource with priority " msgstr " risorsa con priorità " @@ -5465,23 +5957,23 @@ msgstr " risorsa con priorità " msgid "creating logs database" msgstr "creazione database log" -#: ../src/common/check_paths.py:89 ../src/common/check_paths.py:100 -#: ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:96 ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:114 #, python-format msgid "%s is a file but it should be a directory" msgstr "%s è un file ma dovrebbe essere una cartella" -#: ../src/common/check_paths.py:90 ../src/common/check_paths.py:101 -#: ../src/common/check_paths.py:108 ../src/common/check_paths.py:116 +#: ../src/common/check_paths.py:97 ../src/common/check_paths.py:108 +#: ../src/common/check_paths.py:115 ../src/common/check_paths.py:123 msgid "Gajim will now exit" msgstr "Gajim sta per uscire" -#: ../src/common/check_paths.py:115 +#: ../src/common/check_paths.py:122 #, python-format msgid "%s is a directory but should be a file" msgstr "%s è una cartella ma dovrebbe essere un file" -#: ../src/common/check_paths.py:131 +#: ../src/common/check_paths.py:138 #, python-format msgid "creating %s directory" msgstr "creazione della cartella %s" @@ -5537,54 +6029,58 @@ msgstr "Non si è entrati in una chat di gruppo." #: ../src/common/commands.py:189 msgid "Leave Groupchats" -msgstr "Lasciare le chat di gruppo" +msgstr "Esci dalle chat di gruppo" #: ../src/common/commands.py:190 msgid "Choose the groupchats you want to leave" -msgstr "Scegliere le chat di gruppo da lasciare" - -#: ../src/common/commands.py:194 -msgid "Groupchats" -msgstr "Chat di gruppo" +msgstr "Scegliere le chat di gruppo da cui vuoi uscire" #: ../src/common/commands.py:230 -msgid "You leaved the following groupchats:" -msgstr "Sono state lasciate le seguenti chat di gruppo:" +msgid "You left the following groupchats:" +msgstr "Sei uscito dalle seguenti chat di gruppo:" + +#: ../src/common/commands.py:242 +msgid "Forward unread messages" +msgstr "Inoltra messaggi non letti" -#: ../src/common/config.py:56 +#: ../src/common/commands.py:262 +msgid "All unread messages have been forwarded." +msgstr "Tutti i messaggi non letti sono stati inoltrati." + +#: ../src/common/config.py:58 msgid "Use D-Bus and Notification-Daemon to show notifications" msgstr "Usa D-Bus e Notification-Daemon per mostrare le notifiche" -#: ../src/common/config.py:61 +#: ../src/common/config.py:63 msgid "Time in minutes, after which your status changes to away." -msgstr "Tempo in minuti dopo il quale lo stato diventa \"assente\"." +msgstr "Tempo in minuti dopo il quale lo stato diventa 'assente'." -#: ../src/common/config.py:62 +#: ../src/common/config.py:64 msgid "Away as a result of being idle" msgstr "Assente per inattività " -#: ../src/common/config.py:64 +#: ../src/common/config.py:66 msgid "Time in minutes, after which your status changes to not available." -msgstr "Tempo in minuti dopo il quale lo stato diventa \"non disponibile\"." +msgstr "Tempo in minuti dopo il quale lo stato diventa 'non disponibile'." -#: ../src/common/config.py:65 +#: ../src/common/config.py:67 msgid "Not available as a result of being idle" msgstr "Non disponibile per inattività " -#: ../src/common/config.py:83 +#: ../src/common/config.py:85 msgid "" "List (space separated) of rows (accounts and groups) that are collapsed." msgstr "Lista (separata da spazi) di linee (account e gruppi) raggruppate." -#: ../src/common/config.py:88 +#: ../src/common/config.py:90 msgid "Enable link-local/zeroconf messaging" msgstr "Abilità la messaggistica zeroconf sulla rete locale" -#: ../src/common/config.py:91 +#: ../src/common/config.py:93 msgid "Language used by speller" msgstr "Lingua usata dal controllo ortografico" -#: ../src/common/config.py:92 +#: ../src/common/config.py:94 msgid "" "'always' - print time for every message.\n" "'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" @@ -5594,32 +6090,37 @@ msgstr "" "'a volte' - scrive l'ora ogni print_ichat_every_foo_minutes minuti.\n" "'mai' - non scrive mai l'ora." -#: ../src/common/config.py:93 +#: ../src/common/config.py:95 msgid "" "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 least precise one. " "This is used only if print_time is 'sometimes'." -msgstr "Scrive l'ora nelle chat usando l'orologio vago. Valore di vaghezza da 1 a 4, o 0 per disabilitarlo. 1 è l'orologio più preciso, 4 è il meno preciso. Viene usato solo se print_time è 'sometimes'." +msgstr "" +"Scrive l'ora nelle chat usando l'orologio vago. Valore di vaghezza da 1 a 4, " +"o 0 per disabilitarlo. 1 è l'orologio più preciso, 4 è il meno preciso. " +"Viene usato solo se print_time è 'sometimes'." -#: ../src/common/config.py:96 +#: ../src/common/config.py:98 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Tratta le coppie di * / _ come possibili caratteri di formattazione." -#: ../src/common/config.py:97 +#: ../src/common/config.py:99 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 * *." +"Se Vero, non verranno rimossi */_ . Perciò *abc* verrà mostrato in grassetto " +"ma senza rimuovere * *." -#: ../src/common/config.py:100 +#: ../src/common/config.py:102 msgid "" "Uses ReStructured text markup to send HTML, plus ascii formatting if " "selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" "restructuredtext.html (If you want to use this, install docutils)" -msgstr "Usa il testo annotato ReStructured per inviare HTML, più la formattazione ascii se selezionata (se si vuole usare questa opzione, installare docutils)" +msgstr "" +"Usa il testo annotato ReStructured per inviare HTML, più la formattazione " +"ascii se selezionata (se si vuole usare questa opzione, installare docutils)" -#: ../src/common/config.py:109 +#: ../src/common/config.py:111 msgid "" "Character to add after nickname when using nick completion (tab) in group " "chat." @@ -5627,7 +6128,7 @@ msgstr "" "Carattere da aggiungere dopo il nickname quando si usa il completamento nick " "(tab) nella chat di gruppo." -#: ../src/common/config.py:110 +#: ../src/common/config.py:112 msgid "" "Character to propose to add after desired nickname when desired nickname is " "used by someone else in group chat." @@ -5635,26 +6136,30 @@ msgstr "" "Carattere da proporre di aggiungere dopo il nickname desiderato quando il " "nickname desiderato è già usato da qualcun'altro nella chat di gruppo" -#: ../src/common/config.py:133 +#: ../src/common/config.py:135 msgid "" "This option let you customize timestamp that is printed in conversation. For " "exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " "strftime for full documentation: http://docs.python.org/lib/module-time.html" -msgstr "Questa opzione permette di personalizzare l'orario stampato nelle conversazioni. Per esempio, \"[%H:%M] \" mostrerà \"[ora:minuto] \". Vedere la documentazione della funzione python strftime per ottenere documentazione completa: http://docs.python.org/lib/module-time.html" +msgstr "" +"Questa opzione permette di personalizzare l'orario stampato nelle " +"conversazioni. Per esempio, \"[%H:%M] \" mostrerà \"[ora:minuto] \". Vedere " +"la documentazione della funzione python strftime per ottenere documentazione " +"completa: http://docs.python.org/lib/module-time.html" -#: ../src/common/config.py:134 +#: ../src/common/config.py:136 msgid "Characters that are printed before the nickname in conversations" msgstr "Caratteri scritti prima del nickname nelle conversazioni" -#: ../src/common/config.py:135 +#: ../src/common/config.py:137 msgid "Characters that are printed after the nickname in conversations" msgstr "Caratteri scritti dopo il nickname nelle conversazioni" -#: ../src/common/config.py:142 +#: ../src/common/config.py:144 msgid "Add * and [n] in roster title?" msgstr "Aggiungere * e [n] al titolo della lista contatti?" -#: ../src/common/config.py:143 +#: ../src/common/config.py:145 msgid "" "How many lines to remember from previous conversation when a chat tab/window " "is reopened." @@ -5662,12 +6167,12 @@ msgstr "" "Quante linee ricordare dalla precedente conversazione quando una scheda/" "finestra di chat viene riaperta." -#: ../src/common/config.py:144 +#: ../src/common/config.py:146 msgid "How many minutes should last lines from previous conversation last." msgstr "" "Quanti minuti devono durare le ultime linee dalla conversazione precedente." -#: ../src/common/config.py:145 +#: ../src/common/config.py:147 msgid "" "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " "Client default behaviour)." @@ -5675,11 +6180,11 @@ msgstr "" "Inviare il messaggio con Ctrl-Invio e con Invio creare una nuova linea " "(comportamento predefinito del client ICQ Mirabilis)." -#: ../src/common/config.py:147 +#: ../src/common/config.py:149 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Quante linee memorizzare per Ctrl+Alto." -#: ../src/common/config.py:150 +#: ../src/common/config.py:152 #, python-format msgid "" "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " @@ -5688,12 +6193,12 @@ msgstr "" "URL personalizzato contenente %s dove %s è la parola/frase o 'WIKTIONARY', " "che significa usare wiktionary." -#: ../src/common/config.py:153 +#: ../src/common/config.py:155 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:154 +#: ../src/common/config.py:156 msgid "" "If True, listen to D-Bus signals from NetworkManager and change the status " "of accounts (provided they do not have listen_to_network_manager set to " @@ -5705,13 +6210,13 @@ msgstr "" "che sia sincronizzato con lo stato globale) basandosi sullo stato della " "connessione di rete." -#: ../src/common/config.py:155 +#: ../src/common/config.py:157 msgid "" "Sent chat state notifications. Can be one of all, composing_only, disabled." msgstr "" "Notifiche di stato inviate. Può essere una tra all, composing_only, disabled." -#: ../src/common/config.py:156 +#: ../src/common/config.py:158 msgid "" "Displayed chat state notifications in chat windows. Can be one of all, " "composing_only, disabled." @@ -5719,7 +6224,7 @@ msgstr "" "Le notifiche di stato mostrate nella finestra di chat. Possono essere una " "tra all, composing_only, disabled." -#: ../src/common/config.py:158 +#: ../src/common/config.py:160 msgid "" "When not printing time for every message (print_time==sometimes), print it " "every x minutes." @@ -5727,11 +6232,11 @@ msgstr "" "Quando non scrivi la data ad ogni messaggio (print_time==sometimes), " "scriverla ogni x minuti." -#: ../src/common/config.py:159 +#: ../src/common/config.py:161 msgid "Ask before closing a group chat tab/window." msgstr "Chiedere prima di chiudere una finestra/scheda di chat di gruppo." -#: ../src/common/config.py:160 +#: ../src/common/config.py:162 msgid "" "Always ask before closing group chat tab/window in this space separated list " "of group chat jids." @@ -5739,7 +6244,7 @@ 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:161 +#: ../src/common/config.py:163 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of group chat jids." @@ -5747,42 +6252,56 @@ 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:164 +#: ../src/common/config.py:166 +#, fuzzy msgid "" -"Overrides the host we send for File Transfer in case of address translation/" -"port forwarding." +"Comma separated list of hosts that we send, in addition of local interfaces, " +"for File Transfer in case of address translation/port forwarding." msgstr "" -"Imposta l'host inviato per il trasferimento file in caso di traduzione di " -"indirizzo/port forwarding." +"Lista di host separati da una virgola che saranno inviati, insieme alle " +"interfacce locali, per il trasferimento file in caso di traslazione " +"dell'indirizzo/inoltro porte." -#: ../src/common/config.py:166 +#: ../src/common/config.py:168 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." msgstr "Secondo lo standard IEC, KiB = 1024 byte, KB = 1000 byte." -#: ../src/common/config.py:168 +#: ../src/common/config.py:170 msgid "Notify of events in the system trayicon." msgstr "Notifica gli eventi nell'area di notifica." -#: ../src/common/config.py:174 +#: ../src/common/config.py:176 msgid "Show tab when only one conversation?" msgstr "Mostrare scheda quando c'è una sola conversazione?" -#: ../src/common/config.py:175 +#: ../src/common/config.py:177 msgid "Show tabbed notebook border in chat windows?" msgstr "Mostrare bordo per le schede quando c'è una sola conversazione?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:178 msgid "Show close button in tab?" msgstr "Mostrare il pulsante \"chiudi\" nelle schede?" -#: ../src/common/config.py:189 +#: ../src/common/config.py:179 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "" +"Durante la negoziazione di una sessione cifrata, Gajim deve abilitare la " +"registrazione dei messaggi?" + +#: ../src/common/config.py:188 +msgid "Preview new messages in notification popup?" +msgstr "Includere l'anteprima dei nuovi messaggi nelle notifiche popup?" + +#: ../src/common/config.py:193 msgid "" "A semicolon-separated list of words that will be highlighted in group chats." msgstr "" "Una lista separata da caratteri ';' di parole che verranno evidenziate nelle " "chat multi-utente." -#: ../src/common/config.py:190 +#: ../src/common/config.py:194 msgid "" "If True, quits Gajim when X button of Window Manager is clicked. This " "setting is taken into account only if trayicon is used." @@ -5791,12 +6310,13 @@ msgstr "" "cliccato. Questa impostazione è presa in considerazione solo se viene usata " "l'icona nello spazio di notifica." -#: ../src/common/config.py:191 +#: ../src/common/config.py:195 msgid "" "If True, Gajim will check if it's the default jabber client on each startup." -msgstr "Se Vero, Gajim controllerà se è il client Jabber predefinito ad ogni avvio." +msgstr "" +"Se Vero, Gajim controllerà se è il client Jabber predefinito ad ogni avvio." -#: ../src/common/config.py:192 +#: ../src/common/config.py:196 msgid "" "If True, Gajim will display an icon on each tab containing unread messages. " "Depending on the theme, this icon may be animated." @@ -5804,7 +6324,7 @@ msgstr "" "Se Vero, Gajim mostrerà un icona su ogni scheda contenente messaggi non " "letti. A seconda del tema, questa icona può essere animata." -#: ../src/common/config.py:193 +#: ../src/common/config.py:197 msgid "" "If True, Gajim will display the status message, if not empty, for every " "contact under the contact name in roster window." @@ -5812,7 +6332,7 @@ msgstr "" "Se Vero, Gajim mostrerà il messaggio di stato, se non vuoto, per ogni " "contatto sotto il nome del contatto nella finestra dei contatti" -#: ../src/common/config.py:195 +#: ../src/common/config.py:199 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." @@ -5820,7 +6340,7 @@ 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." -#: ../src/common/config.py:196 +#: ../src/common/config.py:200 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." @@ -5828,39 +6348,44 @@ 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:197 +#: ../src/common/config.py:201 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 " "group chat." -msgstr "può essere \"none\", \"all\" o \"in_and_out\". Se \"none\", Gajim non scriverà più la riga di stato nelle chat di gruppo quando un membro cambia il suo stato e/o il suo messaggio di stato. Se \"all\" Gajim scriverà tutti i messaggi di stato. Se \"in_and_out\", gajim scriverà solo quando qualcuno entra od esce dalla chat di gruppo." +msgstr "" +"può essere \"none\", \"all\" o \"in_and_out\". Se \"none\", Gajim non " +"scriverà più la riga di stato nelle chat di gruppo quando un membro cambia " +"il suo stato e/o il suo messaggio di stato. Se \"all\" Gajim scriverà tutti " +"i messaggi di stato. Se \"in_and_out\", gajim scriverà solo quando qualcuno " +"entra od esce dalla chat di gruppo." -#: ../src/common/config.py:199 +#: ../src/common/config.py:203 msgid "Background color of contacts when they just signed in." msgstr "Colore di sfondo dei contatti appena collegati." -#: ../src/common/config.py:200 +#: ../src/common/config.py:204 msgid "Background color of contacts when they just signed out." msgstr "Colore di sfondo dei contatti appena scollegati." -#: ../src/common/config.py:202 +#: ../src/common/config.py:206 msgid "" "If True, restored messages will use a smaller font than the default one." msgstr "" "Se Vero, i messaggi recuperati useranno un font più piccolo di quello " "predefinito." -#: ../src/common/config.py:203 +#: ../src/common/config.py:207 msgid "Don't show avatar for the transport itself." msgstr "Non mostrare l'avatar per il trasporto stesso." -#: ../src/common/config.py:204 +#: ../src/common/config.py:208 msgid "Don't show roster in the system taskbar." msgstr "Non mostrare l'account nella taskbar del sistema." -#: ../src/common/config.py:205 +#: ../src/common/config.py:209 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 " @@ -5870,7 +6395,7 @@ msgstr "" "finestra lampeggia (comportamento predefinito per la maggior parte dei " "gestori di finestre) quando contiene nuovi eventi." -#: ../src/common/config.py:207 +#: ../src/common/config.py:211 msgid "" "Jabberd1.4 does not like sha info when one join a password protected group " "chat. Turn this option to False to stop sending sha info in group chat " @@ -5881,7 +6406,7 @@ msgstr "" "SHA nella presenza sulle chat di gruppo" #. always, never, peracct, pertype should not be translated -#: ../src/common/config.py:210 +#: ../src/common/config.py:214 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -5900,36 +6425,32 @@ msgstr "" "ad una specifica finestra. Nota, cambiare questa opzione richiede il riavvio " "di Gajim prima che le modifiche abbiano effetto" -#: ../src/common/config.py:211 +#: ../src/common/config.py:215 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:212 +#: ../src/common/config.py:216 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:213 -msgid "Hides the buttons in group chat window." -msgstr "Nasconde i pulsanti nella finestra di chat di gruppo" - -#: ../src/common/config.py:214 -msgid "Hides the buttons in two persons chat window." -msgstr "Nasconde i pulsanti nella finestra di chat a due persone" +#: ../src/common/config.py:217 +msgid "Hides the buttons in chat windows." +msgstr "Nascondi i pulsanti nella finestra di chat di gruppo." -#: ../src/common/config.py:215 +#: ../src/common/config.py:218 msgid "Hides the banner in a group chat window" msgstr "Nasconde l'intestazione in una finestra di chat di gruppo" -#: ../src/common/config.py:216 +#: ../src/common/config.py:219 msgid "Hides the banner in two persons chat window" msgstr "Nasconde l'intestazione nella finestra di chat a due persone" -#: ../src/common/config.py:217 +#: ../src/common/config.py:220 msgid "Hides the group chat occupants list in group chat window." msgstr "" "Nasconde la lista dei presenti nella stanza nella finestra di chat di gruppo" -#: ../src/common/config.py:218 +#: ../src/common/config.py:221 msgid "" "In a chat, show the nickname at the beginning of a line only when it's not " "the same person talking than in previous message." @@ -5937,22 +6458,26 @@ msgstr "" "In una chat, mostra il nickname all'inizio della riga solo quando non è " "quello della persona che parlava nel messaggio precedente." -#: ../src/common/config.py:219 +#: ../src/common/config.py:222 msgid "Indentation when using merge consecutive nickname." msgstr "Indentazione quando si raggruppano nickname consecutivi." -#: ../src/common/config.py:220 +#: ../src/common/config.py:223 +msgid "Smooth scroll message in conversation window" +msgstr "Scorrimento fluido dei messaggi nella finestra di continuazione" + +#: ../src/common/config.py:224 msgid "List of colors that will be used to color nicknames in group chats." msgstr "" "Lista di colori che saranno usati per colorare i nickname nelle chat di " "gruppo." -#: ../src/common/config.py:221 +#: ../src/common/config.py:225 msgid "Ctrl-Tab go to next composing tab when none is unread." msgstr "" "Ctrl-Tab va alla prossima scheda di composizione se nessuna è non letta." -#: ../src/common/config.py:222 +#: ../src/common/config.py:226 msgid "" "Should we show the confirm metacontacts creation dialog or not? Empty string " "means we never show the dialog." @@ -5960,7 +6485,7 @@ msgstr "" "Mostrare la richiesta di conferma creazione metacontatti o meno? Una stringa " "vuota significa che non verrà mai mostrata." -#: ../src/common/config.py:223 +#: ../src/common/config.py:227 msgid "" "If True, you will be able to set a negative priority to your account in " "account modification window. BE CAREFUL, when you are logged in with a " @@ -5970,25 +6495,61 @@ msgstr "" "di modifica account. ATTENZIONE, quando si è collegati con priorità " "negativa, NON si riceveranno messaggi dal server." -#: ../src/common/config.py:224 +#: ../src/common/config.py:228 msgid "" "If True, Gajim will use Gnome Keyring (if available) to store account " "passwords." -msgstr "Se Vero, Gajim userà il Keyring Gnome (se disponibile) per memorizzare le password degli account." +msgstr "" +"Se Vero, Gajim userà il Keyring Gnome (se disponibile) per memorizzare le " +"password degli account." -#: ../src/common/config.py:225 +#: ../src/common/config.py:229 msgid "" "If True, Gajim will show number of online and total contacts in account and " "group rows." -msgstr "Se Vero, Gajim mostrerà il numero di account online e totali nelle linee degli account e dei gruppi." +msgstr "" +"Se Vero, Gajim mostrerà il numero di account online e totali nelle linee " +"degli account e dei gruppi." -#: ../src/common/config.py:226 +#: ../src/common/config.py:230 msgid "" "Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " "as if they were of this type" -msgstr "Può essere vuoto, 'chat' o 'normal'. Se non vuoto, tratta tutti i messaggi in iarrivo come se fossero di questo tipo" +msgstr "" +"Può essere vuoto, 'chat' o 'normal'. Se non vuoto, tratta tutti i messaggi " +"in iarrivo come se fossero di questo tipo" + +#: ../src/common/config.py:231 +msgid "" +"If True, Gajim will scroll and select the contact who sent you the last " +"message, if chat window is not already opened." +msgstr "" +"Se Vero, Gajim scorrerà e selezionerà il contatto che ti ha mandato l'ultimo " +"messaggio, se la finestra di chat non è già aperta." + +#: ../src/common/config.py:232 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" +"Se Vero, Gajim converterà le stringhe comprese tra $$ e $$ in un'immagine " +"usando dvips e convertendola prima di inserirla in una finestra di chat." + +#: ../src/common/config.py:233 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "" +"Tempo di inattività richiesto prima che la finestra di cambiamento del " +"messaggio di stato si chiuda." + +#: ../src/common/config.py:234 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "" +"Massimo numero di linee che sono visualizzate nelle conversazioni. Le linee " +"più vecchie verranno cancellate." -#: ../src/common/config.py:237 +#: ../src/common/config.py:245 msgid "" "Priority will change automatically according to your status. Priorities are " "defined in autopriority_* options." @@ -5997,11 +6558,11 @@ msgstr "" "definite nelle opzioni autopriority_*." #. yes, no, ask -#: ../src/common/config.py:266 +#: ../src/common/config.py:275 msgid "Jabberd2 workaround" msgstr "Workaround Jabberd2" -#: ../src/common/config.py:270 +#: ../src/common/config.py:279 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -6009,101 +6570,101 @@ 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:329 +#: ../src/common/config.py:338 msgid "Is OpenPGP enabled for this contact?" msgstr "OpenPGP è abilitato per questo contatto?" -#: ../src/common/config.py:330 ../src/common/config.py:333 +#: ../src/common/config.py:339 ../src/common/config.py:342 msgid "Language for which we want to check misspelled words" msgstr "Linguaggio per il quale controllare le parole sbagliate" -#: ../src/common/config.py:339 +#: ../src/common/config.py:348 msgid "all or space separated status" msgstr "tutto o stati separati da uno spazio" -#: ../src/common/config.py:340 +#: ../src/common/config.py:349 msgid "'yes', 'no', or 'both'" msgstr "'yes', 'no', o 'both'" -#: ../src/common/config.py:341 ../src/common/config.py:343 -#: ../src/common/config.py:344 ../src/common/config.py:347 -#: ../src/common/config.py:348 +#: ../src/common/config.py:350 ../src/common/config.py:352 +#: ../src/common/config.py:353 ../src/common/config.py:356 +#: ../src/common/config.py:357 msgid "'yes', 'no' or ''" msgstr "'yes', 'no' o 'both'" -#: ../src/common/config.py:354 +#: ../src/common/config.py:363 msgid "Sleeping" msgstr "Dormo" -#: ../src/common/config.py:355 +#: ../src/common/config.py:364 msgid "Back soon" msgstr "Torno presto" -#: ../src/common/config.py:355 +#: ../src/common/config.py:364 msgid "Back in some minutes." -msgstr "Di ritorno tra qualche minuto." +msgstr "Torno tra qualche minuto." -#: ../src/common/config.py:356 +#: ../src/common/config.py:365 msgid "Eating" msgstr "Mangio" -#: ../src/common/config.py:356 +#: ../src/common/config.py:365 msgid "I'm eating, so leave me a message." -msgstr "Sto mangiando, lascia pure un messaggio" +msgstr "Sto mangiando, lascia pure un messaggio." -#: ../src/common/config.py:357 +#: ../src/common/config.py:366 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:357 +#: ../src/common/config.py:366 msgid "I'm watching a movie." msgstr "Sto guardando un film." -#: ../src/common/config.py:358 +#: ../src/common/config.py:367 msgid "Working" msgstr "Lavoro" -#: ../src/common/config.py:358 +#: ../src/common/config.py:367 msgid "I'm working." msgstr "Sto lavorando." -#: ../src/common/config.py:359 +#: ../src/common/config.py:368 msgid "Phone" msgstr "Telefono" -#: ../src/common/config.py:359 +#: ../src/common/config.py:368 msgid "I'm on the phone." -msgstr "Sono al telefono" +msgstr "Sono al telefono." -#: ../src/common/config.py:360 +#: ../src/common/config.py:369 msgid "Out" msgstr "Fuori" -#: ../src/common/config.py:360 +#: ../src/common/config.py:369 msgid "I'm out enjoying life." -msgstr "Sono fuori a divertirmi" +msgstr "Sono fuori a divertirmi." -#: ../src/common/config.py:364 +#: ../src/common/config.py:373 msgid "I'm available." -msgstr "Disponibile" +msgstr "Sono disponibile." -#: ../src/common/config.py:365 +#: ../src/common/config.py:374 msgid "I'm free for chat." -msgstr "Libero per chat" +msgstr "Solo libero per chat." -#: ../src/common/config.py:367 +#: ../src/common/config.py:376 msgid "I'm not available." -msgstr "Servizio non disponibile" +msgstr "Non sono disponibile." -#: ../src/common/config.py:368 +#: ../src/common/config.py:377 msgid "Do not disturb." msgstr "Non disturbare." -#: ../src/common/config.py:369 ../src/common/config.py:370 +#: ../src/common/config.py:378 ../src/common/config.py:379 msgid "Bye!" msgstr "Ciao ciao!" -#: ../src/common/config.py:379 +#: ../src/common/config.py:388 msgid "" "Sound to play when a group chat message contains one of the words in " "muc_highlight_words, or when a group chat message contains your nickname." @@ -6111,123 +6672,130 @@ 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:380 +#: ../src/common/config.py:389 msgid "Sound to play when any MUC message arrives." msgstr "Suono da riprodurre quando un messaggio MUC arriva." -#: ../src/common/config.py:389 ../src/common/optparser.py:193 +#: ../src/common/config.py:398 ../src/common/optparser.py:208 msgid "green" msgstr "verde" -#: ../src/common/config.py:393 ../src/common/optparser.py:179 +#: ../src/common/config.py:402 ../src/common/optparser.py:194 msgid "grocery" msgstr "drogheria" -#: ../src/common/config.py:397 +#: ../src/common/config.py:406 msgid "human" msgstr "umano" -#: ../src/common/config.py:401 +#: ../src/common/config.py:410 msgid "marine" msgstr "marino" -#: ../src/common/connection_handlers.py:52 +#: ../src/common/connection_handlers.py:56 #: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 msgid "Unable to load idle module" msgstr "Impossibile caricare il modulo idle" -#: ../src/common/connection_handlers.py:177 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:233 +#: ../src/common/connection_handlers.py:215 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 msgid "Wrong host" msgstr "Host errato" -#: ../src/common/connection_handlers.py:177 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:233 -msgid "" -"The host you configured as the ft_override_host_to_send advanced option is " -"not valid, so ignored." -msgstr "" -"L'host configurato come ft_override_host_to_send nelle opzioni avanzate non " -"è valido, sarà ignorato." - -#: ../src/common/connection_handlers.py:590 +#: ../src/common/connection_handlers.py:216 +msgid "Invalid local address? :-O" +msgstr "Indirizzo locale non valido? :-O" + +#: ../src/common/connection_handlers.py:608 #, 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" -#: ../src/common/connection_handlers.py:1543 +#: ../src/common/connection_handlers.py:1779 #, python-format msgid "Nickname not allowed: %s" msgstr "Nickname non permesso: %s" -#. password required to join #. we are banned #. group chat does not exist -#: ../src/common/connection_handlers.py:1605 -#: ../src/common/connection_handlers.py:1608 -#: ../src/common/connection_handlers.py:1611 -#: ../src/common/connection_handlers.py:1614 -#: ../src/common/connection_handlers.py:1617 -#: ../src/common/connection_handlers.py:1620 -#: ../src/common/connection_handlers.py:1628 +#: ../src/common/connection_handlers.py:1849 +#: ../src/common/connection_handlers.py:1852 +#: ../src/common/connection_handlers.py:1855 +#: ../src/common/connection_handlers.py:1858 +#: ../src/common/connection_handlers.py:1862 +#: ../src/common/connection_handlers.py:1871 msgid "Unable to join group chat" msgstr "Non è possibile entrare nella stanza" -#: ../src/common/connection_handlers.py:1606 -msgid "A password is required to join this group chat." -msgstr "È necessaria una password per entrare in questa stanza." - -#: ../src/common/connection_handlers.py:1609 -msgid "You are banned from this group chat." -msgstr "Sei bandito da questa stanza." +#: ../src/common/connection_handlers.py:1850 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Sei stato bandito dalla stanza %s." -#: ../src/common/connection_handlers.py:1612 -msgid "Such group chat does not exist." -msgstr "Questa stanza non esiste." +#: ../src/common/connection_handlers.py:1853 +#, python-format +msgid "Group chat %s does not exist." +msgstr "La stanza %s non esiste." -#: ../src/common/connection_handlers.py:1615 +#: ../src/common/connection_handlers.py:1856 msgid "Group chat creation is restricted." msgstr "Non è permessa la creazione di stanze." -#: ../src/common/connection_handlers.py:1618 -msgid "Your registered nickname must be used." -msgstr "È necessario usare il nickname registrato." +#: ../src/common/connection_handlers.py:1859 +#, python-format +msgid "Your registered nickname must be used in group chat %s." +msgstr "Il tuo nickname è già in uso nella stanza di gruppo %s:" -#: ../src/common/connection_handlers.py:1621 -msgid "You are not in the members list." -msgstr "Non si appartiene alla lista dei membri." +#: ../src/common/connection_handlers.py:1863 +#, python-format +msgid "You are not in the members list in groupchat %s." +msgstr "Non sei nella lista dei membri nella chat di gruppo %s." -#: ../src/common/connection_handlers.py:1629 +#: ../src/common/connection_handlers.py:1872 +#, python-format msgid "" -"Your desired nickname is in use or registered by another occupant.\n" +"Your desired nickname in group chat %s 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" +"Il nickname desiderato è in uso o registrato da un altro partecipante alla " +"chat di gruppo %s.\n" "Specificare un altro nickname sotto:" -#: ../src/common/connection_handlers.py:1679 +#. Room has been destroyed. see +#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom +#: ../src/common/connection_handlers.py:1903 +msgid "Room has been destroyed" +msgstr "La stanza è stata cancellata" + +#: ../src/common/connection_handlers.py:1910 +#, python-format +msgid "You can join this room instead: %s" +msgstr "Puoi invece entrare in questa stanza: %s" + +#: ../src/common/connection_handlers.py:1937 msgid "I would like to add you to my roster." msgstr "Vorrei aggiungerti ai miei contatti." #. BE CAREFUL: no con.updateRosterItem() in a callback -#: ../src/common/connection_handlers.py:1700 +#: ../src/common/connection_handlers.py:1958 #, python-format msgid "we are now subscribed to %s" msgstr "si è ora abbonati a %s" -#: ../src/common/connection_handlers.py:1702 +#: ../src/common/connection_handlers.py:1960 #, python-format msgid "unsubscribe request from %s" msgstr "richiesta di cancellazione abbonamento da %s" -#: ../src/common/connection_handlers.py:1704 +#: ../src/common/connection_handlers.py:1962 #, python-format msgid "we are now unsubscribed from %s" msgstr "è stato ora cancellato l'abbonamento a %s" -#: ../src/common/connection_handlers.py:1874 +#: ../src/common/connection_handlers.py:2084 #, python-format msgid "" "JID %s is not RFC compliant. It will not be added to your roster. Use roster " @@ -6237,117 +6805,91 @@ msgstr "" "strumenti di gestione dei contatti come http://jru.jabberstudio.org/ per " "rimuoverlo" -#: ../src/common/connection.py:182 -#: ../src/common/zeroconf/connection_zeroconf.py:196 +#: ../src/common/connection.py:244 +#: ../src/common/zeroconf/connection_zeroconf.py:203 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Connessione con l'account \"%s\" persa" -#: ../src/common/connection.py:183 +#: ../src/common/connection.py:245 msgid "Reconnect manually." msgstr "Riconnetti manualmente." -#: ../src/common/connection.py:194 ../src/common/connection.py:221 +#: ../src/common/connection.py:256 #, python-format -msgid "Transport %s answered wrongly to register request: %s" +msgid "Server %s answered wrongly to register request: %s" msgstr "" -"Il trasporto %s ha risposto in maniera errata alla richiesta di " -"registrazione: %s" +"Il server %s ha risposto in maniera errata alla richiesta di registrazione: %" +"s" #. wrong answer -#: ../src/common/connection.py:220 +#: ../src/common/connection.py:264 msgid "Invalid answer" msgstr "Risposta non valida" -#: ../src/common/connection.py:416 ../src/common/connection.py:515 -#: ../src/common/connection.py:973 -#: ../src/common/zeroconf/connection_zeroconf.py:217 -#, python-format -msgid "Could not connect to \"%s\"" -msgstr "Non ci si è potuti collegare a \"%s\"" - -#: ../src/common/connection.py:430 +#: ../src/common/connection.py:265 #, python-format -msgid "Connected to server %s:%s with %s" -msgstr "Connesso al server %s:%s con %s" - -#: ../src/common/connection.py:444 -#, python-format -msgid "Security error connecting to \"%s\"" -msgstr "Errore di sicurezza nella connessione a \"%s\"" - -#: ../src/common/connection.py:445 -msgid "" -"The server's key has changed, or someone is trying to hack your connection." -msgstr "La chiave del server è cambiata, o qualcuno sta cercando di intromettersi nella connessione." +msgid "Transport %s answered wrongly to register request: %s" +msgstr "" +"Il trasporto %s ha risposto in maniera errata alla richiesta di " +"registrazione: %s" -#: ../src/common/connection.py:452 -#, python-format -msgid "Unable to check fingerprint for %s. Connection could be insecure." -msgstr "Non è possibile verificare l'impronta digitale di %s. La connessione potrebbe non essere sicura." +#: ../src/common/connection.py:411 +msgid "Connection to proxy failed" +msgstr "Connessione al proxy fallita" -#: ../src/common/connection.py:494 +#: ../src/common/connection.py:465 ../src/common/connection.py:511 +#: ../src/common/connection.py:1067 +#: ../src/common/zeroconf/connection_zeroconf.py:237 #, python-format -msgid "Missing fingerprint in SSL connection to %s" -msgstr "Impronta digitale mancante nella connessione SSL a %s" +msgid "Could not connect to \"%s\"" +msgstr "Non è possibile connettersi a \"%s\"" -#: ../src/common/connection.py:500 +#: ../src/common/connection.py:479 #, python-format -msgid "Fingerprint mismatch for %s: Got %s, expected %s" -msgstr "Impronta digitale non corrispondente per %s: ottenuto %s, atteso %s" +msgid "Connected to server %s:%s with %s" +msgstr "Connesso al server %s:%s con %s" -#: ../src/common/connection.py:516 +#: ../src/common/connection.py:512 msgid "Check your connection or try again later" msgstr "Controllare la connessione o riprovare più tardi" -#: ../src/common/connection.py:542 +#: ../src/common/connection.py:537 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autenticazione con \"%s\" fallita" -#: ../src/common/connection.py:543 +#: ../src/common/connection.py:538 msgid "Please check your login and password for correctness." msgstr "Verificare la correttezza di login e password." -#: ../src/common/connection.py:570 +#: ../src/common/connection.py:581 msgid "Error while removing privacy list" msgstr "Errore durante la rimozione della lista privacy" -#: ../src/common/connection.py:571 +#: ../src/common/connection.py:582 #, python-format msgid "" "Privacy list %s has not been removed. It is maybe active in one of your " -"connected resources. Desactivate it and try again." -msgstr "La lista privacy %s non è stata rimossa. Potrebbe essere attiva in una delle risorse connesse. Disattivarla e riprovare." +"connected resources. Deactivate it and try again." +msgstr "" +"La lista privacy %s non è stata rimossa. Potrebbe essere attiva in una delle " +"risorse connesse. Disattivarla e riprovare." #. We didn't set a passphrase -#: ../src/common/connection.py:669 -#: ../src/common/zeroconf/connection_zeroconf.py:156 +#: ../src/common/connection.py:682 +#: ../src/common/zeroconf/connection_zeroconf.py:163 msgid "OpenPGP passphrase was not given" msgstr "Non è stata impostata la passphrase OpenPGP" -#. do not show I'm invisible! -#: ../src/common/connection.py:711 -msgid "invisible" -msgstr "invisibile" - -#: ../src/common/connection.py:712 -msgid "offline" -msgstr "offline" - -#: ../src/common/connection.py:713 -#, python-format -msgid "I'm %s" -msgstr "Sono %s" - #. we're not english #. one in locale and one en -#: ../src/common/connection.py:804 +#: ../src/common/connection.py:845 msgid "[This message is *encrypted* (See :JEP:`27`]" msgstr "[Questo messaggio è *cifrato* (vedi :JEP:`27`)]" -#: ../src/common/connection.py:860 -#: ../src/common/zeroconf/connection_zeroconf.py:397 +#: ../src/common/connection.py:916 +#: ../src/common/zeroconf/connection_zeroconf.py:423 #, python-format msgid "" "Subject: %s\n" @@ -6356,11 +6898,11 @@ msgstr "" "Oggetto: %s\n" "%s" -#: ../src/common/connection.py:999 +#: ../src/common/connection.py:1099 msgid "Not fetched because of invisible status" msgstr "Non ottenuto a causa di stato invisibile" -#: ../src/common/contacts.py:271 +#: ../src/common/contacts.py:294 msgid "Not in roster" msgstr "Non nei contatti" @@ -6377,19 +6919,19 @@ msgstr "Le potenzialità D-Bus di Gajim non possono essere usate" msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "La dipendenza pysqlite2 (o python-pysqlite2) è mancante. Uscita..." -#: ../src/common/exceptions.py:30 +#: ../src/common/exceptions.py:39 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:38 +#: ../src/common/exceptions.py:47 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:46 +#: ../src/common/exceptions.py:55 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -6547,293 +7089,300 @@ msgstr "Fine settimana" msgid "Weekend!" msgstr "Fine settimana!" -#: ../src/common/helpers.py:114 +#: ../src/common/helpers.py:115 msgid "Invalid character in username." msgstr "Carattere non valido nel nome utente." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:120 msgid "Server address required." msgstr "Indirizzo del server richiesto." -#: ../src/common/helpers.py:124 +#: ../src/common/helpers.py:125 msgid "Invalid character in hostname." msgstr "Carattere non valido nell'hostname." -#: ../src/common/helpers.py:130 +#: ../src/common/helpers.py:131 msgid "Invalid character in resource." msgstr "Carattere non valido nella risorsa." #. GiB means gibibyte -#: ../src/common/helpers.py:170 +#: ../src/common/helpers.py:171 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:174 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:177 +#: ../src/common/helpers.py:178 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:180 +#: ../src/common/helpers.py:181 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:184 +#: ../src/common/helpers.py:185 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:187 +#: ../src/common/helpers.py:188 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:190 +#: ../src/common/helpers.py:191 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:219 +#: ../src/common/helpers.py:222 msgid "_Busy" msgstr "O_ccupato" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:224 msgid "Busy" msgstr "Occupato" -#: ../src/common/helpers.py:224 +#: ../src/common/helpers.py:227 msgid "_Not Available" msgstr "_Non disponibile" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:232 msgid "_Free for Chat" msgstr "_Libero per chat" -#: ../src/common/helpers.py:231 +#: ../src/common/helpers.py:234 msgid "Free for Chat" msgstr "Libero per chat" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:237 msgid "_Available" msgstr "_Disponibile" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:239 msgid "Available" msgstr "Disponibile" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:241 msgid "Connecting" msgstr "Connessione in corso" -#: ../src/common/helpers.py:241 +#: ../src/common/helpers.py:244 msgid "A_way" msgstr "_Assente" -#: ../src/common/helpers.py:246 +#: ../src/common/helpers.py:249 msgid "_Offline" msgstr "_Offline" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:251 msgid "Offline" msgstr "Offline" -#: ../src/common/helpers.py:251 +#: ../src/common/helpers.py:254 msgid "_Invisible" msgstr "_Invisibile" -#: ../src/common/helpers.py:257 +#: ../src/common/helpers.py:260 msgid "?contact has status:Unknown" msgstr "Sconosciuto" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:262 msgid "?contact has status:Has errors" msgstr "Ci sono errori" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:267 msgid "?Subscription we already have:None" msgstr "Nessuno" -#: ../src/common/helpers.py:266 +#: ../src/common/helpers.py:269 msgid "To" msgstr "A" -#: ../src/common/helpers.py:270 +#: ../src/common/helpers.py:273 msgid "Both" msgstr "Entrambi" -#: ../src/common/helpers.py:278 +#: ../src/common/helpers.py:281 msgid "?Ask (for Subscription):None" msgstr "Nulla" -#: ../src/common/helpers.py:280 +#: ../src/common/helpers.py:283 msgid "Subscribe" msgstr "Abbonati" -#: ../src/common/helpers.py:289 +#: ../src/common/helpers.py:292 msgid "?Group Chat Contact Role:None" msgstr "Nessuno" -#: ../src/common/helpers.py:292 +#: ../src/common/helpers.py:295 msgid "Moderators" msgstr "Moderatori" -#: ../src/common/helpers.py:294 +#: ../src/common/helpers.py:297 msgid "Moderator" msgstr "Moderatore" -#: ../src/common/helpers.py:297 +#: ../src/common/helpers.py:300 msgid "Participants" msgstr "Partecipanti" -#: ../src/common/helpers.py:299 +#: ../src/common/helpers.py:302 msgid "Participant" msgstr "Participante" -#: ../src/common/helpers.py:302 +#: ../src/common/helpers.py:305 msgid "Visitors" msgstr "Visitatori" -#: ../src/common/helpers.py:304 +#: ../src/common/helpers.py:307 msgid "Visitor" msgstr "Visitatore" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:313 msgid "?Group Chat Contact Affiliation:None" msgstr "Nessuna" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:315 msgid "Owner" msgstr "Proprietario" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:317 msgid "Administrator" msgstr "Amministratore" -#: ../src/common/helpers.py:316 +#: ../src/common/helpers.py:319 msgid "Member" msgstr "Membro" -#: ../src/common/helpers.py:355 +#: ../src/common/helpers.py:358 msgid "is paying attention to the conversation" msgstr "sta seguendo la conversazione" -#: ../src/common/helpers.py:357 +#: ../src/common/helpers.py:360 msgid "is doing something else" msgstr "sta facendo altro" -#: ../src/common/helpers.py:359 +#: ../src/common/helpers.py:362 msgid "is composing a message..." msgstr "sta scrivendo..." #. paused means he or she was composing but has stopped for a while -#: ../src/common/helpers.py:362 +#: ../src/common/helpers.py:365 msgid "paused composing a message" msgstr "ha smesso di scrivere" -#: ../src/common/helpers.py:364 +#: ../src/common/helpers.py:367 msgid "has closed the chat window or tab" msgstr "ha chiuso la finestra o scheda di chat" -#: ../src/common/helpers.py:890 +#: ../src/common/helpers.py:913 ../src/common/helpers.py:920 #, 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" +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "%d messaggio in attesa" +msgstr[1] "%d messaggi in attesa" -#: ../src/common/helpers.py:896 +#: ../src/common/helpers.py:926 #, 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" +msgid " from room %s" +msgstr " dalla stanza %s" -#: ../src/common/helpers.py:902 +#: ../src/common/helpers.py:929 ../src/common/helpers.py:948 #, 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" +msgid " from user %s" +msgstr " dall'utente %s" -#: ../src/common/helpers.py:908 +#: ../src/common/helpers.py:931 #, 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" +msgid " from %s" +msgstr " da %s" -#: ../src/common/helpers.py:918 ../src/common/helpers.py:920 +#: ../src/common/helpers.py:938 ../src/common/helpers.py:945 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "%d evento in attesa" +msgstr[1] "%d eventi in attesa" + +#: ../src/common/helpers.py:978 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" #. we talk about a file -#: ../src/common/optparser.py:59 +#: ../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:179 -msgid "gtk+" -msgstr "gtk+" - -#: ../src/common/optparser.py:188 ../src/common/optparser.py:189 +#: ../src/common/optparser.py:203 ../src/common/optparser.py:204 msgid "cyan" msgstr "cyan" -#: ../src/common/optparser.py:306 +#: ../src/common/optparser.py:320 msgid "migrating logs database to indices" msgstr "Migrazione database delle cronologie agli indici" -#: ../src/common/passwords.py:92 +#: ../src/common/passwords.py:82 #, python-format msgid "Gajim account %s" msgstr "Account Gajim %s" -#: ../src/common/zeroconf/client_zeroconf.py:189 +#: ../src/common/zeroconf/client_zeroconf.py:135 +#: ../src/common/zeroconf/client_zeroconf.py:218 +msgid "Connection to host could not be established" +msgstr "La connessione non può essere stabilita." + +#: ../src/common/zeroconf/client_zeroconf.py:192 msgid "" "Connection to host could not be established: Incorrect answer from server." msgstr "" "La connessione all'host non può esser stabilita: risposta incorretta dal " "server." -#: ../src/common/zeroconf/client_zeroconf.py:205 -msgid "Connection to host could not be established" -msgstr "La connessione non può essere stabilita." - -#: ../src/common/zeroconf/client_zeroconf.py:334 +#: ../src/common/zeroconf/client_zeroconf.py:352 msgid "" "Connection to host could not be established: Timeout while sending data." msgstr "" "La connessione all'host non può esser stabilita: Tempo scaduto durante " "l'invio di dati." -#: ../src/common/zeroconf/client_zeroconf.py:627 +#: ../src/common/zeroconf/client_zeroconf.py:638 msgid "Contact is offline. Your message could not be sent." msgstr "Il contatto è offline. Il tuo messaggio non può esser inviato." -#: ../src/common/zeroconf/connection_zeroconf.py:197 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +#, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"L'host %s che hai configurato come il ft_add_hosts_to_send opzione non è " +"valida, perciò sarà ignorato." + +#: ../src/common/zeroconf/connection_zeroconf.py:204 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Per continuare a mandare e ricevere messaggi, è necessario riconnettersi." -#: ../src/common/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:227 msgid "Avahi error" msgstr "Errore avahi" -#: ../src/common/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:227 #, python-format msgid "" "%s\n" @@ -6842,31 +7391,31 @@ msgstr "" "%s\n" "La messaggistica sulla rete locale potrebbe non funzionare correttamente." -#: ../src/common/zeroconf/connection_zeroconf.py:218 +#: ../src/common/zeroconf/connection_zeroconf.py:238 msgid "Please check if Avahi is installed." msgstr "Controllare se Avahi è installato." -#: ../src/common/zeroconf/connection_zeroconf.py:227 -#: ../src/common/zeroconf/connection_zeroconf.py:231 +#: ../src/common/zeroconf/connection_zeroconf.py:247 +#: ../src/common/zeroconf/connection_zeroconf.py:251 msgid "Could not start local service" msgstr "Impossibile avviare il servizio locale" -#: ../src/common/zeroconf/connection_zeroconf.py:228 +#: ../src/common/zeroconf/connection_zeroconf.py:248 #, python-format msgid "Unable to bind to port %d." msgstr "Impossibile collegarsi alla porta %d." -#: ../src/common/zeroconf/connection_zeroconf.py:232 -#: ../src/common/zeroconf/connection_zeroconf.py:325 +#: ../src/common/zeroconf/connection_zeroconf.py:252 +#: ../src/common/zeroconf/connection_zeroconf.py:347 msgid "Please check if avahi-daemon is running." msgstr "Controllare se avahi-daemon è in esecuzione." -#: ../src/common/zeroconf/connection_zeroconf.py:324 +#: ../src/common/zeroconf/connection_zeroconf.py:346 #, python-format msgid "Could not change status of account \"%s\"" msgstr "Impossibile cambiare lo stato dell'account \"%s\"" -#: ../src/common/zeroconf/connection_zeroconf.py:341 +#: ../src/common/zeroconf/connection_zeroconf.py:363 msgid "" "You are not connected or not visible to others. Your message could not be " "sent." @@ -6875,14 +7424,509 @@ msgstr "" "essere inviato." #. we're not english -#: ../src/common/zeroconf/connection_zeroconf.py:353 +#: ../src/common/zeroconf/connection_zeroconf.py:375 msgid "[This message is encrypted]" msgstr "[Questo messaggio è cifrato]" -#: ../src/common/zeroconf/zeroconf.py:180 -#, python-format -msgid "Error while adding service. %s" -msgstr "Errore durante la creazione del servizio. %s" +#~ msgid "%s does not appear to be a valid JID" +#~ msgstr "%s non sembra essere un JID valido" + +#~ msgid "Blocked Contacts" +#~ msgstr "Contatti bloccati" + +#~ msgid "In_vite" +#~ msgstr "In_vita" + +#~ msgid "Invite Friends !" +#~ msgstr "Invita amici!" + +#~ msgid "MUC server" +#~ msgstr "Server MUC" + +#~ msgid "Please select a MUC server." +#~ msgstr "Selezionare un server MUC." + +#~ msgid "" +#~ "You are going to begin a Multi-User Chat.\n" +#~ "Select the contacts you want to invite" +#~ msgstr "" +#~ "Stai per iniziare una chat di gruppo.\n" +#~ "Scegli i contatti che vuoi invitare" + +#~ msgid "<b>List of possible features in Gajim:</b>" +#~ msgstr "<b>Lista delle possibili funzioni extra di Gajim:</b>" + +#, fuzzy +#~ msgid "Features" +#~ msgstr "Servizi del server" + +#~ msgid "Please wait while retrieving search form..." +#~ msgstr "Attendere durante il recupero dei campi di ricerca..." + +#~ msgid "_Add contact" +#~ msgstr "_Aggiungi contatto" + +#~ msgid "Select the account with which you want to synchronise" +#~ msgstr "Seleziona l'account con cui vuoi effettuare la sincronizzazione" + +#~ msgid "Select the contacts you want to synchronise" +#~ msgstr "Seleziona i contatti che vuoi sincronizzare" + +#~ msgid "Synchronise : select contacts" +#~ msgstr "Sincronizzazione: scegli i contatti" + +#~ msgid "PyOpenSSL" +#~ msgstr "PyOpenSSL" + +#~ msgid "" +#~ "A library used to validate server certificates to ensure a secure " +#~ "connection." +#~ msgstr "" +#~ "Una libreria usata per validare i certificati del server per assicurare " +#~ "una connessione sicura." + +#~ msgid "Requires python-pyopenssl." +#~ msgstr "Richiede python-pyopenssl." + +#~ msgid "Bonjour / Zeroconf" +#~ msgstr "Bonjour/Zeroconf" + +#~ msgid "Serverless chatting with autodetected clients in a local network." +#~ msgstr "" +#~ "Sistema di chat senza server con i client rilevati automaticamente nella " +#~ "rete locale." + +#~ msgid "Requires python-avahi." +#~ msgstr "Richiede python-avahi." + +#~ msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." +#~ msgstr "Richiede pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." + +#~ msgid "gajim-remote" +#~ msgstr "gajim-remote" + +#~ msgid "A script to controle gajim via commandline." +#~ msgstr "Uno script per controllare gajim dalla riga di comando." + +#~ msgid "Requires python-dbus." +#~ msgstr "Richiede python-dbus." + +#~ msgid "Feature not available under Windows." +#~ msgstr "Caratteristica non disponibile sotto Windows." + +#~ msgid "OpenGPG" +#~ msgstr "OpenGPG" + +#~ msgid "Encrypting chatmessages with gpg keys." +#~ msgstr "Cifratura dei messaggi di chat con le chiavi gpg." + +#~ msgid "Requires gpg and python-GnuPGInterface." +#~ msgstr "Richiede gpg e python-GnuPGInterface" + +#~ msgid "network-manager" +#~ msgstr "Gestore connessione" + +#~ msgid "Autodetection of network status." +#~ msgstr "Riconoscimento automatico dello stato della connessione." + +#~ msgid "Requires gnome-network-manager and python-dbus." +#~ msgstr "Richiede gnome-network-manager e python-dbus." + +#~ msgid "Session Management" +#~ msgstr "Gestore sessioni" + +#~ msgid "Gajim session is stored on logout and restored on login." +#~ msgstr "" +#~ "La sessione di Gajim viene salvata alla chiusura e ripristinata all'avvio." + +#~ msgid "Requires python-gnome2." +#~ msgstr "Richiede python-gnome2." + +#~ msgid "gnome-keyring" +#~ msgstr "Gestore portachiavi" + +#~ msgid "Passwords can be stored securely and not just in plaintext." +#~ msgstr "" +#~ "Le password possono essere salvate in modo sicuro e non in un semplice " +#~ "file di testo." + +#~ msgid "Requires gnome-keyring and python-gnome2-desktop." +#~ msgstr "Richiede gnome-keyring e python-gnome2-desktop." + +#~ msgid "SRV" +#~ msgstr "SRV" + +#~ msgid "Ability to connect to servers which is using SRV records." +#~ msgstr "Possibilità di connettersi ai server che usano record SRV." + +#~ msgid "Requires dnsutils." +#~ msgstr "Richiede dnsutils." + +#~ msgid "Requires nslookup to use SRV records." +#~ msgstr "Richiede nslookup per usare i record SRV." + +#~ msgid "Spell Checker" +#~ msgstr "Correttore ortografico" + +#~ msgid "Spellchecking of composed messages." +#~ msgstr "Correzione ortografica dei messaggi." + +#~ msgid "" +#~ "Requires python-gnome2-extras or compilation of gtkspell module from " +#~ "Gajim sources." +#~ msgstr "" +#~ "Richiede python-gnome2-extras o la compilazione del modulo gtkspell dai " +#~ "sorgenti di Gajim." + +#~ msgid "Notification-daemon" +#~ msgstr "Demone delle notifiche" + +#~ msgid "Passive popups notifying for new events." +#~ msgstr "Popup passivi che notificano nuovi eventi." + +#~ msgid "" +#~ "Requires python-notify or instead python-dbus in conjunction with " +#~ "notification-daemon." +#~ msgstr "Richiede python-notify, oppure python-dbus e notification-daemon." + +#~ msgid "Trayicon" +#~ msgstr "Icona nell'area di notifica" + +#~ msgid "A icon in systemtray reflecting the current presence." +#~ msgstr "Un'icona nell'area di notifica che riflette lo stato attuale." + +#~ msgid "" +#~ "Requires python-gnome2-extras or compiled trayicon module from Gajim " +#~ "sources." +#~ msgstr "" +#~ "Richiede python-gnome2-extras oppure la compilazione del modulo trayicon " +#~ "dai sorgenti di Gajim." + +#~ msgid "Requires PyGTK >= 2.10." +#~ msgstr "Richiede PyGTK >= 2.10." + +#~ msgid "Idle" +#~ msgstr "Inattivatore" + +#~ msgid "Ability to measure idle time, in order to set auto status." +#~ msgstr "" +#~ "Possibilità di misurare il tempo di inattività , per poter cambiare lo " +#~ "stato automaticamente." + +#~ msgid "Requires compilation of the idle module from Gajim sources." +#~ msgstr "Richiede la compilazione del modulo idle dai sorgenti di Gajim." + +#~ msgid "LaTeX" +#~ msgstr "LaTeX" + +#~ msgid "Transform LaTeX espressions between $$ $$." +#~ msgstr "Trasforma le espressioni LaTeX comprese in $$ $$." + +#~ msgid "" +#~ "Requires texlive-latex-base, dvips and imagemagick. You have to set " +#~ "'use_latex' to True in the Advanced Configuration Editor." +#~ msgstr "" +#~ "Richiede texlive-latex-base, dvips e imagemagick. Devi impostare " +#~ "'use_latex' su Attivato nell'Editor di configurazione avanzata." + +#~ msgid "End to end encryption" +#~ msgstr "Attiva cifratura end-to-end" + +#~ msgid "Encrypting chatmessages." +#~ msgstr "Cifratura dei messaggi di chat." + +#~ msgid "Requires python-crypto." +#~ msgstr "Richiede python-crypto." + +#, fuzzy +#~ msgid "RST Generator" +#~ msgstr "Generatore RST" + +#~ msgid "" +#~ "Generate XHTML output from RST code (see http://docutils.sourceforge.net/" +#~ "docs/ref/rst/restructuredtext.html)." +#~ msgstr "" +#~ "Genera output XHTML a partire da codice RST (vedi http://docutils." +#~ "sourceforge.net/docs/ref/rst/restructuredtext.html)." + +#~ msgid "Requires python-docutils." +#~ msgstr "Richiede python-docutils." + +#~ msgid "Feature" +#~ msgstr "Funzione" + +#~ msgid "- messages will be logged" +#~ msgstr "- i messaggi saranno registrati" + +#~ msgid "- messages will not be logged" +#~ msgstr "- i messaggi non saranno registrati" + +#~ msgid "Verify the remote client's identity" +#~ msgstr "Verifica l'identità del client remoto" + +#~ msgid "" +#~ "You've begun an encrypted session with %s, but it can't be guaranteed " +#~ "that you're talking directly to the person you think you are.\n" +#~ "\n" +#~ "You should speak with them directly (in person or on the phone) and " +#~ "confirm that their Short Authentication String is identical to this one: %" +#~ "s" +#~ msgstr "" +#~ "Hai iniziato una sessione cifrata con %s, ma non è possibile garantire " +#~ "che stai parlando direttamente con la persona che pensi sia in realtà .\n" +#~ "\n" +#~ "Dovresti parlarci direttamente (di persona o al telefono) e confermare " +#~ "che la sua stringa di autenticazione sia identica a questa: %s" + +#~ msgid "Waiting for results" +#~ msgstr "Ricerca in corso" + +#~ msgid "Error in received dataform" +#~ msgstr "Errore nella ricezione dei dati" + +#~ msgid "No result" +#~ msgstr "Nessun risultato" + +#~ msgid "Error while adding service. %s" +#~ msgstr "Errore durante la creazione del servizio. %s" + +#~ msgid "_Add Contact" +#~ msgstr "_Aggiungi contatto" + +#~ msgid "<b>Interface Customization</b>" +#~ msgstr "<b>Personalizzazione dell'interfaccia</b>" + +#~ msgid "Also known as iChat style" +#~ msgstr "Conosciuto anche come stile iChat" + +#~ msgid "Chat" +#~ msgstr "Chat" + +#~ msgid "E_very 5 minutes" +#~ msgstr "_Ogni 5 minuti" + +#~ msgid "" +#~ "Gajim will automatically show new events by popping up the relevant window" +#~ msgstr "" +#~ "Gajim mostrerà automaticamente i nuovi eventi sollevando la finestra " +#~ "relativa" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ msgid "On every _message" +#~ msgstr "In tutti i _messaggi" + +#~ msgid "Outgoing Chat state noti_fications:" +#~ msgstr "Noti_fiche dello stato di chat in uscita" + +#~ msgid "Print time:" +#~ msgstr "Scrivi ora:" + +#~ msgid "Save _position and size for roster and chat windows" +#~ msgstr "" +#~ "Salva _posizione e dimensione delle finestre di chat e lista contatti" + +#~ msgid "Show only in _roster" +#~ msgstr "Mostra solo nella lista _contatti" + +#~ msgid "Use t_rayicon (aka. notification area icon)" +#~ msgstr "Usa _icona nell'area di notifica (vassoio di sistema)" + +#~ 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" + +#~ msgid "_Never" +#~ msgstr "_Mai" + +#~ msgid "_Notify me about it" +#~ msgstr "_Notifica" + +#~ msgid "_Pop it up" +#~ msgstr "_Mostra" + +#~ msgid "Add _Contact" +#~ msgstr "Aggiungi _contatto" + +#~ msgid "_Send Single Message" +#~ msgstr "_Invia messaggio singolo" + +#~ msgid "_Filter:" +#~ msgstr "_Filtro:" + +#~ msgid "Every %s _minutes" +#~ msgstr "Ogni %s _minuti" + +#~ msgid "_Discover Services..." +#~ msgstr "_Ricerca servizi..." + +#~ msgid "_Retype Password:" +#~ msgstr "_Ripetere password:" + +#~ msgid "_Use proxy" +#~ msgstr "_Usa proxy" + +#~ msgid "Accounts" +#~ msgstr "Account" + +#~ msgid "" +#~ "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.\n" +#~ "This is only available if python-avahi is installed and avahi-daemon is " +#~ "running." +#~ msgstr "" +#~ "Se selezionato, tutti i contatti locali che usano un client chat " +#~ "compatibile con Bonjour (es. IChat, Trillian or Gaim) saranno visibili " +#~ "nella lista contatti. Non è necessario essere connesso a un server jabber " +#~ "affinché funzioni.\n" +#~ "Questo è possibile solo se python-avahi è installato e avahi-daemon è in " +#~ "esecuzione." + +#~ msgid "" +#~ "If you have 2 or more accounts and this 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" + +#~ msgid "_Enable link-local messaging" +#~ msgstr "_Abilita la messaggistica sulla rete locale" + +#~ msgid "_Modify" +#~ msgstr "_Modifica" + +#~ msgid "2003-12-13T18:30:02Z" +#~ msgstr "2003-12-13T18:30:02Z" + +#~ msgid "<small>Romeo and Juliet</small>" +#~ msgstr "<small>Romeo e Giulietta</small>" + +#~ msgid "Old stories" +#~ msgstr "Vecchie storie" + +#~ msgid "Soliloquy" +#~ msgstr "Soliloquio" + +#~ msgid "_Compact View Alt+C" +#~ msgstr "_Vista compatta Alt+C" + +#~ msgid "_Remove from Roster" +#~ msgstr "_Elimina dai contatti" + +#~ msgid "" +#~ "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" +#~ "\n" +#~ "Highlighting misspelled words feature will not be used" +#~ msgstr "" +#~ "Se questa non è la lingua per cui si vogliono evidenziare le parole " +#~ "scorrette, impostare $LANG in maniera appropriata. Per esempio, per " +#~ "l'italiano eseguire \"export LANG=it_IT\" o \"export LANG=it_IT.UTF-8\" " +#~ "in ~/.bash_profile o, per rendere la modifica globale, in /etc/profile.\n" +#~ "\n" +#~ "Non verrà usata la caratteristica di evidenziatura parole scorrette" + +#~ msgid "You must enter a password for the new account." +#~ msgstr "È necessario inserire una password per il nuovo account." + +#~ msgid "Private Chat" +#~ msgstr "Chat privata" + +#~ msgid "Group Chat" +#~ msgstr "Chat di gruppo" + +#~ msgid "Drop %s in group %s" +#~ msgstr "Sposta %s nel gruppo %s" + +#~ msgid "Make %s and %s metacontacts" +#~ msgstr "Rendi %s e %s metacontatti" + +#~ msgid "Hides the buttons in two persons chat window." +#~ msgstr "Nasconde i pulsanti nella finestra di chat a due persone" + +#~ msgid "Security error connecting to \"%s\"" +#~ msgstr "Errore di sicurezza nella connessione a \"%s\"" + +#~ msgid "" +#~ "The server's key has changed, or someone is trying to hack your " +#~ "connection." +#~ msgstr "" +#~ "La chiave del server è cambiata, o qualcuno sta cercando di intromettersi " +#~ "nella connessione." + +#~ msgid "Unable to check fingerprint for %s. Connection could be insecure." +#~ msgstr "" +#~ "Non è possibile verificare l'impronta digitale di %s. La connessione " +#~ "potrebbe non essere sicura." + +#~ msgid "Missing fingerprint in SSL connection to %s" +#~ msgstr "Impronta digitale mancante nella connessione SSL a %s" + +#~ msgid "Fingerprint mismatch for %s: Got %s, expected %s" +#~ msgstr "Impronta digitale non corrispondente per %s: ottenuto %s, atteso %s" + +#~ msgid "invisible" +#~ msgstr "invisibile" + +#~ msgid "offline" +#~ msgstr "offline" + +#~ msgid "I'm %s" +#~ msgstr "Sono %s" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ msgid "gtk+" +#~ msgstr "gtk+" #~ msgid "A_fter nickname:" #~ msgstr "_Dopo il nickname:" @@ -6917,9 +7961,6 @@ msgstr "Errore durante la creazione del servizio. %s" #~ msgid "Role: " #~ msgstr "Ruolo: " -#~ msgid "Affiliation: " -#~ msgstr "Affiliazione: " - #~ msgid "" #~ "Sound to play when any MUC message arrives. (This setting is taken into " #~ "account only if notify_on_all_muc_messages is True)" @@ -6976,10 +8017,6 @@ msgstr "Errore durante la creazione del servizio. %s" #~ msgid "_Join New Room..." #~ msgstr "_Entra in nuova stanza..." -#~ msgid "Usage: /%s, sets the groupchat window to compact mode." -#~ msgstr "" -#~ "Uso: /%s, imposta la modalità compatta nella finestra chat di gruppo" - #~ msgid "Delete Message of the Day" #~ msgstr "Elimina messaggio del giorno" @@ -6995,9 +8032,6 @@ msgstr "Errore durante la creazione del servizio. %s" #~ msgid "_XML Console..." #~ msgstr "Console _XML..." -#~ msgid "Choose Avatar" -#~ msgstr "Scegli avatar" - #~ msgid "Use compact view when you open a chat window" #~ msgstr "Usa vista compatta quando si apre una finestra di chat" @@ -7061,18 +8095,12 @@ msgstr "Errore durante la creazione del servizio. %s" #~ "Leggere il file AUTHORS per la lista completa, comprendente anche gli " #~ "sviluppatori non più attivi" -#~ msgid "From %s" -#~ msgstr "Da %s" - #~ msgid "To %s" #~ msgstr "A %s" #~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" #~ msgstr "Sei stato invitato nella stanza %(room_jid)s da %(contact_jid)s" -#~ msgid "Browsing %s" -#~ msgstr "Consultazione %s" - #~ msgid "" #~ "Animated\n" #~ "Static" @@ -7145,9 +8173,6 @@ msgstr "Errore durante la creazione del servizio. %s" #~ "installato pysqlite3, per migrare i log al nuovo database, leggere: " #~ "http://trac.gajim.org/wiki/MigrateLogToDot9DB Uscita..." -#~ msgid "Image is too big" -#~ msgstr "L'immagine è troppo grande" - #~ msgid "" #~ "Image for emoticon has to be less than or equal to 24 pixels in width and " #~ "24 in height." @@ -7269,15 +8294,9 @@ msgstr "Errore durante la creazione del servizio. %s" #~ msgid "Allow controlling Gajim via D-Bus service." #~ msgstr "Permettere il controllo di Gajim attraverso il servizio D-Bus." -#~ msgid "Error:" -#~ msgstr "Errore:" - #~ msgid "Service" #~ msgstr "Servizio" -#~ 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 " @@ -7358,9 +8377,6 @@ msgstr "Errore durante la creazione del servizio. %s" #~ "possibile cambiare modalità premendo Alt-C. NOTA: L'ultimo stato in cui " #~ "viene lasciata una finestra/scheda non è permanente" -#~ msgid "Join _Group Chat..." -#~ msgstr "Entra in chat di _gruppo..." - #~ msgid "Show roster window on Gajim startup" #~ msgstr "Mostra la finestra dei contatti all'avvio di Gajim" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 0000000000..860a963924 --- /dev/null +++ b/po/lt.po @@ -0,0 +1,7655 @@ +# Lithuanian translations for Gajim - A Jabber Instant Messager package. +# Copyright (C) 2006 THE Gajim - A Jabber Instant Messager'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Gajim - A Jabber Instant Messager package. +# Mantas Zimnickas <sirexas@yahoo.com>, 2007. +# +#: ../src/gajim-remote.py:212 ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:245 ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:252 ../src/gajim-remote.py:253 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:255 +msgid "" +msgstr "" +"Project-Id-Version: Gajim - A Jabber Instant Messager 0.11.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-09-12 09:53+0200\n" +"PO-Revision-Date: 2007-01-21 15:27+1100\n" +"Last-Translator: Mantas Zimnickas <sirexas@yahoo.com>\n" +"Language-Team: Lithuanian\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" + +#: ../data/gajim.desktop.in.in.h:1 +msgid "A GTK+ Jabber client" +msgstr "GTK+ Jabber klientas" + +#: ../data/gajim.desktop.in.in.h:2 +msgid "Gajim Instant Messenger" +msgstr "Gajim Greitųjų žinuÄių programa" + +#: ../data/gajim.desktop.in.in.h:3 +msgid "Jabber IM Client" +msgstr "Jabber IM Klientas" + +#: ../data/glade/account_context_menu.glade.h:1 +#: ../data/glade/roster_window.glade.h:8 +#, fuzzy +msgid "Join _Group Chat..." +msgstr "Prisijungti prie pokalbio grupÄ—je" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Ä®traukti asmenį..." + +#: ../data/glade/account_context_menu.glade.h:3 +#: ../data/glade/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_IeÅ¡koti Paslaugų" + +#: ../data/glade/account_context_menu.glade.h:4 +msgid "_Execute Command..." +msgstr "_Vykdyti komandÄ…..." + +#: ../data/glade/account_context_menu.glade.h:5 +#, fuzzy +msgid "_Modify Account" +msgstr "Keisti PrieigÄ…" + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Open Gmail Inbox" +msgstr "_Atidaryti Gmail paÅ¡tÄ…" + +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:22 +#, fuzzy +msgid "_Start Chat..." +msgstr "_PradÄ—ti pokalbį" + +#: ../data/glade/account_context_menu.glade.h:8 +#: ../data/glade/zeroconf_context_menu.glade.h:2 +msgid "_Status" +msgstr "_BÅ«klÄ—" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +#, fuzzy +msgid "" +"<b>Connecting to server</b>\n" +"\n" +"Please wait..." +msgstr "" +"<b>Prieiga kuriama</b>\n" +"\n" +"PraÅ¡ome palaukti..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "<b>Please choose one of the options below:</b>" +msgstr "<b>PraÅ¡ome pasirinkti vienÄ… iÅ¡ variantų žemiau:</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "<b>Please fill in the data for your new account</b>" +msgstr "<b>PraÅ¡ome užpildyti naujos JÅ«sų prieigos duomenis</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "<b>Please select a server</b>" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "Jabber serverių paslaugų sÄ…raÅ¡as (tokių, kaip: MSN, ICQ pernaÅ¡os)" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Connect when I press Finish" +msgstr "Prisijungti, kai paspausiu Baigti" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Prieigos kÅ«rimo vedlys" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +#, fuzzy +msgid "I already have an account I want to _use" +msgstr "Jau turiu prieigÄ…, kuriÄ… noriu naudoti" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +msgid "I want to _register for a new account" +msgstr "Noriu už_registruoti naujÄ… prieigÄ…" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:22 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Jei pažymÄ—ta, Gajim prisimins Å¡ios prieigos slaptažodį" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "Valdyti..." + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +#, fuzzy +msgid "Prox_y:" +msgstr "Proksis:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:48 +msgid "Save pass_word" +msgstr "IÅ¡saugoti _slaptažodį" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "Servers Features" +msgstr "Serverio teikiamos paslaugos" + +#: ../data/glade/account_creation_wizard_window.glade.h:17 +msgid "Set my profile when I connect" +msgstr "Nustatyti mano profilį, kai prisijungsiu" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "Naudoti parinktÄ… serverio adresÄ…/prievadÄ…" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Kad prisijungtumÄ—te privalote turÄ—ti prieigÄ…\n" +"Jabber tinkle." + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +msgid "Your JID:" +msgstr "JÅ«sų JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 +msgid "_Advanced" +msgstr "_Papildomas" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +msgid "_Finish" +msgstr "_Baigti" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +#, fuzzy +msgid "_Hostname:" +msgstr "Serverio adresas: " + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 +msgid "_Password:" +msgstr "_Slaptažodis:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Port:" +msgstr "_Portas:" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +msgid "_Server:" +msgstr "_Serveris:" + +#: ../data/glade/account_creation_wizard_window.glade.h:28 +#: ../data/glade/manage_proxies_window.glade.h:12 +msgid "_Username:" +msgstr "_Naudotojo vardas:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "<b>Miscellaneous</b>" +msgstr "<b>Ä®vairÅ«s</b>" + +#: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:1 +msgid "<b>OpenPGP</b>" +msgstr "<b>OpenPGP</b>" + +#: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:2 +msgid "<b>Personal Information</b>" +msgstr "<b>AsmeninÄ— informacija</b>" + +#: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 +msgid "Account" +msgstr "Prieiga" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Prieigos keitimas" + +#: ../data/glade/account_modification_window.glade.h:6 +#: ../data/glade/accounts_window.glade.h:5 +#, fuzzy +msgid "Administration operations" +msgstr "Administrator List" + +#: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 +msgid "Auto-reconnect when connection is lost" +msgstr "AutomatiÅ¡kai bandyti prisijungti, kai prarandamas ryÅ¡ys" + +#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 +#: ../data/glade/zeroconf_properties_window.glade.h:3 +msgid "C_onnect on Gajim startup" +msgstr "_Prisijungti, kai Gajim pasileis" + +#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "_Keisti slaptažodį" + +#: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/accounts_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 "" +"Jei pažymÄ—site, Gajim jungsis prie 5223 porto, kur tikimasi, kad serveriai " +"turi SSL galimybes. Gajim, pagal nutylÄ—jimÄ… naudoja TLS Å¡ifravimÄ… jei " +"serveris užklausia ir jei Å¡i parinktis yra aktyvi, TLS bus deaktyvuotas" + +#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/accounts_window.glade.h:10 +#: ../data/glade/zeroconf_properties_window.glade.h:4 +msgid "Choose _Key..." +msgstr "Pasirinkite _RaktÄ…..." + +#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Spauskite, kad pakeisti prieigos slaptažodį" + +#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 +msgid "Connection" +msgstr "Prisijungimas" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 +msgid "Edit Personal Information..." +msgstr "Keisti asmeninÄ™ informacijÄ…..." + +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:471 +#: ../src/notify.py:493 ../src/notify.py:505 ../src/common/helpers.py:964 +#: ../src/common/helpers.py:976 +msgid "Gajim" +msgstr "Gajim" + +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 +#: ../data/glade/zeroconf_properties_window.glade.h:7 +#: ../src/roster_window.py:359 ../src/roster_window.py:624 +#: ../src/roster_window.py:1360 ../src/roster_window.py:1728 +#: ../src/roster_window.py:2112 ../src/roster_window.py:2628 +#: ../src/roster_window.py:2746 ../src/common/contacts.py:309 +msgid "General" +msgstr "Bendros parinktys" + +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 +msgid "Hostname: " +msgstr "Serverio adresas: " + +#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Jei pažymÄ—ta, Gajim siųs užklausimÄ… į kelis IP iÅ¡skyrus JÅ«sų IP, tokiu bÅ«du " +"pagerÄ—s bylos siuntimas." + +#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/accounts_window.glade.h:23 +msgid "" +"If checked, Gajim will send keep-alive packets to prevent connection timeout " +"which results in disconnection" +msgstr "" +"Jei pažymÄ—ta, Gajim siuntinÄ—s „aÅ¡-gyvas“ paketus, kad nebÅ«tų prarastas " +"ryÅ¡ys, dÄ—l ko gali įvyksta savaiminiai atsijungimai" + +#: ../data/glade/account_modification_window.glade.h:22 +#: ../data/glade/accounts_window.glade.h:24 +#: ../data/glade/zeroconf_properties_window.glade.h:8 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Jei pažymÄ—ta, Gajim saugos slaptažodį faile ~/.gajim/config su 'tik-" +"skaitymui' teisÄ—mis, tik Jums" + +#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/accounts_window.glade.h:25 +#: ../data/glade/zeroconf_properties_window.glade.h:9 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Jei pažymÄ—ta, po pasileidimo Gajim automatiÅ¡kai jungsis prie jabber " +"naudodamas Å¡iÄ… prieigÄ…" + +#: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/accounts_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:10 +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 "" +"Jei pažymÄ—ta, bet koks globalus bÅ«klÄ—s pakeitimas (įvykdytas iÅ¡ sÄ…raÅ¡o, " +"pagrindinio lango apaÄioje) įtakos ir Å¡ios prieigos bÅ«klÄ™ accordingly" + +#: ../data/glade/account_modification_window.glade.h:25 +#: ../data/glade/accounts_window.glade.h:29 +msgid "Information about you, as stored in the server" +msgstr "Informacija apie jus, kur yra iÅ¡saugota serveryje" + +#: ../data/glade/account_modification_window.glade.h:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1524 +#: ../src/config.py:2010 +msgid "No key selected" +msgstr "Raktas nepasirinktas" + +#. None means no proxy profile selected +#. GPG Key +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1110 +#: ../src/config.py:1181 ../src/config.py:1430 ../src/config.py:1435 +#: ../src/config.py:1906 ../src/config.py:1993 ../src/config.py:2009 +#: ../src/config.py:3109 ../src/config.py:3155 ../src/dialogs.py:286 +#: ../src/dialogs.py:288 ../src/roster_window.py:1832 +#: ../src/roster_window.py:1839 ../src/roster_window.py:1846 +msgid "None" +msgstr "Joks" + +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 +#: ../data/glade/profile_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:17 +msgid "Personal Information" +msgstr "AsmeninÄ— informacija" + +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 +msgid "Port: " +msgstr "Prievadas: " + +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 +msgid "Priori_ty:" +msgstr "_Prioritetas:" + +#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/accounts_window.glade.h:40 +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 "" +"Prioritetas, Jabber'yje naudojamas, kad nustatyti, kas turi gauti praneÅ¡imus " +"iÅ¡ jabber serverio, kai du ar daugiau klientų yra prisijungÄ™ prie tos paÄios " +"prieigos; Klientas, turintis aukÅ¡ÄiausiÄ… prioritetÄ… gaus praneÅ¡imus" + +#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 +msgid "Priority will change automatically according to your status." +msgstr "Prioritetas keisis automatiÅ¡kai, priklausomai nuo jÅ«sų bÅ«klÄ—s." + +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 +msgid "Proxy:" +msgstr "Proksis:" + +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 +msgid "Resour_ce:" +msgstr "Å al_tinis:" + +#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/accounts_window.glade.h:45 +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 "" +"Å altinis siunÄiamas į Jabber serverį, tam, kad bÅ«tų atskirti JID, kai yra " +"prisijungÄ™ du ar daugiau klientų tuo paÄiu metu, tame paÄiame serveryje ir " +"prie tos paÄios prieigos. JÅ«s galite bÅ«ti prisijungÄ™ prie tos paÄios " +"prieigos su Å¡altiniu 'Namai' ir 'Darbas', tuo paÄiu metu. Å altinis, kuris " +"turi didžiausiÄ… prioritetÄ… gaus visus praneÅ¡imus. (žiÅ«rÄ—kite žemiau)" + +#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/accounts_window.glade.h:46 +#: ../data/glade/zeroconf_properties_window.glade.h:18 +msgid "Save _passphrase (insecure)" +msgstr "IÅ¡saugoti _slaptafrazÄ™ (nesaugu)" + +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:47 +#: ../data/glade/zeroconf_properties_window.glade.h:19 +msgid "Save conversation _logs for all contacts" +msgstr "Saugoti visų asmenų pokalbių žurnalus" + +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:49 +msgid "Send keep-alive packets" +msgstr "Siųsti „aÅ¡-gyvas“ paketus" + +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:50 +#: ../data/glade/zeroconf_properties_window.glade.h:20 +msgid "Synch_ronize account status with global status" +msgstr "Sinchronizuoti prieigos bÅ«klÄ™ su globalia bÅ«kle" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:51 +#, fuzzy +msgid "Synchronise contacts" +msgstr "Rodyti _Atsijungusius Asmenis" + +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 +msgid "Use _SSL (legacy)" +msgstr "Naudoti _SSL (legacy)" + +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 +msgid "Use file transfer proxies" +msgstr "Naudoti failų siuntimo proksius" + +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 +msgid "_Adjust to status" +msgstr "_Nustatyti bÅ«klei" + +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:49 +msgid "_Name:" +msgstr "_Pavadinimas:" + +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "El. paÅ¡tas:" + +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Ä®jungti" + +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "Vardas:" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 +msgid "" +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." +msgstr "" +"Jei prievadas, pagal nutylÄ—jimÄ…, kuris naudojamas įeinanÄioms žinutÄ—ms " +"neatitinka jÅ«sų nustatymų, Äia galite pasirinkti kitÄ….\n" +"TurÄ—tumÄ—te pakeisti leistinus ugniasienÄ—s nustatymus." + +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:453 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "PavardÄ—:" + +#: ../data/glade/accounts_window.glade.h:33 +msgid "Mer_ge accounts" +msgstr "Apjun_gti prieigas" + +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2698 +msgid "Re_name" +msgstr "Pe_rvadinti" + +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Use custom port:" + +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:60 +msgid "gtk-close" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_ccount:" +msgstr "_Prieiga:" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "A_llow this contact to view my status" +msgstr "Leisti Å¡iam asmeniui matyti mano bÅ«klÄ™" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "Add New Contact" +msgstr "Prijungti naujÄ… asmenį" + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "I would like to add you to my contact list." +msgstr "NorÄ—Å¡iau jus įtraukti į savo kontaktų sÄ…raÅ¡Ä…." + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "" +"You have to register with this transport\n" +"to be able to add a contact from this\n" +"protocol. Click on register button to\n" +"proceed." +msgstr "" +"Turite užsiregistruoti naudojant Å¡iÄ… pernaÅ¡Ä…,\n" +"tam, kad galÄ—tumÄ—tte prijungti asmenis iÅ¡ Å¡io\n" +"protokolo. Jei norite tÄ™sti, spustelkite ant mygtuko\n" +"registruoti." + +#: ../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 "" +"Kad galÄ—tumÄ—te pridÄ—ti asmenį iÅ¡ Å¡io protokolo, turite\n" +"bÅ«ti prisijungÄ™s prie perlaidos." + +#: ../data/glade/add_new_contact_window.glade.h:11 +msgid "_Group:" +msgstr "_GrupÄ—:" + +#: ../data/glade/add_new_contact_window.glade.h:12 +msgid "_Nickname:" +msgstr "_Slapyvardis:" + +#: ../data/glade/add_new_contact_window.glade.h:13 +msgid "_Protocol:" +msgstr "_Protokolas:" + +#: ../data/glade/add_new_contact_window.glade.h:14 +msgid "_Register" +msgstr "_Registracija" + +#: ../data/glade/add_new_contact_window.glade.h:15 +msgid "_User ID:" +msgstr "_Naudotojo ID:" + +#: ../data/glade/adhoc_commands_window.glade.h:1 +msgid "<b>An error has occurred:</b>" +msgstr "<b>Ä®vyko klaida:</b>" + +#: ../data/glade/adhoc_commands_window.glade.h:2 +msgid "<b>Choose command to execute:</b>" +msgstr "<b>Pasirinktie komandÄ… vykdymui:</b>" + +#: ../data/glade/adhoc_commands_window.glade.h:3 +msgid "Ad-hoc Commands - Gajim" +msgstr "Ad-hoc Komandos - Gajim" + +#: ../data/glade/adhoc_commands_window.glade.h:4 +msgid "Check once more" +msgstr "Patikrinti dar kartÄ…" + +#: ../data/glade/adhoc_commands_window.glade.h:5 +msgid "Error description..." +msgstr "Klaidos apraÅ¡ymas..." + +#: ../data/glade/adhoc_commands_window.glade.h:6 +msgid "Please wait while retrieving command list..." +msgstr "PraÅ¡ome luktelti, kol atsisiųs komandų sÄ…raÅ¡as..." + +#: ../data/glade/adhoc_commands_window.glade.h:7 +msgid "Please wait while the command is sending..." +msgstr "PraÅ¡ome luktelti, kol siunÄiama komanda..." + +#: ../data/glade/adhoc_commands_window.glade.h:8 +msgid "Please wait..." +msgstr "PraÅ¡ome palaukti..." + +#: ../data/glade/adhoc_commands_window.glade.h:9 +msgid "This jabber entity does not expose any commands." +msgstr "Å i jabber esybÄ— nepateikÄ— jokių komando." + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "<b>Description</b>" +msgstr "<b>ApraÅ¡ymas</b>" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "<b>NOTE:</b> You should restart Gajim for some settings to take effect" +msgstr "" +"<b>PASTABA:</b> Kad įsigaliotų tam tikri nustatymai turite perkrauti Gajim" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "IÅ¡plÄ—stinis konfigÅ«racijos redaktorius" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtras:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Trinti MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "IÅ¡trins dienos žinutÄ™" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +#, fuzzy +msgid "Edit _Privacy Lists..." +msgstr "_PrivatÅ«s sÄ…raÅ¡ai" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Sends a message to users currently connected to this server" +msgstr "Bus iÅ¡siųstos žinutÄ—s naudotojams, prisijungusiems prie Å¡io serverio" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +#, fuzzy +msgid "Set MOTD..." +msgstr "Nustatyti MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Sets Message of the Day" +msgstr "Nustatyti dienos žinutÄ™" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Show _XML Console" +msgstr "Rodyti _XML konsolÄ™" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +#, fuzzy +msgid "Update MOTD..." +msgstr "Atnaujinti MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "Updates Message of the Day" +msgstr "Atnaujinti dienos žinutÄ™" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Administrator" +msgstr "_Administratorius" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +#, fuzzy +msgid "_Send Server Message..." +msgstr "_Siųsti žinutÄ™ serveriui" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr " atidarytas langas/žymÄ— su Å¡iuo asmeniu " + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "<b>Actions</b>" +msgstr "<b>Veiksmai</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "<b>Conditions</b>" +msgstr "<b>SÄ…lygos</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:12 +msgid "<b>Sounds</b>" +msgstr "<b>Garsai</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Advanced Actions" +msgstr "IÅ¡plÄ—stiniai veiksmai" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Notifications Control" +msgstr "IÅ¡plÄ—stinis praneÅ¡imų valdymas" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "All statuses" +msgstr "Visos bÅ«klÄ—s" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#: ../src/common/commands.py:91 ../src/common/helpers.py:246 +msgid "Away" +msgstr "ManÄ™s nÄ—ra" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "Busy " +msgstr "UžsiÄ—mÄ™s " + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Don't have " +msgstr "Neturiu " + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Have " +msgstr "Turiu " + +#: ../data/glade/advanced_notifications_window.glade.h:12 +#: ../src/common/helpers.py:256 +msgid "Invisible" +msgstr "Nematomas" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Launch a command" +msgstr "Paleisti komandÄ…" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +#: ../src/common/helpers.py:229 +msgid "Not Available" +msgstr "Esu iÅ¡Ä—jÄ™s" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +msgid "One or more special statuses..." +msgstr "Viena ar daugiau specialių bÅ«klių..." + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Online / Free For Chat" +msgstr "PrisijungÄ™s / Laisvas susiraÅ¡inÄ—ti" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "Play a sound" +msgstr "Groti garsÄ…" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "" +"Receive a Message\n" +"Contact Disconnected \n" +"Contact Change Status \n" +"Group Chat Message Highlight \n" +"Group Chat Message Received \n" +"File Transfer Request \n" +"File Transfer Started \n" +"File Transfer Finished" +msgstr "" +"Atsiųsti žinutÄ™\n" +"Asmuo atsijungÄ— \n" +"Asmuo pakeitÄ— bÅ«klÄ™ \n" +"ParyÅ¡kinta žinutÄ— grupÄ—s pokalbyje \n" +"Gauta žinutÄ— grupÄ—s pokalbyje \n" +"Failo atsisiuntimo užklausimas \n" +"Failo siuntimas pradÄ—tas \n" +"Failo siuntimas baigtas" + +#: ../data/glade/advanced_notifications_window.glade.h:26 +msgid "When " +msgstr "Kai " + +#: ../data/glade/advanced_notifications_window.glade.h:27 +msgid "" +"_Activate window manager's UrgencyHint to make chat window in taskbar flash" +msgstr "" +"_Aktyvuoti langų tvarkyklÄ—s UrgencyHint, kad pokalbio langas mirksÄ—tų " +"užduoÄių juostoje" + +#: ../data/glade/advanced_notifications_window.glade.h:28 +msgid "_Disable auto opening chat window" +msgstr "_Padaryti, kad pokalbių langas automatiÅ¡kai neiÅ¡Å¡oktu" + +#: ../data/glade/advanced_notifications_window.glade.h:29 +msgid "_Disable existing popup window" +msgstr "_Uždrausti esanÄius iÅ¡Å¡okstanÄius (pop-up) langus" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "_Disable existing sound for this event" +msgstr "_Uždrausti esmÄ… garsÄ… Å¡iam įvykiui" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "_Disable showing event in roster" +msgstr "_Uždrausti įvykių rodyma kantaktų sÄ…raÅ¡e" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "_Disable showing event in systray" +msgstr "_Uždrausti įvykių rodyma sistemos dÄ—kle" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Inform me with a popup window" +msgstr "_Informuok mane su iÅ¡Å¡okstanÄiu langu" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Open chat window with user" +msgstr "_Atidaryti pokalbio langÄ… su Å¡iuo naudotoju" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Show event in roster" +msgstr "_Rodyti įvykį kontaktų sÄ…raÅ¡e" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Show event in systray" +msgstr "_Rodyti įvykį sistemos dÄ—kle" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "and I " +msgstr "ir aÅ¡ " + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"asmuo(nys)\n" +"grupÄ—(s)\n" +"visi" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "for " +msgstr "dÄ—l " + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "when I'm in" +msgstr "kai bÅ«siu" + +#: ../data/glade/atom_entry_window.glade.h:1 +msgid "Entry:" +msgstr "Ä®raÅ¡as:" + +#: ../data/glade/atom_entry_window.glade.h:2 +msgid "Feed name:" +msgstr "Kanalo pavadinimas:" + +#: ../data/glade/atom_entry_window.glade.h:3 +msgid "Last modified:" +msgstr "Paskutinį kartÄ… keista:" + +#: ../data/glade/atom_entry_window.glade.h:4 +msgid "New entry received" +msgstr "Gautas naujas įraÅ¡as" + +#: ../data/glade/atom_entry_window.glade.h:5 +msgid "You have received new entry:" +msgstr "JÅ«s gavote naujÄ… įraÅ¡Ä…:" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Keisti slaptažodį" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Ä®veskite jį dar kartÄ…, dÄ—l patvirtinimo:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Ä®veskite naujÄ… slaptažodį:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "<b>Type your new status message</b>" +msgstr "<b>Ä®veskite naujÄ… bÅ«klÄ—s žinutÄ™</b>" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Nustatytos žinutÄ—s:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "IÅ¡saugoti kaip nustatytÄ…..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Prisijungti prie pokalbio grupÄ—je" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#, fuzzy +msgid "_Add to Roster..." +msgstr "Ä®tr_aukti į kontaktų sÄ…raÅ¡Ä…" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopijuoti JID/El. paÅ¡to adresÄ…" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopijuoti nuorodos adresÄ…" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Atidaryti el. paÅ¡to programÄ…" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Atverti nuorodÄ… narÅ¡yklÄ—je" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/subscription_request_popup_menu.glade.h:1 +#: ../data/glade/systray_context_menu.glade.h:7 +msgid "_Start Chat" +msgstr "_PradÄ—ti pokalbį" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Spauskite, kad pamatytumÄ—te buvusius pokalbius su Å¡iuo asmeniu" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +msgid "Invite _Friends" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:4 +msgid "Send _File" +msgstr "Siųsti _FailÄ…" + +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#, fuzzy +msgid "Toggle End to End Encryption" +msgstr "Ä®jungti Open_PGP kodavimÄ…" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +msgid "Toggle Open_PGP Encryption" +msgstr "Ä®jungti Open_PGP kodavimÄ…" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "Ä®tr_aukti į kontaktų sÄ…raÅ¡Ä…" + +#: ../data/glade/chat_control_popup_menu.glade.h:7 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2567 +msgid "_History" +msgstr "_Istorija" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Fill in the form." +msgstr "Užpildykite formÄ…." + +#: ../data/glade/data_form_window.glade.h:2 +msgid "Room Configuration" +msgstr "Kambario nustatymai" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Keisti grupÄ™" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "SÄ…raÅ¡as aktyvių, baigtų ar sustabdytų failų siuntimų" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "AtÅ¡aukti failo siuntimÄ…" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "AtÅ¡aukti pažymÄ—tų failų siuntimÄ…" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "AtÅ¡aukti pažymÄ—tų failų siuntimÄ… ir iÅ¡trinti nepilnus failus" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_IÅ¡valyti" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Failų siuntimai" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "SlÄ—pti langÄ…" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "PaÅ¡alinti failo siuntimÄ… iÅ¡ sÄ…raÅ¡o." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, cancelled and failed file transfers from the list" +msgstr "PaÅ¡alinti užbaigtus, atÅ¡auktus ir lūžusius failų siuntimus iÅ¡ sÄ…raÅ¡o" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and others" +msgstr "Rodyti failų siuntimų sÄ…raÅ¡Ä… tarp jÅ«sų ir kitų" + +#: ../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 "" +"Å is veiksmas paÅ¡alins vienÄ… failo siuntimÄ… iÅ¡ sÄ…raÅ¡o. Jei failo siuntimas " +"yra aktyvus, jis iÅ¡ pradžių bus sustabdytas ir tada iÅ¡trintas" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Rodyti praneÅ¡imÄ… iÅ¡Å¡okstanÄiame lange, kai failo siuntimas baigsis " + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:774 +msgid "_Continue" +msgstr "_TÄ™sti" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_PraneÅ¡ti, kai failo siuntimas bus baigtas" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:186 +msgid "_Open Containing Folder" +msgstr "_Atidaryti katalogÄ…, kuriame yra failas" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_PauzÄ—" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "failų siuntimų sÄ…raÅ¡as" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "<b>Chatstate Tab Colors</b>" +msgstr "<b>Pokalbių bÅ«klÄ—s žymių spalvos</b>" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account row\n" +"Group row\n" +"Contact row\n" +"Chat Banner" +msgstr "" +"Prieigos eilutÄ—\n" +"GrupÄ—s eilutÄ—\n" +"Asmens eilutÄ—\n" +"Pokalbio paveiksliukas" + +#: ../data/glade/gajim_themes_window.glade.h:6 +msgid "Bold" +msgstr "ParyÅ¡kintas" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Composing" +msgstr "Kuriama" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Font style:" +msgstr "Å rifto stilius:" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Gajim Themes Customization" +msgstr "Gajim temų keitimas" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gone" +msgstr "Dingo" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Inactive" +msgstr "Neaktyvus" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Italic" +msgstr "PasvirÄ™s" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"ŽinutÄ—s" + +#: ../data/glade/gajim_themes_window.glade.h:15 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC skirtos\n" +"ŽinutÄ—s" + +#: ../data/glade/gajim_themes_window.glade.h:17 +msgid "Paused" +msgstr "sustabdytas" + +#: ../data/glade/gajim_themes_window.glade.h:18 +msgid "Text _color:" +msgstr "Teksto _spalva:" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _font:" +msgstr "Teksto Å¡ri_ftas:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "_Background:" +msgstr "_Fonas:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +#, fuzzy +msgid "Change _Nickname..." +msgstr "Keisti _slapyvardį" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +#, fuzzy +msgid "Change _Subject..." +msgstr "Keisti _temÄ…" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Spauskite, kad pamatytumÄ—te buvusius pokalbius Å¡iame kambaryje" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +#, fuzzy +msgid "Configure _Room..." +msgstr "Keisti kambario nustatymus" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +#, fuzzy +msgid "_Bookmark" +msgstr "Žy_mÄ—ti šį kambarį" + +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" +msgstr "" + +#: ../data/glade/gc_control_popup_menu.glade.h:8 +#, fuzzy +msgid "_Manage Room" +msgstr "Žymių valdymas" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_deratorius" + +#: ../data/glade/gc_occupants_menu.glade.h:2 +#, fuzzy +msgid "Occupant Actions" +msgstr "_Valdytojo Veiksmai" + +#: ../data/glade/gc_occupants_menu.glade.h:5 +msgid "_Admin" +msgstr "_Adminas" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Ban" +msgstr "_Banas" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Kick" +msgstr "_IÅ¡spirti" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Member" +msgstr "_Dalyvis" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Owner" +msgstr "_Savininkas" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Send Private Message" +msgstr "_Siųsti privaÄiÄ… žinutÄ™" + +#: ../data/glade/gc_occupants_menu.glade.h:12 +msgid "_Voice" +msgstr "_Balsas" + +#: ../data/glade/groups_post_window.glade.h:1 +msgid "Create new post" +msgstr "Kurti naujÄ… praneÅ¡imÄ…" + +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:271 +msgid "From" +msgstr "Nuo" + +#. holds subject +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:142 +#: ../src/history_manager.py:173 +msgid "Subject" +msgstr "Tema" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"<big><b>Welcome to Gajim History Logs Manager</b></big>\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"<b>WARNING:</b>\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 "" +"<big><b>Gajim istorijos žurnalų valdymas</b></big>\n" +"\n" +"Galite pasirinkti žurnalÄ… kairÄ—je ir/arba žemiau ieÅ¡koti duomenų bazÄ™.\n" +"\n" +"<b>Ä®SPÄ–JIMAS:</b>\n" +"Jei planuojate daryti daug trynimų, įsitikinkite, kad Gajim yra iÅ¡jungtas. " +"StengitÄ—s netrinti iÅ¡ asmenų su kuriais dabar bendraujate." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Trinti" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Eksportuoti" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim Istorijos Žurnalų Valdymas" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_PaieÅ¡ka duomenų bazÄ—je" + +#: ../data/glade/history_window.glade.h:1 +#, fuzzy +msgid "<b>History Viewer</b>" +msgstr "<b>Taisyklių sÄ…raÅ¡as</b>" + +#: ../data/glade/history_window.glade.h:2 +#, fuzzy +msgid "<b>JID Selection</b>" +msgstr "<b>ApraÅ¡ymas</b>" + +#: ../data/glade/history_window.glade.h:3 +msgid "Build custom query" +msgstr "Kurti kitokiÄ… užklausÄ…" + +#: ../data/glade/history_window.glade.h:4 ../src/history_window.py:199 +msgid "Conversation History" +msgstr "Pokalbio istorija" + +#: ../data/glade/history_window.glade.h:5 +msgid "" +"Enter a contact jid or MUC jid here to view its history.\n" +"If a contact is connected you can even enter his nick name.\n" +msgstr "" + +#: ../data/glade/history_window.glade.h:8 +msgid "Query Builder..." +msgstr "Užklasų kÅ«rimas..." + +#: ../data/glade/history_window.glade.h:9 +msgid "Search" +msgstr "IeÅ¡koti" + +#: ../data/glade/history_window.glade.h:10 +#: ../data/glade/zeroconf_information_window.glade.h:10 +msgid "_Log conversation history" +msgstr "_Registruoti pokalbio istorijÄ…" + +#: ../data/glade/history_window.glade.h:11 ../src/disco.py:1172 +msgid "_Search" +msgstr "_IeÅ¡koti" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Priimti" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_window.glade.h:8 +msgid "Deny" +msgstr "Atmesti" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Gautas pakvietimas" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1265 +msgid "Join Group Chat" +msgstr "Prisijungti prie pokalbio grupÄ—je" + +#: ../data/glade/join_groupchat_window.glade.h:2 +msgid "Join this room automatically when I connect" +msgstr "Prisijungti prie Å¡io kambario automatiÅ¡kai." + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/profile_window.glade.h:24 +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Nickname:" +msgstr "Slapyvardis:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Password:" +msgstr "Slaptažodis:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +msgid "Recently:" +msgstr "Nesenai:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Room:" +msgstr "Kambarys:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1160 +#: ../src/disco.py:1615 +msgid "_Join" +msgstr "_Jungtis" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Prieigų valdymas" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automatinis prsijungimas" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Jei pažymÄ—ta, Gajim, startuodamas jungsis prie Å¡io pokalbio grupÄ—je" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Žymių valdymas" + +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Print status:" +msgstr "Rodyti bÅ«klÄ™:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Server:" +msgstr "Serveris:" + +#: ../data/glade/manage_bookmarks_window.glade.h:10 +msgid "Title:" +msgstr "AntraÅ¡tÄ—:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "<b>Properties</b>" +msgstr "<b>SavybÄ—s</b>" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "<b>Settings</b>" +msgstr "<b>Nustatymai</b>" + +#: ../data/glade/manage_proxies_window.glade.h:3 +#, fuzzy +msgid "" +"HTTP Connect\n" +"SOCKS5" +msgstr "HTTP jungimÄ…sis" + +#: ../data/glade/manage_proxies_window.glade.h:5 +msgid "Manage Proxy Profiles" +msgstr "Proxi profilių valdymas" + +#: ../data/glade/manage_proxies_window.glade.h:6 +#: ../data/glade/profile_window.glade.h:23 +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Name:" +msgstr "Pavadinimas:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "_Slaptažodis:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Type:" +msgstr "Tipas:" + +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "Use authentication" +msgstr "Naudoti autentifikacijÄ…" + +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_Hostas:" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Ä®terpti emocijų paveiksliukÄ… (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1213 +msgid "OpenPGP Encryption" +msgstr "OpenPGP Å ifravimas" + +#. 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:12 +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Actions" +msgstr "_Veiksmai" + +#. 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:243 +msgid "_Send" +msgstr "_Siųsti" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Slapta frazÄ—" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "<b>Advanced Configuration Editor</b>" +msgstr "<b>IÅ¡plÄ—stinis konfigÅ«racijos redaktorius</b>" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "<b>Applications</b>" +msgstr "<b>Programos</b>" + +#: ../data/glade/preferences_window.glade.h:3 +#, fuzzy +msgid "<b>Chat Appearance</b>" +msgstr "<b>Edit a rule</b>" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:5 +msgid "<b>Custom</b>" +msgstr "<b>Kitaip</b>" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "<b>Format of a line</b>" +msgstr "<b>EilutÄ—s formatas</b>" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "<b>GMail Options</b>" +msgstr "<b>GMail nustatymai</b>" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "<b>Preset Status Messages</b>" +msgstr "<b>Nustatytosios bÅ«klÄ—s žinutÄ—s</b>" + +#: ../data/glade/preferences_window.glade.h:10 +#, fuzzy +msgid "<b>Privacy</b>" +msgstr "<i>Privatus SÄ…raÅ¡as</i>" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:13 +#, fuzzy +msgid "<b>Themes</b>" +msgstr "<b>SavybÄ—s</b>" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "<b>Visual Notifications</b>" +msgstr "<b>Vizualinis informavimas</b>" + +#: ../data/glade/preferences_window.glade.h:15 +msgid "Advanced" +msgstr "IÅ¡plÄ—stinis" + +#: ../data/glade/preferences_window.glade.h:16 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Visos pokalbių bÅ«klÄ—s\n" +"Tik rÄ…Å¡ant\n" +"Uždrausta" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Allow _OS information to be sent" +msgstr "Leisti siųsti informacijÄ… apie _OS" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Leisti pop-up/informavimÄ…, kai esu _nuÄ—jÄ™s/nepasiekamas/užimtas/namatomas" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Always check to see if Gajim is the _default Jabber client on startup" +msgstr "Startuojant visada tikrinti ar Gajim yra pagrindinis Jabber klientas" + +#: ../data/glade/preferences_window.glade.h:22 +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 "" +"Pavyzdys: Jei esate nustatÄ™s žinutÄ™ bÅ«klei - nuÄ—jÄ™s, Gajim daugiau neklaus " +"kokiÄ… žinutÄ™ naudoti, kai nustatoma bÅ«klÄ— - nuÄ—jÄ™s; bus naudojama " +"standartinÄ— arba Äia nustatyta žinutÄ—" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "Ask status message when I:" +msgstr "PraÅ¡yti įvesti bÅ«klÄ—s žinutÄ™, kai aÅ¡:" + +#: ../data/glade/preferences_window.glade.h:24 +msgid "Auto _away after:" +msgstr "AutomatiÅ¡kai keisti bÅ«klÄ— į nuÄ—jÄ™s, po:" + +#: ../data/glade/preferences_window.glade.h:25 +msgid "Auto _not available after:" +msgstr "AutomatiÅ¡kai keisti bÅ«klÄ™ į nepasiekamas, po:" + +#: ../data/glade/preferences_window.glade.h:26 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Always use XFCE4 default applications\n" +"Custom" +msgstr "" +"AutomatiÅ¡kai aptikti, startuojant Gajim\n" +"Visada naudoti GNOME programas pagal nutylÄ—jimÄ…\n" +"Visada naudoti KDĘ programas pagal nutylÄ—jimÄ…\n" +"Visada naudoti XFCE4 programas pagal nutylÄ—jimÄ…\n" +"Kita" + +#: ../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, because it blocks all messages from any contact that " +"is not in the roster" +msgstr "" +"PažymÄ—kite šį laukelį, tik jei kas nors, kas nÄ—ra jÅ«sų kantaktų sÄ…raÅ¡e raÅ¡o " +"jums nepageidaujamas žinutes. Naudokite atsargiai, nes Å¡is dalykas blokuos " +"vias žinutes, siunÄiamas iÅ¡ žmonių, kurie nÄ—ra JÅ«sų kontaktų sÄ…raÅ¡e." + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Configure color and font of the interface" +msgstr "Nustatyti sÄ…sajos spalvÄ… ir Å¡riftÄ…" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Default Status Messages" +msgstr "BÅ«klÄ—s žinutÄ—, pagal nutylÄ—jimÄ…" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "" +"Determined by sender\n" +"Chat message\n" +"Single message" +msgstr "" +"Aptinkamas pagal siuntÄ—jÄ…\n" +"Pokalbio žinutÄ—\n" +"Atskira žinutÄ—" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Display _extra email details" +msgstr "Rodyti papildomus _el. paÅ¡to duomenis" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Display a_vatars of contacts in roster" +msgstr "Rodyti asmenų _paveiksliukus kontaktų sÄ…raÅ¡e" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "Display status _messages of contacts in roster" +msgstr "Rodyti asmenų _bÅ«klÄ—s žinutes kontaktų sÄ…raÅ¡e" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "Emoticons:" +msgstr "Rožiukai:" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "Events" +msgstr "Ä®vykiai" + +#: ../data/glade/preferences_window.glade.h:42 +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 " +"display in chat windows." +msgstr "" +"Gajim gali iÅ¡siųsti ir parsisiųsti meta-informacijÄ…, susijusiÄ… su pokalbiu, " +"kurį galite turÄ—ti su kokiu nors asmeniu. ÄŒia jÅ«s galite nurodyti kokiÄ… " +"koduotÄ™ rodyti pokalbių languose." + +#: ../data/glade/preferences_window.glade.h:43 +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 gali iÅ¡siųsti ir parsisiųsti meta-informacijÄ…, susijusiÄ… su pokalbiu, " +"kurį galite turÄ—ti su kokiu nors asmeniu. ÄŒia jÅ«s galite nurodyti kokiÄ… " +"koduotÄ™ iÅ¡siųsti kitai Å¡aliai." + +#: ../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 rodys praneÅ¡imus apie kÄ… tik atsijungusius asmenis iÅ¡Å¡okanÄiame " +"langelyje, deÅ¡iniajame apatiniame ekrano kampe" + +#: ../data/glade/preferences_window.glade.h:46 +#, fuzzy +msgid "Hides buttons in chatwindows to " +msgstr "Hides the buttons in group chat window." + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will also include information about the sender of the new " +"emails" +msgstr "" +"Jei pažymÄ—site, Gajim taip pat įtrauks informacijÄ… apie naujo laiÅ¡ko siuntÄ—jÄ…" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Jei pažymÄ—ta, Gajim rodys asmens paveiksliukÄ… kontaktų sÄ…raÅ¡e ir pokalbio " +"lange" + +#: ../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 "" +"Jei pažymÄ—ta, Gajim rodys žiniÄių bÅ«kles žemiau kontaktinio asmens vardo, " +"kontaktų sÄ…raÅ¡e ir pokalbių grupÄ—se" + +#: ../data/glade/preferences_window.glade.h:50 +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 "" +"Jei pažymÄ—ta, Gajim naudos specifinius protokolo bÅ«klÄ—s paveiksliukus. " +"(pvz.: asmuo iÅ¡ MSN protokolo turÄ—s atitinkamÄ… MSN paveiksliukÄ… bÅ«klei " +"„prisijungÄ™s“, „nuÄ—jÄ™s“, „užimtas“ atvaizduoti... )" + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Jei neiÅ¡jungtas, Gajim automatiÅ¡kai pakeis tekstines Å¡ypsenÄ—les tokias kaip " +"':)', į atitinkamus animuotus arba statinius paveiksliukus „rožiukus“" + +#: ../data/glade/preferences_window.glade.h:52 +msgid "Ignore rich content in incoming messages" +msgstr "Ignoruoti formatuotÄ… turinį ateinanÄioms žinutÄ—ms" + +#: ../data/glade/preferences_window.glade.h:53 +msgid "Ma_nage..." +msgstr "Val_dyti..." + +#: ../data/glade/preferences_window.glade.h:54 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Niekada\n" +"Visada\n" +"Kiekvienam asmeniui\n" +"Kiekvienam tipui" + +#: ../data/glade/preferences_window.glade.h:58 +#, fuzzy +msgid "Notify me about contacts that sign _in" +msgstr "PraneÅ¡k man apie asmenius, kurie: " + +#: ../data/glade/preferences_window.glade.h:59 +#, fuzzy +msgid "Notify me about contacts that sign _out" +msgstr "PraneÅ¡k man apie asmenius, kurie: " + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Notify on new _GMail email" +msgstr "PraneÅ¡k apie naujus _GMail laiÅ¡kus" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Play _sounds" +msgstr "Groti _garsus" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Preferences" +msgstr "Parinktys" + +#: ../data/glade/preferences_window.glade.h:66 +#, fuzzy +msgid "Privacy" +msgstr "Privatus sÄ…raÅ¡as" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "Set status message to reflect currently playing _music track" +msgstr "Nustatyti bÅ«klÄ—s žinutÄ™, atspindinÄiÄ… grojamÄ… _muzikinį takelį" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "Sign _in" +msgstr "Pr_isijungti" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "Sign _out" +msgstr "_Atsijungti" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "" +"Some messages may include rich content (formatting, colors etc). If checked, " +"Gajim will just display the raw message text." +msgstr "" +"Kai kurios žinutÄ—s gali turÄ—ti formatuotÄ… turinį (pastorinimai, spalvos ir " +"pan.). Jei pažymÄ—site, Gajim rodys tiesiog tekstÄ…, be jokių formatavimų." + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Status" +msgstr "BÅ«klÄ—" + +#: ../data/glade/preferences_window.glade.h:72 +#, fuzzy +msgid "Status _iconset:" +msgstr "BÅ«klÄ—s p_iktogramų rinkinys, pagal nutylÄ—jimÄ…:" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "T_heme:" +msgstr "_Tema:" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "The auto away status message" +msgstr "Automatinio nuÄ—jimo bÅ«klÄ—s praneÅ¡imas" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "The auto not available status message" +msgstr "Automatinio nebuvimo bÅ«klÄ—s žinutÄ—" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "Treat all incoming messages as:" +msgstr "Laikyti visas įeinanÄias žinutes kaip:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "Use _transports iconsets" +msgstr "Naudoti _pernaÅ¡os paveiksliukus" + +#: ../data/glade/preferences_window.glade.h:78 +#, fuzzy +msgid "Use only one message _window:" +msgstr "Vienas žinuÄių langas:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "Use system _default" +msgstr "Naudoti sisteminius nustatymus" + +#: ../data/glade/preferences_window.glade.h:80 +#, fuzzy +msgid "When new event is received:" +msgstr "Naujam įvykiui ivykus" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "" +"Works for Rhythmbox and Muine players. For more players, please visit http://" +"trac.gajim.org/wiki/GajimAndMusicPlayer" +msgstr "" +"Veikia su Thythmbox ir Muine grotuvais. DÄ—l informacijos apie kitus grotuvus " +"apsilankykite svetainÄ—je: http://trac.gajim.org/wiki/GajimAndMusicPlayer" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Advanced Notifications Control..." +msgstr "_IÅ¡plÄ—stinis PraneÅ¡imų Valdymas..." + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Browser:" +msgstr "_NarÅ¡yklÄ—:" + +#: ../data/glade/preferences_window.glade.h:84 +#, fuzzy +msgid "_Display chat state notifications:" +msgstr "Rodyti _pokalbio bÅ«klÄ—s praneÅ¡imus:" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_File manager:" +msgstr "_Failų menedžeris:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Font:" +msgstr "Å ri_ftas:" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Highlight misspelled words" +msgstr "ŽymÄ—ti žodžius su _gramatine klaida" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignoruoti įvykius nuo asmenų nesanÄių kontaktų sÄ…raÅ¡e" + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Incoming message:" +msgstr "Ä®_einanti žinutÄ—:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Log status changes of contacts" +msgstr "_Registruoti asmenų bÅ«klÄ—s pakitimus" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Mail client:" +msgstr "_El. paÅ¡to programa:" + +#: ../data/glade/preferences_window.glade.h:92 +#, fuzzy +msgid "_Make message windows compact" +msgstr "Vienas žinuÄių langas:" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Open..." +msgstr "_Atidaryti..." + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Outgoing message:" +msgstr "_IÅ¡einanti žinutÄ—:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_Player:" +msgstr "_Grotuvas:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "_Reset to Default Colors" +msgstr "_Grąžinti buvusias spalvas pagal nutylÄ—jimÄ…" + +#: ../data/glade/preferences_window.glade.h:97 +#, fuzzy +msgid "_Send chat state notifications:" +msgstr "Rodyti _pokalbio bÅ«klÄ—s praneÅ¡imus:" + +#: ../data/glade/preferences_window.glade.h:98 +msgid "_Sort contacts by status" +msgstr "_RÅ«Å¡iuoti kontaktus pagal bÅ«klÄ™" + +#: ../data/glade/preferences_window.glade.h:99 +msgid "_Status message:" +msgstr "_BÅ«klÄ—s praneÅ¡imas:" + +#: ../data/glade/preferences_window.glade.h:100 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:101 +msgid "minutes" +msgstr "minutÄ—s" + +#: ../data/glade/privacy_lists_window.glade.h:1 +msgid "Privacy Lists:" +msgstr "PrivatÅ«s SÄ…raÅ¡ai:" + +#: ../data/glade/privacy_list_window.glade.h:1 +msgid "<b>Add / Edit a rule</b>" +msgstr "<b>PridÄ—ti / Keisti taisyklÄ™</b>" + +#: ../data/glade/privacy_list_window.glade.h:2 +msgid "<b>List of rules</b>" +msgstr "<b>Taisyklių sÄ…raÅ¡as</b>" + +#: ../data/glade/privacy_list_window.glade.h:3 +msgid "<i>Privacy List</i>" +msgstr "<i>Privatus SÄ…raÅ¡as</i>" + +#: ../data/glade/privacy_list_window.glade.h:4 +msgid "Active for this session" +msgstr "Aktyvus Å¡iai sesijai" + +#: ../data/glade/privacy_list_window.glade.h:5 +msgid "Active on each startup" +msgstr "Aktyvus kiekvieno paleidimo metu" + +#: ../data/glade/privacy_list_window.glade.h:6 +msgid "All" +msgstr "Visi" + +#: ../data/glade/privacy_list_window.glade.h:7 +msgid "Allow" +msgstr "Leisti" + +#: ../data/glade/privacy_list_window.glade.h:9 +msgid "JabberID" +msgstr "JabberID" + +#: ../data/glade/privacy_list_window.glade.h:10 +msgid "Order:" +msgstr "Tvarka:" + +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2104 +msgid "Privacy List" +msgstr "Privatus sÄ…raÅ¡as" + +#: ../data/glade/privacy_list_window.glade.h:12 +msgid "all by subscription" +msgstr "visus pagal užsisakymÄ…" + +#: ../data/glade/privacy_list_window.glade.h:13 +msgid "all in the group" +msgstr "visus grupÄ—je" + +#: ../data/glade/privacy_list_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" +"joks\n" +"abu\n" +"nuo\n" +"kam" + +#: ../data/glade/privacy_list_window.glade.h:18 +msgid "to send me messages" +msgstr "žinuÄių siuntimui" + +#: ../data/glade/privacy_list_window.glade.h:19 +msgid "to send me queries" +msgstr "užklausimų siuntimui" + +#: ../data/glade/privacy_list_window.glade.h:20 +msgid "to send me status" +msgstr "informavimui mane, apie bÅ«klÄ™" + +#: ../data/glade/privacy_list_window.glade.h:21 +msgid "to view my status" +msgstr "mano bÅ«klÄ—s peržiÅ«rai" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/profile_window.glade.h:2 +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Apie" + +#: ../data/glade/profile_window.glade.h:3 +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresas" + +#: ../data/glade/profile_window.glade.h:4 +msgid "Avatar:" +msgstr "Atvaizdas:" + +#: ../data/glade/profile_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "Birthday:" +msgstr "Gimtadienis:" + +#: ../data/glade/profile_window.glade.h:6 +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "City:" +msgstr "Miestas:" + +#: ../data/glade/profile_window.glade.h:7 +msgid "Click to set your avatar" +msgstr "Spauskia Äia, kad įkeltum savo atvaizdÄ…" + +#: ../data/glade/profile_window.glade.h:8 +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Company:" +msgstr "Kompanija:" + +#: ../data/glade/profile_window.glade.h:9 +#: ../data/glade/vcard_information_window.glade.h:14 +msgid "Country:" +msgstr "Å alis:" + +#: ../data/glade/profile_window.glade.h:10 +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Department:" +msgstr "Skyrius:" + +#: ../data/glade/profile_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:17 +msgid "Extra Address:" +msgstr "Papildomas adresas:" + +#. Family Name +#: ../data/glade/profile_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Family:" +msgstr "PavardÄ—:" + +#. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) +#: ../data/glade/profile_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Format: YYYY-MM-DD" +msgstr "Formatas: YYYY-MM-DD" + +#: ../data/glade/profile_window.glade.h:17 +#: ../data/glade/vcard_information_window.glade.h:22 +#, fuzzy +msgid "Full Name" +msgstr "Name" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 +msgid "Given:" +msgstr "Vardas:" + +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Homepage:" +msgstr "AsmeninÄ— svetainÄ—:" + +#. Middle Name +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Middle:" +msgstr "Antras vardas:" + +#: ../data/glade/profile_window.glade.h:25 +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Personal Info" +msgstr "AsmeninÄ— Informacija" + +#: ../data/glade/profile_window.glade.h:27 +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Phone No.:" +msgstr "Tel. Nr.:" + +#: ../data/glade/profile_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Position:" +msgstr "PadÄ—tis:" + +#: ../data/glade/profile_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Postal Code:" +msgstr "PaÅ¡to kodas:" + +#. Prefix in Name +#: ../data/glade/profile_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Prefix:" +msgstr "Kreipinys:" + +#: ../data/glade/profile_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:302 +msgid "Role:" +msgstr "Funkcija:" + +#: ../data/glade/profile_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:42 +msgid "State:" +msgstr "Valstija:" + +#: ../data/glade/profile_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Street:" +msgstr "GatvÄ—:" + +#. Suffix in Name +#: ../data/glade/profile_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:48 +msgid "Suffix:" +msgstr "Vardo sufiksas:" + +#: ../data/glade/profile_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:50 +msgid "Work" +msgstr "Darbas" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "<b>What do you want to do?</b>" +msgstr "<b>KÄ… norÄ—tumÄ—te veikti?</b>" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "PaÅ¡alinti prieigÄ…, _tik iÅ¡ Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "PaÅ¡alinti prieigÄ… ir iÅ¡ Gajim ir iÅ¡ _serverio" + +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2524 ../src/roster_window.py:2734 +#: ../src/roster_window.py:2870 +msgid "_Remove" +msgstr "_Trinti" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "Siųsti užklausimÄ…, kad galÄ—tumÄ—te matyti jo/jos bÅ«klÄ™" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +#, fuzzy +msgid "Add Special _Notification..." +msgstr "Add Special _Notification" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +#, fuzzy +msgid "Assign Open_PGP Key..." +msgstr "Priskirti Open_PGP RaktÄ…" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +#, fuzzy +msgid "Edit _Groups..." +msgstr "Redaguoti _Grupes" + +#. Execute Command +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../src/roster_window.py:2827 +msgid "Execute Command..." +msgstr "Vykdyti KomandÄ…..." + +#. Invite to Groupchat +#: ../data/glade/roster_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2440 +msgid "In_vite to" +msgstr "Pak_viesti į" + +#. Send Custom Status +#: ../data/glade/roster_contact_context_menu.glade.h:7 +#: ../src/roster_window.py:2664 ../src/roster_window.py:2798 +#, fuzzy +msgid "Send Cus_tom Status" +msgstr "Sends custom XML" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "Siųsti ži_nutÄ™..." + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "Send _File..." +msgstr "Siųsti _FailÄ…" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:5 +msgid "Start _Chat" +msgstr "PradÄ—ti _Pokalbį" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +msgid "_Allow him/her to see my status" +msgstr "_Leisti jam/jai matyti mano bÅ«klÄ™" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../src/roster_window.py:2514 ../src/roster_window.py:2725 +msgid "_Block" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Forbid him/her to see my status" +msgstr "_Drausti jam/jai matyti mano bÅ«klÄ™" + +#: ../data/glade/roster_contact_context_menu.glade.h:17 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:7 +#, fuzzy +msgid "_Manage Contact" +msgstr "Rename Contact" + +#: ../data/glade/roster_contact_context_menu.glade.h:19 +#, fuzzy +msgid "_Rename..." +msgstr "_Pervadinti" + +#: ../data/glade/roster_contact_context_menu.glade.h:20 +msgid "_Subscription" +msgstr "_Sutikimas" + +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2508 ../src/roster_window.py:2719 +msgid "_Unblock" +msgstr "" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "P_rieigos" + +#: ../data/glade/roster_window.glade.h:2 +#, fuzzy +msgid "Add _Contact..." +msgstr "_Ä®traukti asmenį..." + +#: ../data/glade/roster_window.glade.h:3 +#, fuzzy +msgid "Fea_tures" +msgstr "Serverio teikiamos paslaugos" + +#: ../data/glade/roster_window.glade.h:4 +msgid "File _Transfers" +msgstr "Failų _Siuntimai" + +#: ../data/glade/roster_window.glade.h:5 +msgid "Frequently Asked Questions (online)" +msgstr "Dažniausiai Užduodami Klausimai (prisijungus)" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Help online" +msgstr "Pagalba tinkle" + +#: ../data/glade/roster_window.glade.h:9 +msgid "Profile, A_vatar" +msgstr "Profilis, At_vaizdas" + +#: ../data/glade/roster_window.glade.h:10 +msgid "Show Trans_ports" +msgstr "Rodyti _PernaÅ¡as" + +#: ../data/glade/roster_window.glade.h:11 +msgid "Show _Offline Contacts" +msgstr "Rodyti _Atsijungusius Asmenis" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_Contents" +msgstr "_Turinys" + +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1348 +msgid "_Edit" +msgstr "_Redaguoti" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_FAQ" +msgstr "_DUK" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Help" +msgstr "_Pagalba" + +#: ../data/glade/roster_window.glade.h:19 +msgid "_Preferences" +msgstr "_Nustatymai" + +#: ../data/glade/roster_window.glade.h:20 +msgid "_Quit" +msgstr "_IÅ¡jungti" + +#: ../data/glade/roster_window.glade.h:21 +#, fuzzy +msgid "_Send Single Message..." +msgstr "Siųsti ži_nutÄ™..." + +#: ../data/glade/roster_window.glade.h:23 +msgid "_View" +msgstr "_Rodinys" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Eik" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresas:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registruotis prie" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_AtÅ¡aukti" + +#: ../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 "Nuo:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Atsakyti Å¡iai žinutei" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Siųsti" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Siųsti žinutÄ™" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "IÅ¡siųsti žinutÄ™ ir uždaryti langÄ…" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Tema:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Kam:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Atsakyti" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_IÅ¡siųsti " + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Au_thorize" +msgstr "Au_torizuoti" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Authorize contact so he or she can know when you're connected" +msgstr "Autorizuoti asmenį, kad jis arba ji žinotu kada esate prisijungÄ™s" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "" +"Deny authorization from contact so he or she cannot know when you're " +"connected" +msgstr "" +"Drausti autorizacija Å¡iam asmeniui, jis arba ji negalÄ—s matyti ar esate " +"prisijungÄ™s" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Sutikimo užklausimas" + +#: ../data/glade/subscription_request_window.glade.h:7 +msgid "_Deny" +msgstr "_Drausti" + +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Mute Sounds" +msgstr "IÅ¡jungti Garsus" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "Siųsti VienÄ… Ži_nutÄ™" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show All Pending _Events" +msgstr "Rodyti Visus LaukianÄius Ä®_vykius" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Show _Roster" +msgstr "Rodyk _Kontaktų SÄ…raÅ¡Ä…" + +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "Sta_tus" +msgstr "_BÅ«klÄ—" + +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "Pokalbiai _GrupÄ—je" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Ask:" +msgstr "Klausti:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Client:" +msgstr "Klientas:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Comments" +msgstr "Komentarai" + +#: ../data/glade/vcard_information_window.glade.h:11 +#, fuzzy +msgid "Configured avatar:" +msgstr "Keisti kambario nustatymus" + +#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/zeroconf_information_window.glade.h:1 +msgid "Contact" +msgstr "Asmuo" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Contact Information" +msgstr "Asmens Informacija" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "Daugiau" + +#: ../data/glade/vcard_information_window.glade.h:33 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/zeroconf_information_window.glade.h:8 +msgid "Resource:" +msgstr "Å altinis:" + +#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/zeroconf_information_window.glade.h:9 +msgid "Status:" +msgstr "BÅ«klÄ—:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "Subscription:" +msgstr "Sutikimas:" + +#: ../data/glade/vcard_information_window.glade.h:49 +#, fuzzy +msgid "User avatar:" +msgstr "Atvaizdas:" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "<b>Jabber Traffic</b>" +msgstr "<b>Jabber Srautas</b>" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "<b>XML Input</b>" +msgstr "<b>XML Ä®vestis</b>" + +#. 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 "Informacija/Užklausa" + +#. Info/Query: all(?) jabber xml start with <iq Leaving it _IQ is not a bad idea unless you are sure your lang has this somehow else translated (NOTE: xml still will still say <iq in your language (of course)) +#: ../data/glade/xml_console_window.glade.h:8 +msgid "_IQ" +msgstr "_IQ" + +#: ../data/glade/xml_console_window.glade.h:9 +msgid "_Message" +msgstr "Ži_nutÄ—" + +#: ../data/glade/xml_console_window.glade.h:10 +msgid "_Presence" +msgstr "_Buvimas" + +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Add Special _Notification" + +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Priskirti Open_PGP RaktÄ…" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2497 +msgid "Edit _Groups" +msgstr "Redaguoti _Grupes" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2854 +msgid "_Rename" +msgstr "_Pervadinti" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Keisti PrieigÄ…..." + +#: ../data/glade/zeroconf_information_window.glade.h:6 +msgid "Local jid:" +msgstr "Vietinis jid:" + +#: ../data/glade/zeroconf_information_window.glade.h:7 +msgid "Personal" +msgstr "Asmeninis" + +#: ../data/glade/zeroconf_properties_window.glade.h:15 +msgid "Modify Account" +msgstr "Keisti PrieigÄ…" + +#. For i18n +#: ../src/advanced.py:51 +msgid "Activated" +msgstr "Activated" + +#: ../src/advanced.py:51 +msgid "Deactivated" +msgstr "Deactivated" + +#: ../src/advanced.py:53 +msgid "Boolean" +msgstr "Boolean" + +#: ../src/advanced.py:54 +msgid "Integer" +msgstr "Integer" + +#: ../src/advanced.py:55 +msgid "Text" +msgstr "Text" + +#: ../src/advanced.py:56 +msgid "Color" +msgstr "Colour" + +#: ../src/advanced.py:65 +msgid "Preference Name" +msgstr "Preference Name" + +#: ../src/advanced.py:71 +msgid "Value" +msgstr "Value" + +#: ../src/advanced.py:79 +msgid "Type" +msgstr "Type" + +#. we talk about option description in advanced configuration editor +#: ../src/advanced.py:136 +msgid "(None)" +msgstr "(None)" + +#. we talk about password +#: ../src/advanced.py:239 +msgid "Hidden" +msgstr "Hidden" + +#. 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"}" +#: ../src/chat_control.py:55 +msgid "English" +msgstr "English" + +#: ../src/chat_control.py:55 +msgid "Belarusian" +msgstr "Belarusian" + +#: ../src/chat_control.py:55 +msgid "Bulgarian" +msgstr "Bulgarian" + +#: ../src/chat_control.py:55 +#, fuzzy +msgid "Breton" +msgstr "Briton" + +#: ../src/chat_control.py:55 +msgid "Czech" +msgstr "Czech" + +#: ../src/chat_control.py:55 +msgid "German" +msgstr "German" + +#: ../src/chat_control.py:55 +msgid "Greek" +msgstr "Greek" + +#: ../src/chat_control.py:55 +msgid "British" +msgstr "British" + +#: ../src/chat_control.py:55 +msgid "Esperanto" +msgstr "Esperanto" + +#: ../src/chat_control.py:55 +msgid "Spanish" +msgstr "Spanish" + +#: ../src/chat_control.py:55 +#, fuzzy +msgid "Basque" +msgstr "Basc" + +#: ../src/chat_control.py:55 +msgid "French" +msgstr "French" + +#: ../src/chat_control.py:55 +msgid "Croatian" +msgstr "Croatian" + +#: ../src/chat_control.py:55 +msgid "Italian" +msgstr "Italian" + +#: ../src/chat_control.py:55 +msgid "Norwegian (b)" +msgstr "Norwegian (b)" + +#: ../src/chat_control.py:55 +msgid "Dutch" +msgstr "Dutch" + +#: ../src/chat_control.py:55 +msgid "Norwegian" +msgstr "Norwegian" + +#: ../src/chat_control.py:55 +msgid "Polish" +msgstr "Polish" + +#: ../src/chat_control.py:55 +msgid "Portuguese" +msgstr "Portuguese" + +#: ../src/chat_control.py:55 +msgid "Brazilian Portuguese" +msgstr "Brazilian Portuguese" + +#: ../src/chat_control.py:55 +msgid "Russian" +msgstr "Russian" + +#: ../src/chat_control.py:55 +#, fuzzy +msgid "Serbian" +msgstr "German" + +#: ../src/chat_control.py:55 +msgid "Slovak" +msgstr "Slovak" + +#: ../src/chat_control.py:55 +msgid "Swedish" +msgstr "Swedish" + +#: ../src/chat_control.py:55 +msgid "Chinese (Ch)" +msgstr "Chinese (Ch)" + +#: ../src/chat_control.py:283 +msgid "Spelling language" +msgstr "Spelling language" + +#. we are not connected +#: ../src/chat_control.py:306 ../src/chat_control.py:512 +msgid "A connection is not available" +msgstr "A connection is not available" + +#: ../src/chat_control.py:307 ../src/chat_control.py:513 +msgid "Your message can not be sent until you are connected." +msgstr "Your message can not be sent until you are connected." + +#: ../src/chat_control.py:1139 +#, python-format +msgid "%(nickname)s from group chat %(room_name)s" +msgstr "%(nickname)s from group chat %(room_name)s" + +#. we talk about a contact here +#: ../src/chat_control.py:1227 +#, python-format +msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" +msgstr "%s has not broadcast an OpenPGP key, nor has one been assigned" + +#: ../src/chat_control.py:1266 ../src/groupchat_control.py:1392 +#, 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/chat_control.py:1273 ../src/groupchat_control.py:1415 +#, python-format +msgid "Commands: %s" +msgstr "Commands: %s" + +#: ../src/chat_control.py:1276 ../src/groupchat_control.py:1429 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "Usage: /%s, clears the text window." + +#: ../src/chat_control.py:1279 ../src/groupchat_control.py:1434 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "Usage: /%s, hide the chat buttons." + +#: ../src/chat_control.py:1282 ../src/groupchat_control.py:1450 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" + +#: ../src/chat_control.py:1286 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "" + +#: ../src/chat_control.py:1289 +#, fuzzy, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "Usage: /%s, hide the chat buttons." + +#: ../src/chat_control.py:1292 ../src/groupchat_control.py:1473 +#, python-format +msgid "No help info for /%s" +msgstr "No help info for /%s" + +#: ../src/chat_control.py:1430 ../src/chat_control.py:1456 +msgid "Encryption enabled" +msgstr "Encryption enabled" + +#: ../src/chat_control.py:1435 +msgid "Session WILL be logged" +msgstr "" + +#: ../src/chat_control.py:1437 +msgid "Session WILL NOT be logged" +msgstr "" + +#: ../src/chat_control.py:1444 +#, fuzzy +msgid "The following message was NOT encrypted" +msgstr "[This message is encrypted]" + +#: ../src/chat_control.py:1448 ../src/chat_control.py:1461 +#: ../src/chat_control.py:2090 +msgid "Encryption disabled" +msgstr "Encryption disabled" + +#. add_to_roster_menuitem +#: ../src/chat_control.py:1618 ../src/conversation_textview.py:562 +#: ../src/dialogs.py:674 ../src/gajim.py:894 ../src/gajim.py:895 +#: ../src/gajim.py:1364 ../src/roster_window.py:345 +#: ../src/roster_window.py:429 ../src/roster_window.py:1790 +#: ../src/roster_window.py:1800 ../src/roster_window.py:2039 +#: ../src/roster_window.py:2277 ../src/roster_window.py:3125 +#: ../src/roster_window.py:3332 ../src/roster_window.py:4692 +#: ../src/roster_window.py:4694 ../src/common/contacts.py:84 +#: ../src/common/helpers.py:44 ../src/common/helpers.py:258 +msgid "Not in Roster" +msgstr "Not in Roster" + +#. %s is being replaced in the code with JID +#: ../src/chat_control.py:1762 +#, python-format +msgid "You just received a new message from \"%s\"" +msgstr "You just received a new message from \"%s\"" + +#: ../src/chat_control.py:1763 +msgid "" +"If you close this tab and you have history disabled, this message will be " +"lost." +msgstr "" +"If you close this tab and you have history disabled, this message will be " +"lost." + +#: ../src/config.py:122 ../src/config.py:544 +msgid "Disabled" +msgstr "Disabled" + +#: ../src/config.py:288 +msgid "Active" +msgstr "Active" + +#: ../src/config.py:296 +msgid "Event" +msgstr "Event" + +#: ../src/config.py:617 ../src/dialogs.py:958 +#, python-format +msgid "Dictionary for lang %s not available" +msgstr "Dictionary for lang %s not available" + +#: ../src/config.py:618 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option." +msgstr "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option." + +#: ../src/config.py:969 +msgid "status message title" +msgstr "status message title" + +#: ../src/config.py:969 +msgid "status message text" +msgstr "status message text" + +#: ../src/config.py:1005 +msgid "First Message Received" +msgstr "First Message Received" + +#: ../src/config.py:1006 +msgid "Next Message Received" +msgstr "Next Message Received" + +#: ../src/config.py:1007 +msgid "Contact Connected" +msgstr "Contact Connected" + +#: ../src/config.py:1008 +msgid "Contact Disconnected" +msgstr "Contact Disconnected" + +#: ../src/config.py:1009 +msgid "Message Sent" +msgstr "Message Sent" + +#: ../src/config.py:1010 +msgid "Group Chat Message Highlight" +msgstr "Group Chat Message Highlight" + +#: ../src/config.py:1011 +msgid "Group Chat Message Received" +msgstr "Group Chat Message Received" + +#: ../src/config.py:1018 +msgid "GMail Email Received" +msgstr "GMail E-mail Received" + +#. Name column +#: ../src/config.py:1287 ../src/dialogs.py:1397 ../src/dialogs.py:1461 +#: ../src/disco.py:736 ../src/disco.py:1559 ../src/disco.py:1805 +#: ../src/history_window.py:108 +msgid "Name" +msgstr "Name" + +#: ../src/config.py:1395 ../src/common/config.py:375 +msgid "Be right back." +msgstr "Be right back." + +#: ../src/config.py:1399 +msgid "Relogin now?" +msgstr "Relogin now?" + +#: ../src/config.py:1400 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "If you want all the changes to apply instantly, you must relogin." + +#: ../src/config.py:1495 ../src/config.py:1594 +msgid "OpenPGP is not usable in this computer" +msgstr "OpenPGP is not usable in this computer" + +#: ../src/config.py:1630 ../src/config.py:1674 +msgid "Unread events" +msgstr "Unread events" + +#: ../src/config.py:1631 +msgid "Read all pending events before removing this account." +msgstr "Read all pending events before removing this account." + +#: ../src/config.py:1660 +#, python-format +msgid "You have opened chat in account %s" +msgstr "You have opened chat in account %s" + +#: ../src/config.py:1661 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "" +"All chat and groupchat windows will be closed. Do you want to continue?" + +#: ../src/config.py:1670 +msgid "You are currently connected to the server" +msgstr "You are currently connected to the server" + +#: ../src/config.py:1671 +msgid "To change the account name, you must be disconnected." +msgstr "To change the account name, you must be disconnected." + +#: ../src/config.py:1675 +msgid "To change the account name, you must read all pending events." +msgstr "To change the account name, you must read all pending events." + +#: ../src/config.py:1681 +msgid "Account Name Already Used" +msgstr "Account Name Already Used" + +#: ../src/config.py:1682 +msgid "" +"This name is already used by another of your accounts. Please choose another " +"name." +msgstr "" +"This name is already used by another of your accounts. Please choose another " +"name." + +#: ../src/config.py:1686 ../src/config.py:1690 +msgid "Invalid account name" +msgstr "Invalid account name" + +#: ../src/config.py:1687 +msgid "Account name cannot be empty." +msgstr "Account name cannot be empty." + +#: ../src/config.py:1691 +msgid "Account name cannot contain spaces." +msgstr "Account name cannot contain spaces." + +#: ../src/config.py:1755 +#, fuzzy +msgid "Rename Account" +msgstr "Prieigų valdymas" + +#: ../src/config.py:1756 +#, fuzzy, python-format +msgid "Enter a new name for account %s" +msgstr "Enter a new name for group %s" + +#: ../src/config.py:1774 ../src/config.py:1782 ../src/config.py:1822 +#: ../src/config.py:3048 +msgid "Invalid Jabber ID" +msgstr "Invalid Jabber ID" + +#: ../src/config.py:1783 +msgid "A Jabber ID must be in the form \"user@servername\"." +msgstr "A Jabber ID must be in the form \"user@servername\"." + +#: ../src/config.py:1968 ../src/config.py:3119 +msgid "Invalid entry" +msgstr "Invalid entry" + +#: ../src/config.py:1969 ../src/config.py:3120 +msgid "Custom port must be a port number." +msgstr "Custom port must be a port number." + +#: ../src/config.py:1990 +msgid "Failed to get secret keys" +msgstr "Failed to get secret keys" + +#: ../src/config.py:1991 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "There was a problem retrieving your OpenPGP secret keys." + +#: ../src/config.py:1994 +msgid "OpenPGP Key Selection" +msgstr "OpenPGP Key Selection" + +#: ../src/config.py:1995 +msgid "Choose your OpenPGP key" +msgstr "Choose your OpenPGP key" + +#: ../src/config.py:2052 +msgid "No such account available" +msgstr "No such account available" + +#: ../src/config.py:2053 +msgid "You must create your account before editing your personal information." +msgstr "You must create your account before editing your personal information." + +#: ../src/config.py:2060 ../src/dialogs.py:1244 ../src/dialogs.py:1385 +#: ../src/dialogs.py:1565 ../src/disco.py:420 ../src/profile_window.py:325 +msgid "You are not connected to the server" +msgstr "You are not connected to the server" + +#: ../src/config.py:2061 +msgid "Without a connection, you can not edit your personal information." +msgstr "Without a connection, you can not edit your personal information." + +#: ../src/config.py:2065 +msgid "Your server doesn't support Vcard" +msgstr "Your server doesn't support Vcard" + +#: ../src/config.py:2066 +msgid "Your server can't save your personal information." +msgstr "Your server can't save your personal information." + +#: ../src/config.py:2097 +msgid "Account Local already exists." +msgstr "Account Local already exists." + +#: ../src/config.py:2098 +msgid "Please rename or remove it before enabling link-local messaging." +msgstr "Please rename or remove it before enabling link-local messaging." + +#: ../src/config.py:2274 +#, python-format +msgid "Edit %s" +msgstr "Edit %s" + +#: ../src/config.py:2276 +#, python-format +msgid "Register to %s" +msgstr "Register to %s" + +#. list at the beginning +#: ../src/config.py:2312 +msgid "Ban List" +msgstr "Ban List" + +#: ../src/config.py:2313 +msgid "Member List" +msgstr "Member List" + +#: ../src/config.py:2314 +msgid "Owner List" +msgstr "Owner List" + +#: ../src/config.py:2315 +msgid "Administrator List" +msgstr "Administrator List" + +#. Address column +#. holds JID (who said this) +#: ../src/config.py:2364 ../src/disco.py:743 ../src/history_manager.py:155 +msgid "JID" +msgstr "JID" + +#: ../src/config.py:2372 +msgid "Reason" +msgstr "Reason" + +#: ../src/config.py:2377 +msgid "Nick" +msgstr "Nick" + +#: ../src/config.py:2381 +msgid "Role" +msgstr "Role" + +#: ../src/config.py:2406 +msgid "Banning..." +msgstr "Banning..." + +#. You can move '\n' before user@domain if that line is TOO BIG +#: ../src/config.py:2408 +msgid "" +"<b>Whom do you want to ban?</b>\n" +"\n" +msgstr "" +"<b>Whom do you want to ban?</b>\n" +"\n" + +#: ../src/config.py:2410 +msgid "Adding Member..." +msgstr "Adding Member..." + +#: ../src/config.py:2411 +msgid "" +"<b>Whom do you want to make a member?</b>\n" +"\n" +msgstr "" +"<b>Whom do you want to make a member?</b>\n" +"\n" + +#: ../src/config.py:2413 +msgid "Adding Owner..." +msgstr "Adding Owner..." + +#: ../src/config.py:2414 +msgid "" +"<b>Whom do you want to make an owner?</b>\n" +"\n" +msgstr "" +"<b>Whom do you want to make an owner?</b>\n" +"\n" + +#: ../src/config.py:2416 +msgid "Adding Administrator..." +msgstr "Adding Administrator..." + +#: ../src/config.py:2417 +msgid "" +"<b>Whom do you want to make an administrator?</b>\n" +"\n" +msgstr "" +"<b>Whom do you want to make an administrator?</b>\n" +"\n" + +#: ../src/config.py:2418 +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 "" +"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." + +#: ../src/config.py:2522 +#, python-format +msgid "Removing %s account" +msgstr "Removing %s account" + +#: ../src/config.py:2539 ../src/gajim.py:1307 ../src/roster_window.py:3391 +msgid "Password Required" +msgstr "Password Required" + +#: ../src/config.py:2540 ../src/roster_window.py:3387 +#, python-format +msgid "Enter your password for account %s" +msgstr "Enter your password for account %s" + +#: ../src/config.py:2541 ../src/roster_window.py:3392 +msgid "Save password" +msgstr "Save password" + +#: ../src/config.py:2555 +#, python-format +msgid "Account \"%s\" is connected to the server" +msgstr "Account \"%s\" is connected to the server" + +#: ../src/config.py:2556 +msgid "If you remove it, the connection will be lost." +msgstr "If you remove it, the connection will be lost." + +#: ../src/config.py:2649 +msgid "Default" +msgstr "Default" + +#: ../src/config.py:2649 +msgid "?print_status:All" +msgstr "All" + +#: ../src/config.py:2650 +msgid "Enter and leave only" +msgstr "Enter and leave only" + +#: ../src/config.py:2651 +msgid "?print_status:None" +msgstr "None" + +#: ../src/config.py:2720 +msgid "New Group Chat" +msgstr "New Group Chat" + +#: ../src/config.py:2753 +msgid "This bookmark has invalid data" +msgstr "This bookmark has invalid data" + +#: ../src/config.py:2754 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Please be sure to fill out server and room fields or remove this bookmark." + +#: ../src/config.py:3031 +msgid "Invalid username" +msgstr "Invalid username" + +#: ../src/config.py:3033 +msgid "You must provide a username to configure this account." +msgstr "You must provide a username to configure this account." + +#: ../src/config.py:3059 +msgid "Duplicate Jabber ID" +msgstr "Duplicate Jabber ID" + +#: ../src/config.py:3060 +msgid "This account is already configured in Gajim." +msgstr "This account is already configured in Gajim." + +#: ../src/config.py:3077 +msgid "Account has been added successfully" +msgstr "Account has been added successfully" + +#: ../src/config.py:3078 ../src/config.py:3223 +msgid "" +"You can set advanced account options by pressing the Advanced button, or " +"later by choosing the Accounts menuitem under the Edit menu from the main " +"window." +msgstr "" +"You can set advanced account options by pressing the Advanced button, or " +"later by choosing the Accounts menuitem under the Edit menu from the main " +"window." + +#: ../src/config.py:3095 +#, fuzzy +msgid "Invalid server" +msgstr "Invalid username" + +#: ../src/config.py:3096 +#, fuzzy +msgid "Please provide a server on which you want to register." +msgstr "Please specify the new nickname you want to use:" + +#: ../src/config.py:3202 ../src/config.py:3241 +msgid "An error occurred during account creation" +msgstr "An error occurred during account creation" + +#: ../src/config.py:3222 +msgid "Your new account has been created successfully" +msgstr "Your new account has been successfully created" + +#: ../src/config.py:3327 +msgid "Account name is in use" +msgstr "Account name is in use" + +#: ../src/config.py:3328 +msgid "You already have an account using this name." +msgstr "You already have an account using this name." + +#: ../src/conversation_textview.py:337 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" + +#: ../src/conversation_textview.py:409 +#, python-format +msgid "_Actions for \"%s\"" +msgstr "_Actions for \"%s\"" + +#: ../src/conversation_textview.py:421 +msgid "Read _Wikipedia Article" +msgstr "Read _Wikipedia Article" + +#: ../src/conversation_textview.py:426 +msgid "Look it up in _Dictionary" +msgstr "Look it up in _Dictionary" + +#. we must have %s in the url if not WIKTIONARY +#: ../src/conversation_textview.py:442 +#, python-format +msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" +msgstr "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" + +#. we must have %s in the url +#: ../src/conversation_textview.py:455 +#, python-format +msgid "Web Search URL is missing an \"%s\"" +msgstr "Web Search URL is missing an \"%s\"" + +#: ../src/conversation_textview.py:458 +msgid "Web _Search for it" +msgstr "Web _Search for it" + +#: ../src/conversation_textview.py:464 +msgid "Open as _Link" +msgstr "Open as _Link" + +#: ../src/conversation_textview.py:929 +msgid "Yesterday" +msgstr "Yesterday" + +#. the number is >= 2 +#. %i is day in year (1-365), %d (1-31) we want %i +#: ../src/conversation_textview.py:933 +#, python-format +msgid "%i days ago" +msgstr "%i days ago" + +#. if we have subject, show it too! +#: ../src/conversation_textview.py:967 +#, python-format +msgid "Subject: %s\n" +msgstr "Subject: %s\n" + +#: ../src/dialogs.py:64 +#, python-format +msgid "Contact name: <i>%s</i>" +msgstr "Contact name: <i>%s</i>" + +#: ../src/dialogs.py:66 +#, python-format +msgid "Jabber ID: <i>%s</i>" +msgstr "Jabber ID: <i>%s</i>" + +#: ../src/dialogs.py:216 +msgid "Group" +msgstr "Group" + +#: ../src/dialogs.py:223 +msgid "In the group" +msgstr "In the group" + +#: ../src/dialogs.py:274 +msgid "KeyID" +msgstr "KeyID" + +#: ../src/dialogs.py:277 +msgid "Contact name" +msgstr "Contact name" + +#: ../src/dialogs.py:323 +#, python-format +msgid "%s Status Message" +msgstr "%s Status Message" + +#: ../src/dialogs.py:325 +msgid "Status Message" +msgstr "Status Message" + +#: ../src/dialogs.py:425 +msgid "Save as Preset Status Message" +msgstr "Save as Preset Status Message" + +#: ../src/dialogs.py:426 +msgid "Please type a name for this status message" +msgstr "Please type a name for this status message" + +#: ../src/dialogs.py:437 +#, fuzzy +msgid "Overwrite Status Message?" +msgstr "Status Message" + +#: ../src/dialogs.py:438 +#, fuzzy +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "" +"This name is already used by another of your accounts. Please choose another " +"name." + +#: ../src/dialogs.py:454 +msgid "AIM Address:" +msgstr "AIM Address:" + +#: ../src/dialogs.py:455 +msgid "GG Number:" +msgstr "GG Number:" + +#: ../src/dialogs.py:456 +msgid "ICQ Number:" +msgstr "ICQ Number:" + +#: ../src/dialogs.py:457 +msgid "MSN Address:" +msgstr "MSN Address:" + +#: ../src/dialogs.py:458 +msgid "Yahoo! Address:" +msgstr "Yahoo! Address:" + +#: ../src/dialogs.py:495 +#, python-format +msgid "Please fill in the data of the contact you want to add in account %s" +msgstr "Please fill in the data of the contact you want to add in account %s" + +#: ../src/dialogs.py:497 +msgid "Please fill in the data of the contact you want to add" +msgstr "Please fill in the data of the contact you want to add" + +#: ../src/dialogs.py:654 ../src/dialogs.py:660 +msgid "Invalid User ID" +msgstr "Invalid User ID" + +#: ../src/dialogs.py:661 +msgid "The user ID must not contain a resource." +msgstr "The user ID must not contain a resource." + +#: ../src/dialogs.py:675 +msgid "Contact already in roster" +msgstr "Contact already in roster" + +#: ../src/dialogs.py:676 +msgid "This contact is already listed in your roster." +msgstr "This contact is already listed in your roster." + +#: ../src/dialogs.py:712 +msgid "User ID:" +msgstr "User ID:" + +#: ../src/dialogs.py:774 +msgid "A GTK+ jabber client" +msgstr "A GTK+ jabber client" + +#: ../src/dialogs.py:775 +msgid "GTK+ Version:" +msgstr "GTK+ Version:" + +#: ../src/dialogs.py:776 +msgid "PyGTK Version:" +msgstr "PyGTK Version:" + +#: ../src/dialogs.py:790 +msgid "Current Developers:" +msgstr "Current Developers:" + +#: ../src/dialogs.py:792 +msgid "Past Developers:" +msgstr "Past Developers:" + +#: ../src/dialogs.py:802 +msgid "THANKS:" +msgstr "THANKS:" + +#. remove one english sentence +#. and add it manually as translatable +#: ../src/dialogs.py:808 +msgid "Last but not least, we would like to thank all the package maintainers." +msgstr "" +"Last but not least, we would like to thank all the package maintainers." + +#. here you write your name in the form Name FamilyName <someone@somewhere> +#: ../src/dialogs.py:821 +msgid "translator-credits" +msgstr "Jeff Bailes <thepizzaking@gmail.com>" + +#: ../src/dialogs.py:951 +#, python-format +msgid "Unable to bind to port %s." +msgstr "Unable to bind to port %s." + +#: ../src/dialogs.py:952 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"cancelled." +msgstr "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"cancelled." + +#: ../src/dialogs.py:959 +#, fuzzy, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option." + +#: ../src/dialogs.py:1173 +#, python-format +msgid "Subscription request for account %s from %s" +msgstr "Subscription request for account %s from %s" + +#: ../src/dialogs.py:1176 +#, python-format +msgid "Subscription request from %s" +msgstr "Subscription request from %s" + +#: ../src/dialogs.py:1237 ../src/roster_window.py:763 +#, python-format +msgid "You are already in group chat %s" +msgstr "You are already in group chat %s" + +#: ../src/dialogs.py:1245 +msgid "You can not join a group chat unless you are connected." +msgstr "You can not join a group chat unless you are connected." + +#: ../src/dialogs.py:1263 +#, python-format +msgid "Join Group Chat with account %s" +msgstr "Join Group Chat with account %s" + +#: ../src/dialogs.py:1333 ../src/dialogs.py:1339 +#: ../src/groupchat_control.py:1643 +msgid "Invalid group chat Jabber ID" +msgstr "Invalid group chat Jabber ID" + +#: ../src/dialogs.py:1334 ../src/dialogs.py:1340 +#: ../src/groupchat_control.py:1644 +msgid "The group chat Jabber ID has not allowed characters." +msgstr "The group chat Jabber ID has invalid characters." + +#: ../src/dialogs.py:1346 +msgid "This is not a group chat" +msgstr "This is not a group chat" + +#: ../src/dialogs.py:1347 +#, python-format +msgid "%s is not the name of a group chat." +msgstr "%s is not the name of a group chat." + +#: ../src/dialogs.py:1386 +#, fuzzy +msgid "Without a connection, you can not synchronise your contacts." +msgstr "Without a connection, you can not change your password." + +#: ../src/dialogs.py:1400 +msgid "Server" +msgstr "Server" + +#: ../src/dialogs.py:1433 +#, fuzzy +msgid "This account is not connected to the server" +msgstr "Account \"%s\" is connected to the server" + +#: ../src/dialogs.py:1434 +#, fuzzy +msgid "You cannot synchronize with an account unless it is connected." +msgstr "You can not join a group chat unless you are connected." + +#: ../src/dialogs.py:1458 +msgid "Synchronise" +msgstr "" + +#: ../src/dialogs.py:1516 +#, python-format +msgid "Start Chat with account %s" +msgstr "Start Chat with account %s" + +#: ../src/dialogs.py:1518 +msgid "Start Chat" +msgstr "Start Chat" + +#: ../src/dialogs.py:1519 +msgid "" +"Fill in the nickname or the Jabber ID of the contact you would like\n" +"to send a chat message to:" +msgstr "" +"Fill in the nickname or the Jabber ID of the contact you would like\n" +"to send a chat message to:" + +#. if offline or connecting +#: ../src/dialogs.py:1544 ../src/dialogs.py:1891 ../src/dialogs.py:2027 +msgid "Connection not available" +msgstr "Connection not available" + +#: ../src/dialogs.py:1545 ../src/dialogs.py:1892 ../src/dialogs.py:2028 +#, python-format +msgid "Please make sure you are connected with \"%s\"." +msgstr "Please make sure you are connected with \"%s\"." + +#: ../src/dialogs.py:1554 ../src/dialogs.py:1557 +msgid "Invalid JID" +msgstr "Invalid JID" + +#: ../src/dialogs.py:1557 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "Unable to parse \"%s\"." + +#: ../src/dialogs.py:1566 +msgid "Without a connection, you can not change your password." +msgstr "Without a connection, you can not change your password." + +#: ../src/dialogs.py:1584 +msgid "Invalid password" +msgstr "Invalid password" + +#: ../src/dialogs.py:1585 +msgid "You must enter a password." +msgstr "You must enter a password." + +#: ../src/dialogs.py:1589 +msgid "Passwords do not match" +msgstr "Passwords do not match" + +#: ../src/dialogs.py:1590 +msgid "The passwords typed in both fields must be identical." +msgstr "The passwords typed in both fields must be identical." + +#. img to display +#. default value +#: ../src/dialogs.py:1632 ../src/notify.py:219 ../src/notify.py:429 +msgid "Contact Signed In" +msgstr "Contact Signed In" + +#: ../src/dialogs.py:1634 ../src/notify.py:227 ../src/notify.py:431 +msgid "Contact Signed Out" +msgstr "Contact Signed Out" + +#. chat message +#: ../src/dialogs.py:1636 ../src/notify.py:250 ../src/notify.py:433 +msgid "New Message" +msgstr "New Message" + +#. single message +#: ../src/dialogs.py:1636 ../src/notify.py:231 ../src/notify.py:433 +msgid "New Single Message" +msgstr "New Single Message" + +#. private message +#: ../src/dialogs.py:1637 ../src/notify.py:238 ../src/notify.py:434 +msgid "New Private Message" +msgstr "New Private Message" + +#: ../src/dialogs.py:1637 ../src/gajim.py:1460 ../src/notify.py:442 +msgid "New E-mail" +msgstr "New E-mail" + +#: ../src/dialogs.py:1639 ../src/gajim.py:1668 ../src/notify.py:436 +msgid "File Transfer Request" +msgstr "File Transfer Request" + +#: ../src/dialogs.py:1641 ../src/gajim.py:1432 ../src/gajim.py:1644 +#: ../src/notify.py:438 +msgid "File Transfer Error" +msgstr "File Transfer Error" + +#: ../src/dialogs.py:1643 ../src/gajim.py:1707 ../src/gajim.py:1729 +#: ../src/gajim.py:1746 ../src/notify.py:440 +msgid "File Transfer Completed" +msgstr "File Transfer Completed" + +#: ../src/dialogs.py:1644 ../src/gajim.py:1710 ../src/notify.py:440 +msgid "File Transfer Stopped" +msgstr "File Transfer Stopped" + +#: ../src/dialogs.py:1646 ../src/gajim.py:1328 ../src/notify.py:444 +msgid "Groupchat Invitation" +msgstr "Groupchat Invitation" + +#: ../src/dialogs.py:1648 ../src/notify.py:211 ../src/notify.py:446 +msgid "Contact Changed Status" +msgstr "Contact Changed Status" + +#: ../src/dialogs.py:1821 +#, python-format +msgid "Single Message using account %s" +msgstr "Single Message using account %s" + +#: ../src/dialogs.py:1823 +#, python-format +msgid "Single Message in account %s" +msgstr "Single Message in account %s" + +#: ../src/dialogs.py:1825 +msgid "Single Message" +msgstr "Single Message" + +#. prepare UI for Sending +#: ../src/dialogs.py:1828 +#, python-format +msgid "Send %s" +msgstr "Send %s" + +#. prepare UI for Receiving +#: ../src/dialogs.py:1851 +#, python-format +msgid "Received %s" +msgstr "Received %s" + +#. we create a new blank window to send and we preset RE: and to jid +#: ../src/dialogs.py:1928 +#, python-format +msgid "RE: %s" +msgstr "RE: %s" + +#: ../src/dialogs.py:1929 +#, python-format +msgid "%s wrote:\n" +msgstr "%s wrote:\n" + +#: ../src/dialogs.py:1973 +#, python-format +msgid "XML Console for %s" +msgstr "XML Console for %s" + +#: ../src/dialogs.py:1975 +msgid "XML Console" +msgstr "XML Console" + +#: ../src/dialogs.py:2098 +#, python-format +msgid "Privacy List <b><i>%s</i></b>" +msgstr "Privacy List <b><i>%s</i></b>" + +#: ../src/dialogs.py:2102 +#, python-format +msgid "Privacy List for %s" +msgstr "Privacy List for %s" + +#: ../src/dialogs.py:2158 +#, python-format +msgid "Order: %s, action: %s, type: %s, value: %s" +msgstr "Order: %s, action: %s, type: %s, value: %s" + +#: ../src/dialogs.py:2161 +#, python-format +msgid "Order: %s, action: %s" +msgstr "Order: %s, action: %s" + +#: ../src/dialogs.py:2203 +msgid "<b>Edit a rule</b>" +msgstr "<b>Edit a rule</b>" + +#: ../src/dialogs.py:2290 +msgid "<b>Add a rule</b>" +msgstr "<b>Add a rule</b>" + +#: ../src/dialogs.py:2386 +#, python-format +msgid "Privacy Lists for %s" +msgstr "Privacy Lists for %s" + +#: ../src/dialogs.py:2388 +msgid "Privacy Lists" +msgstr "Privacy Lists" + +#: ../src/dialogs.py:2458 +msgid "Invalid List Name" +msgstr "Invalid List Name" + +#: ../src/dialogs.py:2459 +msgid "You must enter a name to create a privacy list." +msgstr "You must enter a name to create a privacy list." + +#: ../src/dialogs.py:2496 +#, fuzzy +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact has invited you to group chat %(room_jid)s" + +#: ../src/dialogs.py:2498 +#, python-format +msgid "$Contact has invited you to group chat %(room_jid)s" +msgstr "$Contact has invited you to group chat %(room_jid)s" + +#. only if not None and not '' +#: ../src/dialogs.py:2510 +#, python-format +msgid "Comment: %s" +msgstr "Comment: %s" + +#: ../src/dialogs.py:2576 +msgid "Choose Sound" +msgstr "Choose Sound" + +#: ../src/dialogs.py:2586 ../src/dialogs.py:2634 +msgid "All files" +msgstr "All files" + +#: ../src/dialogs.py:2591 +msgid "Wav Sounds" +msgstr "Wav Sounds" + +#: ../src/dialogs.py:2624 +msgid "Choose Image" +msgstr "Choose Image" + +#: ../src/dialogs.py:2639 +msgid "Images" +msgstr "Images" + +#: ../src/dialogs.py:2703 +#, python-format +msgid "When %s becomes:" +msgstr "When %s becomes:" + +#: ../src/dialogs.py:2705 +#, python-format +msgid "Adding Special Notification for %s" +msgstr "Adding Special Notification for %s" + +#. # means number +#: ../src/dialogs.py:2776 +msgid "#" +msgstr "#" + +#: ../src/dialogs.py:2782 +msgid "Condition" +msgstr "Condition" + +#: ../src/dialogs.py:2900 +msgid "when I am " +msgstr "when I am " + +#: ../src/disco.py:104 +msgid "Others" +msgstr "Others" + +#: ../src/disco.py:105 ../src/disco.py:106 ../src/disco.py:1345 +#: ../src/gajim.py:644 ../src/roster_window.py:282 ../src/roster_window.py:342 +#: ../src/roster_window.py:382 ../src/roster_window.py:490 +#: ../src/roster_window.py:522 ../src/roster_window.py:524 +#: ../src/roster_window.py:4688 ../src/roster_window.py:4690 +#: ../src/common/contacts.py:290 ../src/common/contacts.py:305 +#: ../src/common/helpers.py:44 +msgid "Transports" +msgstr "Transports" + +#. conference is a category for listing mostly groupchats in service discovery +#: ../src/disco.py:108 +msgid "Conference" +msgstr "Conference" + +#: ../src/disco.py:421 +msgid "Without a connection, you can not browse available services" +msgstr "Without a connection, you can not browse available services" + +#: ../src/disco.py:495 +#, python-format +msgid "Service Discovery using account %s" +msgstr "Service Discovery using account %s" + +#: ../src/disco.py:497 +msgid "Service Discovery" +msgstr "Service Discovery" + +#: ../src/disco.py:637 +msgid "The service could not be found" +msgstr "The service could not be found" + +#: ../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 "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." + +#: ../src/disco.py:642 ../src/disco.py:923 +msgid "The service is not browsable" +msgstr "The service is not browsable" + +#: ../src/disco.py:643 +msgid "This type of service does not contain any items to browse." +msgstr "This type of service does not contain any items to browse." + +#: ../src/disco.py:723 +#, python-format +msgid "Browsing %s using account %s" +msgstr "Browsing %s using account %s" + +#: ../src/disco.py:762 +msgid "_Browse" +msgstr "_Browse" + +#: ../src/disco.py:924 +msgid "This service does not contain any items to browse." +msgstr "This service does not contain any items to browse." + +#: ../src/disco.py:1142 +#, fuzzy +msgid "_Execute Command" +msgstr "_Vykdyti komandÄ…..." + +#: ../src/disco.py:1152 ../src/disco.py:1350 +msgid "Re_gister" +msgstr "Re_gister" + +#: ../src/disco.py:1387 +#, python-format +msgid "Scanning %d / %d.." +msgstr "Scanning %d / %d.." + +#. Users column +#: ../src/disco.py:1569 +msgid "Users" +msgstr "Users" + +#. Description column +#: ../src/disco.py:1577 +msgid "Description" +msgstr "Description" + +#. Id column +#: ../src/disco.py:1585 +msgid "Id" +msgstr "Id" + +#: ../src/disco.py:1814 +msgid "Subscribed" +msgstr "Subscribed" + +#: ../src/disco.py:1822 +#, fuzzy +msgid "Node" +msgstr "Joks" + +#: ../src/disco.py:1879 +msgid "New post" +msgstr "New post" + +#: ../src/disco.py:1885 +msgid "_Subscribe" +msgstr "_Subscribe" + +#: ../src/disco.py:1891 +msgid "_Unsubscribe" +msgstr "_Unsubscribe" + +#: ../src/filetransfers_window.py:72 +msgid "File" +msgstr "File" + +#: ../src/filetransfers_window.py:87 +msgid "Time" +msgstr "Time" + +#: ../src/filetransfers_window.py:99 +msgid "Progress" +msgstr "Progress" + +#: ../src/filetransfers_window.py:159 ../src/filetransfers_window.py:213 +#, python-format +msgid "Filename: %s" +msgstr "Filename: %s" + +#: ../src/filetransfers_window.py:160 ../src/filetransfers_window.py:288 +#, python-format +msgid "Size: %s" +msgstr "Size: %s" + +#. You is a reply of who sent a file +#. You is a reply of who received a file +#: ../src/filetransfers_window.py:169 ../src/filetransfers_window.py:179 +#: ../src/history_manager.py:463 +msgid "You" +msgstr "You" + +#: ../src/filetransfers_window.py:170 +#, python-format +msgid "Sender: %s" +msgstr "Sender: %s" + +#: ../src/filetransfers_window.py:171 ../src/filetransfers_window.py:577 +#: ../src/tooltips.py:586 +msgid "Recipient: " +msgstr "Recipient: " + +#: ../src/filetransfers_window.py:182 +#, python-format +msgid "Saved in: %s" +msgstr "Saved in: %s" + +#: ../src/filetransfers_window.py:184 +msgid "File transfer completed" +msgstr "File transfer completed" + +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:204 +msgid "File transfer cancelled" +msgstr "File transfer cancelled" + +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:205 +msgid "Connection with peer cannot be established." +msgstr "Connection with peer cannot be established." + +#: ../src/filetransfers_window.py:214 +#, python-format +msgid "Recipient: %s" +msgstr "Recipient: %s" + +#: ../src/filetransfers_window.py:216 +#, python-format +msgid "Error message: %s" +msgstr "Error message: %s" + +#: ../src/filetransfers_window.py:217 +msgid "File transfer stopped by the contact at the other end" +msgstr "File transfer stopped by the contact at the other end" + +#: ../src/filetransfers_window.py:234 +msgid "Choose File to Send..." +msgstr "Choose File to Send..." + +#: ../src/filetransfers_window.py:253 +msgid "Gajim cannot access this file" +msgstr "Gajim cannot access this file" + +#: ../src/filetransfers_window.py:254 +msgid "This file is being used by another process." +msgstr "This file is being used by another process." + +#: ../src/filetransfers_window.py:286 +#, python-format +msgid "File: %s" +msgstr "File: %s" + +#: ../src/filetransfers_window.py:291 +#, python-format +msgid "Type: %s" +msgstr "Type: %s" + +#: ../src/filetransfers_window.py:293 +#, python-format +msgid "Description: %s" +msgstr "Description: %s" + +#: ../src/filetransfers_window.py:294 +#, python-format +msgid "%s wants to send you a file:" +msgstr "%s wants to send you a file:" + +#: ../src/filetransfers_window.py:308 ../src/gtkgui_helpers.py:767 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Cannot overwrite existing file \"%s\"" + +#: ../src/filetransfers_window.py:309 ../src/gtkgui_helpers.py:769 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" +"A file with this name already exists and you do not have permission to " +"overwrite it." + +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 +msgid "This file already exists" +msgstr "This file already exists" + +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 +msgid "What do you want to do?" +msgstr "What do you want to do?" + +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:783 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "Directory \"%s\" is not writable" + +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:784 +msgid "You do not have permission to create files in this directory." +msgstr "You do not have permission to create files in this directory." + +#: ../src/filetransfers_window.py:338 +msgid "Save File as..." +msgstr "Save File as..." + +#. 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 +#, 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:508 +#, python-format +msgid "(%(filesize_unit)s/s)" +msgstr "(%(filesize_unit)s/s)" + +#: ../src/filetransfers_window.py:547 ../src/filetransfers_window.py:550 +msgid "Invalid File" +msgstr "Invalid File" + +#: ../src/filetransfers_window.py:547 +msgid "File: " +msgstr "File: " + +#: ../src/filetransfers_window.py:551 +msgid "It is not possible to send empty files" +msgstr "It is not possible to send empty files" + +#: ../src/filetransfers_window.py:573 ../src/tooltips.py:576 +msgid "Name: " +msgstr "Name: " + +#: ../src/filetransfers_window.py:575 ../src/tooltips.py:580 +msgid "Sender: " +msgstr "Sender: " + +#: ../src/filetransfers_window.py:763 +msgid "Pause" +msgstr "Pause" + +#: ../src/gajim.py:50 +#, python-format +msgid "%s is not a valid loglevel" +msgstr "" + +#: ../src/gajim.py:143 +msgid "Gajim needs X server to run. Quiting..." +msgstr "Gajim needs X server to run. Quiting..." + +#: ../src/gajim.py:147 +#, fuzzy +msgid "Gajim needs PyGTK 2.8 or above" +msgstr "Gajim needs PyGTK 2.6 or above" + +#: ../src/gajim.py:148 +#, fuzzy +msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." +msgstr "Gajim needs PyGTK 2.6 or above to run. Quiting..." + +#: ../src/gajim.py:150 +#, fuzzy +msgid "Gajim needs GTK 2.8 or above" +msgstr "Gajim needs GTK 2.6 or above" + +#: ../src/gajim.py:151 +#, fuzzy +msgid "Gajim needs GTK 2.8 or above to run. Quiting..." +msgstr "Gajim needs GTK 2.6 or above to run. Quiting..." + +#: ../src/gajim.py:156 +msgid "GTK+ runtime is missing libglade support" +msgstr "GTK+ runtime is missing libglade support" + +#: ../src/gajim.py:158 +#, python-format +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" + +#: ../src/gajim.py:160 +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." + +#: ../src/gajim.py:165 +msgid "Gajim needs PySQLite2 to run" +msgstr "Gajim needs PySQLite2 to run" + +#: ../src/gajim.py:173 +msgid "Gajim needs pywin32 to run" +msgstr "Gajim needs pywin32 to run" + +#: ../src/gajim.py:174 +#, python-format +msgid "" +"Please make sure that Pywin32 is installed on your system. You can get it at " +"%s" +msgstr "" +"Please make sure that Pywin32 is installed on your system. You can get it at " +"%s" + +#. set the icon to all newly opened wind +#: ../src/gajim.py:317 +msgid "Gajim is already running" +msgstr "Gajim is already running" + +#: ../src/gajim.py:318 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" + +#: ../src/gajim.py:341 ../src/common/connection_handlers.py:900 +#: ../src/common/connection_handlers.py:1601 +#: ../src/common/connection_handlers.py:1629 +#: ../src/common/connection_handlers.py:1639 +#: ../src/common/connection_handlers.py:1658 +#: ../src/common/connection_handlers.py:1889 +#: ../src/common/connection_handlers.py:2001 ../src/common/connection.py:925 +msgid "Disk Write Error" +msgstr "" + +#: ../src/gajim.py:434 +msgid "Do you accept this request?" +msgstr "Do you accept this request?" + +#: ../src/gajim.py:437 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "HTTP (%s) Authorisation for %s (id: %s)" + +#: ../src/gajim.py:484 ../src/notify.py:448 +msgid "Connection Failed" +msgstr "Connection Failed" + +#: ../src/gajim.py:817 +#, python-format +msgid "Subject: %s" +msgstr "Subject: %s" + +#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) +#: ../src/gajim.py:864 ../src/gajim.py:877 +#, python-format +msgid "error while sending %s ( %s )" +msgstr "error while sending %s ( %s )" + +#: ../src/gajim.py:910 +msgid "Authorization accepted" +msgstr "Authorisation accepted" + +#: ../src/gajim.py:911 +#, python-format +msgid "The contact \"%s\" has authorized you to see his or her status." +msgstr "The contact \"%s\" has authorised you to see his or her status." + +#: ../src/gajim.py:919 +#, python-format +msgid "Contact \"%s\" removed subscription from you" +msgstr "Contact \"%s\" removed subscription from you" + +#: ../src/gajim.py:920 +msgid "You will always see him or her as offline." +msgstr "You will always see him or her as offline." + +#: ../src/gajim.py:964 +#, python-format +msgid "Contact with \"%s\" cannot be established" +msgstr "Contact with \"%s\" cannot be established" + +#: ../src/gajim.py:965 ../src/common/connection.py:466 +msgid "Check your connection or try again later." +msgstr "Check your connection or try again later." + +#: ../src/gajim.py:1136 ../src/roster_window.py:1348 +#, python-format +msgid "%s is now %s (%s)" +msgstr "%s is now %s (%s)" + +#. No status message +#: ../src/gajim.py:1139 ../src/groupchat_control.py:1101 +#: ../src/roster_window.py:1351 +#, python-format +msgid "%s is now %s" +msgstr "%s is now %s" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1259 ../src/groupchat_control.py:913 +msgid "Any occupant is allowed to see your full JID" +msgstr "" + +#: ../src/gajim.py:1261 +msgid "Room now shows unavailable member" +msgstr "" + +#: ../src/gajim.py:1263 +msgid "room now does not show unavailable members" +msgstr "" + +#: ../src/gajim.py:1266 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1269 +msgid "Room logging is now enabled" +msgstr "" + +#: ../src/gajim.py:1271 +msgid "Room logging is now disabled" +msgstr "" + +#: ../src/gajim.py:1273 +msgid "Room is now non-anonymous" +msgstr "" + +#: ../src/gajim.py:1275 +msgid "Room is now semi-anonymous" +msgstr "" + +#: ../src/gajim.py:1277 +msgid "Room is now fully-anonymous" +msgstr "" + +#: ../src/gajim.py:1308 +#, fuzzy, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "A password is required to join this group chat." + +#: ../src/gajim.py:1338 +msgid "Your passphrase is incorrect" +msgstr "Your passphrase is incorrect" + +#: ../src/gajim.py:1339 +msgid "You are currently connected without your OpenPGP key." +msgstr "You are currently connected without your OpenPGP key." + +#: ../src/gajim.py:1443 +#, python-format +msgid "New mail on %(gmail_mail_address)s" +msgstr "New mail on %(gmail_mail_address)s" + +#: ../src/gajim.py:1445 +#, python-format +msgid "You have %d new mail conversation" +msgid_plural "You have %d new mail conversations" +msgstr[0] "You have %d new mail conversation" +msgstr[1] "You have %d new mail conversations" + +#. 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 +#: ../src/gajim.py:1454 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" +"\n" +"From: %(from_address)s" + +#: ../src/gajim.py:1665 +#, python-format +msgid "%s wants to send you a file." +msgstr "%s wants to send you a file." + +#: ../src/gajim.py:1730 +#, python-format +msgid "You successfully received %(filename)s from %(name)s." +msgstr "You successfully received %(filename)s from %(name)s." + +#. ft stopped +#: ../src/gajim.py:1734 +#, python-format +msgid "File transfer of %(filename)s from %(name)s stopped." +msgstr "File transfer of %(filename)s from %(name)s stopped." + +#: ../src/gajim.py:1747 +#, python-format +msgid "You successfully sent %(filename)s to %(name)s." +msgstr "You successfully sent %(filename)s to %(name)s." + +#. ft stopped +#: ../src/gajim.py:1751 +#, python-format +msgid "File transfer of %(filename)s to %(name)s stopped." +msgstr "File transfer of %(filename)s to %(name)s stopped." + +#: ../src/gajim.py:1846 +msgid "Session negotiation cancelled" +msgstr "" + +#: ../src/gajim.py:1847 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "" + +#: ../src/gajim.py:1887 ../src/gajim.py:1928 +msgid "Confirm these session options" +msgstr "" + +#: ../src/gajim.py:1888 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t%s\n" +"\n" +"\tAre these options acceptable?" +msgstr "" + +#: ../src/gajim.py:1929 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" + +#: ../src/gajim.py:2041 +msgid "Username Conflict" +msgstr "Username Conflict" + +#: ../src/gajim.py:2042 +msgid "Please type a new username for your local account" +msgstr "Please type a new username for your local account" + +#: ../src/gajim.py:2059 +msgid "Ping?" +msgstr "" + +#: ../src/gajim.py:2067 +#, python-format +msgid "Pong! (%s s.)" +msgstr "" + +#: ../src/gajim.py:2073 +msgid "Error." +msgstr "" + +#: ../src/gajim.py:2098 +#, fuzzy +msgid "Resource Conflict" +msgstr "Username Conflict" + +#: ../src/gajim.py:2099 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" + +#. it is good to notify the user +#. in case he or she cannot see the output of the console +#: ../src/gajim.py:2461 +msgid "Could not save your settings and preferences" +msgstr "Could not save your settings and preferences" + +#. sorted alphanum +#: ../src/gajim.py:2596 ../src/common/config.py:86 ../src/common/config.py:395 +#: ../src/common/optparser.py:194 ../src/common/optparser.py:412 +#: ../src/common/optparser.py:446 +#, fuzzy +msgid "default" +msgstr "Default" + +#: ../src/gajim.py:2683 +msgid "Network Manager support not available" +msgstr "Network Manager support not available" + +#: ../src/gajim.py:2784 +msgid "Session Management support not available (missing gnome.ui module)" +msgstr "Session Management support not available (missing gnome.ui module)" + +#: ../src/gajim-remote.py:65 +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:68 +msgid "command" +msgstr "command" + +#: ../src/gajim-remote.py:69 +msgid "show help on command" +msgstr "show help on command" + +#: ../src/gajim-remote.py:73 +msgid "Shows or hides the roster window" +msgstr "Shows or hides the roster window" + +#: ../src/gajim-remote.py:77 +msgid "Pops up a window with the next pending event" +msgstr "Pops up a window with the next pending event" + +#: ../src/gajim-remote.py:81 +msgid "" +"Prints a list of all contacts in the roster. Each contact appears on a " +"separate line" +msgstr "" +"Prints a list of all contacts in the roster. Each contact appears on a " +"separate line" + +#: ../src/gajim-remote.py:84 ../src/gajim-remote.py:99 +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:122 +#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:145 +#: ../src/gajim-remote.py:166 ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:205 ../src/gajim-remote.py:212 +#: ../src/gajim-remote.py:219 ../src/gajim-remote.py:230 +#: ../src/gajim-remote.py:246 ../src/gajim-remote.py:255 +msgid "account" +msgstr "account" + +#: ../src/gajim-remote.py:84 +msgid "show only contacts of the given account" +msgstr "show only contacts of the given account" + +#: ../src/gajim-remote.py:90 +msgid "Prints a list of registered accounts" +msgstr "Prints a list of registered accounts" + +#: ../src/gajim-remote.py:94 +msgid "Changes the status of account or accounts" +msgstr "Changes the status of account or accounts" + +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:97 +msgid "status" +msgstr "status" + +#: ../src/gajim-remote.py:97 +msgid "one of: offline, online, chat, away, xa, dnd, invisible " +msgstr "one of: offline, online, chat, away, xa, dnd, invisible " + +#: ../src/gajim-remote.py:98 ../src/gajim-remote.py:119 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:144 +msgid "message" +msgstr "message" + +#: ../src/gajim-remote.py:98 +msgid "status message" +msgstr "status message" + +#: ../src/gajim-remote.py:99 +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 status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" + +#: ../src/gajim-remote.py:105 +msgid "Shows the chat dialog so that you can send messages to a contact" +msgstr "Shows the chat dialogue so that you can send messages to a contact" + +#: ../src/gajim-remote.py:107 +msgid "JID of the contact that you want to chat with" +msgstr "JID of the contact that you want to chat with" + +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:196 +msgid "if specified, contact is taken from the contact list of this account" +msgstr "if specified, contact is taken from the contact list of this account" + +#: ../src/gajim-remote.py:114 +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 "" +"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 ''." + +#: ../src/gajim-remote.py:118 ../src/gajim-remote.py:131 +msgid "JID of the contact that will receive the message" +msgstr "JID of the contact that will receive the message" + +#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:144 +msgid "message contents" +msgstr "message contents" + +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +msgid "pgp key" +msgstr "pgp key" + +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +msgid "if specified, the message will be encrypted using this public key" +msgstr "if specified, the message will be encrypted using this public key" + +#: ../src/gajim-remote.py:122 ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:145 +msgid "if specified, the message will be sent using this account" +msgstr "if specified, the message will be sent using this account" + +#: ../src/gajim-remote.py:127 +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 "" +"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 ''." + +#: ../src/gajim-remote.py:132 +msgid "subject" +msgstr "subject" + +#: ../src/gajim-remote.py:132 +msgid "message subject" +msgstr "message subject" + +#: ../src/gajim-remote.py:141 +msgid "Sends new message to a groupchat you've joined." +msgstr "" + +#: ../src/gajim-remote.py:143 +#, fuzzy +msgid "JID of the room that will receive the message" +msgstr "JID of the contact that will receive the message" + +#: ../src/gajim-remote.py:150 +msgid "Gets detailed info on a contact" +msgstr "Gets detailed info on a contact" + +#: ../src/gajim-remote.py:152 ../src/gajim-remote.py:165 +#: ../src/gajim-remote.py:195 ../src/gajim-remote.py:204 +msgid "JID of the contact" +msgstr "JID of the contact" + +#: ../src/gajim-remote.py:156 +msgid "Gets detailed info on a account" +msgstr "Gets detailed info on a account" + +#: ../src/gajim-remote.py:158 +msgid "Name of the account" +msgstr "Name of the account" + +#: ../src/gajim-remote.py:162 +msgid "Sends file to a contact" +msgstr "Sends file to a contact" + +#: ../src/gajim-remote.py:164 +msgid "file" +msgstr "file" + +#: ../src/gajim-remote.py:164 +msgid "File path" +msgstr "File path" + +#: ../src/gajim-remote.py:166 +msgid "if specified, file will be sent using this account" +msgstr "if specified, file will be sent using this account" + +#: ../src/gajim-remote.py:171 +msgid "Lists all preferences and their values" +msgstr "Lists all preferences and their values" + +#: ../src/gajim-remote.py:175 +msgid "Sets value of 'key' to 'value'." +msgstr "Sets value of 'key' to 'value'." + +#: ../src/gajim-remote.py:177 +msgid "key=value" +msgstr "key=value" + +#: ../src/gajim-remote.py:177 +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:182 +msgid "Deletes a preference item" +msgstr "Deletes a preference item" + +#: ../src/gajim-remote.py:184 +msgid "key" +msgstr "key" + +#: ../src/gajim-remote.py:184 +msgid "name of the preference to be deleted" +msgstr "name of the preference to be deleted" + +#: ../src/gajim-remote.py:188 +msgid "Writes the current state of Gajim preferences to the .config file" +msgstr "Writes the current state of Gajim preferences to the .config file" + +#: ../src/gajim-remote.py:193 +msgid "Removes contact from roster" +msgstr "Removes contact from roster" + +#: ../src/gajim-remote.py:202 +msgid "Adds contact to roster" +msgstr "Adds contact to roster" + +#: ../src/gajim-remote.py:204 +msgid "jid" +msgstr "jid" + +#: ../src/gajim-remote.py:205 +msgid "Adds new contact to this account" +msgstr "Adds new contact to this account" + +#: ../src/gajim-remote.py:210 +msgid "Returns current status (the global one unless account is specified)" +msgstr "Returns current status (the global one unless account is specified)" + +#: ../src/gajim-remote.py:217 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Returns current status message(the global one unless account is specified)" + +#: ../src/gajim-remote.py:224 +msgid "Returns number of unread messages" +msgstr "Returns number of unread messages" + +#: ../src/gajim-remote.py:228 +msgid "Opens 'Start Chat' dialog" +msgstr "Opens 'Start Chat' dialogue" + +#: ../src/gajim-remote.py:230 +msgid "Starts chat, using this account" +msgstr "Starts chat, using this account" + +#: ../src/gajim-remote.py:234 +msgid "Sends custom XML" +msgstr "Sends custom XML" + +#: ../src/gajim-remote.py:236 +msgid "XML to send" +msgstr "XML to send" + +#: ../src/gajim-remote.py:237 +msgid "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" +msgstr "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" + +#: ../src/gajim-remote.py:243 +msgid "Handle a xmpp:/ uri" +msgstr "Handle a xmpp:/ uri" + +#: ../src/gajim-remote.py:245 +msgid "uri" +msgstr "uri" + +#: ../src/gajim-remote.py:250 +msgid "Join a MUC room" +msgstr "Join a MUC room" + +#: ../src/gajim-remote.py:252 +msgid "room" +msgstr "room" + +#: ../src/gajim-remote.py:253 +msgid "nick" +msgstr "nick" + +#: ../src/gajim-remote.py:254 +msgid "password" +msgstr "password" + +#: ../src/gajim-remote.py:277 +msgid "Missing argument \"contact_jid\"" +msgstr "Missing argument \"contact_jid\"" + +#: ../src/gajim-remote.py:296 +#, python-format +msgid "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." +msgstr "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." + +#: ../src/gajim-remote.py:299 +msgid "You have no active account" +msgstr "You have no active account" + +#: ../src/gajim-remote.py:363 +#, python-format +msgid "" +"Usage: %s %s %s \n" +"\t %s" +msgstr "" +"Usage: %s %s %s \n" +"\t %s" + +#: ../src/gajim-remote.py:366 +msgid "Arguments:" +msgstr "Arguments:" + +#: ../src/gajim-remote.py:370 +#, python-format +msgid "%s not found" +msgstr "%s not found" + +#: ../src/gajim-remote.py:374 +#, python-format +msgid "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" +msgstr "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" + +#: ../src/gajim-remote.py:447 +#, python-format +msgid "" +"Too many arguments. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Too many arguments. \n" +"Type \"%s help %s\" for more info" + +#: ../src/gajim-remote.py:451 +#, python-format +msgid "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" + +#: ../src/gajim-remote.py:469 +msgid "Wrong uri" +msgstr "Wrong uri" + +#: ../src/gajim_themes_window.py:62 +msgid "Theme" +msgstr "Theme" + +#: ../src/gajim_themes_window.py:100 +#, fuzzy +msgid "You cannot make changes to the default theme" +msgstr "You cannot delete your current theme" + +#: ../src/gajim_themes_window.py:101 +msgid "Please create a clean new theme with your desired name." +msgstr "" + +#. don't confuse translators +#: ../src/gajim_themes_window.py:175 +msgid "theme name" +msgstr "theme name" + +#: ../src/gajim_themes_window.py:192 +msgid "You cannot delete your current theme" +msgstr "You cannot delete your current theme" + +#: ../src/gajim_themes_window.py:193 +msgid "Please first choose another for your current theme." +msgstr "Please first choose another for your current theme." + +#: ../src/groupchat_control.py:134 +msgid "Sending private message failed" +msgstr "Sending private message failed" + +#. in second %s code replaces with nickname +#: ../src/groupchat_control.py:136 +#, python-format +msgid "You are no longer in group chat \"%s\" or \"%s\" has left." +msgstr "You are no longer in group chat \"%s\" or \"%s\" has left." + +#: ../src/groupchat_control.py:342 +msgid "Insert Nickname" +msgstr "Insert Nickname" + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:916 +msgid "Room logging is enabled" +msgstr "" + +#: ../src/groupchat_control.py:918 +#, fuzzy +msgid "A new room has been created" +msgstr "Your new account has been successfully created" + +#: ../src/groupchat_control.py:921 +msgid "The server has assigned or modified your roomnick" +msgstr "" + +#. do not print 'kicked by None' +#: ../src/groupchat_control.py:927 +#, python-format +msgid "%(nick)s has been kicked: %(reason)s" +msgstr "%(nick)s has been kicked: %(reason)s" + +#: ../src/groupchat_control.py:931 +#, python-format +msgid "%(nick)s has been kicked by %(who)s: %(reason)s" +msgstr "%(nick)s has been kicked by %(who)s: %(reason)s" + +#. do not print 'banned by None' +#: ../src/groupchat_control.py:938 +#, python-format +msgid "%(nick)s has been banned: %(reason)s" +msgstr "%(nick)s has been banned: %(reason)s" + +#: ../src/groupchat_control.py:942 +#, python-format +msgid "%(nick)s has been banned by %(who)s: %(reason)s" +msgstr "%(nick)s has been banned by %(who)s: %(reason)s" + +#. Someone changed his or her nick +#. We changed our nick +#: ../src/groupchat_control.py:949 +#, python-format +msgid "You are now known as %s" +msgstr "You are now known as %s" + +#: ../src/groupchat_control.py:951 +#, python-format +msgid "%s is now known as %s" +msgstr "%s is now known as %s" + +#: ../src/groupchat_control.py:984 ../src/groupchat_control.py:988 +#: ../src/groupchat_control.py:993 +#, fuzzy, python-format +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s has been kicked by %(who)s: %(reason)s" + +#: ../src/groupchat_control.py:985 +#, fuzzy +msgid "affiliation changed" +msgstr "Affiliation:" + +#: ../src/groupchat_control.py:990 +msgid "room configuration changed to members-only" +msgstr "" + +#: ../src/groupchat_control.py:995 +msgid "system shutdown" +msgstr "" + +#: ../src/groupchat_control.py:1094 +#, python-format +msgid "%s has left" +msgstr "%s has left" + +#: ../src/groupchat_control.py:1099 +#, python-format +msgid "%s has joined the group chat" +msgstr "%s has joined the group chat" + +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1212 ../src/groupchat_control.py:1491 +#, fuzzy +msgid "Invalid nickname" +msgstr "Invalid username" + +#: ../src/groupchat_control.py:1213 ../src/groupchat_control.py:1492 +#, fuzzy +msgid "The nickname has not allowed characters." +msgstr "The group chat Jabber ID has invalid characters." + +#: ../src/groupchat_control.py:1236 ../src/groupchat_control.py:1254 +#: ../src/groupchat_control.py:1338 ../src/groupchat_control.py:1355 +#, python-format +msgid "Nickname not found: %s" +msgstr "Nickname not found: %s" + +#: ../src/groupchat_control.py:1270 +msgid "This group chat has no subject" +msgstr "This group chat has no subject" + +#: ../src/groupchat_control.py:1281 +#, python-format +msgid "Invited %(contact_jid)s to %(room_jid)s." +msgstr "Invited %(contact_jid)s to %(room_jid)s." + +#: ../src/groupchat_control.py:1418 +#, python-format +msgid "" +"Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " +"nickname of an occupant may be substituted, but not if it contains \"@\". If " +"the JID is currently in the group chat, he/she/it will also be kicked. Does " +"NOT support spaces in nickname." +msgstr "" +"Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " +"nickname of an occupant may be substituted, but not if it contains \"@\". If " +"the JID is currently in the group chat, he/she/it will also be kicked. Does " +"NOT support spaces in nickname." + +#: ../src/groupchat_control.py:1425 +#, python-format +msgid "" +"Usage: /%s <nickname>, opens a private chat window with the specified " +"occupant." +msgstr "" +"Usage: /%s <nickname>, opens a private chat window with the specified " +"occupant." + +#: ../src/groupchat_control.py:1431 +#, python-format +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." + +#: ../src/groupchat_control.py:1437 +#, python-format +msgid "" +"Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "" +"Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " +"providing a reason." + +#: ../src/groupchat_control.py:1441 +#, python-format +msgid "" +"Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " +"using specified nickname." + +#: ../src/groupchat_control.py:1445 +#, python-format +msgid "" +"Usage: /%s <nickname> [reason], removes the occupant specified by nickname " +"from the group chat and optionally displays a reason. Does NOT support " +"spaces in nickname." +msgstr "" +"Usage: /%s <nickname> [reason], removes the occupant specified by nickname " +"from the group chat and optionally displays a reason. Does NOT support " +"spaces in nickname." + +#: ../src/groupchat_control.py:1454 +#, python-format +msgid "" +"Usage: /%s <nickname> [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"Usage: /%s <nickname> [message], opens a private message window and sends " +"message to the occupant specified by nickname." + +#: ../src/groupchat_control.py:1459 +#, python-format +msgid "Usage: /%s <nickname>, changes your nickname in current group chat." +msgstr "Usage: /%s <nickname>, changes your nickname in current group chat." + +#: ../src/groupchat_control.py:1463 +#, python-format +msgid "Usage: /%s , display the names of group chat occupants." +msgstr "Usage: /%s , display the names of group chat occupants." + +#: ../src/groupchat_control.py:1467 +#, python-format +msgid "Usage: /%s [topic], displays or updates the current group chat topic." +msgstr "Usage: /%s [topic], displays or updates the current group chat topic." + +#: ../src/groupchat_control.py:1470 +#, python-format +msgid "" +"Usage: /%s <message>, sends a message without looking for other commands." +msgstr "" +"Usage: /%s <message>, sends a message without looking for other commands." + +#: ../src/groupchat_control.py:1565 +#, python-format +msgid "Are you sure you want to leave group chat \"%s\"?" +msgstr "Are you sure you want to leave group chat \"%s\"?" + +#: ../src/groupchat_control.py:1567 +msgid "" +"If you close this window, you will be disconnected from this group chat." +msgstr "" +"If you close this window, you will be disconnected from this group chat." + +#: ../src/groupchat_control.py:1571 ../src/roster_window.py:4836 +msgid "Do _not ask me again" +msgstr "Do _not ask me again" + +#: ../src/groupchat_control.py:1605 +msgid "Changing Subject" +msgstr "Changing Subject" + +#: ../src/groupchat_control.py:1606 +msgid "Please specify the new subject:" +msgstr "Please specify the new subject:" + +#: ../src/groupchat_control.py:1615 +msgid "Changing Nickname" +msgstr "Changing Nickname" + +#: ../src/groupchat_control.py:1616 +msgid "Please specify the new nickname you want to use:" +msgstr "Please specify the new nickname you want to use:" + +#. Ask for a reason +#: ../src/groupchat_control.py:1631 +#, fuzzy, python-format +msgid "Destroying %s" +msgstr "Description: %s" + +#: ../src/groupchat_control.py:1632 +msgid "" +"You are going to definitively destroy this room.\n" +"You may specify a reason below:" +msgstr "" + +#: ../src/groupchat_control.py:1634 +msgid "You may also enter an alternate venue:" +msgstr "" + +#: ../src/groupchat_control.py:1665 +msgid "Bookmark already set" +msgstr "Bookmark already set" + +#: ../src/groupchat_control.py:1666 +#, python-format +msgid "Group Chat \"%s\" is already in your bookmarks." +msgstr "Group Chat \"%s\" is already in your bookmarks." + +#: ../src/groupchat_control.py:1675 +msgid "Bookmark has been added successfully" +msgstr "Bookmark has been added successfully" + +#: ../src/groupchat_control.py:1676 +msgid "You can manage your bookmarks via Actions menu in your roster." +msgstr "You can manage your bookmarks via Actions menu in your roster." + +#. ask for reason +#: ../src/groupchat_control.py:1828 +#, python-format +msgid "Kicking %s" +msgstr "Kicking %s" + +#: ../src/groupchat_control.py:1829 ../src/groupchat_control.py:2129 +msgid "You may specify a reason below:" +msgstr "You may specify a reason below:" + +#. ask for reason +#: ../src/groupchat_control.py:2128 +#, python-format +msgid "Banning %s" +msgstr "Banning %s" + +#: ../src/gtkexcepthook.py:41 +msgid "A programming error has been detected" +msgstr "A programming error has been detected" + +#: ../src/gtkexcepthook.py:42 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"It is probably not fatal, but should be reported to the developers " +"nonetheless." + +#: ../src/gtkexcepthook.py:48 +msgid "_Report Bug" +msgstr "_Report Bug" + +#: ../src/gtkexcepthook.py:71 +msgid "Details" +msgstr "Details" + +#. we talk about file +#: ../src/gtkgui_helpers.py:157 ../src/gtkgui_helpers.py:172 +#, python-format +msgid "Error: cannot open %s for reading" +msgstr "Error: cannot open %s for reading" + +#: ../src/gtkgui_helpers.py:337 +msgid "Error reading file:" +msgstr "Error reading file:" + +#: ../src/gtkgui_helpers.py:340 +msgid "Error parsing file:" +msgstr "Error parsing file:" + +#. do not traceback (could be a permission problem) +#. we talk about a file here +#: ../src/gtkgui_helpers.py:377 +#, python-format +msgid "Could not write to %s. Session Management support will not work" +msgstr "Could not write to %s. Session Management support will not work" + +#. xmpp: is currently handled by another program, so ask the user +#: ../src/gtkgui_helpers.py:711 +msgid "Gajim is not the default Jabber client" +msgstr "Gajim is not the default Jabber client" + +#: ../src/gtkgui_helpers.py:712 +msgid "Would you like to make Gajim the default Jabber client?" +msgstr "Would you like to make Gajim the default Jabber client?" + +#: ../src/gtkgui_helpers.py:713 +msgid "Always check to see if Gajim is the default Jabber client on startup" +msgstr "Always check to see if Gajim is the default Jabber client on startup" + +#: ../src/gtkgui_helpers.py:812 +msgid "Extension not supported" +msgstr "Extension not supported" + +#: ../src/gtkgui_helpers.py:813 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" + +#: ../src/gtkgui_helpers.py:822 +msgid "Save Image as..." +msgstr "Save Image as..." + +#: ../src/history_manager.py:68 +msgid "Cannot find history logs database" +msgstr "Cannot find history logs database" + +#. holds jid +#: ../src/history_manager.py:108 +msgid "Contacts" +msgstr "Contacts" + +#. holds time +#: ../src/history_manager.py:121 ../src/history_manager.py:161 +#: ../src/history_window.py:116 +msgid "Date" +msgstr "Date" + +#. holds nickname +#: ../src/history_manager.py:127 ../src/history_manager.py:179 +msgid "Nickname" +msgstr "Nickname" + +#. holds message +#: ../src/history_manager.py:135 ../src/history_manager.py:167 +#: ../src/history_window.py:124 +msgid "Message" +msgstr "Message" + +#: ../src/history_manager.py:187 +msgid "" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" + +#: ../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 "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, " +"otherwise click NO.\n" +"\n" +"In case you click YES, please wait..." + +#: ../src/history_manager.py:401 +msgid "Exporting History Logs..." +msgstr "Exporting History Logs..." + +#: ../src/history_manager.py:476 +#, python-format +msgid "%(who)s on %(time)s said: %(message)s\n" +msgstr "%(who)s on %(time)s said: %(message)s\n" + +#: ../src/history_manager.py:514 +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] "Do you really want to delete the logs of the selected contact?" +msgstr[1] "Do you really want to delete the logs of the selected contacts?" + +#: ../src/history_manager.py:518 ../src/history_manager.py:554 +msgid "This is an irreversible operation." +msgstr "This is an irreversible operation." + +#: ../src/history_manager.py:551 +msgid "Do you really want to delete the selected message?" +msgid_plural "Do you really want to delete the selected messages?" +msgstr[0] "Do you really want to delete the selected message?" +msgstr[1] "Do you really want to delete the selected messages?" + +#: ../src/history_window.py:185 ../src/history_window.py:187 +#, python-format +msgid "Conversation History with %s" +msgstr "Conversation History with %s" + +#: ../src/history_window.py:332 +#, python-format +msgid "%(nick)s is now %(status)s: %(status_msg)s" +msgstr "%(nick)s is now %(status)s: %(status_msg)s" + +#: ../src/history_window.py:336 ../src/notify.py:206 +#, python-format +msgid "%(nick)s is now %(status)s" +msgstr "%(nick)s is now %(status)s" + +#: ../src/history_window.py:342 +#, python-format +msgid "Status is now: %(status)s: %(status_msg)s" +msgstr "Status is now: %(status)s: %(status_msg)s" + +#: ../src/history_window.py:345 +#, python-format +msgid "Status is now: %(status)s" +msgstr "Status is now: %(status)s" + +#: ../src/htmltextview.py:583 ../src/htmltextview.py:594 +#, fuzzy +msgid "Timeout loading image" +msgstr "Could not load image" + +#: ../src/htmltextview.py:604 +msgid "Image is too big" +msgstr "" + +#: ../src/message_window.py:288 +msgid "Chats" +msgstr "Chats" + +#: ../src/message_window.py:290 +msgid "Group Chats" +msgstr "Group Chats" + +#: ../src/message_window.py:292 +msgid "Private Chats" +msgstr "Private Chats" + +#: ../src/message_window.py:294 +msgid "Messages" +msgstr "Messages" + +#: ../src/message_window.py:295 +#, python-format +msgid "%s - Gajim" +msgstr "%s - Gajim" + +#: ../src/notify.py:204 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s Changed Status" + +#: ../src/notify.py:214 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Signed In" + +#: ../src/notify.py:222 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Signed Out" + +#: ../src/notify.py:234 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "New Single Message from %(nickname)s" + +#: ../src/notify.py:242 +#, python-format +msgid "New Private Message from group chat %s" +msgstr "New Private Message from group chat %s" + +#: ../src/notify.py:244 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:247 +#, fuzzy, python-format +msgid "Messaged by %(nickname)s" +msgstr "New Message from %(nickname)s" + +#: ../src/notify.py:253 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "New Message from %(nickname)s" + +#: ../src/profile_window.py:72 +msgid "Retrieving profile..." +msgstr "Retrieving profile..." + +#: ../src/profile_window.py:123 ../src/roster_window.py:1882 +#, fuzzy +msgid "File is empty" +msgstr "File path" + +#: ../src/profile_window.py:126 ../src/roster_window.py:1885 +#, fuzzy +msgid "File does not exist" +msgstr "Such group chat does not exist." + +#. keep identation +#. unknown format +#: ../src/profile_window.py:140 ../src/profile_window.py:156 +#: ../src/roster_window.py:1887 ../src/roster_window.py:1898 +msgid "Could not load image" +msgstr "Could not load image" + +#: ../src/profile_window.py:257 +msgid "Information received" +msgstr "Information received" + +#: ../src/profile_window.py:326 +msgid "Without a connection you can not publish your contact information." +msgstr "Without a connection you can not publish your contact information." + +#: ../src/profile_window.py:338 +msgid "Sending profile..." +msgstr "Sending profile..." + +#: ../src/profile_window.py:353 +msgid "Information NOT published" +msgstr "Information NOT published" + +#: ../src/profile_window.py:360 +msgid "vCard publication failed" +msgstr "vCard publication failed" + +#: ../src/profile_window.py:361 +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"There was an error while publishing your personal information, try again " +"later." + +#: ../src/roster_window.py:182 ../src/roster_window.py:237 +msgid "Merged accounts" +msgstr "Apjungtos prieigos" + +#: ../src/roster_window.py:357 ../src/roster_window.py:622 +#: ../src/roster_window.py:2110 ../src/common/contacts.py:307 +#: ../src/common/helpers.py:44 +msgid "Observers" +msgstr "Observers" + +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:441 ../src/roster_window.py:446 +#: ../src/roster_window.py:1935 ../src/roster_window.py:1938 +#: ../src/roster_window.py:2607 ../src/roster_window.py:2610 +#: ../src/roster_window.py:2635 ../src/roster_window.py:4696 +#: ../src/roster_window.py:4698 ../src/common/commands.py:194 +#: ../src/common/contacts.py:97 ../src/common/helpers.py:44 +msgid "Groupchats" +msgstr "Groupchats" + +#: ../src/roster_window.py:771 ../src/roster_window.py:3952 +msgid "You cannot join a group chat while you are invisible" +msgstr "You cannot join a group chat while you are invisible" + +#. new chat +#. single message +#. for chat_with +#. for single message +#. join gc +#: ../src/roster_window.py:984 ../src/roster_window.py:994 +#: ../src/roster_window.py:1003 ../src/systray.py:207 ../src/systray.py:212 +#: ../src/systray.py:218 +#, python-format +msgid "using account %s" +msgstr "using account %s" + +#. add +#: ../src/roster_window.py:1010 +#, python-format +msgid "to %s account" +msgstr "to %s account" + +#. disco +#: ../src/roster_window.py:1015 +#, python-format +msgid "using %s account" +msgstr "using %s account" + +#: ../src/roster_window.py:1096 +msgid "_Manage Bookmarks..." +msgstr "_Manage Bookmarks..." + +#. profile, avatar +#: ../src/roster_window.py:1115 +#, python-format +msgid "of account %s" +msgstr "of account %s" + +#: ../src/roster_window.py:1155 +#, python-format +msgid "for account %s" +msgstr "for account %s" + +#. History manager +#: ../src/roster_window.py:1176 +msgid "History Manager" +msgstr "History Manager" + +#: ../src/roster_window.py:1185 +msgid "_Join New Group Chat" +msgstr "_Join New Group Chat" + +#: ../src/roster_window.py:1544 ../src/roster_window.py:4150 +#: ../src/roster_window.py:4157 +msgid "You have unread messages" +msgstr "You have unread messages" + +#: ../src/roster_window.py:1545 +msgid "You must read them before removing this transport." +msgstr "You must read them before removing this transport." + +#: ../src/roster_window.py:1548 +#, python-format +msgid "Transport \"%s\" will be removed" +msgstr "Transport \"%s\" will be removed" + +#: ../src/roster_window.py:1549 +msgid "" +"You will no longer be able to send and receive messages from contacts using " +"this transport." +msgstr "" +"You will no longer be able to send and receive messages from contacts using " +"this transport." + +#: ../src/roster_window.py:1552 +msgid "Transports will be removed" +msgstr "Transports will be removed" + +#: ../src/roster_window.py:1557 +#, python-format +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"these transports:%s" +msgstr "" +"You will no longer be able to send and receive messages to contacts from " +"these transports:%s" + +#. it's jid +#: ../src/roster_window.py:1723 +msgid "Rename Contact" +msgstr "Rename Contact" + +#: ../src/roster_window.py:1724 +#, python-format +msgid "Enter a new nickname for contact %s" +msgstr "Enter a new nickname for contact %s" + +#: ../src/roster_window.py:1731 +msgid "Rename Group" +msgstr "Rename Group" + +#: ../src/roster_window.py:1732 +#, python-format +msgid "Enter a new name for group %s" +msgstr "Enter a new name for group %s" + +#: ../src/roster_window.py:1807 +msgid "Remove Group" +msgstr "Remove Group" + +#: ../src/roster_window.py:1808 +#, python-format +msgid "Do you want to remove group %s from the roster?" +msgstr "Do you want to remove group %s from the roster?" + +#: ../src/roster_window.py:1809 +msgid "Remove also all contacts in this group from your roster" +msgstr "Remove also all contacts in this group from your roster" + +#: ../src/roster_window.py:1840 +msgid "Assign OpenPGP Key" +msgstr "Assign OpenPGP Key" + +#: ../src/roster_window.py:1841 +msgid "Select a key to apply to the contact" +msgstr "Select a key to apply to the contact" + +#: ../src/roster_window.py:2156 +#, fuzzy +msgid "_New Group Chat" +msgstr "New Group Chat" + +#: ../src/roster_window.py:2298 +msgid "I would like to add you to my roster" +msgstr "I would like to add you to my roster" + +#. Send Group Message +#: ../src/roster_window.py:2432 ../src/roster_window.py:2644 +msgid "Send Group M_essage" +msgstr "Send Group M_essage" + +#: ../src/roster_window.py:2451 +msgid "_New group chat" +msgstr "_New group chat" + +#. Manage Transport submenu +#: ../src/roster_window.py:2489 +#, fuzzy +msgid "_Manage Contacts" +msgstr "Rename Contact" + +#: ../src/roster_window.py:2550 +msgid "_Maximize" +msgstr "" + +#: ../src/roster_window.py:2557 +#, fuzzy +msgid "_Disconnect" +msgstr "Contact Disconnected" + +#: ../src/roster_window.py:2636 +msgid "_Maximize All" +msgstr "" + +#: ../src/roster_window.py:2652 +msgid "To all users" +msgstr "Visiems" + +#: ../src/roster_window.py:2655 +msgid "To all online users" +msgstr "Visiems prisijungusiems" + +#. Log Off +#: ../src/roster_window.py:2772 +#, fuzzy +msgid "_Log off" +msgstr "_Atsijungti" + +#. Log on +#: ../src/roster_window.py:2778 +msgid "_Log on" +msgstr "_Prisijungti" + +#. Send single message +#: ../src/roster_window.py:2790 +#, fuzzy +msgid "Send Single Message" +msgstr "_Siųsti vienÄ… žinutÄ™" + +#. Manage Transport submenu +#: ../src/roster_window.py:2837 +#, fuzzy +msgid "_Manage Transport" +msgstr "Transports" + +#. Modify Transport +#: ../src/roster_window.py:2845 +#, fuzzy +msgid "_Modify Transport" +msgstr "Rodyti _PernaÅ¡as" + +#. Information +#: ../src/roster_window.py:2882 +#, fuzzy +msgid "_Information" +msgstr "Asmens Informacija" + +#: ../src/roster_window.py:2959 ../src/roster_window.py:3033 +msgid "_Change Status Message" +msgstr "_Keisti BÅ«klÄ—s ŽinutÄ™" + +#: ../src/roster_window.py:3105 +msgid "Authorization has been sent" +msgstr "Authorisation has been sent" + +#: ../src/roster_window.py:3106 +#, python-format +msgid "Now \"%s\" will know your status." +msgstr "Dabar \"%s\" žinos apie jÅ«sų bÅ«klÄ™." + +#: ../src/roster_window.py:3126 +msgid "Subscription request has been sent" +msgstr "Subscription request has been sent" + +#: ../src/roster_window.py:3127 +#, python-format +msgid "If \"%s\" accepts this request you will know his or her status." +msgstr "If \"%s\" accepts this request you will know his or her status." + +#: ../src/roster_window.py:3139 +msgid "Authorization has been removed" +msgstr "Authorisation has been removed" + +#: ../src/roster_window.py:3140 +#, python-format +msgid "Now \"%s\" will always see you as offline." +msgstr "Now \"%s\" will always see you as offline." + +#: ../src/roster_window.py:3338 +#, python-format +msgid "Contact \"%s\" will be removed from your roster" +msgstr "Contact \"%s\" will be removed from your roster" + +#: ../src/roster_window.py:3342 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"By removing this contact you also remove authorisation resulting in him or " +"her always seeing you as offline." + +#: ../src/roster_window.py:3347 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"By removing this contact you also by default remove authorisation resulting " +"in him or her always seeing you as offline." + +#: ../src/roster_window.py:3350 +msgid "I want this contact to know my status after removal" +msgstr "I want this contact to know my status after removal" + +#. several contact to remove at the same time +#: ../src/roster_window.py:3354 +msgid "Contacts will be removed from your roster" +msgstr "Contacts will be removed from your roster" + +#: ../src/roster_window.py:3358 +#, python-format +msgid "" +"By removing these contacts:%s\n" +"you also remove authorization resulting in them always seeing you as offline." +msgstr "" +"By removing these contacts:%s\n" +"you also remove authorisation resulting in them always seeing you as offline." + +#: ../src/roster_window.py:3390 +#, fuzzy +msgid "" +"Gnome Keyring is installed but not correctly started (environment variable " +"probably not correctly set)" +msgstr "" +"Gnomekeyring is installed but not correctly started (environment variable " +"probably not correctly set)" + +#: ../src/roster_window.py:3417 +msgid "GPG is not usable" +msgstr "" + +#. %s is the account name here +#: ../src/roster_window.py:3417 ../src/common/connection.py:684 +#: ../src/common/zeroconf/connection_zeroconf.py:165 +#, python-format +msgid "You will be connected to %s without OpenPGP." +msgstr "You will be connected to %s without OpenPGP." + +#: ../src/roster_window.py:3434 +msgid "Passphrase Required" +msgstr "Passphrase Required" + +#: ../src/roster_window.py:3435 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Enter GPG key passphrase for account %s." + +#: ../src/roster_window.py:3440 +msgid "Save passphrase" +msgstr "Save passphrase" + +#: ../src/roster_window.py:3448 +msgid "Wrong Passphrase" +msgstr "Wrong Passphrase" + +#: ../src/roster_window.py:3449 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "Please retype your GPG passphrase or press Cancel." + +#: ../src/roster_window.py:3532 ../src/roster_window.py:3609 +msgid "You are participating in one or more group chats" +msgstr "You are participating in one or more group chats" + +#: ../src/roster_window.py:3533 ../src/roster_window.py:3610 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" + +#: ../src/roster_window.py:3567 +msgid "No account available" +msgstr "No account available" + +#: ../src/roster_window.py:3568 +msgid "You must create an account before you can chat with other contacts." +msgstr "You must create an account before you can chat with other contacts." + +#: ../src/roster_window.py:3696 +#, python-format +msgid "\"%(title)s\" by %(artist)s" +msgstr "\"%(title)s\" by %(artist)s" + +#: ../src/roster_window.py:4151 ../src/roster_window.py:4158 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Messages will only be available for reading them later if you have history " +"enabled." + +#: ../src/roster_window.py:4782 +msgid "Metacontacts storage not supported by your server" +msgstr "Metacontacts storage not supported by your server" + +#: ../src/roster_window.py:4784 +#, fuzzy +msgid "" +"Your server does not support storing metacontacts information. So those " +"information will not be saved on next reconnection." +msgstr "" +"Your server does not support storing metacontacts information. So those " +"information will not be save on next reconnection." + +#: ../src/roster_window.py:4830 +msgid "" +"You are about to create a metacontact. Are you sure you want to continue?" +msgstr "" +"You are about to create a metacontact. Are you sure you want to continue?" + +#: ../src/roster_window.py:4832 +msgid "" +"Metacontacts are a way to regroup several contacts in one line. Generally it " +"is used when the same person has several Jabber accounts or transport " +"accounts." +msgstr "" +"Metacontacts are a way to regroup several contacts in one line. Generally it " +"is used when the same person has several Jabber accounts or transport " +"accounts." + +#: ../src/roster_window.py:4930 +#, fuzzy, python-format +msgid "Do you want to send that file to %s:" +msgid_plural "Do you want to send those files to %s:" +msgstr[0] "%s wants to send you a file:" +msgstr[1] "%s wants to send you a file:" + +#: ../src/roster_window.py:5212 +msgid "Change Status Message..." +msgstr "Change Status Message..." + +#: ../src/systray.py:164 +msgid "_Change Status Message..." +msgstr "_Change Status Message..." + +#: ../src/systray.py:249 +msgid "Hide this menu" +msgstr "Hide this menu" + +#: ../src/tooltips.py:310 ../src/tooltips.py:503 +msgid "Jabber ID: " +msgstr "Jabber ID: " + +#: ../src/tooltips.py:313 ../src/tooltips.py:507 +msgid "Resource: " +msgstr "Resource: " + +#: ../src/tooltips.py:318 +#, python-format +msgid "%(owner_or_admin_or_member)s of this group chat" +msgstr "%(owner_or_admin_or_member)s of this group chat" + +#: ../src/tooltips.py:416 +msgid " [blocked]" +msgstr "" + +#: ../src/tooltips.py:420 +msgid " [minimized]" +msgstr "" + +#: ../src/tooltips.py:435 ../src/tooltips.py:623 +msgid "Status: " +msgstr "Status: " + +#: ../src/tooltips.py:465 +#, python-format +msgid "Last status: %s" +msgstr "Last status: %s" + +#: ../src/tooltips.py:467 +#, python-format +msgid " since %s" +msgstr " since %s" + +#: ../src/tooltips.py:485 +#, fuzzy +msgid "Connected" +msgstr "Prisijungimas" + +#: ../src/tooltips.py:487 +#, fuzzy +msgid "Disconnected" +msgstr "Contact Disconnected" + +#. ('both' is the normal sub so we don't show it) +#: ../src/tooltips.py:514 +msgid "Subscription: " +msgstr "Subscription: " + +#: ../src/tooltips.py:524 +msgid "OpenPGP: " +msgstr "OpenPGP: " + +#: ../src/tooltips.py:579 +msgid "Download" +msgstr "Download" + +#: ../src/tooltips.py:585 +msgid "Upload" +msgstr "Upload" + +#: ../src/tooltips.py:592 +msgid "Type: " +msgstr "Type: " + +#: ../src/tooltips.py:598 +msgid "Transferred: " +msgstr "Transferred: " + +#: ../src/tooltips.py:601 ../src/tooltips.py:622 +msgid "Not started" +msgstr "Not started" + +#: ../src/tooltips.py:605 +msgid "Stopped" +msgstr "Stopped" + +#: ../src/tooltips.py:607 ../src/tooltips.py:610 +msgid "Completed" +msgstr "Completed" + +#: ../src/tooltips.py:614 +msgid "?transfer status:Paused" +msgstr "Paused" + +#. stalled is not paused. it is like 'frozen' it stopped alone +#: ../src/tooltips.py:618 +msgid "Stalled" +msgstr "Stalled" + +#: ../src/tooltips.py:620 +msgid "Transferring" +msgstr "Transferring" + +#: ../src/tooltips.py:652 +msgid "This service has not yet responded with detailed information" +msgstr "This service has not yet responded with detailed information" + +#: ../src/tooltips.py:655 +msgid "" +"This service could not respond with detailed information.\n" +"It is most likely legacy or broken" +msgstr "" +"This service could not respond with detailed information.\n" +"It is most likely legacy or broken" + +#: ../src/vcard.py:240 +msgid "?Client:Unknown" +msgstr "Unknown" + +#: ../src/vcard.py:242 +msgid "?OS:Unknown" +msgstr "Unknown" + +#: ../src/vcard.py:267 ../src/vcard.py:277 ../src/vcard.py:467 +#, python-format +msgid "since %s" +msgstr "since %s" + +#: ../src/vcard.py:306 +msgid "Affiliation:" +msgstr "Affiliation:" + +#: ../src/vcard.py:314 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" + +#: ../src/vcard.py:316 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" + +#: ../src/vcard.py:318 +msgid "You and the contact are interested in each other's presence information" +msgstr "" +"You and the contact are interested in each other's presence information" + +#. None +#: ../src/vcard.py:320 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" + +#: ../src/vcard.py:328 +msgid "You are waiting contact's answer about your subscription request" +msgstr "You are waiting contact's answer about your subscription request" + +#: ../src/vcard.py:332 ../src/vcard.py:369 ../src/vcard.py:492 +msgid " resource with priority " +msgstr " resource with priority " + +#: ../src/common/check_paths.py:33 +msgid "creating logs database" +msgstr "creating logs database" + +#: ../src/common/check_paths.py:96 ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:114 +#, python-format +msgid "%s is a file but it should be a directory" +msgstr "%s is a file but it should be a directory" + +#: ../src/common/check_paths.py:97 ../src/common/check_paths.py:108 +#: ../src/common/check_paths.py:115 ../src/common/check_paths.py:123 +msgid "Gajim will now exit" +msgstr "Gajim will now exit" + +#: ../src/common/check_paths.py:122 +#, python-format +msgid "%s is a directory but should be a file" +msgstr "%s is a directory but should be a file" + +#: ../src/common/check_paths.py:138 +#, python-format +msgid "creating %s directory" +msgstr "creating %s directory" + +#: ../src/common/commands.py:69 +msgid "Change status information" +msgstr "Change status information" + +#: ../src/common/commands.py:82 +msgid "Change status" +msgstr "Change status" + +#: ../src/common/commands.py:83 +msgid "Set the presence type and description" +msgstr "Set the presence type and description" + +#: ../src/common/commands.py:89 +msgid "Free for chat" +msgstr "Free for chat" + +#: ../src/common/commands.py:90 +msgid "Online" +msgstr "Online" + +#: ../src/common/commands.py:92 +msgid "Extended away" +msgstr "Extended away" + +#: ../src/common/commands.py:93 +msgid "Do not disturb" +msgstr "Do not disturb" + +#: ../src/common/commands.py:94 +msgid "Offline - disconnect" +msgstr "Offline - disconnect" + +#: ../src/common/commands.py:99 +msgid "Presence description:" +msgstr "Presence description:" + +#: ../src/common/commands.py:134 +msgid "The status has been changed." +msgstr "The status has been changed." + +#: ../src/common/commands.py:179 +#, python-format +msgid "%(nickname)s on %(room_jid)s" +msgstr "%(nickname)s on %(room_jid)s" + +#: ../src/common/commands.py:183 +msgid "You have not joined a groupchat." +msgstr "You have not joined a groupchat." + +#: ../src/common/commands.py:189 +msgid "Leave Groupchats" +msgstr "Leave Groupchats" + +#: ../src/common/commands.py:190 +msgid "Choose the groupchats you want to leave" +msgstr "Choose the groupchats you want to leave" + +#: ../src/common/commands.py:230 +#, fuzzy +msgid "You left the following groupchats:" +msgstr "You left the following groupchats:" + +#: ../src/common/commands.py:242 +#, fuzzy +msgid "Forward unread messages" +msgstr " %d unread message" + +#: ../src/common/commands.py:262 +msgid "All unread messages have been forwarded." +msgstr "" + +#: ../src/common/config.py:58 +msgid "Use D-Bus and Notification-Daemon to show notifications" +msgstr "Use D-Bus and Notification-Daemon to show notifications" + +#: ../src/common/config.py:63 +msgid "Time in minutes, after which your status changes to away." +msgstr "Time in minutes, after which your status changes to away." + +#: ../src/common/config.py:64 +msgid "Away as a result of being idle" +msgstr "Away as a result of being idle" + +#: ../src/common/config.py:66 +msgid "Time in minutes, after which your status changes to not available." +msgstr "Time in minutes, after which your status changes to not available." + +#: ../src/common/config.py:67 +msgid "Not available as a result of being idle" +msgstr "Not available as a result of being idle" + +#: ../src/common/config.py:85 +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:90 +msgid "Enable link-local/zeroconf messaging" +msgstr "Enable link-local/zeroconf messaging" + +#: ../src/common/config.py:93 +msgid "Language used by speller" +msgstr "Language used by speller" + +#: ../src/common/config.py:94 +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' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." + +#: ../src/common/config.py:95 +msgid "" +"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 least precise one. " +"This is used only if print_time is 'sometimes'." +msgstr "" +"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 least precise one. " +"This is used only if print_time is 'sometimes'." + +#: ../src/common/config.py:98 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "Treat * / _ pairs as possible formatting characters." + +#: ../src/common/config.py:99 +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:102 +msgid "" +"Uses ReStructured text markup to send HTML, plus ascii formatting if " +"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html (If you want to use this, install docutils)" +msgstr "" +"Uses ReStructured text markup to send HTML, plus ascii formatting if " +"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html (If you want to use this, install docutils)" + +#: ../src/common/config.py:111 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." +msgstr "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." + +#: ../src/common/config.py:112 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat." +msgstr "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat." + +#: ../src/common/config.py:135 +msgid "" +"This option let you customize timestamp that is printed in conversation. For " +"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " +"strftime for full documentation: http://docs.python.org/lib/module-time.html" +msgstr "" +"This option let you customize timestamp that is printed in conversation. For " +"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " +"strftime for full documentation: http://docs.python.org/lib/module-time.html" + +#: ../src/common/config.py:136 +msgid "Characters that are printed before the nickname in conversations" +msgstr "Characters that are printed before the nickname in conversations" + +#: ../src/common/config.py:137 +msgid "Characters that are printed after the nickname in conversations" +msgstr "Characters that are printed after the nickname in conversations" + +#: ../src/common/config.py:144 +msgid "Add * and [n] in roster title?" +msgstr "Add * and [n] in roster title?" + +#: ../src/common/config.py:145 +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." + +#: ../src/common/config.py:146 +msgid "How many minutes should last lines from previous conversation last." +msgstr "How many minutes should last lines from previous conversation last." + +#: ../src/common/config.py:147 +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." + +#: ../src/common/config.py:149 +msgid "How many lines to store for Ctrl+KeyUP." +msgstr "How many lines to store for Ctrl+KeyUP." + +#: ../src/common/config.py:152 +#, 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." + +#: ../src/common/config.py:155 +msgid "If checked, Gajim can be controlled remotely using gajim-remote." +msgstr "If ticked, Gajim can be controlled remotely using gajim-remote." + +#: ../src/common/config.py:156 +msgid "" +"If True, listen to D-Bus signals from NetworkManager and change the status " +"of accounts (provided they do not have listen_to_network_manager set to " +"False and they sync with global status) based upon the status of the network " +"connection." +msgstr "" +"If True, listen to D-Bus signals from NetworkManager and change the status " +"of accounts (provided they do not have listen_to_network_manager set to " +"False and they sync with global status) based upon the status of the network " +"connection." + +#: ../src/common/config.py:157 +msgid "" +"Sent chat state notifications. Can be one of all, composing_only, disabled." +msgstr "" +"Sent chat state notifications. Can be one of all, composing_only, disabled." + +#: ../src/common/config.py:158 +msgid "" +"Displayed chat state notifications in chat windows. Can be one of all, " +"composing_only, disabled." +msgstr "" +"Displayed chat state notifications in chat windows. Can be one of all, " +"composing_only, disabled." + +#: ../src/common/config.py:160 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes." +msgstr "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes." + +#: ../src/common/config.py:161 +msgid "Ask before closing a group chat tab/window." +msgstr "Ask before closing a group chat tab/window." + +#: ../src/common/config.py:162 +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Always ask before closing group chat tab/window in this space separated list " +"of group chat jids." + +#: ../src/common/config.py:163 +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Never ask before closing group chat tab/window in this space separated list " +"of group chat jids." + +#: ../src/common/config.py:166 +#, fuzzy +msgid "" +"Comma separated list of hosts that we send, in addition of local interfaces, " +"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:168 +msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." +msgstr "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." + +#: ../src/common/config.py:170 +msgid "Notify of events in the system trayicon." +msgstr "Notify of events in the system trayicon." + +#: ../src/common/config.py:176 +msgid "Show tab when only one conversation?" +msgstr "Show tab when only one conversation?" + +#: ../src/common/config.py:177 +msgid "Show tabbed notebook border in chat windows?" +msgstr "Show tabbed notebook border in chat windows?" + +#: ../src/common/config.py:178 +msgid "Show close button in tab?" +msgstr "Show close button in tab?" + +#: ../src/common/config.py:179 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "" + +#: ../src/common/config.py:188 +msgid "Preview new messages in notification popup?" +msgstr "" + +#: ../src/common/config.py:193 +msgid "" +"A semicolon-separated list of words that will be highlighted in group chats." +msgstr "" +"A semicolon-separated list of words that will be highlighted in group chats." + +#: ../src/common/config.py:194 +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:195 +msgid "" +"If True, Gajim will check if it's the default jabber client on each startup." +msgstr "" +"If True, Gajim will check if it's the default jabber client on each startup." + +#: ../src/common/config.py:196 +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." + +#: ../src/common/config.py:197 +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window." +msgstr "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window." + +#: ../src/common/config.py:199 +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:200 +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 "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or status message." + +#: ../src/common/config.py:201 +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 " +"group chat." +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 " +"group chat." + +#: ../src/common/config.py:203 +msgid "Background color of contacts when they just signed in." +msgstr "Background colour of contacts when they just signed in." + +#: ../src/common/config.py:204 +msgid "Background color of contacts when they just signed out." +msgstr "Background colour of contacts when they just signed out." + +#: ../src/common/config.py:206 +msgid "" +"If True, restored messages will use a smaller font than the default one." +msgstr "" +"If True, restored messages will use a smaller font than the default one." + +#: ../src/common/config.py:207 +msgid "Don't show avatar for the transport itself." +msgstr "Don't show avatar for the transport itself." + +#: ../src/common/config.py:208 +msgid "Don't show roster in the system taskbar." +msgstr "Don't show roster in the system taskbar." + +#: ../src/common/config.py:209 +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 "" +"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." + +#: ../src/common/config.py:211 +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected group " +"chat. Turn this option to False to stop sending sha info in group chat " +"presences." +msgstr "" +"Jabberd1.4 does not like sha info when one join a password protected group " +"chat. Turn this option to False to stop sending sha info in group chat " +"presences." + +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:214 +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 "" +"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." + +#: ../src/common/config.py:215 +msgid "If False, you will no longer see the avatar in the chat window." +msgstr "If False, you will no longer see the avatar in the chat window." + +#: ../src/common/config.py:216 +msgid "If True, pressing the escape key closes a tab/window." +msgstr "If True, pressing the escape key closes a tab/window." + +#: ../src/common/config.py:217 +#, fuzzy +msgid "Hides the buttons in chat windows." +msgstr "Hides the buttons in group chat window." + +#: ../src/common/config.py:218 +msgid "Hides the banner in a group chat window" +msgstr "Hides the banner in a group chat window" + +#: ../src/common/config.py:219 +msgid "Hides the banner in two persons chat window" +msgstr "Hides the banner in two persons chat window" + +#: ../src/common/config.py:220 +msgid "Hides the group chat occupants list in group chat window." +msgstr "Hides the group chat occupants list in group chat window." + +#: ../src/common/config.py:221 +msgid "" +"In a chat, show the nickname at the beginning of a line only when it's not " +"the same person talking than in previous message." +msgstr "" +"In a chat, show the nickname at the beginning of a line only when it's not " +"the same person talking than in previous message." + +#: ../src/common/config.py:222 +msgid "Indentation when using merge consecutive nickname." +msgstr "Indentation when using merge consecutive nickname." + +#: ../src/common/config.py:223 +#, fuzzy +msgid "Smooth scroll message in conversation window" +msgstr "IÅ¡siųsti žinutÄ™ ir uždaryti langÄ…" + +#: ../src/common/config.py:224 +msgid "List of colors that will be used to color nicknames in group chats." +msgstr "List of colours that will be used to colour nicknames in group chats." + +#: ../src/common/config.py:225 +msgid "Ctrl-Tab go to next composing tab when none is unread." +msgstr "Ctrl-Tab go to next composing tab when none is unread." + +#: ../src/common/config.py:226 +msgid "" +"Should we show the confirm metacontacts creation dialog or not? Empty string " +"means we never show the dialog." +msgstr "" +"Should we show the confirm metacontacts creation dialogue or not? Empty " +"string means we never show the dialogue." + +#: ../src/common/config.py:227 +msgid "" +"If True, you will be able to set a negative priority to your account in " +"account modification window. BE CAREFUL, when you are logged in with a " +"negative priority, you will NOT receive any message from your server." +msgstr "" +"If True, you will be able to set a negative priority to your account in " +"account modification window. BE CAREFUL, when you are logged in with a " +"negative priority, you will NOT receive any message from your server." + +#: ../src/common/config.py:228 +msgid "" +"If True, Gajim will use Gnome Keyring (if available) to store account " +"passwords." +msgstr "" +"If True, Gajim will use Gnome Keyring (if available) to store account " +"passwords." + +#: ../src/common/config.py:229 +msgid "" +"If True, Gajim will show number of online and total contacts in account and " +"group rows." +msgstr "" +"If True, Gajim will show number of online and total contacts in account and " +"group rows." + +#: ../src/common/config.py:230 +msgid "" +"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " +"as if they were of this type" +msgstr "" +"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " +"as if they were of this type" + +#: ../src/common/config.py:231 +msgid "" +"If True, Gajim will scroll and select the contact who sent you the last " +"message, if chat window is not already opened." +msgstr "" + +#: ../src/common/config.py:232 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" + +#: ../src/common/config.py:233 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "" + +#: ../src/common/config.py:234 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "" + +#: ../src/common/config.py:245 +msgid "" +"Priority will change automatically according to your status. Priorities are " +"defined in autopriority_* options." +msgstr "" +"Priority will change automatically according to your status. Priorities are " +"defined in autopriority_* options." + +#. yes, no, ask +#: ../src/common/config.py:275 +msgid "Jabberd2 workaround" +msgstr "Jabberd2 workaround" + +#: ../src/common/config.py:279 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"If ticked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." + +#: ../src/common/config.py:338 +msgid "Is OpenPGP enabled for this contact?" +msgstr "Is OpenPGP enabled for this contact?" + +#: ../src/common/config.py:339 ../src/common/config.py:342 +msgid "Language for which we want to check misspelled words" +msgstr "Language for which we want to check misspelt words" + +#: ../src/common/config.py:348 +msgid "all or space separated status" +msgstr "all or space separated status" + +#: ../src/common/config.py:349 +msgid "'yes', 'no', or 'both'" +msgstr "'yes', 'no', or 'both'" + +#: ../src/common/config.py:350 ../src/common/config.py:352 +#: ../src/common/config.py:353 ../src/common/config.py:356 +#: ../src/common/config.py:357 +msgid "'yes', 'no' or ''" +msgstr "'yes', 'no' or ''" + +#: ../src/common/config.py:363 +msgid "Sleeping" +msgstr "Sleeping" + +#: ../src/common/config.py:364 +msgid "Back soon" +msgstr "Back soon" + +#: ../src/common/config.py:364 +msgid "Back in some minutes." +msgstr "Back in some minutes." + +#: ../src/common/config.py:365 +msgid "Eating" +msgstr "Eating" + +#: ../src/common/config.py:365 +msgid "I'm eating, so leave me a message." +msgstr "I'm eating, so leave me a message." + +#: ../src/common/config.py:366 +msgid "Movie" +msgstr "Movie" + +#: ../src/common/config.py:366 +msgid "I'm watching a movie." +msgstr "I'm watching a movie." + +#: ../src/common/config.py:367 +msgid "Working" +msgstr "Working" + +#: ../src/common/config.py:367 +msgid "I'm working." +msgstr "I'm working." + +#: ../src/common/config.py:368 +msgid "Phone" +msgstr "Phone" + +#: ../src/common/config.py:368 +msgid "I'm on the phone." +msgstr "I'm on the phone." + +#: ../src/common/config.py:369 +msgid "Out" +msgstr "Out" + +#: ../src/common/config.py:369 +msgid "I'm out enjoying life." +msgstr "I'm out enjoying life." + +#: ../src/common/config.py:373 +msgid "I'm available." +msgstr "I'm available." + +#: ../src/common/config.py:374 +msgid "I'm free for chat." +msgstr "I'm free for chat." + +#: ../src/common/config.py:376 +msgid "I'm not available." +msgstr "I'm not available." + +#: ../src/common/config.py:377 +msgid "Do not disturb." +msgstr "Do not disturb." + +#: ../src/common/config.py:378 ../src/common/config.py:379 +msgid "Bye!" +msgstr "Bye!" + +#: ../src/common/config.py:388 +msgid "" +"Sound to play when a group chat message contains one of the words in " +"muc_highlight_words, or when a group chat message contains your nickname." +msgstr "" +"Sound to play when a group chat message contains one of the words in " +"muc_highlight_words, or when a group chat message contains your nickname." + +#: ../src/common/config.py:389 +msgid "Sound to play when any MUC message arrives." +msgstr "Sound to play when any MUC message arrives." + +#: ../src/common/config.py:398 ../src/common/optparser.py:208 +msgid "green" +msgstr "green" + +#: ../src/common/config.py:402 ../src/common/optparser.py:194 +msgid "grocery" +msgstr "grocery" + +#: ../src/common/config.py:406 +msgid "human" +msgstr "human" + +#: ../src/common/config.py:410 +msgid "marine" +msgstr "marine" + +#: ../src/common/connection_handlers.py:56 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 +msgid "Unable to load idle module" +msgstr "Unable to load idle module" + +#: ../src/common/connection_handlers.py:184 +#: ../src/common/connection_handlers.py:219 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +msgid "Wrong host" +msgstr "Wrong host" + +#: ../src/common/connection_handlers.py:184 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +#, fuzzy, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"The host you configured as the ft_override_host_to_send advanced option is " +"not valid, so ignored." + +#: ../src/common/connection_handlers.py:220 +msgid "Invalid local address? :-O" +msgstr "" + +#: ../src/common/connection_handlers.py:612 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Registration information for transport %s has not arrived in time" + +#: ../src/common/connection_handlers.py:1776 +#, python-format +msgid "Nickname not allowed: %s" +msgstr "Nickname not allowed: %s" + +#. we are banned +#. group chat does not exist +#: ../src/common/connection_handlers.py:1846 +#: ../src/common/connection_handlers.py:1849 +#: ../src/common/connection_handlers.py:1852 +#: ../src/common/connection_handlers.py:1855 +#: ../src/common/connection_handlers.py:1859 +#: ../src/common/connection_handlers.py:1868 +msgid "Unable to join group chat" +msgstr "Unable to join group chat" + +#: ../src/common/connection_handlers.py:1847 +#, fuzzy, python-format +msgid "You are banned from group chat %s." +msgstr "You are banned from this group chat." + +#: ../src/common/connection_handlers.py:1850 +#, fuzzy, python-format +msgid "Group chat %s does not exist." +msgstr "Such group chat does not exist." + +#: ../src/common/connection_handlers.py:1853 +msgid "Group chat creation is restricted." +msgstr "Group chat creation is restricted." + +#: ../src/common/connection_handlers.py:1856 +#, fuzzy, python-format +msgid "Your registered nickname must be used in group chat %s." +msgstr "Your registered nickname must be used." + +#: ../src/common/connection_handlers.py:1860 +#, fuzzy, python-format +msgid "You are not in the members list in groupchat %s." +msgstr "You are not in the members list." + +#: ../src/common/connection_handlers.py:1869 +#, fuzzy, python-format +msgid "" +"Your desired nickname in group chat %s is in use or registered by another " +"occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" + +#. Room has been destroyed. see +#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom +#: ../src/common/connection_handlers.py:1900 +#, fuzzy +msgid "Room has been destroyed" +msgstr "Authorisation has been removed" + +#: ../src/common/connection_handlers.py:1907 +#, python-format +msgid "You can join this room instead: %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1934 +msgid "I would like to add you to my roster." +msgstr "I would like to add you to my roster." + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1955 +#, python-format +msgid "we are now subscribed to %s" +msgstr "we are now subscribed to %s" + +#: ../src/common/connection_handlers.py:1957 +#, python-format +msgid "unsubscribe request from %s" +msgstr "unsubscribe request from %s" + +#: ../src/common/connection_handlers.py:1959 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "we are now unsubscribed from %s" + +#: ../src/common/connection_handlers.py:2081 +#, 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/connection.py:244 +#: ../src/common/zeroconf/connection_zeroconf.py:203 +#, python-format +msgid "Connection with account \"%s\" has been lost" +msgstr "Connection with account \"%s\" has been lost" + +#: ../src/common/connection.py:245 +msgid "Reconnect manually." +msgstr "Reconnect manually." + +#: ../src/common/connection.py:256 +#, fuzzy, python-format +msgid "Server %s answered wrongly to register request: %s" +msgstr "Transport %s answered wrongly to register request: %s" + +#. wrong answer +#: ../src/common/connection.py:264 +msgid "Invalid answer" +msgstr "Invalid answer" + +#: ../src/common/connection.py:265 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "Transport %s answered wrongly to register request: %s" + +#: ../src/common/connection.py:411 +#, fuzzy +msgid "Connection to proxy failed" +msgstr "Connection Failed" + +#: ../src/common/connection.py:465 ../src/common/connection.py:511 +#: ../src/common/connection.py:1067 +#: ../src/common/zeroconf/connection_zeroconf.py:237 +#, python-format +msgid "Could not connect to \"%s\"" +msgstr "Could not connect to \"%s\"" + +#: ../src/common/connection.py:479 +#, python-format +msgid "Connected to server %s:%s with %s" +msgstr "Connected to server %s:%s with %s" + +#: ../src/common/connection.py:512 +msgid "Check your connection or try again later" +msgstr "Check your connection or try again later" + +#: ../src/common/connection.py:537 +#, python-format +msgid "Authentication failed with \"%s\"" +msgstr "Authentication failed with \"%s\"" + +#: ../src/common/connection.py:538 +msgid "Please check your login and password for correctness." +msgstr "Please check your login and password for correctness." + +#: ../src/common/connection.py:581 +msgid "Error while removing privacy list" +msgstr "Error while removing privacy list" + +#: ../src/common/connection.py:582 +#, fuzzy, python-format +msgid "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." +msgstr "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." + +#. We didn't set a passphrase +#: ../src/common/connection.py:682 +#: ../src/common/zeroconf/connection_zeroconf.py:163 +msgid "OpenPGP passphrase was not given" +msgstr "OpenPGP passphrase was not given" + +#. we're not english +#. one in locale and one en +#: ../src/common/connection.py:845 +msgid "[This message is *encrypted* (See :JEP:`27`]" +msgstr "[This message is *encrypted* (See :JEP:`27`]" + +#: ../src/common/connection.py:916 +#: ../src/common/zeroconf/connection_zeroconf.py:423 +#, python-format +msgid "" +"Subject: %s\n" +"%s" +msgstr "" +"Subject: %s\n" +"%s" + +#: ../src/common/connection.py:1099 +msgid "Not fetched because of invisible status" +msgstr "Not fetched because of invisible status" + +#: ../src/common/contacts.py:294 +msgid "Not in roster" +msgstr "Not in roster" + +#. only say that to non Windows users +#: ../src/common/dbus_support.py:33 +msgid "D-Bus python bindings are missing in this computer" +msgstr "D-Bus python bindings are missing in this computer" + +#: ../src/common/dbus_support.py:34 +msgid "D-Bus capabilities of Gajim cannot be used" +msgstr "D-Bus capabilities of Gajim cannot be used" + +#: ../src/common/exceptions.py:22 +msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." +msgstr "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." + +#: ../src/common/exceptions.py:39 +msgid "Service not available: Gajim is not running, or remote_control is False" +msgstr "" +"Service not available: Gajim is not running, or remote_control is False" + +#: ../src/common/exceptions.py:47 +msgid "D-Bus is not present on this machine or python module is missing" +msgstr "D-Bus is not present on this machine or python module is missing" + +#: ../src/common/exceptions.py:55 +msgid "" +"Session bus is not available.\n" +"Try reading http://trac.gajim.org/wiki/GajimDBus" +msgstr "" +"Session bus is not available.\n" +"Try reading http://trac.gajim.org/wiki/GajimDBus" + +#: ../src/common/fuzzyclock.py:42 +msgid "one" +msgstr "one" + +#: ../src/common/fuzzyclock.py:42 +msgid "two" +msgstr "two" + +#: ../src/common/fuzzyclock.py:42 +msgid "three" +msgstr "three" + +#: ../src/common/fuzzyclock.py:42 +msgid "four" +msgstr "four" + +#: ../src/common/fuzzyclock.py:42 +msgid "five" +msgstr "five" + +#: ../src/common/fuzzyclock.py:42 +msgid "six" +msgstr "six" + +#: ../src/common/fuzzyclock.py:43 +msgid "seven" +msgstr "seven" + +#: ../src/common/fuzzyclock.py:43 +msgid "eight" +msgstr "eight" + +#: ../src/common/fuzzyclock.py:43 +msgid "nine" +msgstr "nine" + +#: ../src/common/fuzzyclock.py:43 +msgid "ten" +msgstr "ten" + +#: ../src/common/fuzzyclock.py:43 +msgid "eleven" +msgstr "eleven" + +#: ../src/common/fuzzyclock.py:44 +msgid "twelve" +msgstr "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). ''' +#. A "singular-form". It is used when talking about hour 0 +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +msgid "$0 o'clock" +msgstr "$0 o'clock" + +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +msgid "five past $0" +msgstr "five past $0" + +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +msgid "ten past $0" +msgstr "ten past $0" + +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +msgid "quarter past $0" +msgstr "quarter past $0" + +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +msgid "twenty past $0" +msgstr "twenty past $0" + +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +msgid "twenty five past $0" +msgstr "twenty five past $0" + +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +msgid "half past $0" +msgstr "half past $0" + +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +msgid "twenty five to $1" +msgstr "twenty five to $1" + +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +msgid "twenty to $1" +msgstr "twenty to $1" + +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +msgid "quarter to $1" +msgstr "quarter to $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "ten to $1" +msgstr "ten to $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "five to $1" +msgstr "five to $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:61 +msgid "$1 o'clock" +msgstr "$1 o'clock" + +#: ../src/common/fuzzyclock.py:64 +msgid "Night" +msgstr "Night" + +#: ../src/common/fuzzyclock.py:64 +msgid "Early morning" +msgstr "Early morning" + +#: ../src/common/fuzzyclock.py:64 +msgid "Morning" +msgstr "Morning" + +#: ../src/common/fuzzyclock.py:64 +msgid "Almost noon" +msgstr "Almost noon" + +#: ../src/common/fuzzyclock.py:65 +msgid "Noon" +msgstr "Noon" + +#: ../src/common/fuzzyclock.py:65 +msgid "Afternoon" +msgstr "Afternoon" + +#: ../src/common/fuzzyclock.py:65 +msgid "Evening" +msgstr "Evening" + +#: ../src/common/fuzzyclock.py:65 +msgid "Late evening" +msgstr "Late evening" + +#: ../src/common/fuzzyclock.py:67 +msgid "Start of week" +msgstr "Start of week" + +#: ../src/common/fuzzyclock.py:67 +msgid "Middle of week" +msgstr "Middle of week" + +#: ../src/common/fuzzyclock.py:67 +msgid "End of week" +msgstr "End of week" + +#: ../src/common/fuzzyclock.py:68 +msgid "Weekend!" +msgstr "Weekend!" + +#: ../src/common/helpers.py:115 +msgid "Invalid character in username." +msgstr "Invalid character in username." + +#: ../src/common/helpers.py:120 +msgid "Server address required." +msgstr "Server address required." + +#: ../src/common/helpers.py:125 +msgid "Invalid character in hostname." +msgstr "Invalid character in hostname." + +#: ../src/common/helpers.py:131 +msgid "Invalid character in resource." +msgstr "Invalid character in resource." + +#. GiB means gibibyte +#: ../src/common/helpers.py:171 +#, python-format +msgid "%s GiB" +msgstr "%s GiB" + +#. GB means gigabyte +#: ../src/common/helpers.py:174 +#, python-format +msgid "%s GB" +msgstr "%s GB" + +#. MiB means mibibyte +#: ../src/common/helpers.py:178 +#, python-format +msgid "%s MiB" +msgstr "%s MiB" + +#. MB means megabyte +#: ../src/common/helpers.py:181 +#, python-format +msgid "%s MB" +msgstr "%s MB" + +#. KiB means kibibyte +#: ../src/common/helpers.py:185 +#, python-format +msgid "%s KiB" +msgstr "%s KiB" + +#. KB means kilo bytes +#: ../src/common/helpers.py:188 +#, python-format +msgid "%s KB" +msgstr "%s KB" + +#. B means bytes +#: ../src/common/helpers.py:191 +#, python-format +msgid "%s B" +msgstr "%s B" + +#: ../src/common/helpers.py:222 +msgid "_Busy" +msgstr "_Užimtas" + +#: ../src/common/helpers.py:224 +msgid "Busy" +msgstr "Užimtas" + +#: ../src/common/helpers.py:227 +msgid "_Not Available" +msgstr "_Nepasiekiamas" + +#: ../src/common/helpers.py:232 +msgid "_Free for Chat" +msgstr "_Laisvas Pokalbiams" + +#: ../src/common/helpers.py:234 +msgid "Free for Chat" +msgstr "Laisvas Pokalbiams" + +#: ../src/common/helpers.py:237 +msgid "_Available" +msgstr "_PrisijungÄ™s" + +#: ../src/common/helpers.py:239 +msgid "Available" +msgstr "PrisijungÄ™s" + +#: ../src/common/helpers.py:241 +msgid "Connecting" +msgstr "Jungiamasi" + +#: ../src/common/helpers.py:244 +msgid "A_way" +msgstr "_NuÄ—jÄ™s" + +#: ../src/common/helpers.py:249 +msgid "_Offline" +msgstr "A_tsijungÄ™s" + +#: ../src/common/helpers.py:251 +msgid "Offline" +msgstr "AtsijungÄ™s" + +#: ../src/common/helpers.py:254 +msgid "_Invisible" +msgstr "N_ematomas" + +#: ../src/common/helpers.py:260 +msgid "?contact has status:Unknown" +msgstr "BÅ«klÄ— nežinoma" + +#: ../src/common/helpers.py:262 +msgid "?contact has status:Has errors" +msgstr "BÅ«klÄ— klaidinga" + +#: ../src/common/helpers.py:267 +msgid "?Subscription we already have:None" +msgstr "Joks" + +#: ../src/common/helpers.py:269 +msgid "To" +msgstr "Kam" + +#: ../src/common/helpers.py:273 +msgid "Both" +msgstr "Abu" + +#: ../src/common/helpers.py:281 +msgid "?Ask (for Subscription):None" +msgstr "Joks" + +#: ../src/common/helpers.py:283 +msgid "Subscribe" +msgstr "Subscribe" + +#: ../src/common/helpers.py:292 +msgid "?Group Chat Contact Role:None" +msgstr "None" + +#: ../src/common/helpers.py:295 +msgid "Moderators" +msgstr "Moderators" + +#: ../src/common/helpers.py:297 +msgid "Moderator" +msgstr "Moderator" + +#: ../src/common/helpers.py:300 +msgid "Participants" +msgstr "Participants" + +#: ../src/common/helpers.py:302 +msgid "Participant" +msgstr "Participant" + +#: ../src/common/helpers.py:305 +msgid "Visitors" +msgstr "Visitors" + +#: ../src/common/helpers.py:307 +msgid "Visitor" +msgstr "Visitor" + +#: ../src/common/helpers.py:313 +msgid "?Group Chat Contact Affiliation:None" +msgstr "None" + +#: ../src/common/helpers.py:315 +msgid "Owner" +msgstr "Owner" + +#: ../src/common/helpers.py:317 +msgid "Administrator" +msgstr "Administrator" + +#: ../src/common/helpers.py:319 +msgid "Member" +msgstr "Member" + +#: ../src/common/helpers.py:358 +msgid "is paying attention to the conversation" +msgstr "is paying attention to the conversation" + +#: ../src/common/helpers.py:360 +msgid "is doing something else" +msgstr "is doing something else" + +#: ../src/common/helpers.py:362 +msgid "is composing a message..." +msgstr "is composing a message..." + +#. paused means he or she was composing but has stopped for a while +#: ../src/common/helpers.py:365 +msgid "paused composing a message" +msgstr "paused composing a message" + +#: ../src/common/helpers.py:367 +msgid "has closed the chat window or tab" +msgstr "has closed the chat window or tab" + +#: ../src/common/helpers.py:913 ../src/common/helpers.py:920 +#, fuzzy, python-format +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "Siųsti žinutÄ™" +msgstr[1] "Siųsti žinutÄ™" + +#: ../src/common/helpers.py:926 +#, python-format +msgid " from room %s" +msgstr "" + +#: ../src/common/helpers.py:929 ../src/common/helpers.py:948 +#, python-format +msgid " from user %s" +msgstr "" + +#: ../src/common/helpers.py:931 +#, python-format +msgid " from %s" +msgstr "" + +#: ../src/common/helpers.py:938 ../src/common/helpers.py:945 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "" +msgstr[1] "" + +#: ../src/common/helpers.py:978 +#, python-format +msgid "Gajim - %s" +msgstr "Gajim - %s" + +#. we talk about a file +#: ../src/common/optparser.py:60 +#, python-format +msgid "error: cannot open %s for reading" +msgstr "error: cannot open %s for reading" + +#: ../src/common/optparser.py:203 ../src/common/optparser.py:204 +msgid "cyan" +msgstr "cyan" + +#: ../src/common/optparser.py:320 +msgid "migrating logs database to indices" +msgstr "migrating logs database to indices" + +#: ../src/common/passwords.py:82 +#, python-format +msgid "Gajim account %s" +msgstr "Gajim account %s" + +#: ../src/common/zeroconf/client_zeroconf.py:135 +#: ../src/common/zeroconf/client_zeroconf.py:218 +msgid "Connection to host could not be established" +msgstr "Connection to host could not be established" + +#: ../src/common/zeroconf/client_zeroconf.py:192 +msgid "" +"Connection to host could not be established: Incorrect answer from server." +msgstr "" +"Connection to host could not be established: Incorrect answer from server." + +#: ../src/common/zeroconf/client_zeroconf.py:352 +msgid "" +"Connection to host could not be established: Timeout while sending data." +msgstr "" +"Connection to host could not be established: Timeout while sending data." + +#: ../src/common/zeroconf/client_zeroconf.py:638 +msgid "Contact is offline. Your message could not be sent." +msgstr "Contact is offline. Your message could not be sent." + +#: ../src/common/zeroconf/connection_zeroconf.py:204 +msgid "To continue sending and receiving messages, you will need to reconnect." +msgstr "" +"To continue sending and receiving messages, you will need to reconnect." + +#: ../src/common/zeroconf/connection_zeroconf.py:227 +msgid "Avahi error" +msgstr "Avahi error" + +#: ../src/common/zeroconf/connection_zeroconf.py:227 +#, python-format +msgid "" +"%s\n" +"Link-local messaging might not work properly." +msgstr "" +"%s\n" +"Link-local messaging might not work properly." + +#: ../src/common/zeroconf/connection_zeroconf.py:238 +msgid "Please check if Avahi is installed." +msgstr "Please check if Avahi is installed." + +#: ../src/common/zeroconf/connection_zeroconf.py:247 +#: ../src/common/zeroconf/connection_zeroconf.py:251 +msgid "Could not start local service" +msgstr "Could not start local service" + +#: ../src/common/zeroconf/connection_zeroconf.py:248 +#, python-format +msgid "Unable to bind to port %d." +msgstr "Unable to bind to port %d." + +#: ../src/common/zeroconf/connection_zeroconf.py:252 +#: ../src/common/zeroconf/connection_zeroconf.py:347 +msgid "Please check if avahi-daemon is running." +msgstr "Please check if avahi-daemon is running." + +#: ../src/common/zeroconf/connection_zeroconf.py:346 +#, python-format +msgid "Could not change status of account \"%s\"" +msgstr "Could not change status of account \"%s\"" + +#: ../src/common/zeroconf/connection_zeroconf.py:363 +msgid "" +"You are not connected or not visible to others. Your message could not be " +"sent." +msgstr "" +"You are not connected or not visible to others. Your message could not be " +"sent." + +#. we're not english +#: ../src/common/zeroconf/connection_zeroconf.py:375 +msgid "[This message is encrypted]" +msgstr "[This message is encrypted]" + +#~ msgid "_Discover Services..." +#~ msgstr "_IeÅ¡koti paslaugų..." + +#~ msgid "_Retype Password:" +#~ msgstr "_Pakartokite slaptažodį:" + +#~ msgid "_Use proxy" +#~ msgstr "_Naudoti proksi" + +#~ msgid "Accounts" +#~ msgstr "Prieiga" + +#~ msgid "" +#~ "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.\n" +#~ "This is only available if python-avahi is installed and avahi-daemon is " +#~ "running." +#~ msgstr "" +#~ "Jei pažymÄ—ta, visi lokalÅ«s asmenys, kurie naudoja pokalbių programas, " +#~ "palaikanÄias Bonjour (tokias kaip: iChat, Trillian ar Gaim) bus rodomi " +#~ "asmenų sÄ…raÅ¡e. Jums nereikia bÅ«ti prisijungusiam prie jabber serverio, " +#~ "kad tai veiktų.\n" +#~ "Tai veikia, tik tuo atveju, jei python-avahi yra įdiegtas ir avahi-deamon " +#~ "yra paleistas." + +#~ msgid "" +#~ "If you have 2 or more accounts and this is checked, Gajim will list all " +#~ "contacts as if you had one account" +#~ msgstr "" +#~ "Jei jÅ«s turite kelias prieigas ir Å¡i žymÄ— yra pažymÄ—ta, Gajim pateiks " +#~ "visų asmenų sÄ…raÅ¡Ä… taip, lyg jie visi priklausytų vienai prieigai" + +#~ msgid "_Enable link-local messaging" +#~ msgstr "Ä®jungti lokalÅ«jį pokalbių r_ežimÄ…" + +#~ msgid "_Modify" +#~ msgstr "_Keisti" + +#~ msgid "_Compact View Alt+C" +#~ msgstr "_KompaktiÅ¡ka iÅ¡vaizda Alt+C" + +#~ msgid "<b>Interface Customization</b>" +#~ msgstr "<b>IÅ¡vaizdos keitimas</b>" + +#~ msgid "Also known as iChat style" +#~ msgstr "Taip pat žinomas, kaip iChat stilius" + +#~ msgid "Chat" +#~ msgstr "Pokalbis" + +#~ msgid "E_very 5 minutes" +#~ msgstr "_Kas 5 minutes" + +#~ msgid "" +#~ "Gajim will automatically show new events by popping up the relative window" +#~ msgstr "Gajim automatiÅ¡kai rodys naujus įvykius iÅ¡Å¡okanÄiame langelyje." + +#~ msgid "" +#~ "Gajim will notify you for new events via a popup in the bottom right of " +#~ "the screen" +#~ msgstr "" +#~ "Gajim praneÅ¡ apie naujus įvykius iÅ¡Å¡okanÄiame langelyje, kuris pasirodys " +#~ "deÅ¡iniajame apatiniame ekrano kampe" + +#~ msgid "" +#~ "Gajim will notify you via a popup window in the bottom right of the " +#~ "screen about contacts that just signed in" +#~ msgstr "" +#~ "Gajim rodys praneÅ¡imus apie kÄ… tik prisijungusius asmenis iÅ¡Å¡okanÄiame " +#~ "langelyje, deÅ¡iniajame apatiniame ekrano kampe" + +#~ msgid "" +#~ "Gajim will only change the icon of the contact that triggered the new " +#~ "event" +#~ msgstr "Gajim keis tik tų asmenų piktogramas, kurie atliko naujÄ… įvykį" + +#~ 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 "" +#~ "Jei pažymÄ—ta, Gajim atsimins kontaktų sÄ…raÅ¡o ir pokalbių lango pozicijas " +#~ "ir dydžius ekrane sekanÄio paleidimo metu" + +#~ msgid "On every _message" +#~ msgstr "_Kiekvienai žinutei" + +#~ msgid "Outgoing Chat state noti_fications:" +#~ msgstr "IÅ¡einanÄių pokalbių bÅ«klÄ—s praneÅ¡imai:" + +#~ msgid "Print time:" +#~ msgstr "Spausdinimo laikas:" + +#~ msgid "Save _position and size for roster and chat windows" +#~ msgstr "Ä®siminti kontakų sÄ…raÅ¡o ir pokalbių langų pozicijas ir dydžius" + +#~ msgid "Show only in _roster" +#~ msgstr "Rodyti tik kontaktų _sÄ…raÅ¡Ä…" + +#~ msgid "Use t_rayicon (aka. notification area icon)" +#~ msgstr "Naudoti piktogramÄ… trÄ—juje (praneÅ¡imų panelÄ—s piktograma)" + +#~ 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 "" +#~ "Naujam įvykiui ivykus (atÄ—jus žinutei, failui ir pan.), sekantys bÅ«dai " +#~ "gali bÅ«ti naudojami jums informuoti apie tai. Pastaba: naujų žinuÄių " +#~ "įvykiai pasirodys tik jei tai bus nauja žinutÄ— nuo kurio nors asmens, su " +#~ "kuriuo jÅ«s dar nebuvote pradÄ—jÄ™s pokalbio" + +#~ msgid "_Never" +#~ msgstr "_Niekada" + +#~ msgid "_Notify me about it" +#~ msgstr "_PraneÅ¡ti man apie tai" + +#~ msgid "_Pop it up" +#~ msgstr "_Rodyk" + +#~ msgid "_Remove from Roster" +#~ msgstr "Å a_linti iÅ¡ Kontaktų SÄ…raÅ¡o" + +#~ msgid "Add _Contact" +#~ msgstr "Ä®traukti _Asmenį" + +#~ msgid "_Filter:" +#~ msgstr "_Filtras:" + +#~ msgid "" +#~ "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" +#~ "\n" +#~ "Highlighting misspelled words feature will not be used" +#~ msgstr "" +#~ "If that is not your language for which you want to highlight misspelt " +#~ "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" +#~ "\n" +#~ "Highlighting misspelt words feature will not be used" + +#~ msgid "Every %s _minutes" +#~ msgstr "Every %s _minutes" + +#~ msgid "You must enter a password for the new account." +#~ msgstr "You must enter a password for the new account." + +#~ msgid "%s does not appear to be a valid JID" +#~ msgstr "%s does not appear to be a valid JID" + +#~ msgid "Drop %s in group %s" +#~ msgstr "Drop %s in group %s" + +#~ msgid "Make %s and %s metacontacts" +#~ msgstr "Make %s and %s metacontacts" + +#~ msgid "Hides the buttons in two persons chat window." +#~ msgstr "Hides the buttons in two persons chat window." + +#~ msgid " %d unread single message" +#~ msgid_plural " %d unread single messages" +#~ msgstr[0] " %d unread single message" +#~ msgstr[1] " %d unread single messages" + +#~ msgid " %d unread group chat message" +#~ msgid_plural " %d unread group chat messages" +#~ msgstr[0] " %d unread group chat message" +#~ msgstr[1] " %d unread group chat messages" + +#~ msgid " %d unread private message" +#~ msgid_plural " %d unread private messages" +#~ msgstr[0] " %d unread private message" +#~ msgstr[1] " %d unread private messages" + +#~ msgid "Error while adding service. %s" +#~ msgstr "Error while adding service. %s" + +#~ msgid "gtk+" +#~ msgstr "gtk+" + +#~ msgid "Private Chat" +#~ msgstr "Private Chat" + +#~ msgid "Group Chat" +#~ msgstr "Group Chat" + +#~ msgid "invisible" +#~ msgstr "invisible" + +#~ msgid "offline" +#~ msgstr "offline" + +#~ msgid "I'm %s" +#~ msgstr "I'm %s" + +#~ msgid "2003-12-13T18:30:02Z" +#~ msgstr "2003-12-13T18:30:02Z" + +#~ msgid "<small>Romeo and Juliet</small>" +#~ msgstr "<small>Romeo and Juliet</small>" + +#~ msgid "Old stories" +#~ msgstr "Old stories" + +#~ msgid "Soliloquy" +#~ msgstr "Soliloquy" + +#~ msgid "A_fter nickname:" +#~ msgstr "A_fter nickname:" + +#~ msgid "B_efore nickname:" +#~ msgstr "B_efore nickname:" + +#~ msgid "_After time:" +#~ msgstr "_After time:" + +#~ msgid "_Before time:" +#~ msgstr "_Before time:" + +#~ msgid "_Publish" +#~ msgstr "_Publish" + +#~ msgid "_Retrieve" +#~ msgstr "_Retrieve" + +#~ msgid "Information published" +#~ msgstr "Information published" + +#~ msgid "Without a connection, you can not get your contact information." +#~ msgstr "Without a connection, you can not get your contact information." + +#~ msgid "This is result of query." +#~ msgstr "This is result of query." + +#~ msgid "Edit items on the list" +#~ msgstr "Edit items on the list" diff --git a/po/pl.po b/po/pl.po index 39fab72d4e..930265fa14 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,18 +5,17 @@ # Automatically generated, 2005. # # -#: ../src/chat_control.py:1182 ../src/gajim-remote.py:203 -#: ../src/gajim-remote.py:210 ../src/gajim-remote.py:236 -#: ../src/gajim-remote.py:237 ../src/gajim-remote.py:243 -#: ../src/gajim-remote.py:244 ../src/gajim-remote.py:245 -#: ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:217 ../src/gajim-remote.py:224 +#: ../src/gajim-remote.py:250 ../src/gajim-remote.py:251 +#: ../src/gajim-remote.py:257 ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:259 ../src/gajim-remote.py:260 msgid "" msgstr "" "Project-Id-Version: gajim 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-05-02 20:42+0200\n" +"POT-Creation-Date: 2007-11-07 14:56+0100\n" "PO-Revision-Date: 2006-11-08 09:01+0100\n" -"Last-Translator: Maciej Chojnacki <byte@byte.livenet.pl>\n" +"Last-Translator: Maciej Chojnacki <maciej.chojnacki@gmail.com>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,36 +36,36 @@ msgid "Jabber IM Client" msgstr "Klient komunikatora Jabber" #: ../data/glade/account_context_menu.glade.h:1 -msgid "Send Single _Message..." -msgstr "WyÅ›lij _wiadomość..." +#: ../data/glade/roster_window.glade.h:8 +msgid "Join _Group Chat..." +msgstr "DoÅ‚Ä…cz do _pokoju" #: ../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/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_Wyszukuj usÅ‚ugi" #: ../data/glade/account_context_menu.glade.h:4 msgid "_Execute Command..." msgstr "_Wykonaj komendÄ™" #: ../data/glade/account_context_menu.glade.h:5 -#: ../data/glade/roster_window.glade.h:16 -#: ../data/glade/systray_context_menu.glade.h:6 -msgid "_Group Chat" -msgstr "_Pokój" +msgid "_Modify Account" +msgstr "_Modyfikuj konto" #: ../data/glade/account_context_menu.glade.h:6 -#: ../data/glade/zeroconf_context_menu.glade.h:1 -msgid "_Modify Account..." -msgstr "_Modyfikuj konto..." - -#: ../data/glade/account_context_menu.glade.h:7 msgid "_Open Gmail Inbox" msgstr "_Otwórz skrzynkÄ™ Gmail" +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:23 +msgid "_Start Chat..." +msgstr "_Rozpocznij rozmowÄ™" + #: ../data/glade/account_context_menu.glade.h:8 #: ../data/glade/zeroconf_context_menu.glade.h:2 msgid "_Status" @@ -74,11 +73,11 @@ msgstr "_Status" #: ../data/glade/account_creation_wizard_window.glade.h:1 msgid "" -"<b>Account is being created</b>\n" +"<b>Connecting to server</b>\n" "\n" "Please wait..." msgstr "" -"<b>Konto jest tworzone</b>\n" +"<b>ÅÄ…czenie z serwerem</b>\n" "\n" "proszÄ™ czekać..." @@ -91,50 +90,67 @@ msgid "<b>Please fill in the data for your new account</b>" msgstr "<b>Wpisz dane do swojego nowego konta</b>" #: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "<b>Please select a server</b>" +msgstr "<b>Wybierz serwer</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 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 +#: ../data/glade/account_creation_wizard_window.glade.h:8 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 +#: ../data/glade/account_creation_wizard_window.glade.h:9 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 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:11 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_creation_wizard_window.glade.h:12 #: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:23 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:7 -msgid "Pass_word:" -msgstr "_HasÅ‚o:" - #: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "ZarzÄ…dzaj..." + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Prox_y:" +msgstr "_PoÅ›rednik:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 #: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:47 msgid "Save pass_word" msgstr "Zapisz _hasÅ‚o" -#: ../data/glade/account_creation_wizard_window.glade.h:14 +#: ../data/glade/account_creation_wizard_window.glade.h:16 msgid "Servers Features" msgstr "MożliwoÅ›ci serwerów" -#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_creation_wizard_window.glade.h:17 msgid "Set my profile when I connect" msgstr "Ustaw profil po poÅ‚Ä…czeniu" -#: ../data/glade/account_creation_wizard_window.glade.h:16 +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "Użyj wÅ‚asnej nazwy hosta/portu" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 msgid "" "You need to have an account in order to connect\n" "to the Jabber network." @@ -142,67 +158,63 @@ msgstr "" "Musisz posiadać konto aby poÅ‚Ä…czyć siÄ™\n" " z sieciÄ… Jabber." -#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_creation_wizard_window.glade.h:21 msgid "Your JID:" msgstr "Twój JID:" -#: ../data/glade/account_creation_wizard_window.glade.h:19 -#: ../data/glade/roster_window.glade.h:11 +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 msgid "_Advanced" msgstr "Z_aawansowane" -#: ../data/glade/account_creation_wizard_window.glade.h:20 +#: ../data/glade/account_creation_wizard_window.glade.h:23 msgid "_Finish" msgstr "_ZakoÅ„cz" -#: ../data/glade/account_creation_wizard_window.glade.h:21 -#: ../data/glade/manage_proxies_window.glade.h:10 -msgid "_Host:" -msgstr "_Host:" +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Hostname:" +msgstr "_Nazwa hosta: " -#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_creation_wizard_window.glade.h:25 #: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 msgid "_Password:" msgstr "_HasÅ‚o:" -#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/account_creation_wizard_window.glade.h:26 #: ../data/glade/manage_proxies_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:27 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/account_creation_wizard_window.glade.h:28 #: ../data/glade/manage_proxies_window.glade.h:12 msgid "_Username:" msgstr "_Nazwa użytkownika:" #: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 #: ../data/glade/preferences_window.glade.h:8 msgid "<b>Miscellaneous</b>" msgstr "<b>Różne</b>" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "<b>OpenPGP</b>" msgstr "<b>OpenPGP</b>" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "<b>Personal Information</b>" msgstr "<b>Informacje o sobie</b>" #: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 msgid "Account" msgstr "Konto" @@ -211,23 +223,28 @@ msgid "Account Modification" msgstr "Modyfikacja konta" #: ../data/glade/account_modification_window.glade.h:6 +#: ../data/glade/accounts_window.glade.h:5 msgid "Administration operations" msgstr "Operacje administracyjne" #: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 msgid "Auto-reconnect when connection is lost" msgstr "Automatyczne poÅ‚Ä…cz po zerwaniu poÅ‚Ä…czenia" #: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 #: ../data/glade/zeroconf_properties_window.glade.h:3 msgid "C_onnect on Gajim startup" msgstr "P_oÅ‚Ä…cz przy starcie programu" #: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 msgid "Chan_ge Password" msgstr "Z_mieÅ„ hasÅ‚o" #: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/accounts_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 " @@ -239,47 +256,60 @@ msgstr "" "tylko serwer daje takÄ… możliwość. Ta opcja wyÅ‚Ä…cza TLS" #: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/accounts_window.glade.h:10 #: ../data/glade/zeroconf_properties_window.glade.h:4 msgid "Choose _Key..." msgstr "Wybierz _klucz..." #: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_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:13 +#: ../data/glade/accounts_window.glade.h:12 msgid "Click to request authorization to all contacts of another account" -msgstr "Kliknij aby poprosić o autoryzacjÄ™ od wszystkich kontaktów z innego konta" +msgstr "" +"Kliknij aby poprosić o autoryzacjÄ™ od wszystkich kontaktów z innego konta" #: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 msgid "Connection" msgstr "PoÅ‚Ä…czenie" #: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 msgid "Edit Personal Information..." msgstr "ZmieÅ„ informacje o sobie..." +#. No configured account #: ../data/glade/account_modification_window.glade.h:16 -#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:458 -#: ../src/notify.py:480 ../src/notify.py:492 ../src/common/helpers.py:914 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:476 +#: ../src/notify.py:498 ../src/notify.py:510 ../src/common/helpers.py:982 +#: ../src/common/helpers.py:994 msgid "Gajim" msgstr "Gajim" +#. General group cannot be changed #: ../data/glade/account_modification_window.glade.h:17 -#: ../data/glade/preferences_window.glade.h:51 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 #: ../data/glade/zeroconf_properties_window.glade.h:7 -#: ../src/roster_window.py:348 ../src/roster_window.py:573 -#: ../src/roster_window.py:1254 ../src/roster_window.py:1613 -#: ../src/roster_window.py:2341 ../src/roster_window.py:2383 -#: ../src/roster_window.py:2420 ../src/common/contacts.py:284 +#: ../src/roster_window.py:365 ../src/roster_window.py:630 +#: ../src/roster_window.py:1366 ../src/roster_window.py:1733 +#: ../src/roster_window.py:2117 ../src/roster_window.py:2627 +#: ../src/roster_window.py:2745 ../src/common/contacts.py:314 msgid "General" msgstr "Ogólne" #: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 msgid "Hostname: " msgstr "Nazwa hosta: " #: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 msgid "" "If checked, Gajim will also broadcast some more IPs except from just your " "IP, so file transfer has higher chances of working." @@ -288,6 +318,7 @@ msgstr "" "Twoim, tak aby przesyÅ‚anie plików przebiegaÅ‚o sprawniej." #: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/accounts_window.glade.h:24 msgid "" "If checked, Gajim will send keep-alive packets to prevent connection timeout " "which results in disconnection" @@ -305,6 +336,7 @@ msgstr "" "z prawem do odczytu tylko dla ciebie" #: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/accounts_window.glade.h:25 #: ../data/glade/zeroconf_properties_window.glade.h:9 msgid "" "If checked, Gajim, when launched, will automatically connect to jabber using " @@ -314,6 +346,7 @@ msgstr "" "wykorzystaniem tego konta" #: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/accounts_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:10 msgid "" "If checked, any change to the global status (handled by the combobox at the " @@ -324,46 +357,49 @@ msgstr "" "menu na dole okna listy kontaktów) wpÅ‚ynie odpowiednio na status tego konta" #: ../data/glade/account_modification_window.glade.h:25 +#: ../data/glade/accounts_window.glade.h:29 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:26 -msgid "Manage..." -msgstr "ZarzÄ…dzaj..." - #: ../data/glade/account_modification_window.glade.h:27 -#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1623 -#: ../src/config.py:3301 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1526 +#: ../src/config.py:2002 msgid "No key selected" msgstr "Nie wybrano żadnego klucza" #. None means no proxy profile selected #. GPG Key #: ../data/glade/account_modification_window.glade.h:29 -#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1196 -#: ../src/config.py:1201 ../src/config.py:1385 ../src/config.py:1613 -#: ../src/config.py:1622 ../src/config.py:1682 ../src/config.py:1756 -#: ../src/config.py:3291 ../src/config.py:3300 ../src/dialogs.py:281 -#: ../src/dialogs.py:283 ../src/roster_window.py:1717 -#: ../src/roster_window.py:1724 ../src/roster_window.py:1731 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1115 +#: ../src/config.py:1186 ../src/config.py:1435 ../src/config.py:1440 +#: ../src/config.py:1900 ../src/config.py:1987 ../src/config.py:2001 +#: ../src/config.py:3083 ../src/config.py:3129 ../src/dialogs.py:342 +#: ../src/dialogs.py:344 ../src/roster_window.py:1837 +#: ../src/roster_window.py:1844 ../src/roster_window.py:1851 msgid "None" msgstr "Å»aden" #: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 #: ../data/glade/profile_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:17 msgid "Personal Information" msgstr "Informacje osobiste" #: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 msgid "Port: " msgstr "Port: " #: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 msgid "Priori_ty:" msgstr "Priory_tet:" #: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/accounts_window.glade.h:40 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 " @@ -374,18 +410,22 @@ msgstr "" "który ma wyższy priorytet, bÄ™dzie odbieraÅ‚ wiadomoÅ›ci" #: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 msgid "Priority will change automatically according to your status." msgstr "Priorytet ulegnie zmianie automatycznie, stosownie do twojego statusu." #: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 msgid "Proxy:" msgstr "PoÅ›rednik:" #: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 msgid "Resour_ce:" msgstr "Za_sób: " #: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/accounts_window.glade.h:45 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 " @@ -405,41 +445,46 @@ msgid "Save _passphrase (insecure)" msgstr "Zapisz _hasÅ‚o (nie jest to bezpieczne)" #: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:46 #: ../data/glade/zeroconf_properties_window.glade.h:19 msgid "Save conversation _logs for all contacts" msgstr "Zapisz _logi rozmów dla wszystkich kontaktów" #: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:48 msgid "Send keep-alive packets" msgstr "WysyÅ‚aj pakiety podtrzymujÄ…ce" #: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:49 #: ../data/glade/zeroconf_properties_window.glade.h:20 msgid "Synch_ronize account status with global status" msgstr "Synch_ronizuj status konta z globalnym statusem" #: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:50 +#: ../data/glade/synchronise_contacts_dialog.glade.h:2 #: ../data/glade/synchronise_select_account_dialog.glade.h:2 msgid "Synchronise contacts" msgstr "Synchronizuj kontakty" #: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 msgid "Use _SSL (legacy)" msgstr "Korzystaj z _SSL" -#: ../data/glade/account_modification_window.glade.h:45 -msgid "Use custom hostname/port" -msgstr "Użyj wÅ‚asnej nazwy hosta/portu" - #: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 msgid "Use file transfer proxies" msgstr "Używaj serwerów proxy do przesyÅ‚ania plików" #: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 msgid "_Adjust to status" msgstr "_Dostosuj do statusu" #: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 msgid "_Jabber ID:" msgstr "_Jabber ID:" @@ -447,47 +492,85 @@ msgstr "_Jabber ID:" msgid "_Name:" msgstr "_Nazwa: " -#: ../data/glade/accounts_window.glade.h:1 -msgid "Accounts" -msgstr "Konta" +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "Adres e-mail:" -#: ../data/glade/accounts_window.glade.h:2 -msgid "" -"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.\n" -"This is only available if python-avahi is installed and avahi-daemon is " -"running." +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "WÅ‚Ä…cz" + +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "ImiÄ™:" + +#: ../data/glade/accounts_window.glade.h:22 +msgid "If checked, Gajim will get the password from a GPG agent like seahorse" msgstr "" -"Jeżeli opcja ta zostanie uaktywniona, znajdujÄ…ce siÄ™ w twojej sieci lokalnej " -"kontakty używajÄ…ce klienta wykorzystujÄ…cego technologiÄ™ Bonjour (jak iChat, " -"Trillian czy Gaim) pojawiÄ… siÄ™ na rosterze. Nie musisz Å‚Ä…czyć siÄ™ z serwerem " -"Jabbera, by z nimi rozmawiać." +"Zaznaczenie tej opcji spowoduje pobieranie hasÅ‚a z agenta GPG, np. Seahorse" -#: ../data/glade/accounts_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 msgid "" -"If you have 2 or more accounts and this is checked, Gajim will list all " -"contacts as if you had one account" +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." 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" +"Jeżeli domyÅ›lny port, na którym przyjmowane sÄ… nadchodzÄ…ce wiadomoÅ›ci nie " +"odpowiada ci, możesz wskazać numer portu, jakiego chcesz używać.\n" +"Konieczna stać siÄ™ może ponowna konfiguracja firewalla." -#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:509 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "Nazwisko:" + +#: ../data/glade/accounts_window.glade.h:33 msgid "Mer_ge accounts" msgstr "_PoÅ‚Ä…cz konta" -#: ../data/glade/accounts_window.glade.h:6 -msgid "_Enable link-local messaging" -msgstr "_Uaktywnij przesyÅ‚anie wiadomoÅ›ci do adresów link-local" +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2697 +msgid "Re_name" +msgstr "_ZmieÅ„ nazwÄ™" -#: ../data/glade/accounts_window.glade.h:7 -msgid "_Modify" -msgstr "_Edytuj" +#: ../data/glade/accounts_window.glade.h:51 +msgid "Use GPG _Agent" +msgstr "Użyj _Agenta GPG" -#: ../data/glade/accounts_window.glade.h:8 -#: ../data/glade/remove_account_window.glade.h:4 -msgid "_Remove" -msgstr "_UsuÅ„" +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Użyj innego portu:" + +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "gtk-add" + +#: ../data/glade/accounts_window.glade.h:60 +#: ../data/glade/features_window.glade.h:4 +msgid "gtk-close" +msgstr "gtk-close" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "gtk-remove" #: ../data/glade/add_new_contact_window.glade.h:1 msgid "A_ccount:" @@ -582,6 +665,7 @@ msgid "This jabber entity does not expose any commands." msgstr "Ten obiekt Jabbera nie udostÄ™pnia żadnych komend." #: ../data/glade/advanced_configuration_window.glade.h:1 +#: ../data/glade/features_window.glade.h:1 msgid "<b>Description</b>" msgstr "<b>Opis</b>" @@ -608,48 +692,40 @@ msgid "Deletes Message of the Day" msgstr "Usuwa Wiadomość Dnia" #: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Edit _Privacy Lists..." +msgstr "_Edytuj listy prywatnoÅ›ci" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 msgid "Sends a message to users currently connected to this server" msgstr "WysyÅ‚a wiadomość do użytkowników aktualnie poÅ‚Ä…czonych z tym serwerem" -#: ../data/glade/advanced_menuitem_menu.glade.h:4 -msgid "Set MOTD" +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Set MOTD..." msgstr "Ustaw MOTD" -#: ../data/glade/advanced_menuitem_menu.glade.h:5 +#: ../data/glade/advanced_menuitem_menu.glade.h:6 msgid "Sets Message of the Day" msgstr "Ustawia Wiadomość Dnia" -#: ../data/glade/advanced_menuitem_menu.glade.h:6 +#: ../data/glade/advanced_menuitem_menu.glade.h:7 msgid "Show _XML Console" msgstr "Konsola _XML" -#: ../data/glade/advanced_menuitem_menu.glade.h:7 -msgid "Update MOTD" -msgstr "Uaktualnij MOTD" - #: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Update MOTD..." +msgstr "Uaktualnij MOTD..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 msgid "Updates Message of the Day" msgstr "Uaktualnia Wiadomość Dnia" -#: ../data/glade/advanced_menuitem_menu.glade.h:9 +#: ../data/glade/advanced_menuitem_menu.glade.h:10 msgid "_Administrator" msgstr "_Administrator" -#: ../data/glade/advanced_menuitem_menu.glade.h:10 -msgid "_Blocked Contacts" -msgstr "_Kontakty zablokowane" - #: ../data/glade/advanced_menuitem_menu.glade.h:11 -msgid "_Privacy Lists" -msgstr "_Listy prywatnoÅ›ci" - -#: ../data/glade/advanced_menuitem_menu.glade.h:12 -msgid "_Send Server Message" -msgstr "_WyÅ›lij wiadomość do serwera" - -#: ../data/glade/advanced_menuitem_menu.glade.h:13 -msgid "_Send Single Message" -msgstr "_WyÅ›lij wiadomość" +msgid "_Send Server Message..." +msgstr "_WyÅ›lij wiadomość do serwera..." #: ../data/glade/advanced_notifications_window.glade.h:1 msgid " a window/tab opened with that contact " @@ -664,7 +740,7 @@ msgid "<b>Conditions</b>" msgstr "<b>Warunki</b>" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "<b>Sounds</b>" msgstr "<b>DźwiÄ™ki</b>" @@ -681,7 +757,7 @@ msgid "All statuses" msgstr "Dowolny status" #: ../data/glade/advanced_notifications_window.glade.h:8 -#: ../src/common/commands.py:91 ../src/common/helpers.py:243 +#: ../src/common/commands.py:96 ../src/common/helpers.py:251 msgid "Away" msgstr "Zaraz wracam" @@ -698,7 +774,7 @@ msgid "Have " msgstr "rozmawiam " #: ../data/glade/advanced_notifications_window.glade.h:12 -#: ../src/common/helpers.py:253 +#: ../src/common/helpers.py:261 msgid "Invisible" msgstr "Niewidoczny" @@ -707,7 +783,7 @@ msgid "Launch a command" msgstr "Wykonaj komendÄ™" #: ../data/glade/advanced_notifications_window.glade.h:14 -#: ../src/common/helpers.py:226 +#: ../src/common/helpers.py:234 msgid "Not Available" msgstr "Nieobecny" @@ -830,6 +906,10 @@ msgstr "Odebrano nowy wpis" msgid "You have received new entry:" msgstr "OtrzymaÅ‚eÅ› nowy artykuÅ‚:" +#: ../data/glade/blocked_contacts_window.glade.h:1 +msgid "Blocked Contacts" +msgstr "Kontakty zablokowane" + #: ../data/glade/change_password_dialog.glade.h:1 msgid "Change Password" msgstr "ZmieÅ„ hasÅ‚o" @@ -859,11 +939,9 @@ 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:11 -msgid "_Add to Roster" -msgstr "Dod_aj do listy kontaktów" +#: ../data/glade/roster_contact_context_menu.glade.h:12 +msgid "_Add to Roster..." +msgstr "Dod_aj do listy kontaktów..." #: ../data/glade/chat_context_menu.glade.h:3 msgid "_Copy JID/Email Address" @@ -882,7 +960,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:20 #: ../data/glade/subscription_request_popup_menu.glade.h:1 #: ../data/glade/systray_context_menu.glade.h:7 msgid "_Start Chat" @@ -893,28 +970,62 @@ 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:8 +msgid "Invite _Contacts" +msgstr "ZaproÅ› kontakty" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 #: ../data/glade/zeroconf_contact_context_menu.glade.h:4 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:4 +msgid "Toggle End to End Encryption" +msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz _szyfrowanie poÅ‚Ä…czenia" #: ../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" +msgid "Toggle Open_PGP Encryption" +msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz szyfrowanie Open_PGP" #: ../data/glade/chat_control_popup_menu.glade.h:6 -#: ../data/glade/gc_control_popup_menu.glade.h:8 -#: ../data/glade/gc_occupants_menu.glade.h:5 -#: ../data/glade/roster_contact_context_menu.glade.h:15 +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "Dod_aj do listy kontaktów" + +#: ../data/glade/chat_control_popup_menu.glade.h:7 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_window.glade.h:19 #: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2566 msgid "_History" msgstr "_Historia" +#: ../data/glade/chat_to_muc_window.glade.h:1 +msgid "In_vite" +msgstr "_ZaproÅ›" + +#: ../data/glade/chat_to_muc_window.glade.h:2 +msgid "Invite Friends !" +msgstr "ZaproÅ› przyjaciół!" + +#: ../data/glade/chat_to_muc_window.glade.h:3 +msgid "MUC server" +msgstr "Serwer MUC" + +#: ../data/glade/chat_to_muc_window.glade.h:4 +msgid "Please select a MUC server." +msgstr "ProszÄ™ wybrać serwer MUC." + +#: ../data/glade/chat_to_muc_window.glade.h:5 +msgid "" +"You are going to begin a Multi-User Chat.\n" +"Select the contacts you want to invite" +msgstr "" +"Zamierzasz rozpocząć czat.\n" +"Wybierz kontakty, które chcesz do niego zaprosić" + #: ../data/glade/data_form_window.glade.h:1 msgid "Fill in the form." msgstr "WypeÅ‚nij formularz." @@ -927,6 +1038,14 @@ msgstr "Konfiguracja pokoju" msgid "Edit Groups" msgstr "Edytuj Grupy" +#: ../data/glade/features_window.glade.h:2 +msgid "<b>List of possible features in Gajim:</b>" +msgstr "<b>Lista możliwych funkcjonalnoÅ›ci Gajima:</b>" + +#: ../data/glade/features_window.glade.h:3 +msgid "Features" +msgstr "MożliwoÅ›ci programu" + #: ../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" @@ -979,7 +1098,7 @@ msgstr "" 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:761 +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:777 msgid "_Continue" msgstr "_Kontynuuj" @@ -987,7 +1106,7 @@ msgstr "_Kontynuuj" 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:188 +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:191 msgid "_Open Containing Folder" msgstr "_Otwórz katalog zawierajÄ…cy ten plik" @@ -1076,62 +1195,70 @@ msgid "_Background:" msgstr "_TÅ‚o:" #: ../data/glade/gc_control_popup_menu.glade.h:1 -msgid "Change _Nickname" -msgstr "ZmieÅ„ pseudo_nim" +msgid "Change _Nickname..." +msgstr "ZmieÅ„ pseudo_nim..." #: ../data/glade/gc_control_popup_menu.glade.h:2 -msgid "Change _Subject" -msgstr "ZmieÅ„ _temat" +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" +msgid "Configure _Room..." +msgstr "Konfiguruj _pokój..." #: ../data/glade/gc_control_popup_menu.glade.h:5 -msgid "_Bookmark This Room" +msgid "_Bookmark" msgstr "Dodaj _zakÅ‚adkÄ™ dla tego pokoju" -#: ../data/glade/gc_control_popup_menu.glade.h:7 -msgid "_Destroy room" +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" msgstr "_Zlikwiduj pokój" +#: ../data/glade/gc_control_popup_menu.glade.h:8 +msgid "_Manage Room" +msgstr "ZarzÄ…dzaj pokojem" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "_Minimalizuj przy zamkniÄ™ciu" + #: ../data/glade/gc_occupants_menu.glade.h:1 msgid "Mo_derator" msgstr "Mo_derator" -#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:2 +msgid "Occupant Actions" +msgstr "DziaÅ‚ania użytk_ownika" + +#: ../data/glade/gc_occupants_menu.glade.h:5 msgid "_Admin" msgstr "_Administrator" -#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:6 msgid "_Ban" msgstr "Za_banuj" -#: ../data/glade/gc_occupants_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:8 msgid "_Kick" msgstr "Wy_rzuć" -#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:9 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 +#: ../data/glade/gc_occupants_menu.glade.h:10 msgid "_Owner" msgstr "_WÅ‚aÅ›ciciel" -#: ../data/glade/gc_occupants_menu.glade.h:10 +#: ../data/glade/gc_occupants_menu.glade.h:11 msgid "_Send Private Message" msgstr "_WyÅ›lij prywatnÄ… wiadomość" -#: ../data/glade/gc_occupants_menu.glade.h:11 +#: ../data/glade/gc_occupants_menu.glade.h:12 msgid "_Voice" msgstr "_GÅ‚os" @@ -1139,13 +1266,13 @@ msgstr "_GÅ‚os" msgid "Create new post" msgstr "Utwórz nowy wpis" -#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:268 +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:276 msgid "From" msgstr "Od" #. holds subject -#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:142 -#: ../src/history_manager.py:173 +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:147 +#: ../src/history_manager.py:178 msgid "Subject" msgstr "Temat" @@ -1186,32 +1313,54 @@ msgid "_Search Database" msgstr "_Szukaj w bazie" #: ../data/glade/history_window.glade.h:1 -msgid "Build custom query" -msgstr "Stwórz wÅ‚asne zapytanie" +msgid "<b>History Viewer</b>" +msgstr "<b>PrzeglÄ…danie historii</b>" #: ../data/glade/history_window.glade.h:2 +msgid "<b>JID Selection</b>" +msgstr "<b>Wybór JID-a</b>" + +#: ../data/glade/history_window.glade.h:3 +msgid "" +"Choose the chatlog you want to view. \n" +"Enter the jid of a groupchat or a contact here. For online accounts you can " +"even enter a a contact's nickname." +msgstr "" +"Wybierz katalog, który chcesz przejrzeć. \n" +"Tu wpisz JID czatu lub kontaktu. Jeżeli kontakt jest online, możesz podać " +"sam nick." + +#: ../data/glade/history_window.glade.h:5 ../src/history_window.py:224 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:6 +msgid "" +"Current History\n" +"All Chat Histories" +msgstr "" +"Bieżąca historia\n" +"Wszystkie historie rozmów" -#: ../data/glade/history_window.glade.h:4 +#: ../data/glade/history_window.glade.h:8 #: ../data/glade/search_window.glade.h:2 msgid "Search" msgstr "Szukaj" -#: ../data/glade/history_window.glade.h:5 +#: ../data/glade/history_window.glade.h:9 #: ../data/glade/zeroconf_information_window.glade.h:10 msgid "_Log conversation history" msgstr "_Zapisuj historiÄ™ rozmowy" -#: ../data/glade/history_window.glade.h:6 -#: ../data/glade/search_window.glade.h:3 ../src/disco.py:1177 +#: ../data/glade/history_window.glade.h:10 +#: ../data/glade/search_window.glade.h:5 ../src/disco.py:1181 msgid "_Search" msgstr "_Szukaj" +#: ../data/glade/history_window.glade.h:11 +msgid "in" +msgstr "w" + #: ../data/glade/invitation_received_dialog.glade.h:1 msgid "Accept" msgstr "Akceptuj" @@ -1225,7 +1374,7 @@ msgstr "Odmów" msgid "Invitation Received" msgstr "Zaproszenie Odebrane" -#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1208 +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1381 msgid "Join Group Chat" msgstr "DoÅ‚Ä…cz do pokoju" @@ -1234,14 +1383,14 @@ msgid "Join this room automatically when I connect" msgstr "Automatycznie doÅ‚Ä…cz do tego pokoju po uzyskaniu poÅ‚Ä…czenia" #: ../data/glade/join_groupchat_window.glade.h:3 -#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:5 #: ../data/glade/profile_window.glade.h:24 #: ../data/glade/vcard_information_window.glade.h:31 msgid "Nickname:" msgstr "Pseudonim:" #: ../data/glade/join_groupchat_window.glade.h:4 -#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:6 msgid "Password:" msgstr "HasÅ‚o:" @@ -1250,12 +1399,12 @@ msgid "Recently:" msgstr "Ostatnio:" #: ../data/glade/join_groupchat_window.glade.h:6 -#: ../data/glade/manage_bookmarks_window.glade.h:7 +#: ../data/glade/manage_bookmarks_window.glade.h:8 msgid "Room:" msgstr "Pokój:" -#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1165 -#: ../src/disco.py:1615 +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1169 +#: ../src/disco.py:1624 msgid "_Join" msgstr "_DoÅ‚Ä…cz" @@ -1275,15 +1424,19 @@ msgstr "Zaznaczenie spowoduje Å‚Ä…czenie z tym pokojem przy starcie programu" msgid "Manage Bookmarks" msgstr "ZarzÄ…dzaj zakÅ‚adkami" -#: ../data/glade/manage_bookmarks_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "Minimalizuj po automatycznym wejÅ›ciu" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 msgid "Print status:" msgstr "WyÅ›wietlaj status:" -#: ../data/glade/manage_bookmarks_window.glade.h:8 +#: ../data/glade/manage_bookmarks_window.glade.h:9 msgid "Server:" msgstr "Serwer:" -#: ../data/glade/manage_bookmarks_window.glade.h:9 +#: ../data/glade/manage_bookmarks_window.glade.h:10 msgid "Title:" msgstr "TytuÅ‚:" @@ -1299,7 +1452,8 @@ msgstr "<b>Ustawienia</b>" msgid "" "HTTP Connect\n" "SOCKS5" -msgstr "PoÅ‚Ä…czenie HTTP\n" +msgstr "" +"PoÅ‚Ä…czenie HTTP\n" "SOCKS5" #: ../data/glade/manage_proxies_window.glade.h:5 @@ -1312,6 +1466,10 @@ msgstr "ZarzÄ…dzaj profilami poÅ›rednika" msgid "Name:" msgstr "Nazwa:" +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "_HasÅ‚o:" + #: ../data/glade/manage_proxies_window.glade.h:8 msgid "Type:" msgstr "Typ:" @@ -1320,17 +1478,21 @@ msgstr "Typ:" msgid "Use authentication" msgstr "Używaj autoryzacji" +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_Host:" + #: ../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:1125 +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1268 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:10 +#: ../data/glade/roster_window.glade.h:12 #: ../data/glade/subscription_request_window.glade.h:6 msgid "_Actions" msgstr "_DziaÅ‚ania" @@ -1338,7 +1500,7 @@ msgstr "_DziaÅ‚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:245 +#: ../src/filetransfers_window.py:248 msgid "_Send" msgstr "_WyÅ›lij" @@ -1354,36 +1516,48 @@ msgstr "<b>Edytor zaawansowanych konfiguracji</b>" msgid "<b>Applications</b>" msgstr "<b>Aplikacje</b>" +#: ../data/glade/preferences_window.glade.h:3 +msgid "<b>Chat Appearance</b>" +msgstr "<b>Tożsamość na czacie</b>" + #. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../data/glade/preferences_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:5 msgid "<b>Custom</b>" msgstr "<b>WÅ‚asne</b>" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "<b>Format of a line</b>" msgstr "<b>Format linii</b>" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "<b>GMail Options</b>" msgstr "<b>Opcje konta Gmail</b>" -#: ../data/glade/preferences_window.glade.h:7 -msgid "<b>Interface Customization</b>" -msgstr "<b>WÅ‚asne ustawienia interfejsu</b>" - #: ../data/glade/preferences_window.glade.h:9 msgid "<b>Preset Status Messages</b>" msgstr "<b>Zapisane opisy</b>" +#: ../data/glade/preferences_window.glade.h:10 +msgid "<b>Privacy</b>" +msgstr "<p>Prywatność</i>" + #: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "<b>Tożsamość na rosterze</b>" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "<b>Themes</b>" +msgstr "<b>Tematy</b>" + +#: ../data/glade/preferences_window.glade.h:14 msgid "<b>Visual Notifications</b>" msgstr "<b>Powiadomienia wizualne</b>" -#: ../data/glade/preferences_window.glade.h:12 +#: ../data/glade/preferences_window.glade.h:15 msgid "Advanced" msgstr "Zaawansowane" -#: ../data/glade/preferences_window.glade.h:13 +#: ../data/glade/preferences_window.glade.h:16 msgid "" "All chat states\n" "Composing only\n" @@ -1393,26 +1567,22 @@ msgstr "" "Tylko dotyczÄ…ce pisania\n" "WyÅ‚Ä…czone" -#: ../data/glade/preferences_window.glade.h:16 +#: ../data/glade/preferences_window.glade.h:19 msgid "Allow _OS information to be sent" msgstr "Zezwól na wysyÅ‚anie informacji o systemie _operacyjnym" -#: ../data/glade/preferences_window.glade.h:17 +#: ../data/glade/preferences_window.glade.h:20 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:18 -msgid "Also known as iChat style" -msgstr "Znany także jako styl iChat" - -#: ../data/glade/preferences_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:21 msgid "Always check to see if Gajim is the _default Jabber client on startup" msgstr "" "Przy starcie zawsze sprawdzaj czy Gajim jest _domyÅ›lnym_ klientem Jabbera" -#: ../data/glade/preferences_window.glade.h:20 +#: ../data/glade/preferences_window.glade.h:22 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 " @@ -1422,19 +1592,19 @@ msgstr "" "zapamiÄ™ta go i nie bÄ™dzie prosiÅ‚ o jego zmianÄ™ po ponownym ustawieniu " "takiego stanu" -#: ../data/glade/preferences_window.glade.h:21 +#: ../data/glade/preferences_window.glade.h:23 msgid "Ask status message when I:" msgstr "Pytaj o opis przy zmianie statusu na:" -#: ../data/glade/preferences_window.glade.h:22 +#: ../data/glade/preferences_window.glade.h:24 msgid "Auto _away after:" msgstr "Automatyczny status '_Zaraz wracam' po:" -#: ../data/glade/preferences_window.glade.h:23 +#: ../data/glade/preferences_window.glade.h:25 msgid "Auto _not available after:" msgstr "Automatyczny status '_Nieobecny' po:" -#: ../data/glade/preferences_window.glade.h:24 +#: ../data/glade/preferences_window.glade.h:26 msgid "" "Autodetect on every Gajim startup\n" "Always use GNOME default applications\n" @@ -1448,11 +1618,7 @@ msgstr "" "Zawsze używaj domyÅ›lnych aplikacji XFCE4\n" "WÅ‚asne" -#: ../data/glade/preferences_window.glade.h:29 -msgid "Chat" -msgstr "Rozmowa" - -#: ../data/glade/preferences_window.glade.h:30 +#: ../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, because it blocks all messages from any contact that " @@ -1462,18 +1628,14 @@ msgstr "" "wiadomoÅ›ciami. Stosuj jÄ… ostrożnie, ponieważ powoduje ona blokowanie " "wszystkich wiadomoÅ›ci od osób, których nie masz na liÅ›cie kontaktów" -#: ../data/glade/preferences_window.glade.h:31 +#: ../data/glade/preferences_window.glade.h:32 msgid "Configure color and font of the interface" msgstr "Konfiguruj kolor i czcionkÄ™ interfejsu" -#: ../data/glade/preferences_window.glade.h:32 +#: ../data/glade/preferences_window.glade.h:33 msgid "Default Status Messages" msgstr "DomyÅ›lne stany opisowe" -#: ../data/glade/preferences_window.glade.h:33 -msgid "Default status _iconset:" -msgstr "DomyÅ›lny zestaw ikon _statusu:" - #: ../data/glade/preferences_window.glade.h:34 msgid "" "Determined by sender\n" @@ -1497,22 +1659,14 @@ 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:40 -msgid "Displayed Chat state noti_fications:" -msgstr "Rodzaj wyÅ›wietlanych _powiadomieÅ„ podczas rozmowy:" - -#: ../data/glade/preferences_window.glade.h:41 -msgid "E_very 5 minutes" -msgstr "Co 5 _minut" - -#: ../data/glade/preferences_window.glade.h:42 msgid "Emoticons:" msgstr "Emotikony:" -#: ../data/glade/preferences_window.glade.h:43 +#: ../data/glade/preferences_window.glade.h:41 msgid "Events" msgstr "Zdarzenia" -#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/preferences_window.glade.h:42 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 " @@ -1522,7 +1676,7 @@ msgstr "" "W tym miejscu możesz zdecydować, które z tych danych chcesz wyÅ›wietlać w " "oknie rozmowy." -#: ../data/glade/preferences_window.glade.h:45 +#: ../data/glade/preferences_window.glade.h:43 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 " @@ -1531,30 +1685,7 @@ 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:46 -msgid "" -"Gajim will automatically show new events by popping up the relevant window" -msgstr "" -"Gajim automatycznie wyÅ›wietli nowÄ… wiadomość w nowym oknie lub w nowej " -"karcie otwartego okna rozmowy" - -#: ../data/glade/preferences_window.glade.h:47 -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:48 -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:49 +#: ../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" @@ -1562,12 +1693,11 @@ 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:50 -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:46 +msgid "Hides buttons in chatwindows to " +msgstr "Ukrywa przyciski w oknie czatu " -#: ../data/glade/preferences_window.glade.h:52 +#: ../data/glade/preferences_window.glade.h:47 msgid "" "If checked, Gajim will also include information about the sender of the new " "emails" @@ -1575,7 +1705,7 @@ msgstr "" "Jeżeli opcja ta zostanie uaktywniona, Gajim bÄ™dzie również wyÅ›wietlaÅ‚ " "informacje o nadawcach nowej poczty w twojej skrzynce" -#: ../data/glade/preferences_window.glade.h:53 +#: ../data/glade/preferences_window.glade.h:48 msgid "" "If checked, Gajim will display avatars of contacts in roster window and in " "group chats" @@ -1583,7 +1713,7 @@ msgstr "" "Zaznaczenie tej opcji spowoduje wyÅ›wietlanie awatarów w oknie listy " "kontaktów (roster oraz okno czatu)" -#: ../data/glade/preferences_window.glade.h:54 +#: ../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" @@ -1591,15 +1721,7 @@ 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:55 -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:56 +#: ../data/glade/preferences_window.glade.h:50 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, " @@ -1609,7 +1731,7 @@ msgstr "" "transportu, np. kontakt z MSN bÄ™dzie miaÅ‚ odpowiednie ikony statusu " "dostÄ™pny, zaraz wracam, zajÄ™ty, itd" -#: ../data/glade/preferences_window.glade.h:57 +#: ../data/glade/preferences_window.glade.h:51 msgid "" "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " "animated or static graphical emoticons" @@ -1617,15 +1739,15 @@ msgstr "" "Zaznaczenie tej opcji spowoduje zastÄ…pienie emotikon tekstowych jak ':)' " "emotikonami graficznymi" -#: ../data/glade/preferences_window.glade.h:58 +#: ../data/glade/preferences_window.glade.h:52 msgid "Ignore rich content in incoming messages" msgstr "Ignoruj wzbogaconÄ… treść w wiadomoÅ›ciach" -#: ../data/glade/preferences_window.glade.h:59 +#: ../data/glade/preferences_window.glade.h:53 msgid "Ma_nage..." msgstr "Za_rzÄ…dzaj..." -#: ../data/glade/preferences_window.glade.h:60 +#: ../data/glade/preferences_window.glade.h:54 msgid "" "Never\n" "Always\n" @@ -1637,59 +1759,53 @@ msgstr "" "WedÅ‚ug konta\n" "WedÅ‚ug typu" -#: ../data/glade/preferences_window.glade.h:64 -msgid "Notify me about contacts that: " -msgstr "Powiadom mnie o kontaktach zmieniajÄ…cych status na: " +#: ../data/glade/preferences_window.glade.h:58 +msgid "Notify me about contacts that sign _in" +msgstr "Powiadom mnie o kontaktach, które siÄ™ _logujÄ…" -#: ../data/glade/preferences_window.glade.h:65 +#: ../data/glade/preferences_window.glade.h:59 +msgid "Notify me about contacts that sign _out" +msgstr "Powiadom mnie o kontaktach, które siÄ™ _wylogowujÄ… " + +#: ../data/glade/preferences_window.glade.h:60 msgid "Notify on new _GMail email" msgstr "Powiadamiaj o nowej poczcie na koncie _Gmail" -#: ../data/glade/preferences_window.glade.h:66 -msgid "On every _message" -msgstr "W każdej _wiadomoÅ›ci" - -#: ../data/glade/preferences_window.glade.h:67 -msgid "One message _window:" -msgstr "Grupuj okna:" - -#: ../data/glade/preferences_window.glade.h:68 -msgid "Outgoing Chat state noti_fications:" -msgstr "WysyÅ‚anie powiadomienia o stanie _rozmowy:" - -#: ../data/glade/preferences_window.glade.h:69 +#: ../data/glade/preferences_window.glade.h:61 msgid "Play _sounds" msgstr "Odtwórz _dźwiÄ™k" -#: ../data/glade/preferences_window.glade.h:70 +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" +"Otwórz okno\n" +"Powiadom mnie o tym\n" +"Pokaż tylko w rosterze" + +#: ../data/glade/preferences_window.glade.h:65 msgid "Preferences" msgstr "Ustawienia" -#: ../data/glade/preferences_window.glade.h:71 -msgid "Print time:" -msgstr "WyÅ›wietlaj czas:" - -#: ../data/glade/preferences_window.glade.h:72 -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:66 +msgid "Privacy" +msgstr "Prywatność" -#: ../data/glade/preferences_window.glade.h:73 +#: ../data/glade/preferences_window.glade.h:67 msgid "Set status message to reflect currently playing _music track" msgstr "WyÅ›wietlaj informacje o odtwarzanej _muzyce w statusie opisowym" -#: ../data/glade/preferences_window.glade.h:74 -msgid "Show only in _roster" -msgstr "Pokaż tylko _listÄ™ kontaktów" - -#: ../data/glade/preferences_window.glade.h:75 +#: ../data/glade/preferences_window.glade.h:68 msgid "Sign _in" msgstr "_PoÅ‚Ä…czony" -#: ../data/glade/preferences_window.glade.h:76 +#: ../data/glade/preferences_window.glade.h:69 msgid "Sign _out" msgstr "R_ozÅ‚Ä…czony" -#: ../data/glade/preferences_window.glade.h:77 +#: ../data/glade/preferences_window.glade.h:70 msgid "" "Some messages may include rich content (formatting, colors etc). If checked, " "Gajim will just display the raw message text." @@ -1698,54 +1814,47 @@ msgstr "" "formatowanie. Jeżeli ta opcja jest aktywna, Gajim bÄ™dzie ignorowaÅ‚ te " "dodatki i wyÅ›wietlaÅ‚ czysty tekst." -#: ../data/glade/preferences_window.glade.h:78 +#: ../data/glade/preferences_window.glade.h:71 msgid "Status" msgstr "Status" -#: ../data/glade/preferences_window.glade.h:79 +#: ../data/glade/preferences_window.glade.h:72 +msgid "Status _iconset:" +msgstr "Zestaw ikon _statusu:" + +#: ../data/glade/preferences_window.glade.h:73 msgid "T_heme:" msgstr "_Motyw:" -#: ../data/glade/preferences_window.glade.h:80 +#: ../data/glade/preferences_window.glade.h:74 msgid "The auto away status message" msgstr "Automatyczny status \"Zaraz wracam\"" -#: ../data/glade/preferences_window.glade.h:81 +#: ../data/glade/preferences_window.glade.h:75 msgid "The auto not available status message" msgstr "Automatyczny status \"Nieobecny\"" -#: ../data/glade/preferences_window.glade.h:82 +#: ../data/glade/preferences_window.glade.h:76 msgid "Treat all incoming messages as:" msgstr "Traktuj wszystkie otrzymane wiadomoÅ›ci jako:" -#: ../data/glade/preferences_window.glade.h:83 +#: ../data/glade/preferences_window.glade.h:77 msgid "Use _transports iconsets" msgstr "Używaj zestawów ikon _transportów" -#: ../data/glade/preferences_window.glade.h:84 +#: ../data/glade/preferences_window.glade.h:78 +msgid "Use only one message _window:" +msgstr "_Grupuj okna:" + +#: ../data/glade/preferences_window.glade.h:79 msgid "Use system _default" msgstr "Użyj _domyÅ›lnej dla systemu" -#: ../data/glade/preferences_window.glade.h:85 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Ikona w obszarze powiadamiania" - -#: ../data/glade/preferences_window.glade.h:86 -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:87 -msgid "When new event is received" +#: ../data/glade/preferences_window.glade.h:80 +msgid "When new event is received:" msgstr "Gdy odebrane zostanie nowe zdarzenie" -#: ../data/glade/preferences_window.glade.h:88 +#: ../data/glade/preferences_window.glade.h:81 msgid "" "Works for Rhythmbox and Muine players. For more players, please visit http://" "trac.gajim.org/wiki/GajimAndMusicPlayer" @@ -1754,86 +1863,90 @@ msgstr "" "obsÅ‚udze innego oprogramowania, odwiedź stronÄ™ http://trac.gajim.org/wiki/" "GajimAndMusicPlayer" -#: ../data/glade/preferences_window.glade.h:89 +#: ../data/glade/preferences_window.glade.h:82 msgid "_Advanced Notifications Control..." msgstr "_Edytor zaawansowanych ustawieÅ„" -#: ../data/glade/preferences_window.glade.h:90 +#: ../data/glade/preferences_window.glade.h:83 msgid "_Browser:" msgstr "Prze_glÄ…darka:" -#: ../data/glade/preferences_window.glade.h:91 +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Display chat state notifications:" +msgstr "WyÅ›wietlaj informacje stanie kontaktu:" + +#: ../data/glade/preferences_window.glade.h:85 msgid "_File manager:" msgstr "Menadżer _plików:" -#: ../data/glade/preferences_window.glade.h:92 +#: ../data/glade/preferences_window.glade.h:86 msgid "_Font:" msgstr "_Czcionka:" -#: ../data/glade/preferences_window.glade.h:93 +#: ../data/glade/preferences_window.glade.h:87 msgid "_Highlight misspelled words" msgstr "PodÅ›_wietlaj bÅ‚Ä™dy w pisowni" -#: ../data/glade/preferences_window.glade.h:94 +#: ../data/glade/preferences_window.glade.h:88 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:95 +#: ../data/glade/preferences_window.glade.h:89 msgid "_Incoming message:" msgstr "Wiadomość _otrzymana:" -#: ../data/glade/preferences_window.glade.h:96 +#: ../data/glade/preferences_window.glade.h:90 msgid "_Log status changes of contacts" msgstr "_Zapisuj w logach zmiany statusów kontaktów" -#: ../data/glade/preferences_window.glade.h:97 +#: ../data/glade/preferences_window.glade.h:91 msgid "_Mail client:" msgstr "Klient _poczty:" -#: ../data/glade/preferences_window.glade.h:98 -msgid "_Never" -msgstr "_Nigdy" - -#: ../data/glade/preferences_window.glade.h:99 -msgid "_Notify me about it" -msgstr "Powia_dom mnie o tym" +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Make message windows compact" +msgstr "_Ukrywaj przyciski w oknach rozmowy" -#: ../data/glade/preferences_window.glade.h:100 +#: ../data/glade/preferences_window.glade.h:93 msgid "_Open..." msgstr "_Otwórz..." -#: ../data/glade/preferences_window.glade.h:101 +#: ../data/glade/preferences_window.glade.h:94 msgid "_Outgoing message:" msgstr "WysÅ‚ana wiadomość :" -#: ../data/glade/preferences_window.glade.h:102 +#: ../data/glade/preferences_window.glade.h:95 msgid "_Player:" msgstr "_Program odtwarzajÄ…cy dźwiÄ™k:" -#: ../data/glade/preferences_window.glade.h:103 -msgid "_Pop it up" -msgstr "_WyÅ›wietl" - -#: ../data/glade/preferences_window.glade.h:104 +#: ../data/glade/preferences_window.glade.h:96 msgid "_Reset to Default Colors" msgstr "Wróć do kolorów _domyÅ›lnych" -#: ../data/glade/preferences_window.glade.h:105 +#: ../data/glade/preferences_window.glade.h:97 +msgid "_Send chat state notifications:" +msgstr "Rodzaje powiadomieÅ„ wysyÅ‚anych podczas rozmowy:" + +#: ../data/glade/preferences_window.glade.h:98 msgid "_Sort contacts by status" msgstr "Sortuj kontakty wedÅ‚ug statusu" -#: ../data/glade/preferences_window.glade.h:106 +#: ../data/glade/preferences_window.glade.h:99 msgid "_Status message:" msgstr "_Informacja o statusie:" -#: ../data/glade/preferences_window.glade.h:107 +#: ../data/glade/preferences_window.glade.h:100 msgid "_URL:" msgstr "_URL:" -#: ../data/glade/preferences_window.glade.h:108 +#: ../data/glade/preferences_window.glade.h:101 msgid "minutes" msgstr "minutach" +#: ../data/glade/privacy_lists_window.glade.h:1 +msgid "Privacy Lists:" +msgstr "Listy prywatnoÅ›ci" + #: ../data/glade/privacy_list_window.glade.h:1 msgid "<b>Add / Edit a rule</b>" msgstr "<b>Dodaj / Edytuj reguÅ‚Ä™</b>" @@ -1870,7 +1983,7 @@ msgstr "JID" msgid "Order:" msgstr "Kolejność:" -#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2052 +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2248 msgid "Privacy List" msgstr "Lista prywatnoÅ›ci" @@ -1910,10 +2023,6 @@ msgstr "wysyÅ‚ać mi status" msgid "to view my status" msgstr "widzieć mój status" -#: ../data/glade/privacy_lists_window.glade.h:1 -msgid "Privacy Lists:" -msgstr "Listy prywatnoÅ›ci" - #. "About" is the text of a tab of vcard window #: ../data/glade/profile_window.glade.h:2 #: ../data/glade/vcard_information_window.glade.h:2 @@ -1944,66 +2053,59 @@ msgid "Click to set your avatar" msgstr "Kliknij aby ustawić avatar" #: ../data/glade/profile_window.glade.h:8 -#: ../data/glade/vcard_information_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:10 msgid "Company:" msgstr "Firma:" #: ../data/glade/profile_window.glade.h:9 -#: ../data/glade/vcard_information_window.glade.h:15 +#: ../data/glade/vcard_information_window.glade.h:14 msgid "Country:" msgstr "Kraj:" #: ../data/glade/profile_window.glade.h:10 -#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:15 msgid "Department:" msgstr "DziaÅ‚:" -#: ../data/glade/profile_window.glade.h:11 -#: ../data/glade/vcard_information_window.glade.h:17 -#: ../data/glade/zeroconf_information_window.glade.h:2 -#: ../data/glade/zeroconf_properties_window.glade.h:5 -msgid "E-Mail:" -msgstr "Adres e-mail:" - #: ../data/glade/profile_window.glade.h:12 -#: ../data/glade/vcard_information_window.glade.h:18 +#: ../data/glade/vcard_information_window.glade.h:17 msgid "Extra Address:" msgstr "Dodatkowy adres:" #. Family Name #: ../data/glade/profile_window.glade.h:14 -#: ../data/glade/vcard_information_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:19 msgid "Family:" msgstr "Nazwisko:" #. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) #: ../data/glade/profile_window.glade.h:16 -#: ../data/glade/vcard_information_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:21 msgid "Format: YYYY-MM-DD" msgstr "Format: RRRR-MM-DD" +#: ../data/glade/profile_window.glade.h:17 +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Full Name" +msgstr "ImiÄ™ i nazwisko" + #. Given Name -#: ../data/glade/profile_window.glade.h:18 +#: ../data/glade/profile_window.glade.h:19 #: ../data/glade/vcard_information_window.glade.h:24 msgid "Given:" msgstr "ImiÄ™:" -#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/profile_window.glade.h:20 #: ../data/glade/vcard_information_window.glade.h:25 msgid "Homepage:" msgstr "Strona domowa:" #. Middle Name -#: ../data/glade/profile_window.glade.h:21 +#: ../data/glade/profile_window.glade.h:22 #: ../data/glade/vcard_information_window.glade.h:28 msgid "Middle:" msgstr "Drugie imiÄ™:" -#: ../data/glade/profile_window.glade.h:22 -#: ../data/glade/vcard_information_window.glade.h:29 -msgid "More" -msgstr "WiÄ™cej" - #: ../data/glade/profile_window.glade.h:25 #: ../data/glade/vcard_information_window.glade.h:34 msgid "Personal Info" @@ -2031,7 +2133,7 @@ msgid "Prefix:" msgstr "Prefiks:" #: ../data/glade/profile_window.glade.h:32 -#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:381 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:307 msgid "Role:" msgstr "Funkcja:" @@ -2068,82 +2170,95 @@ msgstr "UsuÅ„ konto _tylko z Gajima" msgid "Remove account from Gajim and from _server" msgstr "UsuÅ„ konto z Gajima i z _serwera" +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2523 ../src/roster_window.py:2733 +#: ../src/roster_window.py:2869 +msgid "_Remove" +msgstr "_UsuÅ„" + #: ../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 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 -msgid "Add Special _Notification" -msgstr "Dodaj powiadomienia _specjalne" +msgid "Add Special _Notification..." +msgstr "Dodaj powiadomienia _specjalne..." #: ../data/glade/roster_contact_context_menu.glade.h:3 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 -msgid "Assign Open_PGP Key" -msgstr "Przypisz klucz Open_PGP" +msgid "Assign Open_PGP Key..." +msgstr "Przypisz klucz Open_PGP..." #: ../data/glade/roster_contact_context_menu.glade.h:4 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 -#: ../src/roster_window.py:2293 -msgid "Edit _Groups" -msgstr "Modyfikuj _grupy" +msgid "Edit _Groups..." +msgstr "Modyfikuj _grupy..." +#. Execute Command #: ../data/glade/roster_contact_context_menu.glade.h:5 -#: ../src/roster_window.py:2481 +#: ../src/roster_window.py:2826 msgid "Execute Command..." msgstr "Wykonaj komendÄ™..." +#. Invite to Groupchat #: ../data/glade/roster_contact_context_menu.glade.h:6 -#: ../src/roster_window.py:2251 +#: ../src/roster_window.py:2439 msgid "In_vite to" msgstr "_ZaproÅ› do" +#. Send Custom Status #: ../data/glade/roster_contact_context_menu.glade.h:7 -#: ../data/glade/systray_context_menu.glade.h:2 -msgid "Send Single _Message" -msgstr "WyÅ›lij _wiadomość" +#: ../src/roster_window.py:2663 ../src/roster_window.py:2797 +msgid "Send Cus_tom Status" +msgstr "WyÅ›lij odrÄ™bny status" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "WyÅ›lij _wiadomość..." #: ../data/glade/roster_contact_context_menu.glade.h:9 -msgid "Send cus_tom status" -msgstr "WyÅ›lij _odrÄ™bny status" +msgid "Send _File..." +msgstr "WyÅ›lij _plik..." #: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "Ustaw wÅ‚asny _avatar..." + +#: ../data/glade/roster_contact_context_menu.glade.h:11 #: ../data/glade/zeroconf_contact_context_menu.glade.h:5 msgid "Start _Chat" msgstr "Rozpocznij _rozmowÄ™" -#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../data/glade/roster_contact_context_menu.glade.h:13 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:13 -#: ../src/roster_window.py:2317 ../src/roster_window.py:2428 +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../src/roster_window.py:2513 ../src/roster_window.py:2724 msgid "_Block" msgstr "_Zablokuj" -#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../data/glade/roster_contact_context_menu.glade.h:15 msgid "_Forbid him/her to see my status" msgstr "_ZabroÅ„ mu/jej widzieć twój status" -#. Remove group -#: ../data/glade/roster_contact_context_menu.glade.h:16 -#: ../src/roster_window.py:2245 ../src/roster_window.py:2354 -#: ../src/roster_window.py:2502 -msgid "_Remove from Roster" -msgstr "_UsuÅ„ z listy kontaktów" - #: ../data/glade/roster_contact_context_menu.glade.h:17 #: ../data/glade/zeroconf_contact_context_menu.glade.h:7 -#: ../src/roster_window.py:2490 -msgid "_Rename" -msgstr "_ZmieÅ„ nazwÄ™" +msgid "_Manage Contact" +msgstr "_Modyfikuj dane kontaktu" -#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../data/glade/roster_contact_context_menu.glade.h:19 +msgid "_Rename..." +msgstr "_ZmieÅ„ nazwÄ™..." + +#: ../data/glade/roster_contact_context_menu.glade.h:20 msgid "_Subscription" msgstr "_Autoryzacja" -#: ../data/glade/roster_contact_context_menu.glade.h:19 -#: ../src/roster_window.py:2311 ../src/roster_window.py:2422 +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2507 ../src/roster_window.py:2718 msgid "_Unblock" msgstr "_Cofnij blokadÄ™" @@ -2152,63 +2267,66 @@ msgid "A_ccounts" msgstr "_Konta" #: ../data/glade/roster_window.glade.h:2 -msgid "Add _Contact" -msgstr "Dodaj _kontakt" +msgid "Add _Contact..." +msgstr "Dod_aj kontakt..." #: ../data/glade/roster_window.glade.h:3 +msgid "Fea_tures" +msgstr "_MożliwoÅ›ci serwerów" + +#: ../data/glade/roster_window.glade.h:4 msgid "File _Transfers" msgstr "_PrzesyÅ‚anie plików" -#: ../data/glade/roster_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:5 msgid "Frequently Asked Questions (online)" msgstr "Najczęściej Zadawane Pytania (w sieci)" -#: ../data/glade/roster_window.glade.h:6 +#: ../data/glade/roster_window.glade.h:7 msgid "Help online" msgstr "Pomoc w sieci" -#: ../data/glade/roster_window.glade.h:7 +#: ../data/glade/roster_window.glade.h:9 msgid "Profile, A_vatar" msgstr "Profil, _Awatar" -#: ../data/glade/roster_window.glade.h:8 +#: ../data/glade/roster_window.glade.h:10 msgid "Show Trans_ports" msgstr "Pokaż _transporty" -#: ../data/glade/roster_window.glade.h:9 +#: ../data/glade/roster_window.glade.h:11 msgid "Show _Offline Contacts" msgstr "Pokaż kontakty niep_oÅ‚Ä…czone" -#: ../data/glade/roster_window.glade.h:12 +#: ../data/glade/roster_window.glade.h:14 msgid "_Contents" msgstr "_Zawartość" -#: ../data/glade/roster_window.glade.h:13 -msgid "_Discover Services" -msgstr "_Wyszukuj usÅ‚ugi" - -#: ../data/glade/roster_window.glade.h:14 ../src/disco.py:1353 -#: ../src/roster_window.py:2473 +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1357 msgid "_Edit" msgstr "_Edycja" -#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/roster_window.glade.h:17 msgid "_FAQ" msgstr "_FAQ" -#: ../data/glade/roster_window.glade.h:17 +#: ../data/glade/roster_window.glade.h:18 msgid "_Help" msgstr "_Pomoc" -#: ../data/glade/roster_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:20 msgid "_Preferences" msgstr "_Ustawienia" -#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:21 msgid "_Quit" msgstr "_ZakoÅ„cz" -#: ../data/glade/roster_window.glade.h:21 +#: ../data/glade/roster_window.glade.h:22 +msgid "_Send Single Message..." +msgstr "WyÅ›lij _wiadomość..." + +#: ../data/glade/roster_window.glade.h:24 msgid "_View" msgstr "_Widok" @@ -2216,6 +2334,15 @@ msgstr "_Widok" msgid "Please wait while retrieving search form..." msgstr "ProszÄ™ czekać, trwa pobieranie formularza wyszukiwania..." +#: ../data/glade/search_window.glade.h:3 +msgid "_Add contact" +msgstr "Dodaj _kontakt" + +#. Information +#: ../data/glade/search_window.glade.h:4 ../src/roster_window.py:2881 +msgid "_Information" +msgstr "Informacje o kontakcie" + #: ../data/glade/service_discovery_window.glade.h:1 msgid "G_o" msgstr "I_dź" @@ -2224,10 +2351,6 @@ msgstr "I_dź" 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" @@ -2304,6 +2427,11 @@ msgstr "ProÅ›ba o autoryzacjÄ™" msgid "_Deny" msgstr "O_dmów" +#: ../data/glade/synchronise_contacts_dialog.glade.h:1 +#, fuzzy +msgid "Select the account with which to synchronise" +msgstr "Wskaż konto, z którym chcesz zsynchronizować kontakty" + #: ../data/glade/synchronise_select_account_dialog.glade.h:1 msgid "Select the account with which you want to synchronise" msgstr "Wskaż konto, z którym chcesz zsynchronizować kontakty" @@ -2320,6 +2448,10 @@ msgstr "Synchronizacja: wybierz kontakty" msgid "Mute Sounds" msgstr "WyÅ‚Ä…cz dźwiÄ™ki" +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "WyÅ›lij _wiadomość" + #: ../data/glade/systray_context_menu.glade.h:3 msgid "Show All Pending _Events" msgstr "Pokaż wszystkie oczekujÄ…ce _zdarzenia" @@ -2332,41 +2464,39 @@ msgstr "Pokaż _listÄ™ kontaktów" msgid "Sta_tus" msgstr "Sta_tus" +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "_Pokój" + #. Given Name #: ../data/glade/vcard_information_window.glade.h:5 msgid "Ask:" msgstr "Pytaj:" #: ../data/glade/vcard_information_window.glade.h:8 -msgid "Click to force avatar" -msgstr "Kliknij aby ustawić avatar" - -#: ../data/glade/vcard_information_window.glade.h:9 msgid "Client:" msgstr "Klient:" -#: ../data/glade/vcard_information_window.glade.h:10 +#: ../data/glade/vcard_information_window.glade.h:9 msgid "Comments" msgstr "Komentarze" -#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:11 msgid "Configured avatar:" msgstr "Ustawiony avatar:" -#: ../data/glade/vcard_information_window.glade.h:13 +#: ../data/glade/vcard_information_window.glade.h:12 #: ../data/glade/zeroconf_information_window.glade.h:1 msgid "Contact" msgstr "Kontakt" -#: ../data/glade/vcard_information_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:13 msgid "Contact Information" msgstr "Informacje o kontakcie" -#: ../data/glade/vcard_information_window.glade.h:26 -#: ../data/glade/zeroconf_information_window.glade.h:4 -#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:416 -msgid "Jabber ID:" -msgstr "Jabber ID:" +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "WiÄ™cej" #: ../data/glade/vcard_information_window.glade.h:33 msgid "OS:" @@ -2399,11 +2529,6 @@ msgstr "<b>Jabber Traffic</b>" msgid "<b>XML Input</b>" msgstr "<b>WejÅ›cie XML</b>" -#. 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" @@ -2422,15 +2547,29 @@ msgstr "Wiado_mość" msgid "_Presence" msgstr "_Obecność" -#: ../data/glade/zeroconf_information_window.glade.h:3 -#: ../data/glade/zeroconf_properties_window.glade.h:6 -msgid "First Name:" -msgstr "ImiÄ™:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Dodaj powiadomienia _specjalne" -#: ../data/glade/zeroconf_information_window.glade.h:5 -#: ../data/glade/zeroconf_properties_window.glade.h:14 -msgid "Last Name:" -msgstr "Nazwisko:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Przypisz klucz Open_PGP" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2496 +msgid "Edit _Groups" +msgstr "Modyfikuj _grupy" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2853 +msgid "_Rename" +msgstr "_ZmieÅ„ nazwÄ™" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Modyfikuj konto..." #: ../data/glade/zeroconf_information_window.glade.h:6 msgid "Local jid:" @@ -2440,266 +2579,275 @@ msgstr "Lokalny JID:" msgid "Personal" msgstr "Informacje osobiste" -#: ../data/glade/zeroconf_properties_window.glade.h:11 -msgid "" -"If the default port that is used for incoming messages is unfitting for your " -"setup you can select another one here.\n" -"You might consider to change possible firewall settings." -msgstr "" -"Jeżeli domyÅ›lny port, na którym przyjmowane sÄ… nadchodzÄ…ce wiadomoÅ›ci nie " -"odpowiada ci, możesz wskazać numer portu, jakiego chcesz używać.\n" -"Konieczna stać siÄ™ może ponowna konfiguracja firewalla." - #: ../data/glade/zeroconf_properties_window.glade.h:15 msgid "Modify Account" msgstr "Modyfikuj konto" -#: ../data/glade/zeroconf_properties_window.glade.h:21 -msgid "Use custom port:" -msgstr "Użyj innego portu:" - #. For i18n -#: ../src/advanced.py:51 +#: ../src/advanced.py:56 msgid "Activated" msgstr "Aktywny" -#: ../src/advanced.py:51 +#: ../src/advanced.py:56 msgid "Deactivated" msgstr "Nieaktywny" -#: ../src/advanced.py:53 +#: ../src/advanced.py:58 msgid "Boolean" msgstr "Zmienna logiczna" -#: ../src/advanced.py:54 +#: ../src/advanced.py:59 msgid "Integer" msgstr "Liczba caÅ‚kowita" -#: ../src/advanced.py:55 +#: ../src/advanced.py:60 msgid "Text" msgstr "Tekst" -#: ../src/advanced.py:56 +#: ../src/advanced.py:61 msgid "Color" msgstr "Kolor" -#: ../src/advanced.py:65 +#: ../src/advanced.py:70 msgid "Preference Name" msgstr "Nazwa opcji" -#: ../src/advanced.py:71 +#: ../src/advanced.py:76 msgid "Value" msgstr "Wartość" -#: ../src/advanced.py:79 +#: ../src/advanced.py:84 msgid "Type" msgstr "Typ" #. we talk about option description in advanced configuration editor -#: ../src/advanced.py:136 +#: ../src/advanced.py:140 msgid "(None)" msgstr "(Brak)" #. we talk about password -#: ../src/advanced.py:239 +#: ../src/advanced.py:243 msgid "Hidden" msgstr "Ukryte" #. 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) +#. LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done) #. echo "{_('en'):'en'",$LANG"}" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "English" msgstr "angielski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Belarusian" msgstr "buÅ‚garski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Bulgarian" msgstr "buÅ‚garski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Breton" msgstr "bretoÅ„ski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Czech" msgstr "czeski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "German" msgstr "niemiecki" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Greek" msgstr "grecki" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "British" msgstr "brytyjski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Esperanto" msgstr "esperanto" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Spanish" msgstr "hiszpaÅ„ski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Basque" msgstr "baskijski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "French" msgstr "francuski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Croatian" msgstr "chorwacki" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Italian" msgstr "wÅ‚oski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Norwegian (b)" msgstr "norweski (b)" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Dutch" msgstr "holenderski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Norwegian" msgstr "norweski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Polish" msgstr "polski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Portuguese" msgstr "portugalski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Brazilian Portuguese" msgstr "portugalski (Brazylia)" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Russian" msgstr "rosyjski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Serbian" msgstr "serbski" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Slovak" msgstr "sÅ‚owacki" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Swedish" msgstr "szwedzki" -#: ../src/chat_control.py:52 +#: ../src/chat_control.py:60 msgid "Chinese (Ch)" msgstr "chiÅ„ski (Ch)" -#: ../src/chat_control.py:212 ../src/dialogs.py:1706 -msgid "" -"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" -"\n" -"Highlighting misspelled words feature will not be used" -msgstr "" -"JeÅ›li podÅ›wietlanie bÅ‚Ä™dów w pisowni dziaÅ‚a dla niewÅ‚aÅ›ciwego jÄ™zyka, to " -"ustaw odpowiednio zmiennÄ… Å›rodowiskowÄ… $LANG. Np. dla jÄ™zyka polskiego wpisz " -"export LANG=pl_PL do pliku ~/.bash_profile lub globalnie do pliku in /etc/" -"profile.\n" -"\n" -"PodÅ›wiedlanie bÅ‚Ä™dów w pisowni nie bÄ™dzie używane" - -#: ../src/chat_control.py:251 +#: ../src/chat_control.py:314 msgid "Spelling language" msgstr "Wybierz sÅ‚ownik" #. we are not connected -#: ../src/chat_control.py:274 ../src/chat_control.py:480 +#: ../src/chat_control.py:337 ../src/chat_control.py:560 msgid "A connection is not available" msgstr "PoÅ‚Ä…czenie jest niemożliwe" -#: ../src/chat_control.py:275 ../src/chat_control.py:481 +#: ../src/chat_control.py:338 ../src/chat_control.py:561 msgid "Your message can not be sent until you are connected." msgstr "Nie możesz wysÅ‚ać wiadomoÅ›ci dopóki nie bÄ™dziesz poÅ‚Ä…czony." -#: ../src/chat_control.py:1050 +#: ../src/chat_control.py:1187 #, python-format msgid "%(nickname)s from group chat %(room_name)s" msgstr "%(nickname)s z pokoju %(room_name)s" #. we talk about a contact here -#: ../src/chat_control.py:1139 +#: ../src/chat_control.py:1282 #, python-format msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" msgstr "" "Ani %s nie przesyÅ‚a swojego klucza OpenPGP, ani Ty nie przypisaÅ‚eÅ› mu " "żadnego klucza" -#: ../src/chat_control.py:1173 ../src/groupchat_control.py:1276 +#: ../src/chat_control.py:1325 ../src/groupchat_control.py:1433 +#, 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/chat_control.py:1332 ../src/groupchat_control.py:1456 #, python-format msgid "Commands: %s" msgstr "Polecenia: %s" -#: ../src/chat_control.py:1176 ../src/groupchat_control.py:1290 +#: ../src/chat_control.py:1335 ../src/groupchat_control.py:1470 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Użycie: /%s czyÅ›cie okno tekstowe." -#: ../src/chat_control.py:1179 ../src/groupchat_control.py:1295 +#: ../src/chat_control.py:1338 ../src/groupchat_control.py:1475 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Użycie: /%s ukrywa przyciski czatu." -#: ../src/chat_control.py:1184 ../src/groupchat_control.py:1334 +#: ../src/chat_control.py:1341 ../src/groupchat_control.py:1491 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Użycie: /%s <dziaÅ‚anie> wysyÅ‚a dziaÅ‚anie do aktualnego pokoju. Używaj w " +"trzeciej osobie (np. /%s eksploduje.)" + +#: ../src/chat_control.py:1345 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "Uzycie: /%s, wysyÅ‚a sygnaÅ‚ ping do kontaktu" + +#: ../src/chat_control.py:1348 +#, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "Użycie: /%s wysyÅ‚a wiadomość do kontaktu" + +#: ../src/chat_control.py:1351 ../src/groupchat_control.py:1514 #, python-format msgid "No help info for /%s" msgstr "Brak informacji o pomocy dla /%s" -#: ../src/chat_control.py:1314 +#: ../src/chat_control.py:1489 ../src/chat_control.py:1515 msgid "Encryption enabled" msgstr "Szyfrowanie wÅ‚Ä…czone" -#: ../src/chat_control.py:1319 +#: ../src/chat_control.py:1494 +msgid "Session WILL be logged" +msgstr "Sesja BĘDZIE logowana" + +#: ../src/chat_control.py:1496 +msgid "Session WILL NOT be logged" +msgstr "Sesja NIE BĘDZIE logowana" + +#: ../src/chat_control.py:1503 +msgid "The following message was NOT encrypted" +msgstr "Ta wiadomość NIE zostaÅ‚a jest zaszyfrowana" + +#: ../src/chat_control.py:1507 ../src/chat_control.py:1520 +#: ../src/chat_control.py:2166 msgid "Encryption disabled" msgstr "Szyfrowanie wyÅ‚Ä…czone" #. add_to_roster_menuitem -#: ../src/chat_control.py:1463 ../src/conversation_textview.py:501 -#: ../src/dialogs.py:629 ../src/gajim.py:853 ../src/gajim.py:854 -#: ../src/gajim.py:1199 ../src/roster_window.py:334 -#: ../src/roster_window.py:414 ../src/roster_window.py:1675 -#: ../src/roster_window.py:1685 ../src/roster_window.py:1864 -#: ../src/roster_window.py:2088 ../src/roster_window.py:2745 -#: ../src/roster_window.py:2949 ../src/roster_window.py:4234 -#: ../src/roster_window.py:4236 ../src/common/contacts.py:73 -#: ../src/common/helpers.py:43 ../src/common/helpers.py:255 +#: ../src/chat_control.py:1683 ../src/conversation_textview.py:701 +#: ../src/dialogs.py:730 ../src/gajim.py:904 ../src/gajim.py:905 +#: ../src/gajim.py:1393 ../src/gajim.py:1644 ../src/roster_window.py:351 +#: ../src/roster_window.py:435 ../src/roster_window.py:1795 +#: ../src/roster_window.py:1805 ../src/roster_window.py:2044 +#: ../src/roster_window.py:2276 ../src/roster_window.py:3124 +#: ../src/roster_window.py:3363 ../src/roster_window.py:4734 +#: ../src/roster_window.py:4736 ../src/common/contacts.py:89 +#: ../src/common/helpers.py:49 ../src/common/helpers.py:263 msgid "Not in Roster" msgstr "spoza listy kontaktów" #. %s is being replaced in the code with JID -#: ../src/chat_control.py:1607 +#: ../src/chat_control.py:1836 #, python-format msgid "You just received a new message from \"%s\"" msgstr "WÅ‚aÅ›nie otrzymaÅ‚eÅ› nowÄ… wiadomość od \"%s\"" -#: ../src/chat_control.py:1608 +#: ../src/chat_control.py:1837 msgid "" "If you close this tab and you have history disabled, this message will be " "lost." @@ -2707,29 +2855,24 @@ msgstr "" "JeÅ›li zamkniesz tÄ™ kartÄ™, a nie masz uaktywnionej opcji historii, to " "utracisz tÄ™ wiadomość." -#: ../src/config.py:139 ../src/config.py:588 +#: ../src/config.py:127 ../src/config.py:549 msgid "Disabled" msgstr "WyÅ‚Ä…czone" -#: ../src/config.py:233 -#, python-format -msgid "Every %s _minutes" -msgstr "Co %s _minut" - -#: ../src/config.py:353 +#: ../src/config.py:293 msgid "Active" msgstr "Aktywny" -#: ../src/config.py:361 +#: ../src/config.py:301 msgid "Event" msgstr "Zdarzenie" -#: ../src/config.py:684 ../src/gajim.py:2309 +#: ../src/config.py:622 ../src/dialogs.py:1014 #, python-format msgid "Dictionary for lang %s not available" msgstr "Brak sÅ‚ownika dla tego jÄ™zyka (%s)" -#: ../src/config.py:685 ../src/gajim.py:2310 +#: ../src/config.py:623 #, python-format msgid "" "You have to install %s dictionary to use spellchecking, or choose another " @@ -2738,248 +2881,253 @@ msgstr "" "Musisz zainstalować sÅ‚ownik %s aby aktywować sprawdzanie pisowni lub wybrać " "inny jÄ™zyk korzystać z opcji speller_langugage." -#: ../src/config.py:1008 +#: ../src/config.py:974 msgid "status message title" msgstr "nagłówek informacji o statusie" -#: ../src/config.py:1008 +#: ../src/config.py:974 msgid "status message text" msgstr "treść informacji o statusie" -#: ../src/config.py:1044 +#: ../src/config.py:1010 msgid "First Message Received" msgstr "Otrzymano pierwszÄ… wiadomość" -#: ../src/config.py:1045 +#: ../src/config.py:1011 msgid "Next Message Received" msgstr "OtrzymaÅ‚eÅ› nowÄ… wiadomość" -#: ../src/config.py:1046 +#: ../src/config.py:1012 msgid "Contact Connected" msgstr "Kontakt poÅ‚Ä…czyÅ‚ siÄ™" -#: ../src/config.py:1047 +#: ../src/config.py:1013 msgid "Contact Disconnected" msgstr "Kontakt rozÅ‚Ä…czyÅ‚ siÄ™" -#: ../src/config.py:1048 +#: ../src/config.py:1014 msgid "Message Sent" msgstr "Wiadomość zostaÅ‚a wysÅ‚ana" -#: ../src/config.py:1049 +#: ../src/config.py:1015 msgid "Group Chat Message Highlight" msgstr "PodÅ›wietlenie wiadomoÅ›ci z czatu" -#: ../src/config.py:1050 +#: ../src/config.py:1016 msgid "Group Chat Message Received" msgstr "Otrzymano wiadomość na czacie" -#: ../src/config.py:1057 +#: ../src/config.py:1023 msgid "GMail Email Received" msgstr "Nowa poczta na koncie Gmail" -#: ../src/config.py:1260 +#. Name column +#: ../src/config.py:1292 ../src/dialogs.py:1513 ../src/dialogs.py:1577 +#: ../src/disco.py:742 ../src/disco.py:1568 ../src/disco.py:1814 +#: ../src/history_window.py:113 +msgid "Name" +msgstr "Nazwa" + +#: ../src/config.py:1400 ../src/common/config.py:379 +msgid "Be right back." +msgstr "Zaraz wracam." + +#: ../src/config.py:1404 +msgid "Relogin now?" +msgstr "Czy zalogować siÄ™ ponownie?" + +#: ../src/config.py:1405 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "" +"Jeżeli chcesz by wszelkie zmiany odniosÅ‚y natychmiastowy skutek, musisz " +"zalogować siÄ™ ponownie." + +#: ../src/config.py:1500 ../src/config.py:1591 msgid "OpenPGP is not usable in this computer" msgstr "Nie można używać OpenPGP na tym komputerze" -#: ../src/config.py:1306 +#: ../src/config.py:1627 ../src/config.py:1668 +msgid "Unread events" +msgstr "Nieprzeczytane wiadomoÅ›ci" + +#: ../src/config.py:1628 +msgid "Read all pending events before removing this account." +msgstr "" +"Przejrzyj wszystkie niepotwierdzone zdarzenia przed usuniÄ™ciem tego konta." + +#: ../src/config.py:1654 +#, python-format +msgid "You have opened chat in account %s" +msgstr "Masz otwarte okno rozmowy na koncie %s" + +#: ../src/config.py:1655 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "" +"Wszystkie otwarte zakÅ‚adki rozmów i czatów zostanÄ… zamkniÄ™te. Kontynuować?" + +#: ../src/config.py:1664 msgid "You are currently connected to the server" msgstr "JesteÅ› poÅ‚Ä…czony z serwerem" -#: ../src/config.py:1307 +#: ../src/config.py:1665 msgid "To change the account name, you must be disconnected." msgstr "Aby zmienić nazwÄ™ konta, musisz być rozÅ‚Ä…czony." -#: ../src/config.py:1310 ../src/config.py:1916 -msgid "Unread events" -msgstr "Nieprzeczytane wiadomoÅ›ci" - -#: ../src/config.py:1311 +#: ../src/config.py:1669 msgid "To change the account name, you must read all pending events." msgstr "" "Aby zmienić nazwÄ™ konta, musisz przeczytać wszystkie zalegÅ‚e wiadomoÅ›ci." -#: ../src/config.py:1315 +#: ../src/config.py:1675 msgid "Account Name Already Used" msgstr "Konto o takiej nazwie już istnieje" -#: ../src/config.py:1316 +#: ../src/config.py:1676 msgid "" "This name is already used by another of your accounts. Please choose another " "name." msgstr "Posiadasz już konto o tej nazwie. ZmieÅ„ nazwÄ™ konta na unikalnÄ…." -#: ../src/config.py:1320 ../src/config.py:1324 +#: ../src/config.py:1680 ../src/config.py:1684 msgid "Invalid account name" msgstr "Niepoprawna nazwa konta" -#: ../src/config.py:1321 +#: ../src/config.py:1681 msgid "Account name cannot be empty." msgstr "Nazwa konta nie może być pusta." -#: ../src/config.py:1325 +#: ../src/config.py:1685 msgid "Account name cannot contain spaces." msgstr "Nazwa konta nie może zawierać spacji." -#: ../src/config.py:1333 ../src/config.py:1339 ../src/config.py:1349 -#: ../src/config.py:2900 +#: ../src/config.py:1749 +msgid "Rename Account" +msgstr "ZmieÅ„ nazwÄ™ konta" + +#: ../src/config.py:1750 +#, python-format +msgid "Enter a new name for account %s" +msgstr "Wpisz nowÄ… nazwÄ™ dla kontaktu %s." + +#: ../src/config.py:1768 ../src/config.py:1776 ../src/config.py:1816 +#: ../src/config.py:3022 msgid "Invalid Jabber ID" msgstr "Niepoprawny Jabber ID" -#: ../src/config.py:1340 +#: ../src/config.py:1777 msgid "A Jabber ID must be in the form \"user@servername\"." msgstr "Jabber ID musi być postaci \"użytkownik@nazwaserwera\"." -#: ../src/config.py:1399 +#: ../src/config.py:1962 ../src/config.py:3093 msgid "Invalid entry" msgstr "Niepoprawny wpis" -#: ../src/config.py:1400 +#: ../src/config.py:1963 ../src/config.py:3094 msgid "Custom port must be a port number." msgstr "Wybrany port musi być numerem portu." -#: ../src/config.py:1528 ../src/common/config.py:368 -msgid "Be right back." -msgstr "Zaraz wracam." - -#: ../src/config.py:1538 -msgid "Relogin now?" -msgstr "Czy zalogować siÄ™ ponownie?" +#: ../src/config.py:1984 +msgid "Failed to get secret keys" +msgstr "Pobieranie kluczy prywatnych nie powiodÅ‚o siÄ™" -#: ../src/config.py:1539 -msgid "If you want all the changes to apply instantly, you must relogin." +#: ../src/config.py:1985 +msgid "There was a problem retrieving your OpenPGP secret keys." msgstr "" -"Jeżeli chcesz by wszelkie zmiany odniosÅ‚y natychmiastowy skutek, musisz " -"zalogować siÄ™ ponownie." +"WystÄ…piÅ‚ problem w trakcie odzyskiwania Twoich kluczy prywatnych OpenPGP." + +#: ../src/config.py:1988 +msgid "OpenPGP Key Selection" +msgstr "Wybór klucza OpenPGP" -#: ../src/config.py:1565 +#: ../src/config.py:1989 +msgid "Choose your OpenPGP key" +msgstr "Wybierz klucz OpenPGP" + +#: ../src/config.py:2029 msgid "No such account available" msgstr "Takie konto nie jest dostÄ™pne" -#: ../src/config.py:1566 +#: ../src/config.py:2030 msgid "You must create your account before editing your personal information." msgstr "Musisz najpierw stworzyć konto by móc edytować informacje o sobie." -#: ../src/config.py:1573 ../src/dialogs.py:1190 ../src/dialogs.py:1326 -#: ../src/dialogs.py:1506 ../src/disco.py:420 ../src/profile_window.py:325 +#: ../src/config.py:2037 ../src/dialogs.py:1360 ../src/dialogs.py:1501 +#: ../src/dialogs.py:1681 ../src/disco.py:426 ../src/profile_window.py:306 msgid "You are not connected to the server" msgstr "Nie jesteÅ› poÅ‚Ä…czony z serwerem" -#: ../src/config.py:1574 +#: ../src/config.py:2038 msgid "Without a connection, you can not edit your personal information." msgstr "Musisz być poÅ‚Ä…czony, aby móc zmieniać informacje o sobie." -#: ../src/config.py:1578 +#: ../src/config.py:2042 msgid "Your server doesn't support Vcard" msgstr "Twój serwer nie akceptuje Vcard" -#: ../src/config.py:1579 +#: ../src/config.py:2043 msgid "Your server can't save your personal information." msgstr "Twój serwer nie potrafi zapisać informacji osobistych." -#: ../src/config.py:1610 ../src/config.py:3288 -msgid "Failed to get secret keys" -msgstr "Pobieranie kluczy prywatnych nie powiodÅ‚o siÄ™" - -#: ../src/config.py:1611 ../src/config.py:3289 -msgid "There was a problem retrieving your OpenPGP secret keys." -msgstr "" -"WystÄ…piÅ‚ problem w trakcie odzyskiwania Twoich kluczy prywatnych OpenPGP." - -#: ../src/config.py:1614 ../src/config.py:3292 -msgid "OpenPGP Key Selection" -msgstr "Wybór klucza OpenPGP" - -#: ../src/config.py:1615 ../src/config.py:3293 -msgid "Choose your OpenPGP key" -msgstr "Wybierz klucz OpenPGP" - -#. Name column -#: ../src/config.py:1850 ../src/dialogs.py:1338 ../src/dialogs.py:1402 -#: ../src/disco.py:741 ../src/disco.py:1564 ../src/disco.py:1802 -#: ../src/history_window.py:78 -msgid "Name" -msgstr "Nazwa" - -#: ../src/config.py:1853 ../src/dialogs.py:1341 -msgid "Server" -msgstr "Serwer" - -#: ../src/config.py:1917 -msgid "Read all pending events before removing this account." -msgstr "" -"Przejrzyj wszystkie niepotwierdzone zdarzenia przed usuniÄ™ciem tego konta." - -#: ../src/config.py:1954 -#, python-format -msgid "You have opened chat in account %s" -msgstr "Masz otwarte okno rozmowy na koncie %s" - -#: ../src/config.py:1955 -msgid "All chat and groupchat windows will be closed. Do you want to continue?" -msgstr "" -"Wszystkie otwarte zakÅ‚adki rozmów i czatów zostanÄ… zamkniÄ™te. Kontynuować?" - -#: ../src/config.py:2014 +#: ../src/config.py:2074 msgid "Account Local already exists." msgstr "Konto o takiej nazwie już istnieje." -#: ../src/config.py:2015 +#: ../src/config.py:2075 msgid "Please rename or remove it before enabling link-local messaging." msgstr "" "ProszÄ™ go zmienić lub usunąć przed uaktywnieniem komunikacji link-local." -#: ../src/config.py:2111 +#: ../src/config.py:2251 #, python-format msgid "Edit %s" msgstr "Modyfikuj %s" -#: ../src/config.py:2113 +#: ../src/config.py:2253 #, python-format msgid "Register to %s" msgstr "Zarejestruj na %s" #. list at the beginning -#: ../src/config.py:2179 +#: ../src/config.py:2289 msgid "Ban List" msgstr "Lista kontaktów zablokowanych" -#: ../src/config.py:2180 +#: ../src/config.py:2290 msgid "Member List" msgstr "_Lista uczestników" -#: ../src/config.py:2181 +#: ../src/config.py:2291 msgid "Owner List" msgstr "_Lista wÅ‚aÅ›cicieli" -#: ../src/config.py:2182 +#: ../src/config.py:2292 msgid "Administrator List" msgstr "_Administratorzy" #. Address column #. holds JID (who said this) -#: ../src/config.py:2231 ../src/disco.py:748 ../src/history_manager.py:155 +#: ../src/config.py:2341 ../src/disco.py:749 ../src/history_manager.py:160 msgid "JID" msgstr "JID" -#: ../src/config.py:2239 +#: ../src/config.py:2349 msgid "Reason" msgstr "Powód" -#: ../src/config.py:2244 +#: ../src/config.py:2354 msgid "Nick" msgstr "Nick" -#: ../src/config.py:2248 +#: ../src/config.py:2358 msgid "Role" msgstr "Funkcja:" -#: ../src/config.py:2273 +#: ../src/config.py:2383 msgid "Banning..." msgstr "BlokujÄ™ użytkownika..." #. You can move '\n' before user@domain if that line is TOO BIG -#: ../src/config.py:2275 +#: ../src/config.py:2385 msgid "" "<b>Whom do you want to ban?</b>\n" "\n" @@ -2987,11 +3135,11 @@ msgstr "" "<b>Którego użytkownika chcesz zablokować?</b>\n" "\n" -#: ../src/config.py:2277 +#: ../src/config.py:2387 msgid "Adding Member..." msgstr "DodajÄ™ czÅ‚onka..." -#: ../src/config.py:2278 +#: ../src/config.py:2388 msgid "" "<b>Whom do you want to make a member?</b>\n" "\n" @@ -2999,11 +3147,11 @@ msgstr "" "<b>Status którego użytkownika chcesz zmienić?</b>\n" "\n" -#: ../src/config.py:2280 +#: ../src/config.py:2390 msgid "Adding Owner..." msgstr "DodajÄ™ wÅ‚aÅ›ciciela..." -#: ../src/config.py:2281 +#: ../src/config.py:2391 msgid "" "<b>Whom do you want to make an owner?</b>\n" "\n" @@ -3011,11 +3159,11 @@ msgstr "" "<b>Którego użytkownika chcesz uczynić wÅ‚aÅ›cicielem pokoju?</b>\n" "\n" -#: ../src/config.py:2283 +#: ../src/config.py:2393 msgid "Adding Administrator..." msgstr "DodajÄ™ administratora..." -#: ../src/config.py:2284 +#: ../src/config.py:2394 msgid "" "<b>Whom do you want to make an administrator?</b>\n" "\n" @@ -3023,7 +3171,7 @@ msgstr "" "<b>Którego użytkownika chcesz uczynić administratorem?</b>\n" "\n" -#: ../src/config.py:2285 +#: ../src/config.py:2395 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -3039,99 +3187,83 @@ 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:2389 +#: ../src/config.py:2499 #, python-format msgid "Removing %s account" msgstr "Usuwanie konta %s" -#: ../src/config.py:2406 ../src/roster_window.py:3008 +#: ../src/config.py:2514 ../src/gajim.py:1336 ../src/roster_window.py:3426 msgid "Password Required" msgstr "Wymagane hasÅ‚o" -#: ../src/config.py:2407 ../src/roster_window.py:3004 +#: ../src/config.py:2515 ../src/roster_window.py:3422 #, python-format msgid "Enter your password for account %s" msgstr "Wpisz hasÅ‚o dla konta %s" -#: ../src/config.py:2408 ../src/roster_window.py:3009 +#: ../src/config.py:2516 ../src/roster_window.py:3427 msgid "Save password" msgstr "Zapisz hasÅ‚o" -#: ../src/config.py:2422 +#: ../src/config.py:2529 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Konto \"%s\" jest poÅ‚Ä…czone z serwerem." -#: ../src/config.py:2423 +#: ../src/config.py:2530 msgid "If you remove it, the connection will be lost." msgstr "JeÅ›li to usuniesz, poÅ‚Ä…czenie zostanie zerwane." -#: ../src/config.py:2508 +#: ../src/config.py:2623 msgid "Default" msgstr "DomyÅ›lny" -#: ../src/config.py:2508 +#: ../src/config.py:2623 msgid "?print_status:All" msgstr "?print_status:Wszystkie" -#: ../src/config.py:2509 +#: ../src/config.py:2624 msgid "Enter and leave only" msgstr "Jedynie wejdź i wyjdź" -#: ../src/config.py:2510 +#: ../src/config.py:2625 msgid "?print_status:None" msgstr "?print_status:Å»aden" -#: ../src/config.py:2578 +#: ../src/config.py:2694 msgid "New Group Chat" msgstr "Nowa rozmowa grupowa" -#: ../src/config.py:2611 +#: ../src/config.py:2727 msgid "This bookmark has invalid data" msgstr "Ta zakÅ‚adka zawiera niepoprawne dane" -#: ../src/config.py:2612 +#: ../src/config.py:2728 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:2875 +#: ../src/config.py:3005 msgid "Invalid username" msgstr "Niepoprawna nazwa użytkownika" -#: ../src/config.py:2876 +#: ../src/config.py:3007 msgid "You must provide a username to configure this account." msgstr "Musisz wpisać nazwÄ™ użytkownika aby skonfigurować to konto." -#: ../src/config.py:2886 ../src/dialogs.py:1525 -msgid "Invalid password" -msgstr "Niepoprawne hasÅ‚o" - -#: ../src/config.py:2887 -msgid "You must enter a password for the new account." -msgstr "Musisz wpisać hasÅ‚o dla nowego konta." - -#: ../src/config.py:2891 ../src/dialogs.py:1530 -msgid "Passwords do not match" -msgstr "HasÅ‚a nie zgadzajÄ… siÄ™" - -#: ../src/config.py:2892 ../src/dialogs.py:1531 -msgid "The passwords typed in both fields must be identical." -msgstr "HasÅ‚a wpisane w obydwu polach muszÄ… być identyczne." - -#: ../src/config.py:2911 +#: ../src/config.py:3033 msgid "Duplicate Jabber ID" msgstr "Taki Jabber ID już istnieje!" -#: ../src/config.py:2912 +#: ../src/config.py:3034 msgid "This account is already configured in Gajim." msgstr "Konto o takiej nazwie jest już skonfigurowane." -#: ../src/config.py:2929 +#: ../src/config.py:3051 msgid "Account has been added successfully" msgstr "Konto zostaÅ‚o pomyÅ›lnie dodane" -#: ../src/config.py:2930 ../src/config.py:2965 +#: ../src/config.py:3052 ../src/config.py:3197 msgid "" "You can set advanced account options by pressing the Advanced button, or " "later by choosing the Accounts menuitem under the Edit menu from the main " @@ -3140,23 +3272,31 @@ msgstr "" "Możesz ustawić opcje zaawansowane wciskajÄ…c przycisk Zaawansowane lub " "później wybierajÄ…c pozycjÄ™ Konta z menu Edycja w głównym oknie programu." -#: ../src/config.py:2964 -msgid "Your new account has been created successfully" -msgstr "Twoje konto zostaÅ‚o zaÅ‚ożone" +#: ../src/config.py:3069 +msgid "Invalid server" +msgstr "Niepoprawna nazwa serwera" + +#: ../src/config.py:3070 +msgid "Please provide a server on which you want to register." +msgstr "Wpisz adres serwera, na którym chcesz siÄ™ zarejestrować." -#: ../src/config.py:2982 +#: ../src/config.py:3176 ../src/config.py:3215 msgid "An error occurred during account creation" msgstr "WystÄ…piÅ‚ bÅ‚Ä…d w trakcie tworzenia konta" -#: ../src/config.py:3040 +#: ../src/config.py:3196 +msgid "Your new account has been created successfully" +msgstr "Twoje konto zostaÅ‚o zaÅ‚ożone" + +#: ../src/config.py:3299 msgid "Account name is in use" msgstr "Nazwa konta jest już zajÄ™ta" -#: ../src/config.py:3041 +#: ../src/config.py:3300 msgid "You already have an account using this name." msgstr "Masz już konto o takiej nazwie." -#: ../src/conversation_textview.py:279 +#: ../src/conversation_textview.py:450 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -3164,191 +3304,200 @@ 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:348 +#: ../src/conversation_textview.py:548 #, python-format msgid "_Actions for \"%s\"" msgstr "_DziaÅ‚ania dla wyrażenia \"%s\"" -#: ../src/conversation_textview.py:360 +#: ../src/conversation_textview.py:560 msgid "Read _Wikipedia Article" msgstr "Przeczytaj artykuÅ‚ w _Wikipedii" -#: ../src/conversation_textview.py:365 +#: ../src/conversation_textview.py:565 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:381 +#: ../src/conversation_textview.py:581 #, 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:394 +#: ../src/conversation_textview.py:594 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "W URL-u Przeszukiwania Sieci brakuje \"%s\"" -#: ../src/conversation_textview.py:397 +#: ../src/conversation_textview.py:597 msgid "Web _Search for it" msgstr "Szukaj w _Internecie" -#: ../src/conversation_textview.py:403 +#: ../src/conversation_textview.py:603 msgid "Open as _Link" msgstr "Otwórz jako _odnoÅ›nik" -#: ../src/conversation_textview.py:848 +#: ../src/conversation_textview.py:1069 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:852 +#: ../src/conversation_textview.py:1073 #, python-format msgid "%i days ago" msgstr "%i dni temu" #. if we have subject, show it too! -#: ../src/conversation_textview.py:886 +#: ../src/conversation_textview.py:1107 #, python-format msgid "Subject: %s\n" msgstr "Temat: %s\n" -#: ../src/dialogs.py:59 +#: ../src/dialogs.py:71 #, python-format msgid "Contact name: <i>%s</i>" msgstr "Nazwa kontaktu: <i>%s</i>" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: <i>%s</i>" msgstr "JID : <i>%s</i>" -#: ../src/dialogs.py:211 +#: ../src/dialogs.py:223 msgid "Group" msgstr "Grupa" -#: ../src/dialogs.py:218 +#: ../src/dialogs.py:230 msgid "In the group" msgstr "W grupie" -#: ../src/dialogs.py:269 +#: ../src/dialogs.py:330 msgid "KeyID" msgstr "Identyfikator klucza" -#: ../src/dialogs.py:272 +#: ../src/dialogs.py:333 msgid "Contact name" msgstr "Nazwa kontaktu" -#: ../src/dialogs.py:318 +#: ../src/dialogs.py:379 #, python-format msgid "%s Status Message" msgstr "Informacja o statusie %s" -#: ../src/dialogs.py:320 +#: ../src/dialogs.py:381 msgid "Status Message" msgstr "Opis statusu" -#: ../src/dialogs.py:395 +#: ../src/dialogs.py:481 msgid "Save as Preset Status Message" msgstr "Szablony opisów" -#: ../src/dialogs.py:396 +#: ../src/dialogs.py:482 msgid "Please type a name for this status message" msgstr "Podaj nazwÄ™ dla tego szablonu" -#: ../src/dialogs.py:417 +#: ../src/dialogs.py:493 +msgid "Overwrite Status Message?" +msgstr "Zmienić opis statusu?" + +#: ../src/dialogs.py:494 +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "Status o tej nazwie jest w użyciu. Czy chcesz go zmienić?" + +#: ../src/dialogs.py:510 msgid "AIM Address:" msgstr "_Adres AIM:" -#: ../src/dialogs.py:418 +#: ../src/dialogs.py:511 msgid "GG Number:" msgstr "Numer GG:" -#: ../src/dialogs.py:419 +#: ../src/dialogs.py:512 msgid "ICQ Number:" msgstr "Numer ICQ:" -#: ../src/dialogs.py:420 +#: ../src/dialogs.py:513 msgid "MSN Address:" msgstr "_Adres MSN:" -#: ../src/dialogs.py:421 +#: ../src/dialogs.py:514 msgid "Yahoo! Address:" msgstr "Adres _Yahoo:" -#: ../src/dialogs.py:457 +#: ../src/dialogs.py:551 #, 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:459 +#: ../src/dialogs.py:553 msgid "Please fill in the data of the contact you want to add" msgstr "WypeÅ‚nij informacje o kontakcie, który chcesz dodać" -#: ../src/dialogs.py:609 ../src/dialogs.py:615 +#: ../src/dialogs.py:710 ../src/dialogs.py:716 msgid "Invalid User ID" msgstr "Niepoprawny identyfikator użytkownika" -#: ../src/dialogs.py:616 +#: ../src/dialogs.py:717 msgid "The user ID must not contain a resource." msgstr "ID użytkownika nie może zawierać zasobu." -#: ../src/dialogs.py:630 +#: ../src/dialogs.py:731 msgid "Contact already in roster" msgstr "Kontakt jest już na liÅ›cie kontaktów" -#: ../src/dialogs.py:631 +#: ../src/dialogs.py:732 msgid "This contact is already listed in your roster." msgstr "Ten kontakt znajduje siÄ™ już na twojej liÅ›cie kontaktów." -#: ../src/dialogs.py:668 +#: ../src/dialogs.py:768 msgid "User ID:" msgstr "ID uzytkownika:" -#: ../src/dialogs.py:731 +#: ../src/dialogs.py:830 msgid "A GTK+ jabber client" msgstr "Klient jabbera w GTK+." -#: ../src/dialogs.py:732 +#: ../src/dialogs.py:831 msgid "GTK+ Version:" msgstr "Wersja GTK+:" -#: ../src/dialogs.py:733 +#: ../src/dialogs.py:832 msgid "PyGTK Version:" msgstr "Wersja PyGTK:" -#: ../src/dialogs.py:747 +#: ../src/dialogs.py:846 msgid "Current Developers:" msgstr "Bieżący deweloperzy:" -#: ../src/dialogs.py:749 +#: ../src/dialogs.py:848 msgid "Past Developers:" msgstr "Poprzedni deweloperzy:" -#: ../src/dialogs.py:759 +#: ../src/dialogs.py:858 msgid "THANKS:" msgstr "PodziÄ™kowania:" #. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:765 +#: ../src/dialogs.py:864 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 <someone@somewhere> -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:877 msgid "translator-credits" msgstr "" -"TÅ‚umaczenie na jÄ™zyk polski: Witold KieraÅ› <pambuk@gmail.com>\n" -"Maciej Chojnacki <byte@byte.livenet.pl>" +"TÅ‚umaczenie na jÄ™zyk polski: Witold KieraÅ›\n" +"Maciej Chojnacki <maciej@chojnacki.name>" -#: ../src/dialogs.py:908 +#: ../src/dialogs.py:1007 #, python-format msgid "Unable to bind to port %s." msgstr "Nie można podÅ‚Ä…czyć siÄ™ do portu %s." -#: ../src/dialogs.py:909 +#: ../src/dialogs.py:1008 msgid "" "Maybe you have another running instance of Gajim. File Transfer will be " "cancelled." @@ -3356,75 +3505,92 @@ msgstr "" "Być może masz już uruchomionÄ… innÄ… kopiÄ™ Gajima. PrzesyÅ‚anie plików zostanie " "anulowane." -#: ../src/dialogs.py:1120 +#: ../src/dialogs.py:1015 #, python-format -msgid "Subscription request for account %s from %s" -msgstr "ProÅ›ba o autoryzacjÄ™ dla konta %s od %s" +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"Musisz zainstalować sÅ‚ownik %s aby aktywować sprawdzanie pisowni lub wybrać " +"inny jÄ™zyk korzystać z opcji speller_langugage.\n" +"Do tego czasu podÅ›wietlanie bÅ‚Ä™dnie wpisanych słów nie bÄ™dzie dziaÅ‚aÅ‚o" + +#: ../src/dialogs.py:1289 +#, python-format +msgid "Subscription request for account %s from %s" +msgstr "ProÅ›ba o autoryzacjÄ™ dla konta %s od %s" -#: ../src/dialogs.py:1123 +#: ../src/dialogs.py:1292 #, python-format msgid "Subscription request from %s" msgstr "ProÅ›ba o autoryzacjÄ™ od %s" -#: ../src/dialogs.py:1183 ../src/roster_window.py:705 +#: ../src/dialogs.py:1353 ../src/roster_window.py:769 #, python-format msgid "You are already in group chat %s" msgstr "Już jesteÅ› w pokoju %s" -#: ../src/dialogs.py:1191 +#: ../src/dialogs.py:1361 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:1206 +#: ../src/dialogs.py:1379 #, python-format msgid "Join Group Chat with account %s" msgstr "DoÅ‚Ä…cz do pokoju z konta %s" -#: ../src/dialogs.py:1274 ../src/dialogs.py:1280 -#: ../src/groupchat_control.py:1475 +#: ../src/dialogs.py:1449 ../src/dialogs.py:1455 +#: ../src/groupchat_control.py:1683 msgid "Invalid group chat Jabber ID" msgstr "Niepoprawny Jabber ID" -#: ../src/dialogs.py:1275 ../src/dialogs.py:1281 -#: ../src/groupchat_control.py:1476 +#: ../src/dialogs.py:1450 ../src/dialogs.py:1456 +#: ../src/groupchat_control.py:1684 msgid "The group chat Jabber ID has not allowed characters." msgstr "Używane przez ciebie Jabber ID zawiera niedozwolone znaki." -#: ../src/dialogs.py:1287 +#: ../src/dialogs.py:1462 msgid "This is not a group chat" msgstr "To nie jest czat" -#: ../src/dialogs.py:1288 +#: ../src/dialogs.py:1463 #, python-format msgid "%s is not the name of a group chat." msgstr "%s nie jest nazwÄ… czatu." -#: ../src/dialogs.py:1327 +#: ../src/dialogs.py:1502 msgid "Without a connection, you can not synchronise your contacts." msgstr "Nie możesz zsynchronizować kontaktów przy niektywnym poÅ‚Ä…czeniu." -#: ../src/dialogs.py:1374 +#: ../src/dialogs.py:1516 +msgid "Server" +msgstr "Serwer" + +#: ../src/dialogs.py:1549 msgid "This account is not connected to the server" msgstr "To konto nie jest poÅ‚Ä…czone z serwerem" -#: ../src/dialogs.py:1375 +#: ../src/dialogs.py:1550 msgid "You cannot synchronize with an account unless it is connected." -msgstr "Nie możesz synchronizować kontaktów z kontem, które nie jest poÅ‚Ä…czone." +msgstr "" +"Nie możesz synchronizować kontaktów z kontem, które nie jest poÅ‚Ä…czone." -#: ../src/dialogs.py:1399 +#: ../src/dialogs.py:1574 msgid "Synchronise" msgstr "Synchronizuj" -#: ../src/dialogs.py:1457 +#: ../src/dialogs.py:1632 #, python-format msgid "Start Chat with account %s" msgstr "Rozpocznij rozmowÄ™ z konta %s" -#: ../src/dialogs.py:1459 +#: ../src/dialogs.py:1634 msgid "Start Chat" msgstr "Rozpocznij rozmowÄ™" -#: ../src/dialogs.py:1460 +#: ../src/dialogs.py:1635 msgid "" "Fill in the nickname or the Jabber ID of the contact you would like\n" "to send a chat message to:" @@ -3433,283 +3599,290 @@ msgstr "" "wysÅ‚ać wiadomość:" #. if offline or connecting -#: ../src/dialogs.py:1485 ../src/dialogs.py:1844 ../src/dialogs.py:1975 +#: ../src/dialogs.py:1660 ../src/dialogs.py:2030 ../src/dialogs.py:2171 msgid "Connection not available" msgstr "PoÅ‚Ä…czenie jest niedostÄ™pne" -#: ../src/dialogs.py:1486 ../src/dialogs.py:1845 ../src/dialogs.py:1976 +#: ../src/dialogs.py:1661 ../src/dialogs.py:2031 ../src/dialogs.py:2172 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Sprawdź, czy jesteÅ› poÅ‚Ä…czony z \"%s\"." -#: ../src/dialogs.py:1495 ../src/dialogs.py:1498 +#: ../src/dialogs.py:1670 ../src/dialogs.py:1673 msgid "Invalid JID" msgstr "Niepoprawny JID" -#: ../src/dialogs.py:1498 +#: ../src/dialogs.py:1673 #, python-format msgid "Unable to parse \"%s\"." msgstr "Nie można sparsować \"%s\"." -#: ../src/dialogs.py:1507 +#: ../src/dialogs.py:1682 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:1526 +#: ../src/dialogs.py:1700 +msgid "Invalid password" +msgstr "Niepoprawne hasÅ‚o" + +#: ../src/dialogs.py:1701 msgid "You must enter a password." msgstr "Musisz wpisać hasÅ‚o." +#: ../src/dialogs.py:1705 +msgid "Passwords do not match" +msgstr "HasÅ‚a nie zgadzajÄ… siÄ™" + +#: ../src/dialogs.py:1706 +msgid "The passwords typed in both fields must be identical." +msgstr "HasÅ‚a wpisane w obydwu polach muszÄ… być identyczne." + #. img to display #. default value -#: ../src/dialogs.py:1573 ../src/notify.py:212 ../src/notify.py:416 +#: ../src/dialogs.py:1748 ../src/notify.py:224 ../src/notify.py:434 msgid "Contact Signed In" msgstr "Kontakt poÅ‚Ä…czyÅ‚ siÄ™" -#: ../src/dialogs.py:1575 ../src/notify.py:220 ../src/notify.py:418 +#: ../src/dialogs.py:1750 ../src/notify.py:232 ../src/notify.py:436 msgid "Contact Signed Out" msgstr "Kontakt rozÅ‚Ä…czyÅ‚ siÄ™" #. chat message -#: ../src/dialogs.py:1577 ../src/notify.py:239 ../src/notify.py:420 +#: ../src/dialogs.py:1752 ../src/notify.py:255 ../src/notify.py:438 msgid "New Message" msgstr "Nowa wiadomość" #. single message -#: ../src/dialogs.py:1577 ../src/notify.py:224 ../src/notify.py:420 +#: ../src/dialogs.py:1752 ../src/notify.py:236 ../src/notify.py:438 msgid "New Single Message" msgstr "Nowa wiadomość" #. private message -#: ../src/dialogs.py:1578 ../src/notify.py:231 ../src/notify.py:421 +#: ../src/dialogs.py:1753 ../src/notify.py:243 ../src/notify.py:439 msgid "New Private Message" msgstr "WyÅ›lij prywatnÄ… wiadomość" -#: ../src/dialogs.py:1578 ../src/gajim.py:1294 ../src/notify.py:429 +#: ../src/dialogs.py:1753 ../src/gajim.py:1489 ../src/notify.py:447 msgid "New E-mail" msgstr "Nowy adres e-mail" -#: ../src/dialogs.py:1580 ../src/gajim.py:1447 ../src/notify.py:423 +#: ../src/dialogs.py:1755 ../src/gajim.py:1664 ../src/notify.py:441 msgid "File Transfer Request" msgstr "Pytanie o przysÅ‚anie pliku" -#: ../src/dialogs.py:1582 ../src/gajim.py:1266 ../src/gajim.py:1423 -#: ../src/notify.py:425 +#: ../src/dialogs.py:1757 ../src/gajim.py:1461 ../src/gajim.py:1631 +#: ../src/notify.py:443 msgid "File Transfer Error" msgstr "BÅ‚Ä…d przesyÅ‚ania pliku" -#: ../src/dialogs.py:1584 ../src/gajim.py:1486 ../src/gajim.py:1508 -#: ../src/gajim.py:1525 ../src/notify.py:427 +#: ../src/dialogs.py:1759 ../src/gajim.py:1703 ../src/gajim.py:1725 +#: ../src/gajim.py:1742 ../src/notify.py:445 msgid "File Transfer Completed" msgstr "ZakoÅ„czono przesyÅ‚anie pliku" -#: ../src/dialogs.py:1585 ../src/gajim.py:1489 ../src/notify.py:427 +#: ../src/dialogs.py:1760 ../src/gajim.py:1706 ../src/notify.py:445 msgid "File Transfer Stopped" msgstr "PrzesyÅ‚anie pliku zatrzymane" -#: ../src/dialogs.py:1587 ../src/gajim.py:1163 ../src/notify.py:431 +#: ../src/dialogs.py:1762 ../src/gajim.py:1357 ../src/notify.py:449 msgid "Groupchat Invitation" msgstr "Zaproszenie na czat" -#: ../src/dialogs.py:1589 ../src/notify.py:204 ../src/notify.py:433 +#: ../src/dialogs.py:1764 ../src/notify.py:216 ../src/notify.py:451 msgid "Contact Changed Status" msgstr "Kontakt zmieniÅ‚ status" -#: ../src/dialogs.py:1774 +#: ../src/dialogs.py:1949 #, python-format msgid "Single Message using account %s" msgstr "Wiadomość z konta %s" -#: ../src/dialogs.py:1776 +#: ../src/dialogs.py:1951 #, python-format msgid "Single Message in account %s" msgstr "Wiadomość z konta %s" -#: ../src/dialogs.py:1778 +#: ../src/dialogs.py:1953 msgid "Single Message" msgstr "Pojedyncza wiadomość" #. prepare UI for Sending -#: ../src/dialogs.py:1781 +#: ../src/dialogs.py:1956 #, python-format msgid "Send %s" msgstr "WyÅ›lij %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1804 +#: ../src/dialogs.py:1979 #, python-format msgid "Received %s" msgstr "Odebrane %s" +#. prepare UI for Receiving +#: ../src/dialogs.py:2002 +#, python-format +msgid "Form %s" +msgstr "Od %s" + #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1876 +#: ../src/dialogs.py:2072 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1877 +#: ../src/dialogs.py:2073 #, python-format msgid "%s wrote:\n" msgstr "%s napisaÅ‚:\n" -#: ../src/dialogs.py:1921 +#: ../src/dialogs.py:2117 #, python-format msgid "XML Console for %s" msgstr "Kosola XML dla %s" -#: ../src/dialogs.py:1923 +#: ../src/dialogs.py:2119 msgid "XML Console" msgstr "Konsola XML" -#: ../src/dialogs.py:2046 +#: ../src/dialogs.py:2242 #, python-format msgid "Privacy List <b><i>%s</i></b>" msgstr "Lista prywatnoÅ›ci <b><i>%s</i></b>" -#: ../src/dialogs.py:2050 +#: ../src/dialogs.py:2246 #, python-format msgid "Privacy List for %s" msgstr "Lista prywatnoÅ›ci dla %s" -#: ../src/dialogs.py:2098 +#: ../src/dialogs.py:2302 #, python-format msgid "Order: %s, action: %s, type: %s, value: %s" msgstr "Kolejność: %s, akcja: %s, typ: %s, wartość: %s" -#: ../src/dialogs.py:2101 +#: ../src/dialogs.py:2305 #, python-format msgid "Order: %s, action: %s" msgstr "Kolejność: %s, akcja: %s" -#: ../src/dialogs.py:2143 +#: ../src/dialogs.py:2347 msgid "<b>Edit a rule</b>" msgstr "<b>Edytuj reguÅ‚Ä™</b>" -#: ../src/dialogs.py:2230 +#: ../src/dialogs.py:2434 msgid "<b>Add a rule</b>" msgstr "<b>Dodaj reguÅ‚Ä™</b>" -#: ../src/dialogs.py:2319 -#, python-format -msgid "Blocked Contacts for %s" -msgstr "Kontakty zablokowane (dla %s)" - -#: ../src/dialogs.py:2321 -msgid "Blocked Contacts" -msgstr "Kontakty zablokowane" - -#: ../src/dialogs.py:2390 -msgid "Group %s" -msgstr "Grupa %" - -#: ../src/dialogs.py:2421 +#: ../src/dialogs.py:2530 #, python-format msgid "Privacy Lists for %s" msgstr "Listy prywatnoÅ›ci dla %s" -#: ../src/dialogs.py:2423 +#: ../src/dialogs.py:2532 msgid "Privacy Lists" msgstr "Listy prywatnoÅ›ci" -#: ../src/dialogs.py:2493 +#: ../src/dialogs.py:2602 msgid "Invalid List Name" msgstr "Niepoprawna nazwa listy" -#: ../src/dialogs.py:2494 +#: ../src/dialogs.py:2603 msgid "You must enter a name to create a privacy list." msgstr "Musisz podać nazwÄ™ nowej listy prywatnoÅ›ci." -#. Don't translate $Contact -#: ../src/dialogs.py:2528 +#: ../src/dialogs.py:2640 +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact zaprasza ciÄ™ do rozmowy" + +#: ../src/dialogs.py:2642 #, python-format msgid "$Contact has invited you to group chat %(room_jid)s" msgstr "$Contact zaprasza ciÄ™ do pokoju %(room_jid)s" -#. only if not None and not '' -#: ../src/dialogs.py:2540 +#: ../src/dialogs.py:2655 #, python-format msgid "Comment: %s" msgstr "Komentarz: %s" -#: ../src/dialogs.py:2602 +#: ../src/dialogs.py:2721 msgid "Choose Sound" msgstr "Wybierz dźwiÄ™k" -#: ../src/dialogs.py:2612 ../src/dialogs.py:2657 +#: ../src/dialogs.py:2731 ../src/dialogs.py:2779 msgid "All files" msgstr "Wszystkie pliki" -#: ../src/dialogs.py:2617 +#: ../src/dialogs.py:2736 msgid "Wav Sounds" msgstr "DźwiÄ™ki w Wav" -#: ../src/dialogs.py:2647 +#: ../src/dialogs.py:2769 msgid "Choose Image" msgstr "Wybierz obrazek" -#: ../src/dialogs.py:2662 +#: ../src/dialogs.py:2784 msgid "Images" msgstr "Obrazki" -#: ../src/dialogs.py:2719 +#: ../src/dialogs.py:2849 #, python-format msgid "When %s becomes:" msgstr "Gdy %s ma status:" -#: ../src/dialogs.py:2721 +#: ../src/dialogs.py:2851 #, python-format msgid "Adding Special Notification for %s" msgstr "DodajÄ™ specjalne powiadomienia dla %s" #. # means number -#: ../src/dialogs.py:2792 +#: ../src/dialogs.py:2922 msgid "#" msgstr "Nr" -#: ../src/dialogs.py:2798 +#: ../src/dialogs.py:2928 msgid "Condition" msgstr "Warunek" -#: ../src/dialogs.py:2919 +#: ../src/dialogs.py:3046 msgid "when I am " msgstr "kiedy mam " -#: ../src/disco.py:104 +#: ../src/disco.py:110 msgid "Others" msgstr "Inni" -#: ../src/disco.py:105 ../src/disco.py:106 ../src/disco.py:1350 -#: ../src/gajim.py:607 ../src/roster_window.py:273 ../src/roster_window.py:331 -#: ../src/roster_window.py:370 ../src/roster_window.py:454 -#: ../src/roster_window.py:486 ../src/roster_window.py:488 -#: ../src/roster_window.py:4230 ../src/roster_window.py:4232 -#: ../src/common/contacts.py:267 ../src/common/contacts.py:282 -#: ../src/common/helpers.py:43 +#: ../src/disco.py:111 ../src/disco.py:112 ../src/disco.py:1354 +#: ../src/gajim.py:653 ../src/roster_window.py:288 ../src/roster_window.py:348 +#: ../src/roster_window.py:388 ../src/roster_window.py:496 +#: ../src/roster_window.py:528 ../src/roster_window.py:530 +#: ../src/roster_window.py:4730 ../src/roster_window.py:4732 +#: ../src/common/contacts.py:295 ../src/common/contacts.py:310 +#: ../src/common/helpers.py:49 msgid "Transports" msgstr "Transporty" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:108 +#: ../src/disco.py:114 msgid "Conference" msgstr "Konferencja" -#: ../src/disco.py:421 +#: ../src/disco.py:427 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:500 +#: ../src/disco.py:501 #, python-format msgid "Service Discovery using account %s" msgstr "PrzeglÄ…danie usÅ‚ug przy użyciu konta %s" -#: ../src/disco.py:502 +#: ../src/disco.py:503 msgid "Service Discovery" msgstr "PrzeglÄ…danie usÅ‚ug" -#: ../src/disco.py:642 +#: ../src/disco.py:643 msgid "The service could not be found" msgstr "Nie można odnaleźć usÅ‚ugi" -#: ../src/disco.py:643 +#: ../src/disco.py:644 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -3717,210 +3890,458 @@ msgstr "" "Pod wpisanym adresem nie ma żadnych usÅ‚ug lub one nie odpowiadajÄ…. Sprawdź " "adres i spróbuj ponownie." -#: ../src/disco.py:647 ../src/disco.py:928 +#: ../src/disco.py:648 ../src/disco.py:929 msgid "The service is not browsable" msgstr "Tej usÅ‚ugi nie można przeglÄ…dać" -#: ../src/disco.py:648 +#: ../src/disco.py:649 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:728 +#: ../src/disco.py:729 #, python-format msgid "Browsing %s using account %s" msgstr "PrzeglÄ…danie %s przy użyciu konta %s" -#: ../src/disco.py:767 +#: ../src/disco.py:768 msgid "_Browse" msgstr "Prze_glÄ…daj" -#: ../src/disco.py:929 +#: ../src/disco.py:930 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:1147 +#: ../src/disco.py:1151 msgid "_Execute Command" msgstr "_Wykonaj komendÄ™" -#: ../src/disco.py:1157 ../src/disco.py:1355 +#: ../src/disco.py:1161 ../src/disco.py:1359 msgid "Re_gister" msgstr "Za_rejestruj" -#: ../src/disco.py:1392 +#: ../src/disco.py:1396 #, python-format msgid "Scanning %d / %d.." msgstr "Skanowanie %d / %d.." #. Users column -#: ../src/disco.py:1573 +#: ../src/disco.py:1578 msgid "Users" msgstr "Użytkownicy" #. Description column -#: ../src/disco.py:1580 +#: ../src/disco.py:1586 msgid "Description" msgstr "Opis" #. Id column -#: ../src/disco.py:1587 +#: ../src/disco.py:1594 msgid "Id" msgstr "Id" -#: ../src/disco.py:1810 +#: ../src/disco.py:1823 msgid "Subscribed" msgstr "Zasubskrybowano" -#: ../src/disco.py:1836 +#: ../src/disco.py:1831 +msgid "Node" +msgstr "WÄ™zeÅ‚" + +#: ../src/disco.py:1888 msgid "New post" msgstr "Nowy wpis" -#: ../src/disco.py:1842 +#: ../src/disco.py:1894 msgid "_Subscribe" msgstr "_Autoryzuj" -#: ../src/disco.py:1848 +#: ../src/disco.py:1900 msgid "_Unsubscribe" msgstr "_Cofnij autoryzacjÄ™" -#: ../src/filetransfers_window.py:72 +#: ../src/features_window.py:46 +msgid "PyOpenSSL" +msgstr "PyOpenSSL" + +#: ../src/features_window.py:47 +msgid "" +"A library used to validate server certificates to ensure a secure connection." +msgstr "" +"Biblioteka używana do weryfikacji certyfikatów w celu zapewnienia " +"bezpiecznego poÅ‚Ä…czenia." + +#: ../src/features_window.py:48 ../src/features_window.py:49 +msgid "Requires python-pyopenssl." +msgstr "Wymaga python-pyopenssl" + +#: ../src/features_window.py:50 +msgid "Bonjour / Zeroconf" +msgstr "Bonjour / Zeroconf" + +#: ../src/features_window.py:51 +msgid "Serverless chatting with autodetected clients in a local network." +msgstr "" +"Rozmowy w sieci lokalnej, bez poÅ›rednictwa serwera i z automatycznym " +"wykrywaniem klientów." + +#: ../src/features_window.py:52 +msgid "Requires python-avahi." +msgstr "Wymaga python-avahi." + +#: ../src/features_window.py:53 +msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." +msgstr "Wymaga pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)" + +#: ../src/features_window.py:54 +msgid "gajim-remote" +msgstr "gajim-remote" + +#: ../src/features_window.py:55 +msgid "A script to controle gajim via commandline." +msgstr "Skrypt pozwalajÄ…cy na sterowanie Gajimem z linii komend." + +#: ../src/features_window.py:56 +msgid "Requires python-dbus." +msgstr "Wymaga python-dbus" + +#: ../src/features_window.py:57 ../src/features_window.py:61 +#: ../src/features_window.py:65 ../src/features_window.py:69 +#: ../src/features_window.py:73 ../src/features_window.py:81 +#: ../src/features_window.py:85 ../src/features_window.py:97 +msgid "Feature not available under Windows." +msgstr "Funkcjonalność niedostÄ™pna dla systemu Windows." + +#: ../src/features_window.py:58 +msgid "OpenGPG" +msgstr "OpenGPG" + +#: ../src/features_window.py:59 +msgid "Encrypting chatmessages with gpg keys." +msgstr "Szyfrowanie wiadomoÅ›ci kluczami GPG." + +#: ../src/features_window.py:60 +msgid "Requires gpg and python-GnuPGInterface." +msgstr "Wymaga GPG oraz python-GnuPGInterface." + +#: ../src/features_window.py:62 +msgid "network-manager" +msgstr "Menedżer sieci" + +#: ../src/features_window.py:63 +msgid "Autodetection of network status." +msgstr "Automatyczne wykrywanie stanu sieci." + +#: ../src/features_window.py:64 +msgid "Requires gnome-network-manager and python-dbus." +msgstr "Wymaga gnome-network-manager oraz python-dbus." + +#: ../src/features_window.py:66 +msgid "Session Management" +msgstr "ZarzÄ…dzanie sesjÄ…" + +#: ../src/features_window.py:67 +msgid "Gajim session is stored on logout and restored on login." +msgstr "" +"Sesja jest zapisywana przy wylogowaniu z serwera i przywracana przy " +"logowaniu." + +#: ../src/features_window.py:68 +msgid "Requires python-gnome2." +msgstr "Wymaga python-gnome2." + +#: ../src/features_window.py:70 +msgid "gnome-keyring" +msgstr "Baza kluczy GNOME" + +#: ../src/features_window.py:71 +msgid "Passwords can be stored securely and not just in plaintext." +msgstr "Bezpieczne przechowywanie haseÅ‚." + +#: ../src/features_window.py:72 +msgid "Requires gnome-keyring and python-gnome2-desktop." +msgstr "Wymaga gnome-keyring oraz python-gnome-desktop." + +#: ../src/features_window.py:74 +msgid "SRV" +msgstr "SRV" + +#: ../src/features_window.py:75 +msgid "Ability to connect to servers which are using SRV records." +msgstr "Możliwość poÅ‚Ä…czenia z serwerami, które używajÄ… rekordów SRV." + +#: ../src/features_window.py:76 +msgid "Requires dnsutils." +msgstr "Wymaga dnsutils." + +#: ../src/features_window.py:77 +msgid "Requires nslookup to use SRV records." +msgstr "Wymaga nslookup." + +#: ../src/features_window.py:78 +msgid "Spell Checker" +msgstr "SÅ‚ownik" + +#: ../src/features_window.py:79 +msgid "Spellchecking of composed messages." +msgstr "Zwraca uwagÄ™ na bÅ‚Ä™dy w wysyÅ‚anych wiadomoÅ›ciach." + +#: ../src/features_window.py:80 +msgid "" +"Requires python-gnome2-extras or compilation of gtkspell module from Gajim " +"sources." +msgstr "Wymaga python-gnome2-extras lub kompilacji gtkspell ze źródeÅ‚ Gajima." + +#: ../src/features_window.py:82 +msgid "Notification-daemon" +msgstr "Powiadamianie o zdarzeniach" + +#: ../src/features_window.py:83 +msgid "Passive popups notifying for new events." +msgstr "WyÅ›wietla okna informujÄ…ce o nowych zdarzeniach." + +#: ../src/features_window.py:84 +msgid "" +"Requires python-notify or instead python-dbus in conjunction with " +"notification-daemon." +msgstr "" +"Wymaga python-notify lub python-dbus w poÅ‚Ä…czeniu z notification-daemon." + +#: ../src/features_window.py:86 +msgid "Trayicon" +msgstr "Ikona w obszarze powiadamiania" + +#: ../src/features_window.py:87 +msgid "A icon in systemtray reflecting the current presence." +msgstr "Ikona w obszarze powiadamiania odzwierciedla aktualny status." + +#: ../src/features_window.py:88 +msgid "" +"Requires python-gnome2-extras or compiled trayicon module from Gajim " +"sources." +msgstr "" +"Wymaga python-gnome2-extras lub skompilowanego moduÅ‚u trayicon ze źródeÅ‚ " +"Gajima." + +#: ../src/features_window.py:89 +msgid "Requires PyGTK >= 2.10." +msgstr "Wymaga PyGTK >= 2.10." + +#: ../src/features_window.py:90 +msgid "Idle" +msgstr "Stan bezczynnoÅ›ci" + +#: ../src/features_window.py:91 +msgid "Ability to measure idle time, in order to set auto status." +msgstr "" +"Umożliwia mierzenie czasu bezczynnoÅ›ci i odpowiednie ustawienie statusu." + +#: ../src/features_window.py:92 ../src/features_window.py:93 +msgid "Requires compilation of the idle module from Gajim sources." +msgstr "Wymaga kompilacji moduÅ‚u idle ze źródeÅ‚ Gajima." + +#: ../src/features_window.py:94 +msgid "LaTeX" +msgstr "LaTeX" + +#: ../src/features_window.py:95 +msgid "Transform LaTeX espressions between $$ $$." +msgstr "PrzeksztaÅ‚canie wyrażeÅ„ jezyka LaTeX pomiÄ™dzy $$ $$." + +#: ../src/features_window.py:96 +msgid "" +"Requires texlive-latex-base, dvips and imagemagick. You have to set " +"'use_latex' to True in the Advanced Configuration Editor." +msgstr "" +"Wymaga texlive-latex-ase, dvips oraz imagemagick. Musisz ustawić zmiennÄ… " +"'use_latex' na 'True'." + +#: ../src/features_window.py:98 +msgid "End to end encryption" +msgstr "Szyfrowanie transmisji" + +#: ../src/features_window.py:99 +msgid "Encrypting chatmessages." +msgstr "Szyfrowanie wysyÅ‚anych wiadomoÅ›ci." + +#: ../src/features_window.py:100 ../src/features_window.py:101 +msgid "Requires python-crypto." +msgstr "Wymaga python-crypto." + +#: ../src/features_window.py:102 +msgid "RST Generator" +msgstr "Generator RST" + +#: ../src/features_window.py:103 +msgid "" +"Generate XHTML output from RST code (see http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html)." +msgstr "" +"Tworzy XHTML z kodu RST (patrz http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html)." + +#: ../src/features_window.py:104 ../src/features_window.py:105 +msgid "Requires python-docutils." +msgstr "Wymaga python-docutils." + +#: ../src/features_window.py:106 +msgid "libsexy" +msgstr "libsexy" + +#: ../src/features_window.py:107 +msgid "Ability to have clickable URLs in chat window." +msgstr "Dodaje możliwość wyÅ›wietlania aktywnych ('klikalnych') adresów URL." + +#: ../src/features_window.py:108 ../src/features_window.py:109 +msgid "Requires python-sexy." +msgstr "Wymaga python-sexy" + +#: ../src/features_window.py:116 ../src/common/helpers.py:244 +msgid "Available" +msgstr "DostÄ™pny" + +#: ../src/features_window.py:123 +msgid "Feature" +msgstr "MożliwoÅ›ci" + +#: ../src/filetransfers_window.py:77 msgid "File" msgstr "Plik" -#: ../src/filetransfers_window.py:87 +#: ../src/filetransfers_window.py:92 msgid "Time" msgstr "Czas" -#: ../src/filetransfers_window.py:99 +#: ../src/filetransfers_window.py:104 msgid "Progress" msgstr "PostÄ™p" -#: ../src/filetransfers_window.py:161 ../src/filetransfers_window.py:215 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:218 #, python-format msgid "Filename: %s" msgstr "Nazwa pliku: %s" -#: ../src/filetransfers_window.py:162 ../src/filetransfers_window.py:290 +#: ../src/filetransfers_window.py:165 ../src/filetransfers_window.py:293 #, 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:171 ../src/filetransfers_window.py:181 -#: ../src/history_manager.py:463 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:184 +#: ../src/history_manager.py:468 msgid "You" msgstr "Ty" -#: ../src/filetransfers_window.py:172 +#: ../src/filetransfers_window.py:175 #, python-format msgid "Sender: %s" msgstr "Nadawca: %s" -#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:564 -#: ../src/tooltips.py:574 +#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:580 +#: ../src/tooltips.py:593 msgid "Recipient: " msgstr "Odbiorca: " -#: ../src/filetransfers_window.py:184 +#: ../src/filetransfers_window.py:187 #, python-format msgid "Saved in: %s" msgstr "Zapisane w: %s" -#: ../src/filetransfers_window.py:186 +#: ../src/filetransfers_window.py:189 msgid "File transfer completed" msgstr "ZakoÅ„czono przesyÅ‚anie pliku" -#: ../src/filetransfers_window.py:200 ../src/filetransfers_window.py:206 +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:209 msgid "File transfer cancelled" msgstr "PrzesyÅ‚anie pliku anulowane" -#: ../src/filetransfers_window.py:200 ../src/filetransfers_window.py:207 +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:210 msgid "Connection with peer cannot be established." msgstr "Nie można ustanowić poÅ‚Ä…czenia z drugÄ… stronÄ…." -#: ../src/filetransfers_window.py:216 +#: ../src/filetransfers_window.py:219 #, python-format msgid "Recipient: %s" msgstr "Odbiorca: %s" -#: ../src/filetransfers_window.py:218 +#: ../src/filetransfers_window.py:221 #, python-format msgid "Error message: %s" msgstr "Komunikat bÅ‚Ä™du: %s" -#: ../src/filetransfers_window.py:219 +#: ../src/filetransfers_window.py:222 msgid "File transfer stopped by the contact at the other end" msgstr "PrzesyÅ‚anie pliku zostaÅ‚o zatrzymane przez drugÄ… osobÄ™" -#: ../src/filetransfers_window.py:236 +#: ../src/filetransfers_window.py:239 msgid "Choose File to Send..." msgstr "Wybierz plik do wysÅ‚ania..." -#: ../src/filetransfers_window.py:255 +#: ../src/filetransfers_window.py:258 msgid "Gajim cannot access this file" msgstr "Gajim nie może uzyskać dostÄ™pu do tego pliku" -#: ../src/filetransfers_window.py:256 +#: ../src/filetransfers_window.py:259 msgid "This file is being used by another process." msgstr "Ten plik jest używany przez inny proces." -#: ../src/filetransfers_window.py:288 +#: ../src/filetransfers_window.py:291 #, python-format msgid "File: %s" msgstr "Plik: %s" -#: ../src/filetransfers_window.py:293 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:295 +#: ../src/filetransfers_window.py:298 #, python-format msgid "Description: %s" msgstr "Opis: %s" -#: ../src/filetransfers_window.py:296 +#: ../src/filetransfers_window.py:299 #, python-format msgid "%s wants to send you a file:" msgstr "%s chce przesÅ‚ać Ci plik:" -#: ../src/filetransfers_window.py:310 ../src/gtkgui_helpers.py:767 +#: ../src/filetransfers_window.py:312 ../src/gtkgui_helpers.py:768 #, python-format msgid "Cannot overwrite existing file \"%s\"" msgstr "Nie można nadpisać pliku \"%s\"" -#: ../src/filetransfers_window.py:311 ../src/gtkgui_helpers.py:769 +#: ../src/filetransfers_window.py:313 ../src/gtkgui_helpers.py:770 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:318 ../src/gtkgui_helpers.py:773 +#: ../src/filetransfers_window.py:320 ../src/gtkgui_helpers.py:774 msgid "This file already exists" msgstr "Ten plik już istnieje" -#: ../src/filetransfers_window.py:318 ../src/gtkgui_helpers.py:773 +#: ../src/filetransfers_window.py:320 ../src/gtkgui_helpers.py:774 msgid "What do you want to do?" msgstr "<b>Co chcesz zrobić?</b>" -#: ../src/filetransfers_window.py:330 ../src/gtkgui_helpers.py:783 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:784 #, python-format msgid "Directory \"%s\" is not writable" msgstr "Nie masz uprawnieÅ„ do zapisu w folderze \"%s\"" -#: ../src/filetransfers_window.py:330 ../src/gtkgui_helpers.py:784 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:785 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:340 +#: ../src/filetransfers_window.py:342 msgid "Save File as..." 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:421 +#: ../src/filetransfers_window.py:422 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -3928,288 +4349,660 @@ 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:497 +#: ../src/filetransfers_window.py:511 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/ów)" -#: ../src/filetransfers_window.py:536 ../src/filetransfers_window.py:539 +#: ../src/filetransfers_window.py:550 ../src/filetransfers_window.py:553 msgid "Invalid File" msgstr "Niepoprawny plik" -#: ../src/filetransfers_window.py:536 +#: ../src/filetransfers_window.py:550 msgid "File: " msgstr "Plik: " -#: ../src/filetransfers_window.py:540 +#: ../src/filetransfers_window.py:554 msgid "It is not possible to send empty files" msgstr "Nie można wysÅ‚ać pustego pliku" -#: ../src/filetransfers_window.py:560 ../src/tooltips.py:564 +#: ../src/filetransfers_window.py:576 ../src/tooltips.py:583 msgid "Name: " msgstr "Nazwa: " -#: ../src/filetransfers_window.py:562 ../src/tooltips.py:568 +#: ../src/filetransfers_window.py:578 ../src/tooltips.py:587 msgid "Sender: " msgstr "Nadawca: " -#: ../src/filetransfers_window.py:750 +#: ../src/filetransfers_window.py:766 msgid "Pause" msgstr "Zatrzymaj" -#: ../src/gajim-remote.py:65 -msgid "Shows a help on specific command" -msgstr "WyÅ›wietla pomoc dla wybranego polecenia" - -#. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:68 -msgid "command" -msgstr "polecenie" - -#: ../src/gajim-remote.py:69 -msgid "show help on command" -msgstr "pokaż pomoc polecenia" +#: ../src/gajim.py:55 +#, python-format +msgid "%s is not a valid loglevel" +msgstr "%s nie jest prawidÅ‚owym poziomem logowania" -#: ../src/gajim-remote.py:73 -msgid "Shows or hides the roster window" -msgstr "Pokazuje lub ukrywa okno listy kontaktów" +#: ../src/gajim.py:128 +msgid "Gajim needs X server to run. Quiting..." +msgstr "Gajim wymaga do dziaÅ‚ania serwera X. Zamykanie programu..." -#: ../src/gajim-remote.py:77 -msgid "Pops up a window with the next pending event" -msgstr "Pokazuje okno z nastÄ™pnÄ… nieprzeczytanÄ… wiadomoÅ›ciÄ…" +#: ../src/gajim.py:155 +msgid "Gajim needs PyGTK 2.8 or above" +msgstr "Gajim wymaga PyGTK w wersji 2.8 lub wyższej" -#: ../src/gajim-remote.py:81 -msgid "" -"Prints a list of all contacts in the roster. Each contact appears on a " -"separate line" +#: ../src/gajim.py:156 +msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." msgstr "" -"WyÅ›wietla listÄ™ wszystkich kontaktów. Każdy kontakt zostanie wyÅ›wietlony w " -"osobnej linii" - -#: ../src/gajim-remote.py:84 ../src/gajim-remote.py:99 -#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:122 -#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:157 -#: ../src/gajim-remote.py:187 ../src/gajim-remote.py:196 -#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:210 -#: ../src/gajim-remote.py:221 ../src/gajim-remote.py:237 -#: ../src/gajim-remote.py:246 -msgid "account" -msgstr "konto" - -#: ../src/gajim-remote.py:84 -msgid "show only contacts of the given account" -msgstr "pokaż tylko kontakty z danego konta" - -#: ../src/gajim-remote.py:90 -msgid "Prints a list of registered accounts" -msgstr "Wypisuje listÄ™ zarejestrowanych kont" - -#: ../src/gajim-remote.py:94 -msgid "Changes the status of account or accounts" -msgstr "Zmienia status kont lub kont" +"Gajim wymaga do dziaÅ‚ania PyGTK w wersji 2.8 lub wyższej. Zamykanie " +"programu..." -#. offline, online, chat, away, xa, dnd, invisible should not be translated -#: ../src/gajim-remote.py:97 -msgid "status" -msgstr "status" +#: ../src/gajim.py:158 +msgid "Gajim needs GTK 2.8 or above" +msgstr "Gajim wymaga GTK w wersji 2.8 lub wyższej" -#: ../src/gajim-remote.py:97 -msgid "one of: offline, online, chat, away, xa, dnd, invisible " +#: ../src/gajim.py:159 +msgid "Gajim needs GTK 2.8 or above to run. Quiting..." msgstr "" -"jeden z: rozÅ‚Ä…czony, dostÄ™pny, chÄ™tny do rozmowy, zaraz wracam, nieobecny, " -"zajÄ™ty, niewidoczny " - -#: ../src/gajim-remote.py:98 ../src/gajim-remote.py:119 -#: ../src/gajim-remote.py:133 -msgid "message" -msgstr "wiadomość" +"Gajim wymaga do dziaÅ‚ania GTK w wersji 2.8 lub wyższej. Zamykanie programu..." -#: ../src/gajim-remote.py:98 -msgid "status message" -msgstr "informacja o statusie" +#: ../src/gajim.py:164 +msgid "GTK+ runtime is missing libglade support" +msgstr "W GTK+ brakuje wsparcia dla libglade" -#: ../src/gajim-remote.py:99 +#: ../src/gajim.py:166 +#, python-format 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:105 -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:107 -msgid "JID of the contact that you want to chat with" -msgstr "JID osoby, z którÄ… chcesz porozmawiać" - -#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:187 -msgid "if specified, contact is taken from the contact list of this account" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" msgstr "" -"jeÅ›li jest podany, to kontakt jest pobierany z listy kontaktów tego konta" +"ProszÄ™ usunąć obecnÄ… wersje GTK+ i zainstalować najnowszÄ… stabilnÄ… wesjÄ™ z %s" -#: ../src/gajim-remote.py:114 +#: ../src/gajim.py:168 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 ''." +"Please make sure that GTK+ and PyGTK have libglade support in your system." 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:118 ../src/gajim-remote.py:131 -msgid "JID of the contact that will receive the message" -msgstr "JID osoby, która otrzyma wiadomość" +"Sprawdź, czy GTK+ oraz PyGTK posiadajÄ… w twoim systemie wsparcie dla " +"libglade." -#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 -msgid "message contents" -msgstr "zawartość wiadomoÅ›ci" +#: ../src/gajim.py:173 +msgid "Gajim needs PySQLite2 to run" +msgstr "Gajim wymaga do dziaÅ‚ania PySQLite2" -#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 -msgid "pgp key" -msgstr "klucz pgp" +#: ../src/gajim.py:181 +msgid "Gajim needs pywin32 to run" +msgstr "Gajim wymaga do dziaÅ‚ania pakietu pywin32" -#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 -msgid "if specified, the message will be encrypted using this public key" +#: ../src/gajim.py:182 +#, python-format +msgid "" +"Please make sure that Pywin32 is installed on your system. You can get it at " +"%s" msgstr "" -"jeÅ›li jest podany, to wiadomość zostanie zaszyfrowana tym kluczem publicznym" +"ProszÄ™ upewnić siÄ™, że zainstalowany jest pakiet Pywin32. Możesz go pobrać " +"spod adresu %s" -#: ../src/gajim-remote.py:122 ../src/gajim-remote.py:136 -msgid "if specified, the message will be sent using this account" -msgstr "jeÅ›li jest podane, to wiadomość zostanie wysÅ‚ana z tego konta" +#. set the icon to all newly opened wind +#: ../src/gajim.py:324 +msgid "Gajim is already running" +msgstr "Gajim jest już uruchomiony" -#: ../src/gajim-remote.py:127 +#: ../src/gajim.py:325 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 ''." +"Another instance of Gajim seems to be running\n" +"Run anyway?" 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 ''." +"Wydaje siÄ™, że w tle dziaÅ‚a już inna kopia Gajima.\n" +"Czy mimo to chcesz uruchomić program?" -#: ../src/gajim-remote.py:132 -msgid "subject" -msgstr "temat" +#: ../src/gajim.py:348 ../src/common/connection_handlers.py:908 +#: ../src/common/connection_handlers.py:1619 +#: ../src/common/connection_handlers.py:1648 +#: ../src/common/connection_handlers.py:1658 +#: ../src/common/connection_handlers.py:1677 +#: ../src/common/connection_handlers.py:1914 +#: ../src/common/connection_handlers.py:2026 ../src/common/connection.py:933 +msgid "Disk Write Error" +msgstr "BÅ‚Ä…d zapisu na dysk" + +#: ../src/gajim.py:441 +msgid "Do you accept this request?" +msgstr "Czy akceptujesz tÄ™ proÅ›bÄ™?" -#: ../src/gajim-remote.py:132 -msgid "message subject" -msgstr "temat wiadomoÅ›ci" +#: ../src/gajim.py:443 +#, python-format +msgid "Do you accept this request on account %s?" +msgstr "Czy akceptujesz tÄ™ proÅ›bÄ™ na koncie %s?" -#: ../src/gajim-remote.py:141 -msgid "Gets detailed info on a contact" -msgstr "Pobiera szczegółowe informacje o kontakcie" +#: ../src/gajim.py:446 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "Autoryzacja HTTP (%s) dla %s (id: %s)" -#: ../src/gajim-remote.py:143 ../src/gajim-remote.py:156 -#: ../src/gajim-remote.py:186 ../src/gajim-remote.py:195 -msgid "JID of the contact" -msgstr "JID kontaktu" +#: ../src/gajim.py:493 ../src/notify.py:453 +msgid "Connection Failed" +msgstr "PoÅ‚Ä…czenie nie powiodÅ‚o siÄ™" -#: ../src/gajim-remote.py:147 -msgid "Gets detailed info on a account" -msgstr "Pobiera szczegółowe informacje o koncie" +#: ../src/gajim.py:827 +#, python-format +msgid "Subject: %s" +msgstr "Temat: %s" + +#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) +#: ../src/gajim.py:874 ../src/gajim.py:887 +#, python-format +msgid "error while sending %s ( %s )" +msgstr "bÅ‚Ä…d przy wysyÅ‚aniu %s ( %s )" + +#: ../src/gajim.py:920 +msgid "Authorization accepted" +msgstr "Autoryzacja przyjÄ™ta" + +#: ../src/gajim.py:921 +#, 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:929 +#, python-format +msgid "Contact \"%s\" removed subscription from you" +msgstr "Kontakt \"%s\" cofnÄ…Å‚ Ci autoryzacjÄ™" + +#: ../src/gajim.py:930 +msgid "You will always see him or her as offline." +msgstr "Zawsze bÄ™dziesz widziaÅ‚ ten kontakt jako niepoÅ‚Ä…czony." + +#: ../src/gajim.py:974 +#, python-format +msgid "Contact with \"%s\" cannot be established" +msgstr "Nie można ustanowić poÅ‚Ä…czenia z \"%s\"" + +#: ../src/gajim.py:975 ../src/common/connection.py:471 +msgid "Check your connection or try again later." +msgstr "Sprawdź swoje poÅ‚Ä…czenie lub spróbuj później." + +#: ../src/gajim.py:1144 ../src/groupchat_control.py:991 +#, python-format +msgid "%s is now known as %s" +msgstr "%s wystÄ™puje teraz jako %s" + +#: ../src/gajim.py:1160 ../src/roster_window.py:1354 +#, python-format +msgid "%s is now %s (%s)" +msgstr "%s ma teraz status %s (%s)" + +#. No status message +#: ../src/gajim.py:1163 ../src/groupchat_control.py:1142 +#: ../src/roster_window.py:1357 +#, python-format +msgid "%s is now %s" +msgstr "%s ma teraz status %s" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1284 ../src/groupchat_control.py:951 +msgid "Any occupant is allowed to see your full JID" +msgstr "Każdy uczestnik może zobaczyć twój peÅ‚ny JID" + +#: ../src/gajim.py:1287 +msgid "Room now shows unavailable member" +msgstr "Lista zawiera teraz niedostÄ™pnych uczestników" + +#: ../src/gajim.py:1289 +msgid "room now does not show unavailable members" +msgstr "lista nie zawiera teraz niedostÄ™pnych użytkowników" + +#: ../src/gajim.py:1292 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "NastÄ…piÅ‚a zmiana konfiguracji pokoju (nie powiÄ…zana z prywatnoÅ›ciÄ…)" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1295 +msgid "Room logging is now enabled" +msgstr "Logowanie rozmów prowadzonych w pokoju jest teraz wÅ‚Ä…czone" + +#: ../src/gajim.py:1297 +msgid "Room logging is now disabled" +msgstr "Logowanie rozmów prowadzonych w pokoju jest teraz wyÅ‚Ä…czone" +#: ../src/gajim.py:1299 +msgid "Room is now non-anonymous" +msgstr "Pokój nie jest już anonimowy" + +#: ../src/gajim.py:1302 +msgid "Room is now semi-anonymous" +msgstr "Pokój jest teraz quasi-anonimowy" + +#: ../src/gajim.py:1305 +msgid "Room is now fully-anonymous" +msgstr "Pokój jest teraz w peÅ‚ni anonimowy" + +#: ../src/gajim.py:1337 +#, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "Aby doÅ‚Ä…czyć do pokoju %s wymagane jest hasÅ‚o. ProszÄ™ je wpisać" + +#: ../src/gajim.py:1367 +msgid "Your passphrase is incorrect" +msgstr "Twoje hasÅ‚o jest niepoprawne" + +#: ../src/gajim.py:1368 +msgid "You are currently connected without your OpenPGP key." +msgstr "JesteÅ› aktualnie poÅ‚Ä…czony bez obsÅ‚ugi OpenPGP." + +#: ../src/gajim.py:1472 +#, python-format +msgid "New mail on %(gmail_mail_address)s" +msgstr "Nowa poczta w skrzynce %(gmail_mail_address)s" + +#: ../src/gajim.py:1474 +#, python-format +msgid "You have %d new mail conversation" +msgid_plural "You have %d new mail conversations" +msgstr[0] "Masz %d nieprzeczytanÄ… wiadomość pocztowÄ…" +msgstr[1] "Masz %d nieprzeczytane wiadomoÅ›ci pocztowe" +msgstr[2] "Masz %d nieprzeczytane wiadomoÅ›ci pocztowe" + +#. 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 +#: ../src/gajim.py:1483 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" +"\n" +"Od: %(from_address)s" + +#: ../src/gajim.py:1661 +#, python-format +msgid "%s wants to send you a file." +msgstr "%s chce przesÅ‚ać ci plik." + +#: ../src/gajim.py:1726 +#, python-format +msgid "You successfully received %(filename)s from %(name)s." +msgstr "OtrzymaÅ‚eÅ› plik %(filename)s od %(name)s." + +#. ft stopped +#: ../src/gajim.py:1730 +#, python-format +msgid "File transfer of %(filename)s from %(name)s stopped." +msgstr "PrzesyÅ‚anie pliku %(filename)s od %(name)s zostaÅ‚o zatrzymane." + +#: ../src/gajim.py:1743 +#, python-format +msgid "You successfully sent %(filename)s to %(name)s." +msgstr "PrzesÅ‚aÅ‚eÅ› plik %(filename)s do %(name)s." + +#. ft stopped +#: ../src/gajim.py:1747 +#, python-format +msgid "File transfer of %(filename)s to %(name)s stopped." +msgstr "PrzesyÅ‚anie pliku %(filename)s do %(name)s zostaÅ‚o zatrzymane." + +#: ../src/gajim.py:1842 +msgid "Session negotiation cancelled" +msgstr "Negocjowanie sesji zostaÅ‚o przerwane" + +#: ../src/gajim.py:1843 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "Klient na %s anulowaÅ‚ negocjacjÄ™ sesji" + +#: ../src/gajim.py:1884 ../src/gajim.py:1928 +msgid "Confirm these session options" +msgstr "Potwierdź opcje sesji" + +#: ../src/gajim.py:1885 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t\t%s\n" +"\n" +"\t\tAre these options acceptable?" +msgstr "" +"Zdalny klient chce przeprowadzić negocjacjÄ™ sesji z poniższymi " +"ustawieniami:\n" +"\n" +"\t\t%s\n" +"\n" +"\t\tCzy akceptujesz te ustawienia?" + +#: ../src/gajim.py:1929 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" +"Zdalny kilent wybraÅ‚ nastÄ™pujÄ…ce opcje:\n" +"\n" +"%s\n" +"\n" +"Kontynuować?" + +#: ../src/gajim.py:2054 +msgid "Username Conflict" +msgstr "Konflikt nazw użytkownika" + +#: ../src/gajim.py:2055 +msgid "Please type a new username for your local account" +msgstr "Podaj nazwÄ™ użytkownika dla nowego konta lokalnego" + +#: ../src/gajim.py:2072 +msgid "Ping?" +msgstr "Ping?" + +#: ../src/gajim.py:2080 +#, python-format +msgid "Pong! (%s s.)" +msgstr "Pong! (%s s.)" + +#: ../src/gajim.py:2086 +msgid "Error." +msgstr "BÅ‚Ä…d." + +#: ../src/gajim.py:2111 +msgid "Resource Conflict" +msgstr "Konflikt zasobów" + +#: ../src/gajim.py:2112 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" +"JesteÅ› już poÅ‚Ä…czony z tym kontem przy użyciu tego samego zasobu.ProszÄ™ " +"podać nowy zasób" + +#. it is good to notify the user +#. in case he or she cannot see the output of the console +#: ../src/gajim.py:2474 +msgid "Could not save your settings and preferences" +msgstr "Nie można zapisać twoich ustawieÅ„ i opcji" + +#. sorted alphanum +#: ../src/gajim.py:2609 ../src/common/config.py:91 ../src/common/config.py:399 +#: ../src/common/optparser.py:205 ../src/common/optparser.py:423 +#: ../src/common/optparser.py:457 +msgid "default" +msgstr "domyÅ›lny" + +#: ../src/gajim.py:2696 +msgid "Network Manager support not available" +msgstr "Brak wsparcia dla Network Managera" + +#: ../src/gajim.py:2800 +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-remote.py:70 +msgid "Shows a help on specific command" +msgstr "WyÅ›wietla pomoc dla wybranego polecenia" + +#. User gets help for the command, specified by this parameter +#: ../src/gajim-remote.py:73 +msgid "command" +msgstr "polecenie" + +#: ../src/gajim-remote.py:74 +msgid "show help on command" +msgstr "pokaż pomoc polecenia" + +#: ../src/gajim-remote.py:78 +msgid "Shows or hides the roster window" +msgstr "Pokazuje lub ukrywa okno listy kontaktów" + +#: ../src/gajim-remote.py:82 +msgid "Pops up a window with the next pending event" +msgstr "Pokazuje okno z nastÄ™pnÄ… nieprzeczytanÄ… wiadomoÅ›ciÄ…" + +#: ../src/gajim-remote.py:86 +msgid "" +"Prints a list of all contacts in the roster. Each contact appears on a " +"separate line" +msgstr "" +"WyÅ›wietla listÄ™ wszystkich kontaktów. Każdy kontakt zostanie wyÅ›wietlony w " +"osobnej linii" + +#: ../src/gajim-remote.py:89 ../src/gajim-remote.py:104 +#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:127 +#: ../src/gajim-remote.py:141 ../src/gajim-remote.py:150 +#: ../src/gajim-remote.py:171 ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:210 ../src/gajim-remote.py:217 +#: ../src/gajim-remote.py:224 ../src/gajim-remote.py:235 +#: ../src/gajim-remote.py:251 ../src/gajim-remote.py:260 +msgid "account" +msgstr "konto" + +#: ../src/gajim-remote.py:89 +msgid "show only contacts of the given account" +msgstr "pokaż tylko kontakty z danego konta" + +#: ../src/gajim-remote.py:95 +msgid "Prints a list of registered accounts" +msgstr "Wypisuje listÄ™ zarejestrowanych kont" + +#: ../src/gajim-remote.py:99 +msgid "Changes the status of account or accounts" +msgstr "Zmienia status kont lub kont" + +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:102 +msgid "status" +msgstr "status" + +#: ../src/gajim-remote.py:102 +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:103 ../src/gajim-remote.py:124 +#: ../src/gajim-remote.py:138 ../src/gajim-remote.py:149 +msgid "message" +msgstr "wiadomość" + +#: ../src/gajim-remote.py:103 +msgid "status message" +msgstr "informacja o statusie" + +#: ../src/gajim-remote.py:104 +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:110 +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:112 +msgid "JID of the contact that you want to chat with" +msgstr "JID osoby, z którÄ… chcesz porozmawiać" + +#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:201 +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:119 +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:123 ../src/gajim-remote.py:136 +msgid "JID of the contact that will receive the message" +msgstr "JID osoby, która otrzyma wiadomość" + +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:138 #: ../src/gajim-remote.py:149 +msgid "message contents" +msgstr "zawartość wiadomoÅ›ci" + +#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:139 +msgid "pgp key" +msgstr "klucz pgp" + +#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:139 +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:127 ../src/gajim-remote.py:141 +#: ../src/gajim-remote.py:150 +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:132 +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:137 +msgid "subject" +msgstr "temat" + +#: ../src/gajim-remote.py:137 +msgid "message subject" +msgstr "temat wiadomoÅ›ci" + +#: ../src/gajim-remote.py:146 +msgid "Sends new message to a groupchat you've joined." +msgstr "WysyÅ‚a nowÄ… wiadomość na czat, w którym uczestniczysz." + +#: ../src/gajim-remote.py:148 +msgid "JID of the room that will receive the message" +msgstr "JID pokoju, do którego zostanie wysÅ‚ana wiadomość" + +#: ../src/gajim-remote.py:155 +msgid "Gets detailed info on a contact" +msgstr "Pobiera szczegółowe informacje o kontakcie" + +#: ../src/gajim-remote.py:157 ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:200 ../src/gajim-remote.py:209 +msgid "JID of the contact" +msgstr "JID kontaktu" + +#: ../src/gajim-remote.py:161 +msgid "Gets detailed info on a account" +msgstr "Pobiera szczegółowe informacje o koncie" + +#: ../src/gajim-remote.py:163 msgid "Name of the account" msgstr "Nazwa konta" -#: ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:167 msgid "Sends file to a contact" msgstr "WysyÅ‚a plik kontaktowi" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:169 msgid "file" msgstr "plik" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:169 msgid "File path" msgstr "Åšcieżka do pliku" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:171 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:162 +#: ../src/gajim-remote.py:176 msgid "Lists all preferences and their values" msgstr "Wypisuje wszystkie opcje i ich wartoÅ›ci" -#: ../src/gajim-remote.py:166 +#: ../src/gajim-remote.py:180 msgid "Sets value of 'key' to 'value'." msgstr "Ustawia wartość 'klucza' na 'wartość'." -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:182 msgid "key=value" msgstr "klucz=wartość" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:182 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:173 +#: ../src/gajim-remote.py:187 msgid "Deletes a preference item" msgstr "Usuwa opcjÄ™" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:189 msgid "key" msgstr "klucz" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:189 msgid "name of the preference to be deleted" msgstr "nazwa opcji do usuniÄ™cia" -#: ../src/gajim-remote.py:179 +#: ../src/gajim-remote.py:193 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:184 +#: ../src/gajim-remote.py:198 msgid "Removes contact from roster" msgstr "Usuwa kontakt z listy kontaktów" -#: ../src/gajim-remote.py:193 +#: ../src/gajim-remote.py:207 msgid "Adds contact to roster" msgstr "Dodaje kontakt do listy kontaktów" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:209 msgid "jid" msgstr "jid" -#: ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:210 msgid "Adds new contact to this account" msgstr "Dodaje nowy kontakt do tego konta" -#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:215 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:208 +#: ../src/gajim-remote.py:222 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:215 +#: ../src/gajim-remote.py:229 msgid "Returns number of unread messages" msgstr "Zwraca liczbÄ™ nieprzeczytanych wiadomoÅ›ci" -#: ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:233 msgid "Opens 'Start Chat' dialog" msgstr "Otwiera okno dialogowe 'Rozpocznij rozmowÄ™'" -#: ../src/gajim-remote.py:221 +#: ../src/gajim-remote.py:235 msgid "Starts chat, using this account" msgstr "Rozpocznij rozmowÄ™ z tego konta" -#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:239 msgid "Sends custom XML" msgstr "WysyÅ‚a wÅ‚asny XML" -#: ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:241 msgid "XML to send" msgstr "XML do wysÅ‚ania" -#: ../src/gajim-remote.py:228 +#: ../src/gajim-remote.py:242 msgid "" "Account in which the xml will be sent; if not specified, xml will be sent to " "all accounts" @@ -4217,35 +5010,35 @@ msgstr "" "Konto, na jaki zostanie wysÅ‚any XML. Jeżeli nie jest okreÅ›lone, Gajim wyÅ›le " "dane do wszystkich kont" -#: ../src/gajim-remote.py:234 +#: ../src/gajim-remote.py:248 msgid "Handle a xmpp:/ uri" msgstr "ObsÅ‚uguj URI xmpp:/" -#: ../src/gajim-remote.py:236 +#: ../src/gajim-remote.py:250 msgid "uri" msgstr "URI" -#: ../src/gajim-remote.py:241 +#: ../src/gajim-remote.py:255 msgid "Join a MUC room" msgstr "DoÅ‚Ä…cz do nowego pokoju" -#: ../src/gajim-remote.py:243 +#: ../src/gajim-remote.py:257 msgid "room" msgstr "pokój" -#: ../src/gajim-remote.py:244 +#: ../src/gajim-remote.py:258 msgid "nick" msgstr "nick" -#: ../src/gajim-remote.py:245 +#: ../src/gajim-remote.py:259 msgid "password" msgstr "hasÅ‚o" -#: ../src/gajim-remote.py:268 +#: ../src/gajim-remote.py:282 msgid "Missing argument \"contact_jid\"" msgstr "Brak argumentu \"contact_jid\"" -#: ../src/gajim-remote.py:287 +#: ../src/gajim-remote.py:301 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -4254,11 +5047,11 @@ 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:290 +#: ../src/gajim-remote.py:304 msgid "You have no active account" msgstr "Å»adne z twoich kont nie jest aktywne" -#: ../src/gajim-remote.py:354 +#: ../src/gajim-remote.py:368 #, python-format msgid "" "Usage: %s %s %s \n" @@ -4267,16 +5060,16 @@ msgstr "" "Użycie: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:357 +#: ../src/gajim-remote.py:371 msgid "Arguments:" msgstr "Argumenty:" -#: ../src/gajim-remote.py:361 +#: ../src/gajim-remote.py:375 #, python-format msgid "%s not found" msgstr "Nie znaleziono %s" -#: ../src/gajim-remote.py:365 +#: ../src/gajim-remote.py:379 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -4285,16 +5078,16 @@ msgstr "" "Użycie: polecenie %s [argument]\n" "Gdzie polecenie to jedna z nastÄ™pujÄ…cy fraz:\n" -#: ../src/gajim-remote.py:438 +#: ../src/gajim-remote.py:452 #, python-format msgid "" "Too many arguments. \n" "Type \"%s help %s\" for more info" msgstr "" "Za dużo argumentów. \n" -"Wpisz \"%s·help·%s\" aby uzyskać wiÄ™cej informacji" +"Wpisz \"%s help %s\" aby uzyskać wiÄ™cej informacji" -#: ../src/gajim-remote.py:442 +#: ../src/gajim-remote.py:456 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -4303,347 +5096,153 @@ msgstr "" "Argument \"%s\" nie jest okreÅ›lony. \n" "Wpisz \"%s help %s\" aby uzyskać wiÄ™cej informacji" -#: ../src/gajim-remote.py:460 +#: ../src/gajim-remote.py:474 msgid "Wrong uri" msgstr "BÅ‚Ä™dny adres URI" -#: ../src/gajim.py:47 -#, python-format -msgid "%s is not a valid loglevel" -msgstr "%s nie jest prawidÅ‚owym poziomem logowania" - -#: ../src/gajim.py:122 -msgid "Gajim needs X server to run. Quiting..." -msgstr "Gajim wymaga do dziaÅ‚ania serwera X. Zamykanie programu..." - -#: ../src/gajim.py:126 -msgid "Gajim needs PyGTK 2.8 or above" -msgstr "Gajim wymaga PyGTK w wersji 2.8 lub wyższej" - -#: ../src/gajim.py:127 -msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." -msgstr "" -"Gajim wymaga do dziaÅ‚ania PyGTK w wersji 2.8 lub wyższej. Zamykanie " -"programu..." - -#: ../src/gajim.py:129 -msgid "Gajim needs GTK 2.8 or above" -msgstr "Gajim wymaga GTK w wersji 2.8 lub wyższej" - -#: ../src/gajim.py:130 -msgid "Gajim needs GTK 2.8 or above to run. Quiting..." -msgstr "" -"Gajim wymaga do dziaÅ‚ania GTK w wersji 2.8 lub wyższej. Zamykanie programu..." - -#: ../src/gajim.py:135 -msgid "GTK+ runtime is missing libglade support" -msgstr "W GTK+ brakuje wsparcia dla libglade" - -#: ../src/gajim.py:137 -#, python-format -msgid "" -"Please remove your current GTK+ runtime and install the latest stable " -"version from %s" -msgstr "" -"ProszÄ™ usunąć obecnÄ… wersje GTK+ i zainstalować najnowszÄ… stabilnÄ… wesjÄ™ z %s" - -#: ../src/gajim.py:139 -msgid "" -"Please make sure that GTK+ and PyGTK have libglade support in your system." -msgstr "" -"Sprawdź, czy GTK+ oraz PyGTK posiadajÄ… w twoim systemie wsparcie dla " -"libglade." - -#: ../src/gajim.py:144 -msgid "Gajim needs PySQLite2 to run" -msgstr "Gajim wymaga do dziaÅ‚ania PySQLite2" - -#: ../src/gajim.py:152 -msgid "Gajim needs pywin32 to run" -msgstr "Gajim wymaga do dziaÅ‚ania pakietu pywin32" - -#: ../src/gajim.py:153 -#, python-format -msgid "" -"Please make sure that Pywin32 is installed on your system. You can get it at " -"%s" -msgstr "" -"ProszÄ™ upewnić siÄ™, że zainstalowany jest pakiet Pywin32. Możesz go pobrać " -"spod adresu %s" - -#. set the icon to all newly opened wind -#: ../src/gajim.py:300 -msgid "Gajim is already running" -msgstr "Gajim jest już uruchomiony" - -#: ../src/gajim.py:301 -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:408 -msgid "Do you accept this request?" -msgstr "Czy akceptujesz tÄ™ proÅ›bÄ™?" - -#: ../src/gajim.py:411 -#, python-format -msgid "HTTP (%s) Authorization for %s (id: %s)" -msgstr "Autoryzacja HTTP (%s) dla %s (id: %s)" - -#: ../src/gajim.py:458 ../src/notify.py:435 -msgid "Connection Failed" -msgstr "PoÅ‚Ä…czenie nie powiodÅ‚o siÄ™" - -#: ../src/gajim.py:778 -#, python-format -msgid "Subject: %s" -msgstr "Temat: %s" - -#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) -#: ../src/gajim.py:823 ../src/gajim.py:836 -#, python-format -msgid "error while sending %s ( %s )" -msgstr "bÅ‚Ä…d przy wysyÅ‚aniu %s ( %s )" - -#: ../src/gajim.py:869 -msgid "Authorization accepted" -msgstr "Autoryzacja przyjÄ™ta" - -#: ../src/gajim.py:870 -#, 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:878 -#, python-format -msgid "Contact \"%s\" removed subscription from you" -msgstr "Kontakt \"%s\" cofnÄ…Å‚ Ci autoryzacjÄ™" - -#: ../src/gajim.py:879 -msgid "You will always see him or her as offline." -msgstr "Zawsze bÄ™dziesz widziaÅ‚ ten kontakt jako niepoÅ‚Ä…czony." - -#: ../src/gajim.py:923 -#, python-format -msgid "Contact with \"%s\" cannot be established" -msgstr "Nie można ustanowić poÅ‚Ä…czenia z \"%s\"" - -#: ../src/gajim.py:924 ../src/common/connection.py:438 -msgid "Check your connection or try again later." -msgstr "Sprawdź swoje poÅ‚Ä…czenie lub spróbuj później." - -#: ../src/gajim.py:1073 ../src/roster_window.py:1247 -#, python-format -msgid "%s is now %s (%s)" -msgstr "%s ma teraz status %s (%s)" - -#. No status message -#: ../src/gajim.py:1076 ../src/groupchat_control.py:968 -#: ../src/roster_window.py:1250 -#, python-format -msgid "%s is now %s" -msgstr "%s ma teraz status %s" - -#: ../src/gajim.py:1173 -msgid "Your passphrase is incorrect" -msgstr "Twoje hasÅ‚o jest niepoprawne" - -#: ../src/gajim.py:1174 -msgid "You are currently connected without your OpenPGP key." -msgstr "JesteÅ› aktualnie poÅ‚Ä…czony bez obsÅ‚ugi OpenPGP." - -#: ../src/gajim.py:1277 -#, python-format -msgid "New mail on %(gmail_mail_address)s" -msgstr "Nowa poczta w skrzynce %(gmail_mail_address)s" - -#: ../src/gajim.py:1279 -#, python-format -msgid "You have %d new mail conversation" -msgid_plural "You have %d new mail conversations" -msgstr[0] "Masz %d nieprzeczytanÄ… wiadomość pocztowÄ…" -msgstr[1] "Masz %d nieprzeczytane wiadomoÅ›ci pocztowe" -msgstr[2] "Masz %d nieprzeczytane wiadomoÅ›ci pocztowe" - -#. 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 -#: ../src/gajim.py:1288 -#, python-format -msgid "" -"\n" -"From: %(from_address)s" -msgstr "" -"\n" -"Od: %(from_address)s" - -#: ../src/gajim.py:1444 -#, python-format -msgid "%s wants to send you a file." -msgstr "%s chce przesÅ‚ać ci plik." - -#: ../src/gajim.py:1509 -#, python-format -msgid "You successfully received %(filename)s from %(name)s." -msgstr "OtrzymaÅ‚eÅ› plik %(filename)s od %(name)s." - -#. ft stopped -#: ../src/gajim.py:1513 -#, python-format -msgid "File transfer of %(filename)s from %(name)s stopped." -msgstr "PrzesyÅ‚anie pliku %(filename)s·od·%(name)s·zostaÅ‚o zatrzymane." - -#: ../src/gajim.py:1526 -#, python-format -msgid "You successfully sent %(filename)s to %(name)s." -msgstr "PrzesÅ‚aÅ‚eÅ› plik %(filename)s do %(name)s." - -#. ft stopped -#: ../src/gajim.py:1530 -#, python-format -msgid "File transfer of %(filename)s to %(name)s stopped." -msgstr "PrzesyÅ‚anie pliku·%(filename)s·do·%(name)s·zostaÅ‚o zatrzymane." - -#: ../src/gajim.py:1662 -msgid "Username Conflict" -msgstr "Konflikt nazw użytkownika" - -#: ../src/gajim.py:1663 -msgid "Please type a new username for your local account" -msgstr "Podaj nazwÄ™ użytkownika dla nowego konta lokalnego" - -#: ../src/gajim.py:1680 -msgid "Ping?" -msgstr "Ping?" - -#: ../src/gajim.py:1688 -#, python-format -msgid "Pong! (%s s.)" -msgstr "Pong! (%s s.)" - -#: ../src/gajim.py:1694 -msgid "Error." -msgstr "BÅ‚Ä…d." - -#. it is good to notify the user -#. in case he or she cannot see the output of the console -#: ../src/gajim.py:2048 -msgid "Could not save your settings and preferences" -msgstr "Nie można zapisać twoich ustawieÅ„ i opcji" - -#: ../src/gajim.py:2257 -msgid "Network Manager support not available" -msgstr "Brak wsparcia dla Network Managera" - -#: ../src/gajim.py:2336 -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_themes_window.py:60 +#: ../src/gajim_themes_window.py:67 msgid "Theme" msgstr "Motyw" +#: ../src/gajim_themes_window.py:105 +msgid "You cannot make changes to the default theme" +msgstr "Nie możesz dokonywać zmian w obecnie używanym motywie" + +#: ../src/gajim_themes_window.py:106 +msgid "Please create a clean new theme with your desired name." +msgstr "ProszÄ™ utworzyć nowy temat i nadać mu nazwÄ™." + #. don't confuse translators -#: ../src/gajim_themes_window.py:155 +#: ../src/gajim_themes_window.py:180 msgid "theme name" msgstr "nazwa motywu" -#: ../src/gajim_themes_window.py:172 +#: ../src/gajim_themes_window.py:197 msgid "You cannot delete your current theme" msgstr "Nie możesz skasować obecnie używanego motywu" -#: ../src/gajim_themes_window.py:173 +#: ../src/gajim_themes_window.py:198 msgid "Please first choose another for your current theme." msgstr "Ustaw najpierw inny motyw." -#: ../src/groupchat_control.py:122 +#: ../src/groupchat_control.py:139 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:124 +#: ../src/groupchat_control.py:141 #, python-format msgid "You are no longer in group chat \"%s\" or \"%s\" has left." msgstr "Nie jesteÅ› już w pokoju \"%s\" lub \"%s\" opuÅ›ciÅ‚ go." -#: ../src/groupchat_control.py:322 +#: ../src/groupchat_control.py:350 msgid "Insert Nickname" msgstr "Wstaw pseudonim" +#: ../src/groupchat_control.py:878 +msgid "Really send file?" +msgstr "Na pewno wysÅ‚ać ten plik?" + +#: ../src/groupchat_control.py:879 +#, python-format +msgid "If you send a file to %s, he/she will know your real Jabber ID." +msgstr "Jeżeli wyÅ›lesz plik do %s, pozna on/ona twój peÅ‚ny JID." + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:954 +msgid "Room logging is enabled" +msgstr "Zapisywanie rozmów prowadzonych w pokoju jest wÅ‚Ä…czone" + +#: ../src/groupchat_control.py:956 +msgid "A new room has been created" +msgstr "ZostaÅ‚ utworzony nowy pokój" + +#: ../src/groupchat_control.py:959 +msgid "The server has assigned or modified your roomnick" +msgstr "" +"Serwer przypisaÅ‚ ci lub zmodyfikowaÅ‚ twój pseudonim używany w tym pokoju" + #. do not print 'kicked by None' -#: ../src/groupchat_control.py:850 +#: ../src/groupchat_control.py:965 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s zostaÅ‚ wyrzucony: %(reason)s" -#: ../src/groupchat_control.py:854 +#: ../src/groupchat_control.py:969 #, 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:861 +#: ../src/groupchat_control.py:976 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s zostaÅ‚ zabanowany: %(reason)s" -#: ../src/groupchat_control.py:865 +#: ../src/groupchat_control.py:980 #, 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:873 +#: ../src/groupchat_control.py:989 #, python-format msgid "You are now known as %s" msgstr "WystÄ™pujesz teraz jako %s" -#: ../src/groupchat_control.py:875 +#: ../src/groupchat_control.py:1025 ../src/groupchat_control.py:1029 +#: ../src/groupchat_control.py:1034 #, python-format -msgid "%s is now known as %s" -msgstr "%s wystÄ™puje teraz jako %s" +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s zostaÅ‚ wyrzucony z pokoju: %(reason)s" + +#: ../src/groupchat_control.py:1026 +msgid "affiliation changed" +msgstr "afiliacja zostaÅ‚a zmieniona " -#: ../src/groupchat_control.py:961 +#: ../src/groupchat_control.py:1031 +msgid "room configuration changed to members-only" +msgstr "konfiguracja pokoju zmieniona na 'tylko dla czÅ‚onków'" + +#: ../src/groupchat_control.py:1036 +msgid "system shutdown" +msgstr "zamkniÄ™cie systemu" + +#: ../src/groupchat_control.py:1135 #, python-format msgid "%s has left" msgstr "%s wychodzi" -#: ../src/groupchat_control.py:966 +#: ../src/groupchat_control.py:1140 #, python-format msgid "%s has joined the group chat" msgstr "%s doÅ‚Ä…czyÅ‚ do pokoju" -#: ../src/groupchat_control.py:1088 ../src/groupchat_control.py:1106 -#: ../src/groupchat_control.py:1199 ../src/groupchat_control.py:1216 +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1253 ../src/groupchat_control.py:1532 +msgid "Invalid nickname" +msgstr "Niepoprawny pseudonim" + +#: ../src/groupchat_control.py:1254 ../src/groupchat_control.py:1533 +msgid "The nickname has not allowed characters." +msgstr "Używany przez ciebie pseudonim zawiera niedozwolone znaki." + +#: ../src/groupchat_control.py:1277 ../src/groupchat_control.py:1295 +#: ../src/groupchat_control.py:1379 ../src/groupchat_control.py:1396 #, python-format msgid "Nickname not found: %s" msgstr "Pseudonim nie zostaÅ‚ odnaleziony: %s" -#: ../src/groupchat_control.py:1122 +#: ../src/groupchat_control.py:1311 msgid "This group chat has no subject" msgstr "Ten pokój nie ma tematu" -#: ../src/groupchat_control.py:1135 -#, 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:1142 ../src/groupchat_control.py:1170 -#, python-format -msgid "%s does not appear to be a valid JID" -msgstr "%s nie wyglÄ…da na poprawny JID" - -#: ../src/groupchat_control.py:1253 -#, 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:1279 +#: ../src/groupchat_control.py:1322 +#, python-format +msgid "Invited %(contact_jid)s to %(room_jid)s." +msgstr "%(contact_jid)s zaproszony do %(room_jid)s." + +#: ../src/groupchat_control.py:1459 #, python-format msgid "" "Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " @@ -4655,14 +5254,14 @@ msgstr "" "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:1286 +#: ../src/groupchat_control.py:1466 #, python-format msgid "" "Usage: /%s <nickname>, opens a private chat window with the specified " "occupant." msgstr "Użycie: /%s <pseudonim>, otwiera okno prywatnej rozmowy z tÄ… osobÄ…." -#: ../src/groupchat_control.py:1292 +#: ../src/groupchat_control.py:1472 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -4671,7 +5270,7 @@ msgstr "" "Użycie: /%s [powód] zamyka aktualne okno lub kartÄ™ i wyÅ›wietla powóc, jeÅ›li " "zostaÅ‚ podany." -#: ../src/groupchat_control.py:1298 +#: ../src/groupchat_control.py:1478 #, python-format msgid "" "Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " @@ -4680,7 +5279,7 @@ msgstr "" "Użycie: /%s <JID> [powód] zaprasza JID do aktualnego pokoju, opcjonalnie " "wyÅ›wietlajÄ…c powód." -#: ../src/groupchat_control.py:1302 +#: ../src/groupchat_control.py:1482 #, python-format msgid "" "Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " @@ -4689,7 +5288,7 @@ msgstr "" "Użycie: /%s <pokój>@<serwer>[/pseudonim] oferuje przyÅ‚Ä…czenie siÄ™ do " "pokój@serwer opcjonalnie z wykorzystaniem podanego psedonimu." -#: ../src/groupchat_control.py:1306 +#: ../src/groupchat_control.py:1486 #, python-format msgid "" "Usage: /%s <nickname> [reason], removes the occupant specified by nickname " @@ -4699,16 +5298,7 @@ msgstr "" "Użycie: /%s <pseudonim> [powód] usuwa podanÄ… poprzez pseudonim osobÄ™ z " "pokoju i opcjonalnie wyÅ›wietla powód. NIE wspiera spacji w pseudonimie." -#: ../src/groupchat_control.py:1311 -#, python-format -msgid "" -"Usage: /%s <action>, sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"Użycie: /%s <dziaÅ‚anie> wysyÅ‚a dziaÅ‚anie do aktualnego pokoju. Używaj w " -"trzeciej osobie (np. /%s eksploduje.)" - -#: ../src/groupchat_control.py:1315 +#: ../src/groupchat_control.py:1495 #, python-format msgid "" "Usage: /%s <nickname> [message], opens a private message window and sends " @@ -4717,112 +5307,114 @@ msgstr "" "Użycie: /%s <pseudonim> [wiadomość] otwiera okno prywatnej wiadomoÅ›ci i " "wysyÅ‚a jÄ… do osoby o takim pseudonimie." -#: ../src/groupchat_control.py:1320 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Usage: /%s <nickname>, changes your nickname in current group chat." msgstr "Użycie: /%s <pseudonim> zmienia twój pseudonim w aktualnym pokoju." -#: ../src/groupchat_control.py:1324 +#: ../src/groupchat_control.py:1504 #, python-format msgid "Usage: /%s , display the names of group chat occupants." msgstr "Użycie: /%s , wyÅ›wietla osoby obecne w danym pokoju." -#: ../src/groupchat_control.py:1328 +#: ../src/groupchat_control.py:1508 #, python-format msgid "Usage: /%s [topic], displays or updates the current group chat topic." msgstr "Użycie: /%s [temat] wyÅ›wietla lub aktualizuje temat aktualnego pokoju." -#: ../src/groupchat_control.py:1331 +#: ../src/groupchat_control.py:1511 #, python-format msgid "" "Usage: /%s <message>, sends a message without looking for other commands." msgstr "" "Użycie: /%s <wiadomość> wysyÅ‚a wiadomość bez sprawdzania innych poleceÅ„." -#: ../src/groupchat_control.py:1397 +#: ../src/groupchat_control.py:1606 #, python-format msgid "Are you sure you want to leave group chat \"%s\"?" msgstr "Czy jesteÅ› pewien, że chcesz opuÅ›cić pokój \"%s\"?" -#: ../src/groupchat_control.py:1399 +#: ../src/groupchat_control.py:1608 msgid "" "If you close this window, you will be disconnected from this group chat." msgstr "JeÅ›li zamkniesz to okno, poÅ‚Ä…czenie z tym pokojem zostanie zerwane." -#: ../src/groupchat_control.py:1403 ../src/roster_window.py:4376 +#: ../src/groupchat_control.py:1612 ../src/roster_window.py:4877 msgid "Do _not ask me again" msgstr "_Nie pytaj mnie o to ponownie" -#: ../src/groupchat_control.py:1437 +#: ../src/groupchat_control.py:1644 msgid "Changing Subject" msgstr "Zmiana tematu" -#: ../src/groupchat_control.py:1438 +#: ../src/groupchat_control.py:1645 msgid "Please specify the new subject:" msgstr "Wpisz nowy temat:" -#: ../src/groupchat_control.py:1447 +#: ../src/groupchat_control.py:1654 msgid "Changing Nickname" msgstr "Zmiana pseudonimu" -#: ../src/groupchat_control.py:1448 +#: ../src/groupchat_control.py:1655 msgid "Please specify the new nickname you want to use:" msgstr "Wpisz nowy pseudonim, którego chcesz używać:" #. Ask for a reason -#: ../src/groupchat_control.py:1463 +#: ../src/groupchat_control.py:1670 +#, python-format msgid "Destroying %s" msgstr "Usuwam pokój %s" -#: ../src/groupchat_control.py:1464 +#: ../src/groupchat_control.py:1671 msgid "" "You are going to definitively destroy this room.\n" "You may specify a reason below:" -msgstr "Zamierzasz caÅ‚kowicie usunąć ten pokój. \n" +msgstr "" +"Zamierzasz caÅ‚kowicie usunąć ten pokój. \n" "Poniżej możesz podać powód swojej decyzji:" -#: ../src/groupchat_control.py:1466 +#: ../src/groupchat_control.py:1673 msgid "You may also enter an alternate venue:" msgstr "Możesz również podać alternatywne miejsce spotkaÅ„:" -#: ../src/groupchat_control.py:1496 +#: ../src/groupchat_control.py:1705 msgid "Bookmark already set" msgstr "ZakÅ‚adka zostaÅ‚a już dodana" -#: ../src/groupchat_control.py:1497 +#: ../src/groupchat_control.py:1706 #, python-format msgid "Group Chat \"%s\" is already in your bookmarks." msgstr "Pokój \"%s\" jest już w Twoich zakÅ‚adkach." -#: ../src/groupchat_control.py:1506 +#: ../src/groupchat_control.py:1715 msgid "Bookmark has been added successfully" msgstr "ZakÅ‚adka zostaÅ‚a dodana" -#: ../src/groupchat_control.py:1507 +#: ../src/groupchat_control.py:1716 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:1635 +#: ../src/groupchat_control.py:1868 #, python-format msgid "Kicking %s" msgstr "Wyrzuć %s" -#: ../src/groupchat_control.py:1636 ../src/groupchat_control.py:1929 +#: ../src/groupchat_control.py:1869 ../src/groupchat_control.py:2169 msgid "You may specify a reason below:" msgstr "Podaj przyczynÄ™:" #. ask for reason -#: ../src/groupchat_control.py:1928 +#: ../src/groupchat_control.py:2168 #, python-format msgid "Banning %s" msgstr "Zabanuj %s" -#: ../src/gtkexcepthook.py:41 +#: ../src/gtkexcepthook.py:46 msgid "A programming error has been detected" msgstr "Wykryto bÅ‚Ä…d programistyczny" -#: ../src/gtkexcepthook.py:42 +#: ../src/gtkexcepthook.py:47 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -4830,91 +5422,91 @@ msgstr "" "Nie jest prawdopodnie krytyczny, ale powinien zostać mimo to zgÅ‚oszony " "deweloperom." -#: ../src/gtkexcepthook.py:48 +#: ../src/gtkexcepthook.py:53 msgid "_Report Bug" msgstr "_ZgÅ‚oÅ› BÅ‚Ä…d" -#: ../src/gtkexcepthook.py:71 +#: ../src/gtkexcepthook.py:76 msgid "Details" msgstr "Szczegóły" #. we talk about file -#: ../src/gtkgui_helpers.py:156 ../src/gtkgui_helpers.py:171 +#: ../src/gtkgui_helpers.py:162 ../src/gtkgui_helpers.py:177 #, python-format msgid "Error: cannot open %s for reading" msgstr "bÅ‚Ä…d: nie można otworzyć %s do odczytu" -#: ../src/gtkgui_helpers.py:336 +#: ../src/gtkgui_helpers.py:342 msgid "Error reading file:" msgstr "BÅ‚Ä…d odczytu pliku:" -#: ../src/gtkgui_helpers.py:339 +#: ../src/gtkgui_helpers.py:345 msgid "Error parsing file:" msgstr "BÅ‚Ä…d przetwarzania pliku:" #. do not traceback (could be a permission problem) #. we talk about a file here -#: ../src/gtkgui_helpers.py:376 +#: ../src/gtkgui_helpers.py:382 #, python-format msgid "Could not write to %s. Session Management support will not work" msgstr "" "Nie można zapisywać do %s. Wsparcie dla Menadżera Sesji nie bÄ™dzie dziaÅ‚ać" #. xmpp: is currently handled by another program, so ask the user -#: ../src/gtkgui_helpers.py:711 +#: ../src/gtkgui_helpers.py:714 msgid "Gajim is not the default Jabber client" msgstr "Gajim nie jest domyÅ›lnym klinetem Jabbera" -#: ../src/gtkgui_helpers.py:712 +#: ../src/gtkgui_helpers.py:715 msgid "Would you like to make Gajim the default Jabber client?" msgstr "Czy chciaÅ‚byÅ› by Gajim staÅ‚ siÄ™ klientem domyÅ›lnym?" -#: ../src/gtkgui_helpers.py:713 +#: ../src/gtkgui_helpers.py:716 msgid "Always check to see if Gajim is the default Jabber client on startup" msgstr "Przy starcie sprawdzaj czy Gajim jest domyÅ›lnym klinetem Jabbera" -#: ../src/gtkgui_helpers.py:812 +#: ../src/gtkgui_helpers.py:813 msgid "Extension not supported" msgstr "Rozszerzenie nie jest obsÅ‚ugiwane" -#: ../src/gtkgui_helpers.py:813 +#: ../src/gtkgui_helpers.py:814 #, 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/gtkgui_helpers.py:822 +#: ../src/gtkgui_helpers.py:823 msgid "Save Image as..." msgstr "Zapisz plik jako..." -#: ../src/history_manager.py:65 +#: ../src/history_manager.py:73 msgid "Cannot find history logs database" msgstr "Nie można odnaleźć bazy danych z historiÄ… rozmów" #. holds jid -#: ../src/history_manager.py:108 +#: ../src/history_manager.py:113 msgid "Contacts" msgstr "Kontakty" #. holds time -#: ../src/history_manager.py:121 ../src/history_manager.py:161 -#: ../src/history_window.py:86 +#: ../src/history_manager.py:126 ../src/history_manager.py:166 +#: ../src/history_window.py:121 msgid "Date" msgstr "Data" #. holds nickname -#: ../src/history_manager.py:127 ../src/history_manager.py:179 +#: ../src/history_manager.py:132 ../src/history_manager.py:184 msgid "Nickname" msgstr "Pseudonim" #. holds message -#: ../src/history_manager.py:135 ../src/history_manager.py:167 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:140 ../src/history_manager.py:172 +#: ../src/history_window.py:129 msgid "Message" msgstr "Wiadomość" -#: ../src/history_manager.py:187 +#: ../src/history_manager.py:192 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" @@ -4922,7 +5514,7 @@ msgstr "" "Czy chcesz wyczyÅ›cić bazÄ™ danych? (STANOWCZO ODRADZA SIĘ KORZYSTANIE Z TEJ " "OPCJI GDY GAJIM JEST URUCHOMIONY)" -#: ../src/history_manager.py:189 +#: ../src/history_manager.py:194 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 " @@ -4937,160 +5529,202 @@ msgstr "" "\n" "Jeżeli kliknÄ…Å‚eÅ› TAK, musisz teraz poczekać..." -#: ../src/history_manager.py:401 +#: ../src/history_manager.py:406 msgid "Exporting History Logs..." msgstr "Przenoszenie logów rozmów..." -#: ../src/history_manager.py:476 +#: ../src/history_manager.py:481 #, 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:514 +#: ../src/history_manager.py:518 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:518 ../src/history_manager.py:554 +#: ../src/history_manager.py:522 ../src/history_manager.py:557 msgid "This is an irreversible operation." msgstr "Skutków tej operacji nie można bÄ™dzie wycofać." -#: ../src/history_manager.py:551 +#: ../src/history_manager.py:554 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:103 ../src/history_window.py:105 +#: ../src/history_window.py:209 ../src/history_window.py:211 #, python-format msgid "Conversation History with %s" msgstr "Historia rozmowy z %s" -#: ../src/history_window.py:266 +#: ../src/history_window.py:342 #, 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:270 ../src/notify.py:199 +#: ../src/history_window.py:346 ../src/notify.py:211 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s ma teraz status %(status)s" -#: ../src/history_window.py:276 +#: ../src/history_window.py:352 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Obecny status: %(status)s: %(status_msg)s" -#: ../src/history_window.py:279 +#: ../src/history_window.py:355 #, python-format msgid "Status is now: %(status)s" msgstr "Obecny status: %(status)s" -#: ../src/htmltextview.py:710 ../src/htmltextview.py:721 +#: ../src/htmltextview.py:586 ../src/htmltextview.py:597 msgid "Timeout loading image" msgstr "Przekroczono czas Å‚adowania obrazu" -#: ../src/htmltextview.py:731 +#: ../src/htmltextview.py:607 msgid "Image is too big" msgstr "Obraz jest za duży" -#: ../src/message_window.py:273 +#: ../src/message_window.py:350 msgid "Chats" msgstr "Rozmowy" -#: ../src/message_window.py:275 +#: ../src/message_window.py:352 msgid "Group Chats" msgstr "Czaty" -#: ../src/message_window.py:277 +#: ../src/message_window.py:354 msgid "Private Chats" msgstr "Rozmowy prywatne" -#: ../src/message_window.py:279 +#: ../src/message_window.py:356 msgid "Messages" msgstr "WiadomoÅ›ci" -#: ../src/message_window.py:280 +#: ../src/message_window.py:357 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/notify.py:197 +#: ../src/negotiation.py:13 +msgid "- messages will be logged" +msgstr "- wiadomoÅ›ci bÄ™dzie logowanych" + +#: ../src/negotiation.py:15 +msgid "- messages will not be logged" +msgstr "- wiadomoÅ›ci nie bÄ™dzie logowanych" + +#: ../src/negotiation.py:24 +msgid "OK to continue with negotiation?" +msgstr "Czy kontynuować negocjacjÄ™?" + +#: ../src/negotiation.py:25 +#, python-format +msgid "" +"You've begun an encrypted session with %s, but it can't be guaranteed that " +"you're talking directly to the person you think you are.\n" +"\n" +"You should speak with them directly (in person or on the phone) and confirm " +"that their Short Authentication String is identical to this one: %s\n" +"\n" +"Would you like to continue with the encrypted session?" +msgstr "" +"RozpoczÄ…Å‚eÅ› szyfrowanÄ… sesjÄ™ z %s, ale nie można zagwarantować, że " +"rozmawiasz bezpoÅ›rednio z odpowiedniÄ… osobÄ….\n" +"\n" +"PowienieneÅ›(-winnaÅ›) porozmawiać z niÄ… w cztery osobiÅ›cie lub za " +"poÅ›rednictwem telefonu i potwierdzić, że jej SAS (Short Authentication " +"String) jest identyczny z poniższym: %s\n" +"Czy chcesz kontynuować tÄ… sesjÄ™?" + +#: ../src/negotiation.py:31 +msgid "Yes, I verified the Short Authentication String" +msgstr "Tak, SAS zostaÅ‚ zweryfikowany." + +#: ../src/notify.py:209 #, python-format msgid "%(nick)s Changed Status" msgstr "%(nick)s zmieniÅ‚ status" -#: ../src/notify.py:207 +#: ../src/notify.py:219 #, python-format msgid "%(nickname)s Signed In" msgstr "%(nickname)s poÅ‚Ä…czyÅ‚(a) siÄ™" -#: ../src/notify.py:215 +#: ../src/notify.py:227 #, python-format msgid "%(nickname)s Signed Out" msgstr "%(nickname)s rozÅ‚Ä…czyÅ‚(a) siÄ™" -#: ../src/notify.py:227 +#: ../src/notify.py:239 #, python-format msgid "New Single Message from %(nickname)s" msgstr "Nowa wiadomość od %(nickname)s" -#: ../src/notify.py:235 +#: ../src/notify.py:247 #, python-format msgid "New Private Message from group chat %s" msgstr "Nowa wiadomość prywatna z pokoju %s" -#: ../src/notify.py:236 +#: ../src/notify.py:249 #, python-format msgid "%(nickname)s: %(message)s" msgstr "%(nickname)s: %(message)s" -#: ../src/notify.py:242 +#: ../src/notify.py:252 +#, python-format +msgid "Messaged by %(nickname)s" +msgstr "Nowa wiadomość od %(nickname)s" + +#: ../src/notify.py:258 #, python-format msgid "New Message from %(nickname)s" msgstr "Nowa wiadomość od %(nickname)s" -#: ../src/profile_window.py:72 +#: ../src/profile_window.py:53 msgid "Retrieving profile..." msgstr "Pobieranie profilu..." -#: ../src/profile_window.py:127 ../src/vcard.py:135 -msgid "File is emty" +#: ../src/profile_window.py:104 ../src/roster_window.py:1887 +msgid "File is empty" msgstr "Plik jest pusty" -#: ../src/profile_window.py:130 ../src/vcard.py:138 +#: ../src/profile_window.py:107 ../src/roster_window.py:1890 msgid "File does not exist" msgstr "Plik nie istnieje." #. keep identation -#: ../src/profile_window.py:144 ../src/vcard.py:140 +#. unknown format +#: ../src/profile_window.py:121 ../src/profile_window.py:137 +#: ../src/roster_window.py:1892 ../src/roster_window.py:1903 msgid "Could not load image" msgstr "Nie można zaÅ‚adować obrazka." -#: ../src/profile_window.py:257 +#: ../src/profile_window.py:238 msgid "Information received" msgstr "Informacja zostaÅ‚a odebrana" -#: ../src/profile_window.py:326 +#: ../src/profile_window.py:307 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/profile_window.py:338 +#: ../src/profile_window.py:319 msgid "Sending profile..." msgstr "WysyÅ‚anie profilu..." -#: ../src/profile_window.py:353 +#: ../src/profile_window.py:334 msgid "Information NOT published" msgstr "Informacja NIE ZOSTAÅA opublikowana" -#: ../src/profile_window.py:360 +#: ../src/profile_window.py:341 msgid "vCard publication failed" msgstr "Publikacja vCard nie powiodÅ‚a siÄ™" -#: ../src/profile_window.py:361 +#: ../src/profile_window.py:342 msgid "" "There was an error while publishing your personal information, try again " "later." @@ -5098,80 +5732,93 @@ msgstr "" "W czasie publikowanie informacji o tobie wystÄ…piÅ‚ bÅ‚Ä…d, spróbuj ponownie " "później." -#: ../src/roster_window.py:173 ../src/roster_window.py:228 +#: ../src/roster_window.py:188 ../src/roster_window.py:243 msgid "Merged accounts" msgstr "PoÅ‚Ä…czone konta" -#: ../src/roster_window.py:346 ../src/roster_window.py:571 -#: ../src/common/helpers.py:43 +#: ../src/roster_window.py:363 ../src/roster_window.py:628 +#: ../src/roster_window.py:2115 ../src/common/contacts.py:312 +#: ../src/common/helpers.py:49 msgid "Observers" msgstr "Obserwatorzy" -#: ../src/roster_window.py:710 ../src/roster_window.py:3526 +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:447 ../src/roster_window.py:452 +#: ../src/roster_window.py:1940 ../src/roster_window.py:1943 +#: ../src/roster_window.py:2606 ../src/roster_window.py:2609 +#: ../src/roster_window.py:2634 ../src/roster_window.py:4738 +#: ../src/roster_window.py:4740 ../src/common/commands.py:199 +#: ../src/common/contacts.py:102 ../src/common/helpers.py:49 +msgid "Groupchats" +msgstr "Pokoje" + +#: ../src/roster_window.py:777 ../src/roster_window.py:3987 msgid "You cannot join a group chat while you are invisible" msgstr "Nie możesz doÅ‚Ä…czyć do pokoju gdy jesteÅ› niewidoczny" #. new chat +#. single message #. for chat_with #. for single message -#: ../src/roster_window.py:913 ../src/systray.py:206 ../src/systray.py:211 +#. join gc +#: ../src/roster_window.py:990 ../src/roster_window.py:1000 +#: ../src/roster_window.py:1009 ../src/systray.py:212 ../src/systray.py:217 +#: ../src/systray.py:223 #, python-format msgid "using account %s" msgstr "używajÄ…c konta %s" -#. the 'manage gc bookmarks' item is shown -#. below to avoid duplicate code #. add -#: ../src/roster_window.py:938 +#: ../src/roster_window.py:1016 #, python-format msgid "to %s account" msgstr "do konta %s" #. disco -#: ../src/roster_window.py:943 +#: ../src/roster_window.py:1021 #, python-format msgid "using %s account" msgstr "używajÄ…c konta %s" +#: ../src/roster_window.py:1102 +msgid "_Manage Bookmarks..." +msgstr "_ZarzÄ…dzaj zakÅ‚adkami..." + #. profile, avatar -#: ../src/roster_window.py:1018 +#: ../src/roster_window.py:1121 #, python-format msgid "of account %s" msgstr "dla konta %s" -#: ../src/roster_window.py:1038 -msgid "_Manage Bookmarks..." -msgstr "_ZarzÄ…dzaj zakÅ‚adkami..." - -#: ../src/roster_window.py:1067 +#: ../src/roster_window.py:1161 #, python-format msgid "for account %s" msgstr "dla konta %s" #. History manager -#: ../src/roster_window.py:1088 +#: ../src/roster_window.py:1182 msgid "History Manager" msgstr "Historia rozmów" -#: ../src/roster_window.py:1097 +#: ../src/roster_window.py:1191 msgid "_Join New Group Chat" msgstr "_DoÅ‚Ä…cz do pokoju" -#: ../src/roster_window.py:1429 ../src/roster_window.py:3722 -#: ../src/roster_window.py:3729 +#: ../src/roster_window.py:1549 ../src/roster_window.py:4192 +#: ../src/roster_window.py:4199 msgid "You have unread messages" msgstr "Masz nieprzeczytane wiadomoÅ›ci" -#: ../src/roster_window.py:1430 +#: ../src/roster_window.py:1550 msgid "You must read them before removing this transport." msgstr "Przejrzyj je wszystkie przed usuniÄ™ciem tego transportu." -#: ../src/roster_window.py:1433 +#: ../src/roster_window.py:1553 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" zostanie usuniÄ™ty" -#: ../src/roster_window.py:1434 +#: ../src/roster_window.py:1554 msgid "" "You will no longer be able to send and receive messages from contacts using " "this transport." @@ -5179,11 +5826,11 @@ msgstr "" "Nie bÄ™dziesz już mógÅ‚ wysyÅ‚ać i odbierać wiadomoÅ›ci od kontaktów za pomocÄ… " "tego transportu." -#: ../src/roster_window.py:1437 +#: ../src/roster_window.py:1557 msgid "Transports will be removed" msgstr "Transporty zostanÄ… usuniÄ™te" -#: ../src/roster_window.py:1442 +#: ../src/roster_window.py:1562 #, python-format msgid "" "You will no longer be able to send and receive messages to contacts from " @@ -5193,120 +5840,151 @@ msgstr "" "nastÄ™pujÄ…cych transportów: %s" #. it's jid -#: ../src/roster_window.py:1608 +#: ../src/roster_window.py:1728 msgid "Rename Contact" msgstr "ZmieÅ„ nazwÄ™ dla kontaktu" -#: ../src/roster_window.py:1609 +#: ../src/roster_window.py:1729 #, python-format msgid "Enter a new nickname for contact %s" msgstr "Wpisz nazwÄ™ dla kontaktu %s." -#: ../src/roster_window.py:1616 +#: ../src/roster_window.py:1736 msgid "Rename Group" msgstr "ZmieÅ„ nazwÄ™ grupy" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1737 #, python-format msgid "Enter a new name for group %s" msgstr "Wpisz nowÄ… nazwÄ™ dla grupy %s." -#: ../src/roster_window.py:1692 +#: ../src/roster_window.py:1812 msgid "Remove Group" msgstr "UsuÅ„ grupÄ™" -#: ../src/roster_window.py:1693 +#: ../src/roster_window.py:1813 #, python-format msgid "Do you want to remove group %s from the roster?" msgstr "Czy chcesz usunąć z rostera grupÄ™ %s?" -#: ../src/roster_window.py:1694 +#: ../src/roster_window.py:1814 msgid "Remove also all contacts in this group from your roster" msgstr "UsuÅ„ z rostera wszystkie kontakty należące do tej grupy" -#: ../src/roster_window.py:1725 +#: ../src/roster_window.py:1845 msgid "Assign OpenPGP Key" msgstr "Przypisz klucz OpenPGP" -#: ../src/roster_window.py:1726 +#: ../src/roster_window.py:1846 msgid "Select a key to apply to the contact" msgstr "Wybierz klucz, który chcesz przypisać kontaktowi" -#: ../src/roster_window.py:1966 ../src/roster_window.py:2260 -msgid "_New group chat" +#: ../src/roster_window.py:2161 +msgid "_New Group Chat" msgstr "_Nowa rozmowa grupowa" -#: ../src/roster_window.py:2111 +#: ../src/roster_window.py:2297 msgid "I would like to add you to my roster" msgstr "ChciaÅ‚bym dodać CiÄ™ do listy kontaktów" -#: ../src/roster_window.py:2305 ../src/roster_window.py:2364 +#. Send Group Message +#: ../src/roster_window.py:2431 ../src/roster_window.py:2643 msgid "Send Group M_essage" msgstr "_WyÅ›lij wiadomość grupowÄ…" -#: ../src/roster_window.py:2343 -msgid "Re_name" -msgstr "_ZmieÅ„ nazwÄ™" +#: ../src/roster_window.py:2450 +msgid "_New group chat" +msgstr "_Nowa rozmowa grupowa" + +#. Manage Transport submenu +#: ../src/roster_window.py:2488 +msgid "_Manage Contacts" +msgstr "_ZarzÄ…dzaj kontaktami" -#: ../src/roster_window.py:2370 +#: ../src/roster_window.py:2549 +msgid "_Maximize" +msgstr "_Maksymalizuj" + +#: ../src/roster_window.py:2556 +msgid "_Disconnect" +msgstr "_RozÅ‚Ä…cz" + +#: ../src/roster_window.py:2635 +msgid "_Maximize All" +msgstr "_Maksymalizuj wszystkie" + +#: ../src/roster_window.py:2651 msgid "To all users" msgstr "Do wszystkich użytkowników" -#: ../src/roster_window.py:2373 +#: ../src/roster_window.py:2654 msgid "To all online users" msgstr "Do wszystkich poÅ‚Ä…czonych użytkowników" -#: ../src/roster_window.py:2393 -msgid "Send Cus_tom Status" -msgstr "WyÅ›lij odrÄ™bny status" +#. Log Off +#: ../src/roster_window.py:2771 +msgid "_Log off" +msgstr "R_ozÅ‚Ä…cz" -#: ../src/roster_window.py:2450 +#. Log on +#: ../src/roster_window.py:2777 msgid "_Log on" msgstr "_PoÅ‚Ä…cz" -#: ../src/roster_window.py:2460 -msgid "Log _off" -msgstr "R_ozÅ‚Ä…cz" +#. Send single message +#: ../src/roster_window.py:2789 +msgid "Send Single Message" +msgstr "WyÅ›lij wiadomość" + +#. Manage Transport submenu +#: ../src/roster_window.py:2836 +msgid "_Manage Transport" +msgstr "_ZarzÄ…dzaj transportami" -#: ../src/roster_window.py:2582 ../src/roster_window.py:2653 +#. Modify Transport +#: ../src/roster_window.py:2844 +msgid "_Modify Transport" +msgstr "_Modyfikuj transport" + +#: ../src/roster_window.py:2958 ../src/roster_window.py:3032 msgid "_Change Status Message" msgstr "_ZmieÅ„ opis statusu" -#: ../src/roster_window.py:2725 +#: ../src/roster_window.py:3104 msgid "Authorization has been sent" msgstr "Autoryzacja zostaÅ‚a wysÅ‚ana" -#: ../src/roster_window.py:2726 +#: ../src/roster_window.py:3105 #, python-format msgid "Now \"%s\" will know your status." msgstr "Teraz \"%s\" bÄ™dzie znaÅ‚ Twój status." -#: ../src/roster_window.py:2746 +#: ../src/roster_window.py:3125 msgid "Subscription request has been sent" msgstr "ProÅ›ba o autoryzacjÄ™ zostaÅ‚a wysÅ‚ana" -#: ../src/roster_window.py:2747 +#: ../src/roster_window.py:3126 #, 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:2759 +#: ../src/roster_window.py:3138 msgid "Authorization has been removed" msgstr "Autoryzacja zostaÅ‚a cofniÄ™ta" -#: ../src/roster_window.py:2760 +#: ../src/roster_window.py:3139 #, 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:2955 +#: ../src/roster_window.py:3373 #, 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:2959 +#: ../src/roster_window.py:3377 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -5314,7 +5992,7 @@ 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:2964 +#: ../src/roster_window.py:3382 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -5322,16 +6000,16 @@ msgstr "" "UsuwajÄ…c kontakt usuniesz również autoryzacjÄ™, co spowoduje, że kontakt " "bÄ™dzie zawsze widziaÅ‚ CiÄ™ jako rozÅ‚Ä…czonego." -#: ../src/roster_window.py:2967 +#: ../src/roster_window.py:3385 msgid "I want this contact to know my status after removal" msgstr "ChcÄ™ żeby po usuniÄ™ciu ten kontakt znaÅ‚ mój status" #. several contact to remove at the same time -#: ../src/roster_window.py:2971 +#: ../src/roster_window.py:3389 msgid "Contacts will be removed from your roster" msgstr "Kontakty zostanÄ… usuniÄ™te z twojej listy kontaktów" -#: ../src/roster_window.py:2975 +#: ../src/roster_window.py:3393 #, python-format msgid "" "By removing these contacts:%s\n" @@ -5341,7 +6019,7 @@ msgstr "" "cofniesz im również autoryzacjÄ™, co spowoduje, że bÄ™dziesz dla nich widoczny " "jako rozÅ‚Ä…czony." -#: ../src/roster_window.py:3007 +#: ../src/roster_window.py:3425 msgid "" "Gnome Keyring is installed but not correctly started (environment variable " "probably not correctly set)" @@ -5349,41 +6027,44 @@ msgstr "" "Menedżer bazy kluczy GNOME jest zainstalowany, ale ma bÅ‚Ä™dnÄ… konfiguracjÄ™" "(prawodpodobnie niepoprawna zmienna Å›rodowiskowa" -#. TODO: make this string translatable +#: ../src/roster_window.py:3447 +msgid "GPG is not usable" +msgstr "GPG nie nadaje siÄ™ do użycia" + #. %s is the account name here -#: ../src/roster_window.py:3035 ../src/common/connection.py:707 -#: ../src/common/zeroconf/connection_zeroconf.py:164 +#: ../src/roster_window.py:3447 ../src/common/connection.py:689 +#: ../src/common/zeroconf/connection_zeroconf.py:170 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Zostanie poÅ‚Ä…czony z %s bez obsÅ‚ugi OpenPGP." -#: ../src/roster_window.py:3052 +#: ../src/roster_window.py:3460 msgid "Passphrase Required" msgstr "Wymagane hasÅ‚o" -#: ../src/roster_window.py:3053 +#: ../src/roster_window.py:3461 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Wpisz hasÅ‚o GPG dla konta %s." -#: ../src/roster_window.py:3058 +#: ../src/roster_window.py:3466 msgid "Save passphrase" msgstr "Zapisz hasÅ‚o" -#: ../src/roster_window.py:3066 +#: ../src/roster_window.py:3474 msgid "Wrong Passphrase" msgstr "BÅ‚Ä™dne hasÅ‚o" -#: ../src/roster_window.py:3067 +#: ../src/roster_window.py:3475 msgid "Please retype your GPG passphrase or press Cancel." msgstr "" "ProszÄ™ ponownie wprowadzić swoje hasÅ‚o GPG lub kliknąć przycisk Anuluj." -#: ../src/roster_window.py:3134 ../src/roster_window.py:3202 +#: ../src/roster_window.py:3550 ../src/roster_window.py:3628 msgid "You are participating in one or more group chats" msgstr "Znajdujesz siÄ™ w jednym lub kilku pokojach" -#: ../src/roster_window.py:3135 ../src/roster_window.py:3203 +#: ../src/roster_window.py:3551 ../src/roster_window.py:3629 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -5391,20 +6072,20 @@ msgstr "" "Zmiana statusu na Niewidoczny spowoduje rozÅ‚aczeniem z tym pokojami. Czy na " "pewno chcesz stać siÄ™ niewidoczny?" -#: ../src/roster_window.py:3160 +#: ../src/roster_window.py:3585 msgid "No account available" msgstr "Å»adne konto nie jest dostÄ™pne" -#: ../src/roster_window.py:3161 +#: ../src/roster_window.py:3586 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:3284 +#: ../src/roster_window.py:3715 #, python-format msgid "\"%(title)s\" by %(artist)s" msgstr "\"%(title)s\" w wykonaniu %(artist)s" -#: ../src/roster_window.py:3723 ../src/roster_window.py:3730 +#: ../src/roster_window.py:4193 ../src/roster_window.py:4200 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -5412,24 +6093,24 @@ msgstr "" "WiadomoÅ›ci bÄ™dÄ… dostÄ™pne tylko do czytania, o ile masz wÅ‚Ä…czonÄ… obsÅ‚ugÄ™ " "historii." -#: ../src/roster_window.py:4326 +#: ../src/roster_window.py:4824 msgid "Metacontacts storage not supported by your server" msgstr "Twój serwer uniemożliwia przechowywanie metakontaktów" -#: ../src/roster_window.py:4328 +#: ../src/roster_window.py:4826 msgid "" "Your server does not support storing metacontacts information. So those " -"information will not be save on next reconnection." +"information will not be saved on next reconnection." msgstr "" "Twój serwer uniemożliwia przechowywanie metakontaktów. Informacja ta nie " "zostanie przywrócona podczas nastÄ™pnego poÅ‚Ä…czenia." -#: ../src/roster_window.py:4370 +#: ../src/roster_window.py:4871 msgid "" "You are about to create a metacontact. Are you sure you want to continue?" msgstr "Chcesz utworzyć metakontakt. Kontynuować?" -#: ../src/roster_window.py:4372 +#: ../src/roster_window.py:4873 msgid "" "Metacontacts are a way to regroup several contacts in one line. Generally it " "is used when the same person has several Jabber accounts or transport " @@ -5439,129 +6120,137 @@ msgstr "" "rostera. Używa siÄ™ ich przede wszystkim wtedy, gdy jedna osoba ma kilka kont " "Jabbera lub zarejestrowana jest w kilku transportach." -#: ../src/roster_window.py:4450 +#: ../src/roster_window.py:4970 +#, python-format msgid "Do you want to send that file to %s:" msgid_plural "Do you want to send those files to %s:" msgstr[0] "Czy chcesz wysÅ‚ać ten plik do %s:" msgstr[1] "Czy chcesz wysÅ‚ać te pliki do %s:" msgstr[2] "Czy chcesz wysÅ‚ać te pliki do %s:" -#: ../src/roster_window.py:4555 -#, python-format -msgid "Drop %s in group %s" -msgstr "UsuÅ„ %s z grupy %s" - -#: ../src/roster_window.py:4562 -#, python-format -msgid "Make %s and %s metacontacts" -msgstr "Przekształć %s oraz %s w metakontakty" - -#: ../src/roster_window.py:4749 +#: ../src/roster_window.py:5253 msgid "Change Status Message..." msgstr "ZmieÅ„ opis statusu..." -#: ../src/search_window.py:88 +#: ../src/search_window.py:91 msgid "Waiting for results" msgstr "Oczekiwanie na wyniki" -#: ../src/search_window.py:135 ../src/search_window.py:186 +#: ../src/search_window.py:131 ../src/search_window.py:209 msgid "Error in received dataform" msgstr "BÅ‚Ä…d w odebranych danych" -#: ../src/search_window.py:154 +#. No result +#: ../src/search_window.py:165 ../src/search_window.py:201 msgid "No result" msgstr "Brak wyników" -#: ../src/systray.py:163 +#: ../src/systray.py:169 msgid "_Change Status Message..." msgstr "_ZmieÅ„ opis statusu..." -#: ../src/systray.py:251 +#: ../src/systray.py:254 msgid "Hide this menu" msgstr "Ukryj to menu" -#: ../src/tooltips.py:309 ../src/tooltips.py:492 +#: ../src/tooltips.py:317 ../src/tooltips.py:510 msgid "Jabber ID: " msgstr "Jabber ID:" -#: ../src/tooltips.py:312 ../src/tooltips.py:496 +#: ../src/tooltips.py:320 ../src/tooltips.py:514 msgid "Resource: " msgstr "Zasoby: " -#: ../src/tooltips.py:317 +#: ../src/tooltips.py:325 #, python-format msgid "%(owner_or_admin_or_member)s of this group chat" msgstr "%(owner_or_admin_or_member)s tego pokoju" -#: ../src/tooltips.py:429 ../src/tooltips.py:611 +#: ../src/tooltips.py:423 +msgid " [blocked]" +msgstr " [zablokowany]" + +#: ../src/tooltips.py:427 +msgid " [minimized]" +msgstr " [zminimalizowany]" + +#: ../src/tooltips.py:442 ../src/tooltips.py:630 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:460 +#: ../src/tooltips.py:472 #, python-format msgid "Last status: %s" msgstr "Ostatni status %s" -#: ../src/tooltips.py:462 +#: ../src/tooltips.py:474 #, python-format msgid " since %s" msgstr " od %s" +#: ../src/tooltips.py:492 +msgid "Connected" +msgstr "PoÅ‚Ä…czony" + +#: ../src/tooltips.py:494 +msgid "Disconnected" +msgstr "RozÅ‚Ä…czony" + #. ('both' is the normal sub so we don't show it) -#: ../src/tooltips.py:502 +#: ../src/tooltips.py:521 msgid "Subscription: " msgstr "Autoryzacja: " -#: ../src/tooltips.py:512 +#: ../src/tooltips.py:531 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:567 +#: ../src/tooltips.py:586 msgid "Download" msgstr "Pobieranie" -#: ../src/tooltips.py:573 +#: ../src/tooltips.py:592 msgid "Upload" msgstr "PrzeÅ›lij" -#: ../src/tooltips.py:580 +#: ../src/tooltips.py:599 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:586 +#: ../src/tooltips.py:605 msgid "Transferred: " msgstr "PrzesÅ‚ane: " -#: ../src/tooltips.py:589 ../src/tooltips.py:610 +#: ../src/tooltips.py:608 ../src/tooltips.py:629 msgid "Not started" msgstr "Nie wÅ‚Ä…czony" -#: ../src/tooltips.py:593 +#: ../src/tooltips.py:612 msgid "Stopped" msgstr "Zatrzymany" -#: ../src/tooltips.py:595 ../src/tooltips.py:598 +#: ../src/tooltips.py:614 ../src/tooltips.py:617 msgid "Completed" msgstr "UkoÅ„czony" -#: ../src/tooltips.py:602 +#: ../src/tooltips.py:621 msgid "?transfer status:Paused" msgstr "?status transferu:wstrzymany" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:606 +#: ../src/tooltips.py:625 msgid "Stalled" msgstr "Wygaszony" -#: ../src/tooltips.py:608 +#: ../src/tooltips.py:627 msgid "Transferring" msgstr "PrzesyÅ‚anie" -#: ../src/tooltips.py:640 +#: ../src/tooltips.py:659 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:643 +#: ../src/tooltips.py:662 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -5569,24 +6258,24 @@ msgstr "" "Ta usÅ‚uga nie byÅ‚a w stanie odesÅ‚ać szczegółowych informacji.\n" "Prawdopodobnie zostaÅ‚a zamkniÄ™ta lub jest zepsuta" -#: ../src/vcard.py:325 +#: ../src/vcard.py:245 msgid "?Client:Unknown" msgstr "?Klient: Nieznany" -#: ../src/vcard.py:327 +#: ../src/vcard.py:247 msgid "?OS:Unknown" msgstr "?System operacyjny: Nieznany" -#: ../src/vcard.py:355 ../src/vcard.py:533 +#: ../src/vcard.py:272 ../src/vcard.py:282 ../src/vcard.py:472 #, python-format msgid "since %s" msgstr "od %s" -#: ../src/vcard.py:385 +#: ../src/vcard.py:311 msgid "Affiliation:" msgstr "Afiliacja: " -#: ../src/vcard.py:393 +#: ../src/vcard.py:319 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -5594,7 +6283,7 @@ msgstr "" "Ten kontakt jest zaintersowany informacjami o twoim statusie, ale ty nie " "interesujesz siÄ™ jego/jej statusem." -#: ../src/vcard.py:395 +#: ../src/vcard.py:321 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -5602,12 +6291,12 @@ msgstr "" "JesteÅ› zainteresowany informacjami o statusie tego kontaktu, ale on/ona nie " "jest zainteresowana twoim." -#: ../src/vcard.py:397 +#: ../src/vcard.py:323 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:399 +#: ../src/vcard.py:325 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -5615,140 +6304,144 @@ msgstr "" "Nie jesteÅ› zainteresowany informacjami o statusie kontaktu i on również nie " "jest zainteresowany twoim" -#: ../src/vcard.py:407 +#: ../src/vcard.py:333 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:411 ../src/vcard.py:438 ../src/vcard.py:558 +#: ../src/vcard.py:337 ../src/vcard.py:374 ../src/vcard.py:497 msgid " resource with priority " msgstr " zasób o wysokim priorytecie " -#: ../src/common/check_paths.py:33 +#: ../src/common/check_paths.py:38 msgid "creating logs database" msgstr "tworzenie bazy danych z logami" -#: ../src/common/check_paths.py:89 ../src/common/check_paths.py:100 -#: ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:112 +#: ../src/common/check_paths.py:119 #, python-format msgid "%s is a file but it should be a directory" msgstr "%s jest plikiem choć powinien być katalogiem" -#: ../src/common/check_paths.py:90 ../src/common/check_paths.py:101 -#: ../src/common/check_paths.py:108 ../src/common/check_paths.py:116 +#: ../src/common/check_paths.py:102 ../src/common/check_paths.py:113 +#: ../src/common/check_paths.py:120 ../src/common/check_paths.py:128 msgid "Gajim will now exit" msgstr "Gajim zakoÅ„czy teraz dziaÅ‚anie" -#: ../src/common/check_paths.py:115 +#: ../src/common/check_paths.py:127 #, python-format msgid "%s is a directory but should be a file" msgstr "%s jest katalogiem choć powinien być plikiem" -#: ../src/common/check_paths.py:131 +#: ../src/common/check_paths.py:143 #, python-format msgid "creating %s directory" msgstr "tworzenie katalogu %s" -#: ../src/common/commands.py:69 +#: ../src/common/commands.py:74 msgid "Change status information" msgstr "ZmieÅ„ informacjÄ™ o statusie" -#: ../src/common/commands.py:82 +#: ../src/common/commands.py:87 msgid "Change status" msgstr "ZmieÅ„ status" -#: ../src/common/commands.py:83 +#: ../src/common/commands.py:88 msgid "Set the presence type and description" msgstr "Ustaw typ widocznoÅ›ci i status opisowy" -#: ../src/common/commands.py:89 +#: ../src/common/commands.py:94 msgid "Free for chat" msgstr "ChÄ™tny do rozmowy" -#: ../src/common/commands.py:90 +#: ../src/common/commands.py:95 msgid "Online" msgstr "DostÄ™pny" -#: ../src/common/commands.py:92 +#: ../src/common/commands.py:97 msgid "Extended away" msgstr "Nieobecny" -#: ../src/common/commands.py:93 +#: ../src/common/commands.py:98 msgid "Do not disturb" msgstr "Nie przeszkadzać." -#: ../src/common/commands.py:94 +#: ../src/common/commands.py:99 msgid "Offline - disconnect" msgstr "Nieobecny - rozÅ‚Ä…czony" -#: ../src/common/commands.py:99 +#: ../src/common/commands.py:104 msgid "Presence description:" msgstr "Status opisowy" -#: ../src/common/commands.py:134 +#: ../src/common/commands.py:139 msgid "The status has been changed." msgstr "Status zostaÅ‚ zmieniony." -#: ../src/common/commands.py:179 +#: ../src/common/commands.py:184 #, python-format msgid "%(nickname)s on %(room_jid)s" msgstr "%(nickname)s z pokoju %(room_jid)s" -#: ../src/common/commands.py:183 +#: ../src/common/commands.py:188 msgid "You have not joined a groupchat." msgstr "Nie doÅ‚Ä…czyÅ‚eÅ› do pokoju." -#: ../src/common/commands.py:189 +#: ../src/common/commands.py:194 msgid "Leave Groupchats" msgstr "Opuść pokoje" -#: ../src/common/commands.py:190 +#: ../src/common/commands.py:195 msgid "Choose the groupchats you want to leave" msgstr "Wybierz pokoje, które chcesz opuÅ›cić" -#: ../src/common/commands.py:194 -msgid "Groupchats" -msgstr "Pokoje" - -#: ../src/common/commands.py:230 +#: ../src/common/commands.py:235 msgid "You left the following groupchats:" msgstr "OpuÅ›ciÅ‚eÅ› pokoje:" -#: ../src/common/config.py:56 +#: ../src/common/commands.py:247 +msgid "Forward unread messages" +msgstr "PrzeÅ›lij dalej nieprzeczytane wiadomoÅ›ci" + +#: ../src/common/commands.py:267 +msgid "All unread messages have been forwarded." +msgstr "Wszystkie nieprzeczytane wiadomoÅ›ci zostaÅ‚y przesÅ‚ane dalej." + +#: ../src/common/config.py:63 msgid "Use D-Bus and Notification-Daemon to show notifications" msgstr "Korzystaj z DBus i Demona PowiadomieÅ„ aby wyÅ›wietlać powiadomienia" -#: ../src/common/config.py:61 +#: ../src/common/config.py:68 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:62 +#: ../src/common/config.py:69 msgid "Away as a result of being idle" msgstr "Status Zaraz wracam z powodu bezczynnoÅ›ci programu" -#: ../src/common/config.py:64 +#: ../src/common/config.py:71 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:65 +#: ../src/common/config.py:72 msgid "Not available as a result of being idle" msgstr "Status Nieobecny z powodu bezczynnoÅ›ci programu" -#: ../src/common/config.py:83 +#: ../src/common/config.py:90 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:88 +#: ../src/common/config.py:95 msgid "Enable link-local/zeroconf messaging" msgstr "Uaktywnij komunikacjÄ™ link-local/zeroconf" -#: ../src/common/config.py:91 +#: ../src/common/config.py:98 msgid "Language used by speller" msgstr "JÄ™zyk używany przez sÅ‚ownik" -#: ../src/common/config.py:92 +#: ../src/common/config.py:99 msgid "" "'always' - print time for every message.\n" "'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" @@ -5759,7 +6452,7 @@ msgstr "" "print_ichat_every_foo_minutes.\n" "'never' - nigdy nie wyÅ›wietlaj czasu." -#: ../src/common/config.py:93 +#: ../src/common/config.py:100 msgid "" "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 least precise one. " @@ -5770,18 +6463,18 @@ msgstr "" "najmniej dokÅ‚adne. Ustawienie to brane jest pod uwagÄ™ jedynie wtedy, gdy " "opcja print_time ustawiona jest na 'sometimes'." -#: ../src/common/config.py:96 +#: ../src/common/config.py:103 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Traktuj pary znaków * / _ jako znaki formatujÄ…ce." -#: ../src/common/config.py:97 +#: ../src/common/config.py:104 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:100 +#: ../src/common/config.py:107 msgid "" "Uses ReStructured text markup to send HTML, plus ascii formatting if " "selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" @@ -5791,7 +6484,7 @@ msgstr "" "zainstalowany pakiet docutils. WyjaÅ›nienie skÅ‚adni dostÄ™pne na stronie " "http://docutils.sourceforge.net/docs/ref/rst/" -#: ../src/common/config.py:109 +#: ../src/common/config.py:116 msgid "" "Character to add after nickname when using nick completion (tab) in group " "chat." @@ -5799,7 +6492,7 @@ msgstr "" "Znak dodawany do nicka przy użyciu autouzupeÅ‚niania klawiszem TAB (tylko " "czat)" -#: ../src/common/config.py:110 +#: ../src/common/config.py:117 msgid "" "Character to propose to add after desired nickname when desired nickname is " "used by someone else in group chat." @@ -5807,7 +6500,7 @@ msgstr "" "Znak proponowany do dodania do nicka w sytuacji, gdy dany nick jest już " "używany przez innego uzytkownika czatu" -#: ../src/common/config.py:133 +#: ../src/common/config.py:140 msgid "" "This option let you customize timestamp that is printed in conversation. For " "exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " @@ -5818,19 +6511,19 @@ msgstr "" "minuta] \". WiÄ™cej informacji w dokumentacjy Pythona dotyczÄ…cÄ… strftime: " "http://docs.python.org/lib/module-time.html" -#: ../src/common/config.py:134 +#: ../src/common/config.py:141 msgid "Characters that are printed before the nickname in conversations" msgstr "Znaki, które wyÅ›wietlane sÄ… podczas rozmowy przed nazwÄ… użytkownika" -#: ../src/common/config.py:135 +#: ../src/common/config.py:142 msgid "Characters that are printed after the nickname in conversations" msgstr "Znaki, które wyÅ›wietlane sÄ… podczas rozmowy za nazwÄ… użytkownika" -#: ../src/common/config.py:142 +#: ../src/common/config.py:149 msgid "Add * and [n] in roster title?" msgstr "Dodać * i [n] do tytuÅ‚u listy kontaktów?" -#: ../src/common/config.py:143 +#: ../src/common/config.py:150 msgid "" "How many lines to remember from previous conversation when a chat tab/window " "is reopened." @@ -5838,11 +6531,11 @@ msgstr "" "Ile linii z poprzedniej rozmowy powinno zostać zapamiÄ™tanych gdy okno/karta " "rozmowy zostanie ponownie otwarta." -#: ../src/common/config.py:144 +#: ../src/common/config.py:151 msgid "How many minutes should last lines from previous conversation last." msgstr "Ile minut powinny być widoczne linie z poprzedniej rozmowy." -#: ../src/common/config.py:145 +#: ../src/common/config.py:152 msgid "" "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " "Client default behaviour)." @@ -5850,11 +6543,11 @@ msgstr "" "Kombinacja Ctrl+Enter wysyÅ‚a wiadomość a Enter tworzy nowÄ… liniÄ™ (domyÅ›lne " "zachowanie klienta Mirabilis ICQ)." -#: ../src/common/config.py:147 +#: ../src/common/config.py:154 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Ile przechwywać linii dla kombinacji Ctrl+KeyUP." -#: ../src/common/config.py:150 +#: ../src/common/config.py:157 #, python-format msgid "" "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " @@ -5863,13 +6556,13 @@ msgstr "" "Albo wÅ‚asny url zawierajÄ…cy %s, gdzie %s jest sÅ‚owem/frazÄ…, albo WIKTIONARY, " "co oznacza użycie wiktionary." -#: ../src/common/config.py:153 +#: ../src/common/config.py:160 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:154 +#: ../src/common/config.py:161 msgid "" "If True, listen to D-Bus signals from NetworkManager and change the status " "of accounts (provided they do not have listen_to_network_manager set to " @@ -5882,14 +6575,14 @@ msgstr "" "synchronizujÄ… siÄ™ ze statusem globalnym) w oparciu o status wykorzystywanego " "poÅ‚Ä…czenia sieciowego." -#: ../src/common/config.py:155 +#: ../src/common/config.py:162 msgid "" "Sent chat state notifications. Can be one of all, composing_only, disabled." msgstr "" "WysyÅ‚aj informacje o twoim statusie podczas prowadzenia rozmowy. Może " "przyjmować wartoÅ›ci all, composing_only, disabled." -#: ../src/common/config.py:156 +#: ../src/common/config.py:163 msgid "" "Displayed chat state notifications in chat windows. Can be one of all, " "composing_only, disabled." @@ -5897,7 +6590,7 @@ msgstr "" "Informacje o statusie rozmówcy wyÅ›wietlane w oknie rozmowy. Przyjmuje " "wartoÅ›ci all, composing_only, disabled." -#: ../src/common/config.py:158 +#: ../src/common/config.py:165 msgid "" "When not printing time for every message (print_time==sometimes), print it " "every x minutes." @@ -5906,11 +6599,11 @@ msgstr "" "(print_time==sometimes), zmienna okreÅ›la co ile minut Gajim ma wyÅ›wietlać " "czas nadejÅ›cia nowej wiadomoÅ›ci." -#: ../src/common/config.py:159 +#: ../src/common/config.py:166 msgid "Ask before closing a group chat tab/window." msgstr "Zapytaj przed zamkniÄ™ciem karty/okna rozmowy grupowej." -#: ../src/common/config.py:160 +#: ../src/common/config.py:167 msgid "" "Always ask before closing group chat tab/window in this space separated list " "of group chat jids." @@ -5919,7 +6612,7 @@ msgstr "" "na każdym z pokojów wymienionych na liÅ›cie (nazwy pokojów rozdzielone " "spacjÄ…)." -#: ../src/common/config.py:161 +#: ../src/common/config.py:168 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of group chat jids." @@ -5928,42 +6621,61 @@ msgstr "" "prowadzona jest na dowolnym pokoju obecnym na tej liÅ›cie (nazwy pokojów " "rozdzielone spacjÄ…)." -#: ../src/common/config.py:164 +#: ../src/common/config.py:171 msgid "" "Comma separated list of hosts that we send, in addition of local interfaces, " "for File Transfer in case of address translation/port forwarding." msgstr "" -"Oddzielona przecinkami lista hostów, którÄ… wysyÅ‚amy w celu przesyÅ‚ania plików, w przypadku " -"tÅ‚umaczenia adresu/przekierowania portu." +"Oddzielona przecinkami lista hostów, którÄ… wysyÅ‚amy w celu przesyÅ‚ania " +"plików, w przypadku tÅ‚umaczenia adresu/przekierowania portu." -#: ../src/common/config.py:166 +#: ../src/common/config.py:173 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." msgstr "Standard IEC mówi, że KiB = 1024 bajty, KB = 100 bajtów." -#: ../src/common/config.py:168 +#: ../src/common/config.py:175 msgid "Notify of events in the system trayicon." msgstr "Powiadamiaj o zdarzeniach za pomocÄ… ikony w obszarze powiadamiania." -#: ../src/common/config.py:174 +#: ../src/common/config.py:181 msgid "Show tab when only one conversation?" msgstr "Czy pokazywać kartÄ™ gdy otwarta jest tylko jedna rozmowa?" -#: ../src/common/config.py:175 +#: ../src/common/config.py:182 msgid "Show tabbed notebook border in chat windows?" msgstr "Czy pokazywać rozgraniczenie kart w oknie czatu?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:183 msgid "Show close button in tab?" msgstr "Czy pokazywać przycisk zamkniÄ™cia na karcie?" -#: ../src/common/config.py:189 +#: ../src/common/config.py:184 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "" +"Czy podczas negocjowania szyfrowanej sesji Gajim ma przyjąć, że chcesz jÄ… " +"logować?" + +#: ../src/common/config.py:185 +msgid "" +"When negotiating an encrypted session, should Gajim prefer to use public " +"keys for identification?" +msgstr "" +"Czy podczas negocjowania szyfrowanej sesji Gajim ma kluczy publicznych?" + +#: ../src/common/config.py:194 +msgid "Preview new messages in notification popup?" +msgstr "PodglÄ…d nowych wiadomoÅ›ci w oknie powiadomienia?" + +#: ../src/common/config.py:199 msgid "" "A semicolon-separated list of words that will be highlighted in group chats." msgstr "" "Lista słów oddzielonych Å›rednikami, które bÄ™dÄ… podÅ›wietlane w trakcie " "rozmowy w pokoju." -#: ../src/common/config.py:190 +#: ../src/common/config.py:200 msgid "" "If True, quits Gajim when X button of Window Manager is clicked. This " "setting is taken into account only if trayicon is used." @@ -5972,14 +6684,14 @@ msgstr "" "Menadżera Okien. Ta opcja jest brana pod uwagÄ™ tylko gdy używana jest tacka " "systemowa." -#: ../src/common/config.py:191 +#: ../src/common/config.py:201 msgid "" "If True, Gajim will check if it's the default jabber client on each startup." msgstr "" "JeÅ›li ma wartość True, Gajim sprawdzi przy każdym uruchomieniu czy jest " "domyÅ›lnym klientem Jabbera." -#: ../src/common/config.py:192 +#: ../src/common/config.py:202 msgid "" "If True, Gajim will display an icon on each tab containing unread messages. " "Depending on the theme, this icon may be animated." @@ -5988,7 +6700,7 @@ msgstr "" "nieprzeczytanÄ… wiadomość. Ikona ta może być animowana, w zależnoÅ›ci od " "motywu." -#: ../src/common/config.py:193 +#: ../src/common/config.py:203 msgid "" "If True, Gajim will display the status message, if not empty, for every " "contact under the contact name in roster window." @@ -5996,7 +6708,7 @@ msgstr "" "JeÅ›li ma wartość True, Gajim wyÅ›wietli opis statusu, jeÅ›li nie jest on " "pusty, dla każdego kontaktu pod jego nazwÄ… w oknie listy kontaktów." -#: ../src/common/config.py:195 +#: ../src/common/config.py:205 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." @@ -6004,7 +6716,7 @@ 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." -#: ../src/common/config.py:196 +#: ../src/common/config.py:206 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." @@ -6012,7 +6724,7 @@ 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:197 +#: ../src/common/config.py:207 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 " @@ -6027,30 +6739,30 @@ msgstr "" "\"in_and_out\" nakazuje programowi wyÅ›wietlanie jedynie informacji o wejÅ›ciu " "użytkownika do pokoju lub jego opuszczeniu." -#: ../src/common/config.py:199 +#: ../src/common/config.py:209 msgid "Background color of contacts when they just signed in." msgstr "Kolor tÅ‚a dla logujÄ…cych siÄ™ kontaktów." -#: ../src/common/config.py:200 +#: ../src/common/config.py:210 msgid "Background color of contacts when they just signed out." msgstr "Kolor tÅ‚a dla kontaktów w trakcie wylogowywania." -#: ../src/common/config.py:202 +#: ../src/common/config.py:212 msgid "" "If True, restored messages will use a smaller font than the default one." msgstr "" "Jeżeli opcja ustawiona jest na True, przywrócone wiadomoÅ›ci bÄ™dÄ… wyÅ›wietlane " "mniejszÄ… czcionkÄ…." -#: ../src/common/config.py:203 +#: ../src/common/config.py:213 msgid "Don't show avatar for the transport itself." msgstr "Nie pokazuj awatarów transportów." -#: ../src/common/config.py:204 +#: ../src/common/config.py:214 msgid "Don't show roster in the system taskbar." msgstr "Nie pokazuj okna rostera na pasku zadaÅ„." -#: ../src/common/config.py:205 +#: ../src/common/config.py:215 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 " @@ -6060,7 +6772,7 @@ msgstr "" "niższej niż 2.8, odebrane a nie przeczytane wiadomoÅ›ci spowodujÄ… miganie " "okna programu." -#: ../src/common/config.py:207 +#: ../src/common/config.py:217 msgid "" "Jabberd1.4 does not like sha info when one join a password protected group " "chat. Turn this option to False to stop sending sha info in group chat " @@ -6071,7 +6783,7 @@ msgstr "" "wysyÅ‚ania takiej informacji." #. always, never, peracct, pertype should not be translated -#: ../src/common/config.py:210 +#: ../src/common/config.py:220 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -6089,39 +6801,35 @@ msgstr "" "wspólne okno. Aby uaktywnić dokonane w tej opcji zmiany, trzeba ponownie " "uruchomić program." -#: ../src/common/config.py:211 +#: ../src/common/config.py:221 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:212 +#: ../src/common/config.py:222 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:213 -msgid "Hides the buttons in group chat window." +#: ../src/common/config.py:223 +msgid "Hides the buttons in chat windows." msgstr "Ukrywa przyciski w oknie czatu." -#: ../src/common/config.py:214 -msgid "Hides the buttons in two persons chat window." -msgstr "Ukrywa przyciski podczas rozmowy dwóch osób." - -#: ../src/common/config.py:215 +#: ../src/common/config.py:224 msgid "Hides the banner in a group chat window" msgstr "Ukrywa banner w oknie czatu" -#: ../src/common/config.py:216 +#: ../src/common/config.py:225 msgid "Hides the banner in two persons chat window" msgstr "Usuwa banner podczas rozmowy dwóch osób" -#: ../src/common/config.py:217 +#: ../src/common/config.py:226 msgid "Hides the group chat occupants list in group chat window." msgstr "Usuwa z okna rozmowy grupowej listÄ™ osób obecnych w pokoju." -#: ../src/common/config.py:218 +#: ../src/common/config.py:227 msgid "" "In a chat, show the nickname at the beginning of a line only when it's not " "the same person talking than in previous message." @@ -6129,22 +6837,26 @@ msgstr "" "Podczas rozmowy grupowej, pokaż nazwÄ™ rozmówcy na poczÄ…tku linii tylko " "wówczas, gdy poprzedniÄ… wiadomość wysÅ‚aÅ‚a inna osoba." -#: ../src/common/config.py:219 +#: ../src/common/config.py:228 msgid "Indentation when using merge consecutive nickname." msgstr "WciÄ™cie stosowane przy Å‚aczeniu tych samych nicków." -#: ../src/common/config.py:220 +#: ../src/common/config.py:229 +msgid "Smooth scroll message in conversation window" +msgstr "PÅ‚ynne przewijanie w oknie rozmowy" + +#: ../src/common/config.py:230 msgid "List of colors that will be used to color nicknames in group chats." msgstr "" "Lista kolorów, które używane bÄ™dÄ… do kolorowania nicków w oknach czatu." -#: ../src/common/config.py:221 +#: ../src/common/config.py:231 msgid "Ctrl-Tab go to next composing tab when none is unread." msgstr "" "Kombinacja klawiszy Ctrl-Tab przechodzi do nastÄ™pnej karty, o ile w żadnej z " "nich nie ma nieprzeczytanych wiadomoÅ›ci." -#: ../src/common/config.py:222 +#: ../src/common/config.py:232 msgid "" "Should we show the confirm metacontacts creation dialog or not? Empty string " "means we never show the dialog." @@ -6152,7 +6864,7 @@ msgstr "" "Czy program powinien potwierdzać za każdym razem utworzenie metakontaktu? " "Pusty ciÄ…g spowoduje, że okno dialogowe nie bÄ™dzie wyÅ›wietlane." -#: ../src/common/config.py:223 +#: ../src/common/config.py:233 msgid "" "If True, you will be able to set a negative priority to your account in " "account modification window. BE CAREFUL, when you are logged in with a " @@ -6163,7 +6875,7 @@ msgstr "" "ujemnym priorytetem nie bÄ™dziesz otrzymywaÅ‚ żadnych wiadomoÅ›ci z twojego " "serwera." -#: ../src/common/config.py:224 +#: ../src/common/config.py:234 msgid "" "If True, Gajim will use Gnome Keyring (if available) to store account " "passwords." @@ -6171,7 +6883,7 @@ msgstr "" "JeÅ›li opcja ta ustawiona jest na True, do przechowywania haseÅ‚ Gajim bÄ™dzie " "używaÅ‚ Menedżera bazy kluczy GNOME." -#: ../src/common/config.py:225 +#: ../src/common/config.py:235 msgid "" "If True, Gajim will show number of online and total contacts in account and " "group rows." @@ -6180,7 +6892,7 @@ msgstr "" "poÅ‚Ä…czonych kontaktów oraz ogólnÄ… liczbÄ™ kontaktów dla każdego konta oraz " "grupy" -#: ../src/common/config.py:226 +#: ../src/common/config.py:236 msgid "" "Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " "as if they were of this type" @@ -6189,22 +6901,39 @@ msgstr "" "Gajim bÄ™dzie traktowaÅ‚ każdÄ… przychodzÄ…cÄ… wiadomość jako czat lub pojedynczÄ… " "wiadomość" -#: ../src/common/config.py:227 +#: ../src/common/config.py:237 msgid "" "If True, Gajim will scroll and select the contact who sent you the last " "message, if chat window is not already opened." -msgstr "Jeżeli ustawiono na 'True', Gajim przewinie listÄ™ kontaktów i wybierze ten " -"kontakt, który wysÅ‚aÅ‚ ci ostatniÄ… wiadomość, ale tylko wtedy gdy okno czatu nie jest " -"już otwarte." +msgstr "" +"Jeżeli ustawiono na 'True', Gajim przewinie listÄ™ kontaktów i wybierze ten " +"kontakt, który wysÅ‚aÅ‚ ci ostatniÄ… wiadomość, ale tylko wtedy gdy okno czatu " +"nie jest już otwarte." -#: ../src/common/config.py:228 +#: ../src/common/config.py:238 msgid "" "If True, Gajim will convert string between $$ and $$ to an image using dvips " "and convert before insterting it in chat window." -msgstr "Jeżeli ustawiono na 'True', Gajim dokona konwersji ciÄ…gów zawartych pomiÄ™dzy " -"$$ i $$ do postaci obrazu (z wykorzystaniem dvips) przed wstawieniem ich do okna rozmowy." +msgstr "" +"Jeżeli ustawiono na 'True', Gajim dokona konwersji ciÄ…gów zawartych pomiÄ™dzy " +"$$ i $$ do postaci obrazu (z wykorzystaniem dvips) przed wstawieniem ich do " +"okna rozmowy." #: ../src/common/config.py:239 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "" +"Wymagany jest okres nieaktywnoÅ›ci zanim zamkniÄ™te zostanie okno zmiany " +"statusu." + +#: ../src/common/config.py:240 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "" +"Maksymalna ilość linii, jaka jest wyÅ›wietlana podczas rozmów. Najstarsze sÄ… " +"usuwane." + +#: ../src/common/config.py:251 msgid "" "Priority will change automatically according to your status. Priorities are " "defined in autopriority_* options." @@ -6213,11 +6942,11 @@ msgstr "" "zdefiniowane sÄ… opcjach rozpoczynajÄ…cych siÄ™ od autopriority_*." #. yes, no, ask -#: ../src/common/config.py:268 +#: ../src/common/config.py:279 msgid "Jabberd2 workaround" msgstr "ObejÅ›cie dla Jabberd2" -#: ../src/common/config.py:272 +#: ../src/common/config.py:283 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -6225,356 +6954,231 @@ 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:331 +#: ../src/common/config.py:342 msgid "Is OpenPGP enabled for this contact?" msgstr "Czy OpenPGP jest wÅ‚Ä…czone dla tego kontaktu?" -#: ../src/common/config.py:332 ../src/common/config.py:335 +#: ../src/common/config.py:343 ../src/common/config.py:346 msgid "Language for which we want to check misspelled words" msgstr "JÄ™zyk, którego używa sÅ‚ownik przy sprawdzaniu pisowni" -#: ../src/common/config.py:341 +#: ../src/common/config.py:352 msgid "all or space separated status" msgstr "all lub komunikaty stanu rozdzielone spacjami" -#: ../src/common/config.py:342 +#: ../src/common/config.py:353 msgid "'yes', 'no', or 'both'" msgstr "'yes', 'no' lub 'both'" -#: ../src/common/config.py:343 ../src/common/config.py:345 -#: ../src/common/config.py:346 ../src/common/config.py:349 -#: ../src/common/config.py:350 +#: ../src/common/config.py:354 ../src/common/config.py:356 +#: ../src/common/config.py:357 ../src/common/config.py:360 +#: ../src/common/config.py:361 msgid "'yes', 'no' or ''" msgstr "'yes', 'no' lub \"" -#: ../src/common/config.py:356 +#: ../src/common/config.py:367 msgid "Sleeping" msgstr "ÅšpiÄ™" -#: ../src/common/config.py:357 +#: ../src/common/config.py:368 msgid "Back soon" msgstr "NiedÅ‚ugo wrócÄ™" -#: ../src/common/config.py:357 +#: ../src/common/config.py:368 msgid "Back in some minutes." msgstr "WrócÄ™ za jakiÅ› czas." -#: ../src/common/config.py:358 +#: ../src/common/config.py:369 msgid "Eating" msgstr "Jem" -#: ../src/common/config.py:358 +#: ../src/common/config.py:369 msgid "I'm eating, so leave me a message." msgstr "Jem. Zostaw wiadomość." -#: ../src/common/config.py:359 +#: ../src/common/config.py:370 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:359 +#: ../src/common/config.py:370 msgid "I'm watching a movie." msgstr "OglÄ…dam film." -#: ../src/common/config.py:360 +#: ../src/common/config.py:371 msgid "Working" msgstr "Praca" -#: ../src/common/config.py:360 +#: ../src/common/config.py:371 msgid "I'm working." msgstr "PracujÄ™." -#: ../src/common/config.py:361 +#: ../src/common/config.py:372 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:361 +#: ../src/common/config.py:372 msgid "I'm on the phone." msgstr "Rozmawiam przez telefon." -#: ../src/common/config.py:362 +#: ../src/common/config.py:373 msgid "Out" msgstr "WyszedÅ‚em" -#: ../src/common/config.py:362 +#: ../src/common/config.py:373 msgid "I'm out enjoying life." msgstr "WyszedÅ‚em cieszyć siÄ™ życiem." -#: ../src/common/config.py:366 +#: ../src/common/config.py:377 msgid "I'm available." msgstr "DostÄ™pny." -#: ../src/common/config.py:367 +#: ../src/common/config.py:378 msgid "I'm free for chat." msgstr "ChÄ™tny do rozmowy." -#: ../src/common/config.py:369 +#: ../src/common/config.py:380 msgid "I'm not available." msgstr "Nieobecny." -#: ../src/common/config.py:370 -msgid "Do not disturb." -msgstr "Nie przeszkadzać." - -#: ../src/common/config.py:371 ../src/common/config.py:372 -msgid "Bye!" -msgstr "Å»egnaj!" - #: ../src/common/config.py:381 -msgid "" -"Sound to play when a group chat message contains one of the words in " -"muc_highlight_words, or when a group chat 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:382 -msgid "Sound to play when any MUC message arrives." -msgstr "DźwiÄ™k, jaki bÄ™dzie odtwarzany, gdy nadejdzie wiadomość MUC." - -#: ../src/common/config.py:391 ../src/common/optparser.py:195 -msgid "green" -msgstr "zielony" - -#: ../src/common/config.py:395 ../src/common/optparser.py:181 -msgid "grocery" -msgstr "grocery" - -#: ../src/common/config.py:399 -msgid "human" -msgstr "human" - -#: ../src/common/config.py:403 -msgid "marine" -msgstr "morski" - -#: ../src/common/connection.py:197 -#: ../src/common/zeroconf/connection_zeroconf.py:202 -#, python-format -msgid "Connection with account \"%s\" has been lost" -msgstr "PoÅ‚Ä…czenie z kontem \"%s\"zostaÅ‚o zerwane." - -#: ../src/common/connection.py:198 -msgid "Reconnect manually." -msgstr "PoÅ‚Ä…cz ponownie rÄ™cznie." - -#: ../src/common/connection.py:209 ../src/common/connection.py:236 -#, python-format -msgid "Transport %s answered wrongly to register request: %s" -msgstr "" -"Transport %s udzieliÅ‚ nieprawidÅ‚owej odpowiedzi na żądnie rejestracji: %s" - -#. wrong answer -#: ../src/common/connection.py:235 -msgid "Invalid answer" -msgstr "Niepoprawna odpowiedź" - -#: ../src/common/connection.py:383 -msgid "Connection to proxy failed" -msgstr "PoÅ‚Ä…czenie z proxy nie powiodÅ‚o siÄ™" - -#: ../src/common/connection.py:437 ../src/common/connection.py:535 -#: ../src/common/connection.py:1032 -#: ../src/common/zeroconf/connection_zeroconf.py:236 -#, python-format -msgid "Could not connect to \"%s\"" -msgstr "Nie można poÅ‚Ä…czyć siÄ™ z \"%s\"" - -#: ../src/common/connection.py:451 -#, python-format -msgid "Connected to server %s:%s with %s" -msgstr "PoÅ‚Ä…czony z serwerem %s: %s z %s" - -#: ../src/common/connection.py:464 -#, python-format -msgid "Security error connecting to \"%s\"" -msgstr "BÅ‚Ä…d zabezpieczeÅ„ przy poÅ‚Ä…czeniu z \"%s\"" - -#: ../src/common/connection.py:465 -msgid "" -"The server's key has changed, or someone is trying to hack your connection." -msgstr "" -"ZmieniÅ‚ siÄ™ klucz twojego serwera lub ktoÅ› próbuje podsÅ‚uchać poÅ‚Ä…czenie." - -#: ../src/common/connection.py:472 -#, python-format -msgid "Unable to check fingerprint for %s. Connection could be insecure." -msgstr "" -"Nie można sprawdzić odcisku klucza %s. PoÅ‚Ä…czenie może nie być bezpieczne" - -#: ../src/common/connection.py:514 -#, python-format -msgid "Missing fingerprint in SSL connection to %s" -msgstr "Brak odcisku klucza w poÅ‚Ä…czeniu SSL z %s" - -#: ../src/common/connection.py:520 -#, python-format -msgid "Fingerprint mismatch for %s: Got %s, expected %s" -msgstr "Niezgodność odcisku klucza %s. Oczekiwano %s, otrzymano %s" - -#: ../src/common/connection.py:536 -msgid "Check your connection or try again later" -msgstr "Sprawdź swoje poÅ‚Ä…czenie lub spróbuj później" - -#: ../src/common/connection.py:562 -#, python-format -msgid "Authentication failed with \"%s\"" -msgstr "Autoryzacja z \"%s\" nie powiodÅ‚a siÄ™" - -#: ../src/common/connection.py:563 -msgid "Please check your login and password for correctness." -msgstr "Spawdź czy twój login i hasÅ‚o sÄ… poprawne." +msgid "Do not disturb." +msgstr "Nie przeszkadzać." -#: ../src/common/connection.py:606 -msgid "Error while removing privacy list" -msgstr "BÅ‚Ä…d usuwaniu listy prywatnoÅ›ci" +#: ../src/common/config.py:382 ../src/common/config.py:383 +msgid "Bye!" +msgstr "Å»egnaj!" -#: ../src/common/connection.py:607 +#: ../src/common/config.py:392 msgid "" -"Privacy list %s has not been removed. It is maybe active in one of your " -"connected resources. Deactivate it and try again." +"Sound to play when a group chat message contains one of the words in " +"muc_highlight_words, or when a group chat message contains your nickname." msgstr "" -"Lista prywatnoÅ›ci %s nie zostaÅ‚a usuniÄ™ta. Prawdopodobnie jest aktywna w " -"jednym z poÅ‚Ä…czonych zasobów. WyÅ‚Ä…cz jÄ… i spróbuj ponownie." +"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." -#. We didn't set a passphrase -#: ../src/common/connection.py:705 -#: ../src/common/zeroconf/connection_zeroconf.py:162 -msgid "OpenPGP passphrase was not given" -msgstr "Nie podano klucza OpenPGP" +#: ../src/common/config.py:393 +msgid "Sound to play when any MUC message arrives." +msgstr "DźwiÄ™k, jaki bÄ™dzie odtwarzany, gdy nadejdzie wiadomość MUC." -#. we're not english -#. one in locale and one en -#: ../src/common/connection.py:862 -msgid "[This message is *encrypted* (See :JEP:`27`]" -msgstr "[Ta wiadomość jest zaszyfrowana (zobacz JEP '27']" +#: ../src/common/config.py:402 ../src/common/optparser.py:219 +msgid "green" +msgstr "zielony" -#: ../src/common/connection.py:918 -#: ../src/common/zeroconf/connection_zeroconf.py:421 -#, python-format -msgid "" -"Subject: %s\n" -"%s" -msgstr "" -"Temat: %s\n" -"%s" +#: ../src/common/config.py:406 ../src/common/optparser.py:205 +msgid "grocery" +msgstr "grocery" -#: ../src/common/connection.py:1058 -msgid "Not fetched because of invisible status" -msgstr "Nie wysÅ‚ano z powodu statusu 'niewidoczny'" +#: ../src/common/config.py:410 +msgid "human" +msgstr "human" + +#: ../src/common/config.py:414 +msgid "marine" +msgstr "morski" -#: ../src/common/connection_handlers.py:52 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 +#: ../src/common/connection_handlers.py:61 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:49 msgid "Unable to load idle module" msgstr "Nie można zaÅ‚adować moduÅ‚u idle" -#: ../src/common/connection_handlers.py:180 -#: ../src/common/connection_handlers.py:215 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +#: ../src/common/connection_handlers.py:219 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 msgid "Wrong host" msgstr "BÅ‚Ä™dna nazwa hosta" -#: ../src/common/connection_handlers.py:180 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 -msgid "" -"The host %s you configured as the ft_add_hosts_to_send advanced option is " -"not valid, so ignored." -msgstr "" -"Nazwa hosta, którÄ… okreÅ›liÅ‚eÅ› w opcji ft_add_hosts_to_send jest " -"niepoprawna, bÄ™dzie wiÄ™c ignorowana." - -#: ../src/common/connection_handlers.py:216 +#: ../src/common/connection_handlers.py:220 msgid "Invalid local address? :-O" msgstr "Niepoprawny adres lokalny? :-O" -#: ../src/common/connection_handlers.py:607 +#: ../src/common/connection_handlers.py:618 #, python-format msgid "Registration information for transport %s has not arrived in time" msgstr "Informacje rejestracyjne transportu %s nie dotarÅ‚y na czas" -#: ../src/common/connection_handlers.py:1557 +#: ../src/common/connection_handlers.py:1801 #, python-format msgid "Nickname not allowed: %s" msgstr "Pseudonim jest niedozwolony: %s" -#. password required to join #. we are banned #. group chat does not exist -#: ../src/common/connection_handlers.py:1622 -#: ../src/common/connection_handlers.py:1625 -#: ../src/common/connection_handlers.py:1628 -#: ../src/common/connection_handlers.py:1631 -#: ../src/common/connection_handlers.py:1634 -#: ../src/common/connection_handlers.py:1637 -#: ../src/common/connection_handlers.py:1645 +#: ../src/common/connection_handlers.py:1871 +#: ../src/common/connection_handlers.py:1874 +#: ../src/common/connection_handlers.py:1877 +#: ../src/common/connection_handlers.py:1880 +#: ../src/common/connection_handlers.py:1884 +#: ../src/common/connection_handlers.py:1893 msgid "Unable to join group chat" msgstr "Nie można doÅ‚Ä…czyć do pokoju" -#: ../src/common/connection_handlers.py:1623 -msgid "A password is required to join this group chat." -msgstr "Aby doÅ‚Ä…czyć do tego pokoju, wymagane jest hasÅ‚o." - -#: ../src/common/connection_handlers.py:1626 -msgid "You are banned from this group chat." -msgstr "ZostaÅ‚eÅ› zabanowany w tym pokoju." +#: ../src/common/connection_handlers.py:1872 +#, python-format +msgid "You are banned from group chat %s." +msgstr "ZostaÅ‚eÅ› zabanowany w pokoju %s." -#: ../src/common/connection_handlers.py:1629 -msgid "Such group chat does not exist." -msgstr "Taki pokój nie istnieje." +#: ../src/common/connection_handlers.py:1875 +#, python-format +msgid "Group chat %s does not exist." +msgstr "Pokój %s nie istnieje." -#: ../src/common/connection_handlers.py:1632 +#: ../src/common/connection_handlers.py:1878 msgid "Group chat creation is restricted." msgstr "Tworzenie pokoi jest ograniczone." -#: ../src/common/connection_handlers.py:1635 -msgid "Your registered nickname must be used." -msgstr "Twój zarejestrowany pseudonim musi być w użyciu." +#: ../src/common/connection_handlers.py:1881 +#, python-format +msgid "Your registered nickname must be used in group chat %s." +msgstr "Twój pseudonim musi być używany w pokoju %s." -#: ../src/common/connection_handlers.py:1638 -msgid "You are not in the members list." -msgstr "Nie jesteÅ› na liÅ›cie czÅ‚onków." +#: ../src/common/connection_handlers.py:1885 +#, python-format +msgid "You are not in the members list in groupchat %s." +msgstr "Nie jesteÅ› na liÅ›cie uczestników rozmów w pokoju %s." -#: ../src/common/connection_handlers.py:1646 +#: ../src/common/connection_handlers.py:1894 +#, python-format msgid "" -"Your desired nickname is in use or registered by another occupant.\n" +"Your desired nickname in group chat %s 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" +"innego w pokoju %s.\n" "Podaj inny pseudonim:" #. Room has been destroyed. see #. http://www.xmpp.org/extensions/xep-0045.html#destroyroom -#: ../src/common/connection_handlers.py:1689 +#: ../src/common/connection_handlers.py:1925 msgid "Room has been destroyed" msgstr "Pokój zostaÅ‚ usuniÄ™ty" -#: ../src/common/connection_handlers.py:1696 +#: ../src/common/connection_handlers.py:1932 #, python-format msgid "You can join this room instead: %s" msgstr "W zamian możesz doÅ‚Ä…czyć do pokoju %s" -#: ../src/common/connection_handlers.py:1722 +#: ../src/common/connection_handlers.py:1959 msgid "I would like to add you to my roster." msgstr "ChciaÅ‚bym dodać CiÄ™ do listy kontaktów." #. BE CAREFUL: no con.updateRosterItem() in a callback -#: ../src/common/connection_handlers.py:1743 +#: ../src/common/connection_handlers.py:1980 #, python-format msgid "we are now subscribed to %s" msgstr "ZapisaliÅ›my siÄ™ do %s" -#: ../src/common/connection_handlers.py:1745 +#: ../src/common/connection_handlers.py:1982 #, python-format msgid "unsubscribe request from %s" msgstr "ProÅ›ba o cofniÄ™cie autoryzacji od %s" -#: ../src/common/connection_handlers.py:1747 +#: ../src/common/connection_handlers.py:1984 #, python-format msgid "we are now unsubscribed from %s" msgstr "WypisaliÅ›my siÄ™ z %s" -#: ../src/common/connection_handlers.py:1866 +#: ../src/common/connection_handlers.py:2106 #, python-format msgid "" "JID %s is not RFC compliant. It will not be added to your roster. Use roster " @@ -6584,36 +7188,130 @@ msgstr "" "Skorzystaj z narzÄ™dzi do zarzÄ…dzania listÄ… kontaktów, takich jak http://jru." "jabberstudio.org/ aby go usunąć" -#: ../src/common/contacts.py:271 +#: ../src/common/connection.py:249 +#: ../src/common/zeroconf/connection_zeroconf.py:208 +#, python-format +msgid "Connection with account \"%s\" has been lost" +msgstr "PoÅ‚Ä…czenie z kontem \"%s\"zostaÅ‚o zerwane." + +#: ../src/common/connection.py:250 +msgid "Reconnect manually." +msgstr "PoÅ‚Ä…cz ponownie rÄ™cznie." + +#: ../src/common/connection.py:261 +#, python-format +msgid "Server %s answered wrongly to register request: %s" +msgstr "Serwer %s udzieliÅ‚ nieprawidÅ‚owej odpowiedzi na żądnie rejestracji: %s" + +#. wrong answer +#: ../src/common/connection.py:269 +msgid "Invalid answer" +msgstr "Niepoprawna odpowiedź" + +#: ../src/common/connection.py:270 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "" +"Transport %s udzieliÅ‚ nieprawidÅ‚owej odpowiedzi na żądnie rejestracji: %s" + +#: ../src/common/connection.py:416 +msgid "Connection to proxy failed" +msgstr "PoÅ‚Ä…czenie z proxy nie powiodÅ‚o siÄ™" + +#: ../src/common/connection.py:470 ../src/common/connection.py:516 +#: ../src/common/connection.py:1075 +#: ../src/common/zeroconf/connection_zeroconf.py:242 +#, python-format +msgid "Could not connect to \"%s\"" +msgstr "Nie można poÅ‚Ä…czyć siÄ™ z \"%s\"" + +#: ../src/common/connection.py:484 +#, python-format +msgid "Connected to server %s:%s with %s" +msgstr "PoÅ‚Ä…czony z serwerem %s: %s z %s" + +#: ../src/common/connection.py:517 +msgid "Check your connection or try again later" +msgstr "Sprawdź swoje poÅ‚Ä…czenie lub spróbuj później" + +#: ../src/common/connection.py:542 +#, python-format +msgid "Authentication failed with \"%s\"" +msgstr "Autoryzacja z \"%s\" nie powiodÅ‚a siÄ™" + +#: ../src/common/connection.py:543 +msgid "Please check your login and password for correctness." +msgstr "Spawdź czy twój login i hasÅ‚o sÄ… poprawne." + +#: ../src/common/connection.py:586 +msgid "Error while removing privacy list" +msgstr "BÅ‚Ä…d usuwaniu listy prywatnoÅ›ci" + +#: ../src/common/connection.py:587 +#, python-format +msgid "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." +msgstr "" +"Lista prywatnoÅ›ci %s nie zostaÅ‚a usuniÄ™ta. Prawdopodobnie jest aktywna w " +"jednym z poÅ‚Ä…czonych zasobów. WyÅ‚Ä…cz jÄ… i spróbuj ponownie." + +#. We didn't set a passphrase +#: ../src/common/connection.py:687 +#: ../src/common/zeroconf/connection_zeroconf.py:168 +msgid "OpenPGP passphrase was not given" +msgstr "Nie podano klucza OpenPGP" + +#. we're not english +#. one in locale and one en +#: ../src/common/connection.py:850 +msgid "[This message is *encrypted* (See :JEP:`27`]" +msgstr "[Ta wiadomość jest zaszyfrowana (zobacz JEP '27']" + +#: ../src/common/connection.py:924 +#: ../src/common/zeroconf/connection_zeroconf.py:436 +#, python-format +msgid "" +"Subject: %s\n" +"%s" +msgstr "" +"Temat: %s\n" +"%s" + +#: ../src/common/connection.py:1107 +msgid "Not fetched because of invisible status" +msgstr "Nie wysÅ‚ano z powodu statusu 'niewidoczny'" + +#: ../src/common/contacts.py:299 msgid "Not in roster" msgstr "Spoza listy kontaktów" #. only say that to non Windows users -#: ../src/common/dbus_support.py:33 +#: ../src/common/dbus_support.py:38 msgid "D-Bus python bindings are missing in this computer" msgstr "Na tym komputerze brakuje pythonowych dowiÄ…zaÅ„ do D-Bus." -#: ../src/common/dbus_support.py:34 +#: ../src/common/dbus_support.py:39 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Nie można użyć D-Bus." -#: ../src/common/exceptions.py:22 +#: ../src/common/exceptions.py:27 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:30 +#: ../src/common/exceptions.py:44 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:38 +#: ../src/common/exceptions.py:52 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:46 +#: ../src/common/exceptions.py:60 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -6621,443 +7319,444 @@ msgstr "" "Nie znaleziono interfejsu DBus.\n" "Zapoznaj siÄ™ z uwagami na stronie http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "one" msgstr "pierwsza" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "two" msgstr "druga" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "three" msgstr "trzecia" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "four" msgstr "czwarta" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "five" msgstr "piÄ…ta" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "six" msgstr "szóstej" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "seven" msgstr "siódma" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eight" msgstr "ósmej" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "nine" msgstr "dziewiÄ…ta" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "ten" msgstr "dziesiÄ…tej" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eleven" msgstr "jedenasta" -#: ../src/common/fuzzyclock.py:44 +#: ../src/common/fuzzyclock.py:49 msgid "twelve" msgstr "dwunastej" #. 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). ''' #. A "singular-form". It is used when talking about hour 0 -#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "$0 o'clock" msgstr "Godzina $0" -#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "five past $0" msgstr "pięć po $0" -#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 msgid "ten past $0" msgstr "dziesięć po $0" -#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 msgid "quarter past $0" msgstr "kwadrans po $0" -#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 msgid "twenty past $0" msgstr "dwadzieÅ›cia po $0" -#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 msgid "twenty five past $0" msgstr "za pięć wpół do $0" -#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 msgid "half past $0" msgstr "w pół do $1" -#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 msgid "twenty five to $1" msgstr "pięć po wpół do $1" -#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 msgid "twenty to $1" msgstr "za dwadzieÅ›cia $1" -#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 msgid "quarter to $1" msgstr "za kwadrans $1" -#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 msgid "ten to $1" msgstr "za dziesięć $1" -#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 msgid "five to $1" msgstr "za pięć $1" -#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:61 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:66 msgid "$1 o'clock" msgstr "godzina $1" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Night" msgstr "Noc" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Early morning" msgstr "Wczesny poranek" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Morning" msgstr "rano" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Almost noon" msgstr "Prawie poÅ‚udnie" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Noon" msgstr "w poÅ‚udnie" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Afternoon" msgstr "PopoÅ‚udnie" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Evening" msgstr "wieczorem" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Late evening" msgstr "Późny wieczór" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "Start of week" msgstr "PoczÄ…tek tygodnia" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "Middle of week" msgstr "Åšrodek tygodnia" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "End of week" msgstr "Koniec tygodnia" -#: ../src/common/fuzzyclock.py:68 +#: ../src/common/fuzzyclock.py:73 msgid "Weekend!" msgstr "Weekend!" -#: ../src/common/helpers.py:114 +#: ../src/common/helpers.py:120 msgid "Invalid character in username." msgstr "Niepoprawna litera w nazwie użytkownika." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:125 msgid "Server address required." msgstr "Wymagany adres serwera." -#: ../src/common/helpers.py:124 +#: ../src/common/helpers.py:130 msgid "Invalid character in hostname." msgstr "Niepoprawna litera w nazwie hosta." -#: ../src/common/helpers.py:130 +#: ../src/common/helpers.py:136 msgid "Invalid character in resource." msgstr "Niepoprawna litera w zasobach." #. GiB means gibibyte -#: ../src/common/helpers.py:170 +#: ../src/common/helpers.py:176 #, python-format msgid "%s GiB" -msgstr "%s·GiB" +msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:179 #, python-format msgid "%s GB" -msgstr "%s·GB" +msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:177 +#: ../src/common/helpers.py:183 #, python-format msgid "%s MiB" -msgstr "%s·MiB" +msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:180 +#: ../src/common/helpers.py:186 #, python-format msgid "%s MB" -msgstr "%s·MB" +msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:184 +#: ../src/common/helpers.py:190 #, python-format msgid "%s KiB" -msgstr "%s·KiB" +msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:187 +#: ../src/common/helpers.py:193 #, python-format msgid "%s KB" -msgstr "%s·KB" +msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:190 +#: ../src/common/helpers.py:196 #, python-format msgid "%s B" -msgstr "%s·B" +msgstr "%s B" -#: ../src/common/helpers.py:219 +#: ../src/common/helpers.py:227 msgid "_Busy" msgstr "_ZajÄ™ty" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:229 msgid "Busy" msgstr "ZajÄ™ty" -#: ../src/common/helpers.py:224 +#: ../src/common/helpers.py:232 msgid "_Not Available" msgstr "Nie_obecny" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:237 msgid "_Free for Chat" msgstr "_ChÄ™tny do rozmowy" -#: ../src/common/helpers.py:231 +#: ../src/common/helpers.py:239 msgid "Free for Chat" msgstr "ChÄ™tny do rozmowy" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:242 msgid "_Available" msgstr "_DostÄ™pny" -#: ../src/common/helpers.py:236 -msgid "Available" -msgstr "DostÄ™pny" - -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:246 msgid "Connecting" msgstr "ÅÄ…czÄ™ siÄ™" -#: ../src/common/helpers.py:241 +#: ../src/common/helpers.py:249 msgid "A_way" msgstr "Zaraz _wracam" -#: ../src/common/helpers.py:246 +#: ../src/common/helpers.py:254 msgid "_Offline" msgstr "R_ozÅ‚Ä…czony" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:256 msgid "Offline" msgstr "RozÅ‚Ä…czony" -#: ../src/common/helpers.py:251 +#: ../src/common/helpers.py:259 msgid "_Invisible" msgstr "N_iewidoczny" -#: ../src/common/helpers.py:257 +#: ../src/common/helpers.py:265 msgid "?contact has status:Unknown" msgstr "?contact ma status: Nieznany" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:267 msgid "?contact has status:Has errors" msgstr "?contact ma status: WystÄ…piÅ‚y bÅ‚Ä™dy" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:272 msgid "?Subscription we already have:None" msgstr "?Posiadane autoryzacje: Brak" -#: ../src/common/helpers.py:266 +#: ../src/common/helpers.py:274 msgid "To" msgstr "Do" -#: ../src/common/helpers.py:270 +#: ../src/common/helpers.py:278 msgid "Both" msgstr "Obustronna" -#: ../src/common/helpers.py:278 +#: ../src/common/helpers.py:286 msgid "?Ask (for Subscription):None" msgstr "?PoproÅ› (o autoryzacjÄ™): Brak" -#: ../src/common/helpers.py:280 +#: ../src/common/helpers.py:288 msgid "Subscribe" msgstr "Autoryzuj" -#: ../src/common/helpers.py:289 +#: ../src/common/helpers.py:297 msgid "?Group Chat Contact Role:None" msgstr "?Funkcja kontaktu w pokoju: Brak" -#: ../src/common/helpers.py:292 +#: ../src/common/helpers.py:300 msgid "Moderators" msgstr "Moderatorzy" -#: ../src/common/helpers.py:294 +#: ../src/common/helpers.py:302 msgid "Moderator" msgstr "Moderator" -#: ../src/common/helpers.py:297 +#: ../src/common/helpers.py:305 msgid "Participants" msgstr "Uczestnicy" -#: ../src/common/helpers.py:299 +#: ../src/common/helpers.py:307 msgid "Participant" msgstr "Uczestnik" -#: ../src/common/helpers.py:302 +#: ../src/common/helpers.py:310 msgid "Visitors" msgstr "GoÅ›cie" -#: ../src/common/helpers.py:304 +#: ../src/common/helpers.py:312 msgid "Visitor" msgstr "Gość" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:318 msgid "?Group Chat Contact Affiliation:None" msgstr "?PowiÄ…zanie kontaktu z czata: brak" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:320 msgid "Owner" msgstr "WÅ‚aÅ›ciciel" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:322 msgid "Administrator" msgstr "Administrator" -#: ../src/common/helpers.py:316 +#: ../src/common/helpers.py:324 msgid "Member" msgstr "Uczestnik" -#: ../src/common/helpers.py:355 +#: ../src/common/helpers.py:363 msgid "is paying attention to the conversation" msgstr "jest skupiony na rozmowie" -#: ../src/common/helpers.py:357 +#: ../src/common/helpers.py:365 msgid "is doing something else" msgstr "robi coÅ› innego" -#: ../src/common/helpers.py:359 +#: ../src/common/helpers.py:367 msgid "is composing a message..." msgstr "pisze wiadomość..." #. paused means he or she was composing but has stopped for a while -#: ../src/common/helpers.py:362 +#: ../src/common/helpers.py:370 msgid "paused composing a message" msgstr "przerwaÅ‚ pisanie wiadomoÅ›ci" -#: ../src/common/helpers.py:364 +#: ../src/common/helpers.py:372 msgid "has closed the chat window or tab" msgstr "zamknÄ…Å‚ okno lub kartÄ™ rozmowy" -#: ../src/common/helpers.py:890 +#: ../src/common/helpers.py:931 ../src/common/helpers.py:938 #, python-format -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" +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "%d oczekujÄ…ca wiadomość" +msgstr[1] "%d oczekujÄ…ce wiadomoÅ›ci" +msgstr[2] "%d oczekujÄ…cych wiadomoÅ›ci" -#: ../src/common/helpers.py:896 +#: ../src/common/helpers.py:944 #, python-format -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" +msgid " from room %s" +msgstr " z pokoju %s" -#: ../src/common/helpers.py:902 +#: ../src/common/helpers.py:947 ../src/common/helpers.py:966 #, python-format -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" +msgid " from user %s" +msgstr " od użytkownika %s" -#: ../src/common/helpers.py:908 +#: ../src/common/helpers.py:949 #, 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" +msgid " from %s" +msgstr " od %s" + +#: ../src/common/helpers.py:956 ../src/common/helpers.py:963 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "%d oczekujÄ…ca wiadomość" +msgstr[1] "%d oczekujÄ…ce wiadomoÅ›ci" +msgstr[2] "%d oczekujÄ…cych wiadomoÅ›ci" -#: ../src/common/helpers.py:918 ../src/common/helpers.py:920 +#: ../src/common/helpers.py:996 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" #. we talk about a file -#: ../src/common/optparser.py:59 +#: ../src/common/optparser.py:65 #, python-format msgid "error: cannot open %s for reading" msgstr "bÅ‚Ä…d: nie można otworzyć %s do odczytu" -#: ../src/common/optparser.py:181 -msgid "gtk+" -msgstr "gtk+" - -#: ../src/common/optparser.py:190 ../src/common/optparser.py:191 +#: ../src/common/optparser.py:214 ../src/common/optparser.py:215 msgid "cyan" msgstr "cyjan" -#: ../src/common/optparser.py:308 +#: ../src/common/optparser.py:331 msgid "migrating logs database to indices" msgstr "indeksowanie archiwum rozmów" -#: ../src/common/passwords.py:82 +#: ../src/common/passwords.py:88 #, python-format msgid "Gajim account %s" msgstr "Konto Gajim'a %s" -#: ../src/common/zeroconf/client_zeroconf.py:187 +#: ../src/common/zeroconf/client_zeroconf.py:140 +#: ../src/common/zeroconf/client_zeroconf.py:223 +msgid "Connection to host could not be established" +msgstr "Nie można ustanowić poÅ‚Ä…czenia z hostem" + +#: ../src/common/zeroconf/client_zeroconf.py:197 msgid "" "Connection to host could not be established: Incorrect answer from server." msgstr "Nie można ustanowić poÅ‚Ä…czenia z hostem. NieprawidÅ‚owa odpowiedź." -#: ../src/common/zeroconf/client_zeroconf.py:215 -msgid "Connection to host could not be established" -msgstr "Nie można ustanowić poÅ‚Ä…czenia z hostem" - -#: ../src/common/zeroconf/client_zeroconf.py:349 +#: ../src/common/zeroconf/client_zeroconf.py:357 msgid "" "Connection to host could not be established: Timeout while sending data." msgstr "" "Nie można ustanowić poÅ‚Ä…czenia z hostem. Timeout podczas wysyÅ‚ania danych." -#: ../src/common/zeroconf/client_zeroconf.py:642 +#: ../src/common/zeroconf/client_zeroconf.py:643 msgid "Contact is offline. Your message could not be sent." msgstr "Kontakt jest rozÅ‚Ä…czony. Twoja wiadomość nie mogÅ‚a zostać wysÅ‚ana." -#: ../src/common/zeroconf/connection_zeroconf.py:203 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 +#, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"Nazwa hosta %s, którÄ… okreÅ›liÅ‚eÅ› w opcji ft_add_hosts_to_send jest " +"niepoprawna, bÄ™dzie wiÄ™c ignorowana." + +#: ../src/common/zeroconf/connection_zeroconf.py:209 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/zeroconf/connection_zeroconf.py:226 +#: ../src/common/zeroconf/connection_zeroconf.py:232 msgid "Avahi error" msgstr "BÅ‚Ä…d Avahi" -#: ../src/common/zeroconf/connection_zeroconf.py:226 +#: ../src/common/zeroconf/connection_zeroconf.py:232 #, python-format msgid "" "%s\n" @@ -7066,31 +7765,31 @@ msgstr "" "%s\n" "PrzesyÅ‚anie wiadomoÅ›ci miÄ™dzy adresami link-local może nie dziaÅ‚ać poprawnie." -#: ../src/common/zeroconf/connection_zeroconf.py:237 +#: ../src/common/zeroconf/connection_zeroconf.py:243 msgid "Please check if Avahi is installed." msgstr "ProszÄ™ sprawdzić czy zainstalowano Avahi." -#: ../src/common/zeroconf/connection_zeroconf.py:246 -#: ../src/common/zeroconf/connection_zeroconf.py:250 +#: ../src/common/zeroconf/connection_zeroconf.py:252 +#: ../src/common/zeroconf/connection_zeroconf.py:256 msgid "Could not start local service" msgstr "Nie można uruchomić usÅ‚ugi lokalnej" -#: ../src/common/zeroconf/connection_zeroconf.py:247 +#: ../src/common/zeroconf/connection_zeroconf.py:253 #, python-format msgid "Unable to bind to port %d." msgstr "Nie można podÅ‚Ä…czyć siÄ™ do portu %d." -#: ../src/common/zeroconf/connection_zeroconf.py:251 -#: ../src/common/zeroconf/connection_zeroconf.py:345 +#: ../src/common/zeroconf/connection_zeroconf.py:257 +#: ../src/common/zeroconf/connection_zeroconf.py:352 msgid "Please check if avahi-daemon is running." msgstr "ProszÄ™ sprawdzić czy uruchomiony jest demon Avahi." -#: ../src/common/zeroconf/connection_zeroconf.py:344 +#: ../src/common/zeroconf/connection_zeroconf.py:351 #, python-format msgid "Could not change status of account \"%s\"" msgstr "Nie można zmienić statusu konta \"%s\"" -#: ../src/common/zeroconf/connection_zeroconf.py:361 +#: ../src/common/zeroconf/connection_zeroconf.py:368 msgid "" "You are not connected or not visible to others. Your message could not be " "sent." @@ -7099,15 +7798,265 @@ msgstr "" "mogÅ‚a zostać wysÅ‚ana." #. we're not english -#: ../src/common/zeroconf/connection_zeroconf.py:373 +#: ../src/common/zeroconf/connection_zeroconf.py:380 msgid "[This message is encrypted]" msgstr "[Ta wiadomość jest zaszyfrowana]" -#: ../src/common/zeroconf/zeroconf.py:180 +#: ../src/common/zeroconf/zeroconf_avahi.py:183 +#: ../src/common/zeroconf/zeroconf_bonjour.py:192 #, python-format msgid "Error while adding service. %s" msgstr "BÅ‚Ä…d przy dodawaniu usÅ‚ugi %s" +#~ msgid "" +#~ "To continue, Gajim needs to access your stored secrets. Enter your " +#~ "passphrase" +#~ msgstr "" +#~ "Aby kontynuować, Gajim musi uzyskać dostÄ™p do Twoich haseÅ‚. ProszÄ™ podać " +#~ "hasÅ‚o główne" + +#~ msgid "Confirm Passphrase" +#~ msgstr "Potwierdź hasÅ‚o" + +#~ msgid "Enter your new passphrase again for confirmation" +#~ msgstr "Wpisz ponownie nowe hasÅ‚o" + +#~ msgid "Create Passphrase" +#~ msgstr "Utwórz hasÅ‚o" + +#~ msgid "Passphrases did not match.\n" +#~ msgstr "HasÅ‚a nie zgadzajÄ… siÄ™.\n" + +#~ msgid "Gajim needs you to create a passphrase to encrypt stored secrets" +#~ msgstr "ProszÄ™ podać hasÅ‚o główne sÅ‚użące do zaszyfrowania danych poufnych" + +#~ msgid "Build custom query" +#~ msgstr "Stwórz wÅ‚asne zapytanie" + +#~ msgid "" +#~ "Enter a contact jid or MUC jid here to view its history.\n" +#~ "If a contact is connected you can even enter his nick name.\n" +#~ msgstr "" +#~ "Wprowadź nazwÄ™ użytkownika z rostera lub czatu aby przejrzeć historiÄ™ " +#~ "rozmów.\n" +#~ "Jeżeli jest poÅ‚Ä…czony, możesz podać jego nazwÄ™.\n" + +#~ msgid "Query Builder..." +#~ msgstr "Kreator zapytaÅ„..." + +#~ msgid "_Discover Services..." +#~ msgstr "_Wyszukuj usÅ‚ugi..." + +#~ msgid "_Retype Password:" +#~ msgstr "_Powtórz hasÅ‚o:" + +#~ msgid "_Use proxy" +#~ msgstr "_Korzystaj z poÅ›rednika" + +#~ msgid "Accounts" +#~ msgstr "Konta" + +#~ msgid "" +#~ "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.\n" +#~ "This is only available if python-avahi is installed and avahi-daemon is " +#~ "running." +#~ msgstr "" +#~ "Jeżeli opcja ta zostanie uaktywniona, znajdujÄ…ce siÄ™ w twojej sieci " +#~ "lokalnej kontakty używajÄ…ce klienta wykorzystujÄ…cego technologiÄ™ Bonjour " +#~ "(jak iChat, Trillian czy Gaim) pojawiÄ… siÄ™ na rosterze. Nie musisz Å‚Ä…czyć " +#~ "siÄ™ z serwerem Jabbera, by z nimi rozmawiać." + +#~ msgid "" +#~ "If you have 2 or more accounts and this 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" + +#~ msgid "_Enable link-local messaging" +#~ msgstr "_Uaktywnij przesyÅ‚anie wiadomoÅ›ci do adresów link-local" + +#~ msgid "_Modify" +#~ msgstr "_Edytuj" + +#~ msgid "_Blocked Contacts" +#~ msgstr "_Kontakty zablokowane" + +#~ msgid "_Compact View Alt+C" +#~ msgstr "Widok _zwarty Alt+C" + +#~ msgid "<b>Interface Customization</b>" +#~ msgstr "<b>WÅ‚asne ustawienia interfejsu</b>" + +#~ msgid "Also known as iChat style" +#~ msgstr "Znany także jako styl iChat" + +#~ msgid "Chat" +#~ msgstr "Rozmowa" + +#~ msgid "E_very 5 minutes" +#~ msgstr "Co 5 _minut" + +#~ msgid "" +#~ "Gajim will automatically show new events by popping up the relevant window" +#~ msgstr "" +#~ "Gajim automatycznie wyÅ›wietli nowÄ… wiadomość w nowym oknie lub w nowej " +#~ "karcie otwartego okna rozmowy" + +#~ 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" + +#~ 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" + +#~ 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ść" + +#~ 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" + +#~ msgid "On every _message" +#~ msgstr "W każdej _wiadomoÅ›ci" + +#~ msgid "Outgoing Chat state noti_fications:" +#~ msgstr "WysyÅ‚anie powiadomienia o stanie _rozmowy:" + +#~ msgid "Print time:" +#~ msgstr "WyÅ›wietlaj czas:" + +#~ msgid "Save _position and size for roster and chat windows" +#~ msgstr "Zapisz _pozycjÄ™ i rozmiar okna kontaktów i okna rozmowy" + +#~ msgid "Show only in _roster" +#~ msgstr "Pokaż tylko _listÄ™ kontaktów" + +#~ msgid "Use t_rayicon (aka. notification area icon)" +#~ msgstr "_Ikona w obszarze powiadamiania" + +#~ 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" + +#~ msgid "_Never" +#~ msgstr "_Nigdy" + +#~ msgid "_Notify me about it" +#~ msgstr "Powia_dom mnie o tym" + +#~ msgid "_Pop it up" +#~ msgstr "_WyÅ›wietl" + +#~ msgid "Send cus_tom status" +#~ msgstr "WyÅ›lij _odrÄ™bny status" + +#~ msgid "_Remove from Roster" +#~ msgstr "_UsuÅ„ z listy kontaktów" + +#~ msgid "_Filter:" +#~ msgstr "_Filtr:" + +#~ msgid "Click to force avatar" +#~ msgstr "Kliknij aby ustawić avatar" + +#~ msgid "" +#~ "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" +#~ "\n" +#~ "Highlighting misspelled words feature will not be used" +#~ msgstr "" +#~ "JeÅ›li podÅ›wietlanie bÅ‚Ä™dów w pisowni dziaÅ‚a dla niewÅ‚aÅ›ciwego jÄ™zyka, to " +#~ "ustaw odpowiednio zmiennÄ… Å›rodowiskowÄ… $LANG. Np. dla jÄ™zyka polskiego " +#~ "wpisz export LANG=pl_PL do pliku ~/.bash_profile lub globalnie do pliku " +#~ "in /etc/profile.\n" +#~ "\n" +#~ "PodÅ›wiedlanie bÅ‚Ä™dów w pisowni nie bÄ™dzie używane" + +#~ msgid "Every %s _minutes" +#~ msgstr "Co %s _minut" + +#~ msgid "You must enter a password for the new account." +#~ msgstr "Musisz wpisać hasÅ‚o dla nowego konta." + +#~ msgid "Blocked Contacts for %s" +#~ msgstr "Kontakty zablokowane (dla %s)" + +#~ msgid "%s does not appear to be a valid JID" +#~ msgstr "%s nie wyglÄ…da na poprawny JID" + +#~ msgid "Drop %s in group %s" +#~ msgstr "UsuÅ„ %s z grupy %s" + +#~ msgid "Make %s and %s metacontacts" +#~ msgstr "Przekształć %s oraz %s w metakontakty" + +#~ msgid "Hides the buttons in two persons chat window." +#~ msgstr "Ukrywa przyciski podczas rozmowy dwóch osób." + +#~ msgid "Security error connecting to \"%s\"" +#~ msgstr "BÅ‚Ä…d zabezpieczeÅ„ przy poÅ‚Ä…czeniu z \"%s\"" + +#~ msgid "" +#~ "The server's key has changed, or someone is trying to hack your " +#~ "connection." +#~ msgstr "" +#~ "ZmieniÅ‚ siÄ™ klucz twojego serwera lub ktoÅ› próbuje podsÅ‚uchać poÅ‚Ä…czenie." + +#~ msgid "Unable to check fingerprint for %s. Connection could be insecure." +#~ msgstr "" +#~ "Nie można sprawdzić odcisku klucza %s. PoÅ‚Ä…czenie może nie być bezpieczne" + +#~ msgid "Missing fingerprint in SSL connection to %s" +#~ msgstr "Brak odcisku klucza w poÅ‚Ä…czeniu SSL z %s" + +#~ msgid "Fingerprint mismatch for %s: Got %s, expected %s" +#~ msgstr "Niezgodność odcisku klucza %s. Oczekiwano %s, otrzymano %s" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ msgid "gtk+" +#~ msgstr "gtk+" + #~ msgid "2003-12-13T18:30:02Z" #~ msgstr "2003-12-13T18:30:02Z" @@ -7177,9 +8126,6 @@ msgstr "BÅ‚Ä…d przy dodawaniu usÅ‚ugi %s" #~ msgid "Role: " #~ msgstr "Funkcja: " -#~ msgid "Affiliation: " -#~ msgstr "Afiliacja: " - #~ msgid "" #~ "Sound to play when any MUC message arrives. (This setting is taken into " #~ "account only if notify_on_all_muc_messages is True)" diff --git a/po/pt_BR.po b/po/pt_BR.po index 6be0cf0d5b..7a00154893 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,17 +5,17 @@ # # junix <junix@targetlinux.org>, 2005. # Gajim <gajim-devel@gajim.org>, 2007. -#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:210 -#: ../src/gajim-remote.py:236 ../src/gajim-remote.py:237 -#: ../src/gajim-remote.py:243 ../src/gajim-remote.py:244 -#: ../src/gajim-remote.py:245 ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:220 ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:253 ../src/gajim-remote.py:254 +#: ../src/gajim-remote.py:260 ../src/gajim-remote.py:261 +#: ../src/gajim-remote.py:262 ../src/gajim-remote.py:263 msgid "" msgstr "" "Project-Id-Version: pt_BR\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-04-19 18:15+0200\n" -"PO-Revision-Date: 2007-04-19 12:44-0300\n" -"Last-Translator: Gajim <gajim-devel@gajim.org>\n" +"POT-Creation-Date: 2007-11-28 20:33+0100\n" +"PO-Revision-Date: 2007-11-28 11:55-0300\n" +"Last-Translator: Davidson Paulo <dpaulo@fedoraproject.org>\n" "Language-Team: Português Brasileiro <gajim-devel@gajim.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,36 +38,36 @@ msgid "Jabber IM Client" msgstr "Cliente de IM Jabber" #: ../data/glade/account_context_menu.glade.h:1 -msgid "Send Single _Message..." -msgstr "Enviar _Mensagem Simples..." +#: ../data/glade/roster_window.glade.h:8 +msgid "Join _Group Chat..." +msgstr "_Entrar em uma Conferência..." #: ../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 "_Procurar Serviços..." +#: ../data/glade/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_Descubra Serviços" #: ../data/glade/account_context_menu.glade.h:4 msgid "_Execute Command..." msgstr "_Executar Comando" #: ../data/glade/account_context_menu.glade.h:5 -#: ../data/glade/roster_window.glade.h:16 -#: ../data/glade/systray_context_menu.glade.h:6 -msgid "_Group Chat" -msgstr "_Conferência" +msgid "_Modify Account" +msgstr "_Alterar Conta" #: ../data/glade/account_context_menu.glade.h:6 -#: ../data/glade/zeroconf_context_menu.glade.h:1 -msgid "_Modify Account..." -msgstr "_Alterar Conta..." - -#: ../data/glade/account_context_menu.glade.h:7 msgid "_Open Gmail Inbox" msgstr "_Abrir Caixa de Entrada do Gmail" +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:23 +msgid "_Start Chat..." +msgstr "_Iniciar Conversa..." + #: ../data/glade/account_context_menu.glade.h:8 #: ../data/glade/zeroconf_context_menu.glade.h:2 msgid "_Status" @@ -75,11 +75,11 @@ msgstr "_Status" #: ../data/glade/account_creation_wizard_window.glade.h:1 msgid "" -"<b>Account is being created</b>\n" +"<b>Connecting to server</b>\n" "\n" "Please wait..." msgstr "" -"<b>Sua conta está sendo criada</b>\n" +"<b>Conectando ao servidor</b>\n" "\n" "Por favor aguarde..." @@ -92,51 +92,68 @@ msgid "<b>Please fill in the data for your new account</b>" msgstr "<b>Por favor preencha os dados da sua nova conta</b>" #: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "<b>Please select a server</b>" +msgstr "<b>Por favor, selecione um servidor</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 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 +#: ../data/glade/account_creation_wizard_window.glade.h:8 msgid "Connect when I press Finish" msgstr "Conectar quando eu clicar em Fim" -#: ../data/glade/account_creation_wizard_window.glade.h:8 +#: ../data/glade/account_creation_wizard_window.glade.h:9 msgid "Gajim: Account Creation Wizard" msgstr "Gajim: Assistente 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 usá-la" - #: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I already have an account I want to _use" +msgstr "Eu já tenho uma conta e quero _usá-la" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 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:19 +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:23 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:7 -msgid "Pass_word:" -msgstr "_Senha:" - #: ../data/glade/account_creation_wizard_window.glade.h:13 -#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "Gerenciar..." + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Prox_y:" +msgstr "Prox_y:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:47 msgid "Save pass_word" msgstr "Salvar senha" -#: ../data/glade/account_creation_wizard_window.glade.h:14 +#: ../data/glade/account_creation_wizard_window.glade.h:16 msgid "Servers Features" msgstr "Recursos dos Servidores" -#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_creation_wizard_window.glade.h:17 msgid "Set my profile when I connect" msgstr "Configurar perfil quando eu conectar" -#: ../data/glade/account_creation_wizard_window.glade.h:16 +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "Usa nome de máquina/porta customizados" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 msgid "" "You need to have an account in order to connect\n" "to the Jabber network." @@ -144,67 +161,63 @@ msgstr "" "Você precisa ter uma conta para conectar na\n" "rede Jabber." -#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_creation_wizard_window.glade.h:21 msgid "Your JID:" msgstr "Seu JID:" -#: ../data/glade/account_creation_wizard_window.glade.h:19 -#: ../data/glade/roster_window.glade.h:11 +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 msgid "_Advanced" msgstr "_Avançado" -#: ../data/glade/account_creation_wizard_window.glade.h:20 +#: ../data/glade/account_creation_wizard_window.glade.h:23 msgid "_Finish" msgstr "_Concluir" -#: ../data/glade/account_creation_wizard_window.glade.h:21 -#: ../data/glade/manage_proxies_window.glade.h:10 -msgid "_Host:" -msgstr "_Computador:" +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Hostname:" +msgstr "_Nome do Computador:" -#: ../data/glade/account_creation_wizard_window.glade.h:22 -#: ../data/glade/account_modification_window.glade.h:49 +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 msgid "_Password:" msgstr "_Senha:" -#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/account_creation_wizard_window.glade.h:26 #: ../data/glade/manage_proxies_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:27 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/account_creation_wizard_window.glade.h:28 #: ../data/glade/manage_proxies_window.glade.h:12 msgid "_Username:" msgstr "Nome de _usuário" #: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 #: ../data/glade/preferences_window.glade.h:8 msgid "<b>Miscellaneous</b>" msgstr "<b>Diversos</b>" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "<b>OpenPGP</b>" msgstr "<b>OpenPGP</b>" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "<b>Personal Information</b>" msgstr "<b>Informações Pessoais</b>" #: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 msgid "Account" msgstr "Conta" @@ -213,23 +226,28 @@ msgid "Account Modification" msgstr "Alteração da Conta" #: ../data/glade/account_modification_window.glade.h:6 +#: ../data/glade/accounts_window.glade.h:5 msgid "Administration operations" msgstr "Operações de administração" #: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 msgid "Auto-reconnect when connection is lost" msgstr "Reconectar automaticamente quando a conexão cair" #: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 #: ../data/glade/zeroconf_properties_window.glade.h:3 msgid "C_onnect on Gajim startup" msgstr "C_onectar na inicialização do Gajim" #: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 msgid "Chan_ge Password" msgstr "Alterar Senha" #: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/accounts_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 " @@ -242,42 +260,60 @@ msgstr "" "TLS será desabilitado" #: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/accounts_window.glade.h:10 #: ../data/glade/zeroconf_properties_window.glade.h:4 msgid "Choose _Key..." msgstr "_Escolha a chave..." #: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_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:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "" +"Clique para requisitar autorização para todos os contatos de outra conta" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 msgid "Connection" msgstr "Conexão" -#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 msgid "Edit Personal Information..." msgstr "Editar detalhes pessoais..." -#: ../data/glade/account_modification_window.glade.h:15 -#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:458 -#: ../src/notify.py:480 ../src/notify.py:492 ../src/common/helpers.py:914 +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:489 +#: ../src/notify.py:520 ../src/notify.py:532 ../src/common/helpers.py:998 +#: ../src/common/helpers.py:1010 msgid "Gajim" msgstr "Gajim" -#: ../data/glade/account_modification_window.glade.h:16 -#: ../data/glade/preferences_window.glade.h:51 +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 #: ../data/glade/zeroconf_properties_window.glade.h:7 -#: ../src/roster_window.py:347 ../src/roster_window.py:1225 -#: ../src/roster_window.py:1435 ../src/roster_window.py:2114 -#: ../src/roster_window.py:2156 ../src/common/contacts.py:284 +#: ../src/roster_window.py:372 ../src/roster_window.py:637 +#: ../src/roster_window.py:1384 ../src/roster_window.py:1760 +#: ../src/roster_window.py:2147 ../src/roster_window.py:2661 +#: ../src/roster_window.py:2779 ../src/common/contacts.py:314 msgid "General" msgstr "Geral" -#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 msgid "Hostname: " msgstr "Nome do Computador:" -#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 msgid "" "If checked, Gajim will also broadcast some more IPs except from just your " "IP, so file transfer has higher chances of working." @@ -286,7 +322,8 @@ msgstr "" "então a transferência de arquivo tem grandes possibilidades de executar " "corretamente." -#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/accounts_window.glade.h:24 msgid "" "If checked, Gajim will send keep-alive packets to prevent connection timeout " "which results in disconnection" @@ -294,7 +331,7 @@ msgstr "" "Se marcado, o Gajim enviará pacotes keep-alive para prevenir timeout na " "conexão, fazendo-a cair" -#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/account_modification_window.glade.h:22 #: ../data/glade/zeroconf_properties_window.glade.h:8 msgid "" "If checked, Gajim will store the password in ~/.gajim/config with 'read' " @@ -303,7 +340,8 @@ 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:22 +#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/accounts_window.glade.h:25 #: ../data/glade/zeroconf_properties_window.glade.h:9 msgid "" "If checked, Gajim, when launched, will automatically connect to jabber using " @@ -312,7 +350,8 @@ msgstr "" "Se marcado, o Gajim, quando carregado, conectará automaticamente ao jabber " "usando esta conta" -#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/accounts_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:10 msgid "" "If checked, any change to the global status (handled by the combobox at the " @@ -322,46 +361,50 @@ msgstr "" "Se marcada, o status deste cliente será alterado de acordo com qualquer " "mudança no status global (definido pela caixa no fundo da janela da lista)" -#: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/account_modification_window.glade.h:25 +#: ../data/glade/accounts_window.glade.h:29 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:25 -msgid "Manage..." -msgstr "Gerenciar..." - -#: ../data/glade/account_modification_window.glade.h:26 -#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1623 -#: ../src/config.py:3301 +#: ../data/glade/account_modification_window.glade.h:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1551 +#: ../src/config.py:2028 msgid "No key selected" msgstr "Nenhuma chave selecionada" #. None means no proxy profile selected #. GPG Key -#: ../data/glade/account_modification_window.glade.h:28 ../src/config.py:1196 -#: ../src/config.py:1201 ../src/config.py:1385 ../src/config.py:1613 -#: ../src/config.py:1622 ../src/config.py:1682 ../src/config.py:1756 -#: ../src/config.py:3291 ../src/config.py:3300 ../src/dialogs.py:281 -#: ../src/dialogs.py:283 ../src/roster_window.py:1539 -#: ../src/roster_window.py:1546 ../src/roster_window.py:1553 +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1142 +#: ../src/config.py:1213 ../src/config.py:1460 ../src/config.py:1465 +#: ../src/config.py:1926 ../src/config.py:2013 ../src/config.py:2027 +#: ../src/config.py:3109 ../src/config.py:3155 ../src/dialogs.py:344 +#: ../src/dialogs.py:346 ../src/roster_window.py:1864 +#: ../src/roster_window.py:1871 ../src/roster_window.py:1878 msgid "None" msgstr "Nenhum" -#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 #: ../data/glade/profile_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:17 msgid "Personal Information" msgstr "Informações Pessoais" -#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 msgid "Port: " msgstr "Porta:" -#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 msgid "Priori_ty:" msgstr "_Prioridade" -#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/accounts_window.glade.h:40 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 " @@ -371,19 +414,23 @@ msgstr "" "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:33 +#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 msgid "Priority will change automatically according to your status." msgstr "A prioridade será alterada automaticamente de acordo com o seu status" -#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 msgid "Proxy:" msgstr "Proxy:" -#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 msgid "Resour_ce:" msgstr "Recur_so:" -#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/accounts_window.glade.h:45 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 " @@ -397,95 +444,137 @@ msgstr "" "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:37 +#: ../data/glade/account_modification_window.glade.h:38 #: ../data/glade/zeroconf_properties_window.glade.h:18 msgid "Save _passphrase (insecure)" msgstr "Salvar _frase de acesso (inseguro)" -#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:46 #: ../data/glade/zeroconf_properties_window.glade.h:19 msgid "Save conversation _logs for all contacts" msgstr "Salvar histórico para todos os contatos desta conta" -#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:48 msgid "Send keep-alive packets" msgstr "Enviar pacotes para manter a conexão (keep-alive)" -#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:49 #: ../data/glade/zeroconf_properties_window.glade.h:20 msgid "Synch_ronize account status with global status" msgstr "_Sincronizar status da conta com status global" -#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:50 +#: ../data/glade/synchronise_contacts_dialog.glade.h:2 +#: ../data/glade/synchronise_select_account_dialog.glade.h:2 msgid "Synchronise contacts" msgstr "Sincronizar contatos" -#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 msgid "Use _SSL (legacy)" msgstr "Usar _SSL (obsoleto, apenas para servidores antigos)" -#: ../data/glade/account_modification_window.glade.h:44 -msgid "Use custom hostname/port" -msgstr "Usa nome de máquina/porta customizados" - -#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 msgid "Use file transfer proxies" msgstr "Usa proxies de transferência de arquivos" -#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 msgid "_Adjust to status" msgstr "Ajustar para status" -#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 msgid "_Jabber ID:" msgstr "_Jabber ID:" -#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/account_modification_window.glade.h:49 msgid "_Name:" msgstr "_Nome:" -#: ../data/glade/accounts_window.glade.h:1 -msgid "Accounts" -msgstr "Contas" +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "E-Mail:" -#: ../data/glade/accounts_window.glade.h:2 -msgid "" -"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.\n" -"This is only available if python-avahi is installed and avahi-daemon is " -"running." -msgstr "" -"Se marcado, todos os contatos locais que usam um cliente de chat compatÃvel " -"com o Bonjour (como iChat, Trillian ou Gaim) serão mostrados na lista. Você " -"não precisa estar conectado a um servidor jabber para que ele funcione.\n" -" Isto só está disponÃvel se o python-avahi estiver instalado e o serviço " -"avahi-daemon estiver rodando." +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Habilitar" -#: ../data/glade/accounts_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "Primeiro nome:" + +#: ../data/glade/accounts_window.glade.h:22 +msgid "If checked, Gajim will get the password from a GPG agent like seahorse" +msgstr "Se marcado, o Gajim obterá a senha de um agente GPG como o Seahorse" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 msgid "" -"If you have 2 or more accounts and this is checked, Gajim will list all " -"contacts as if you had one account" +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." msgstr "" -"Se você tiver duas ou mais contas e isto estiver marcado, o Gajim listará " -"todos os contatos como se você tivesse somente uma única conta" +"Se a porta padrão usada para recebimento de mensagens não for adequada você " +"pode selecionar outra aqui.\n" +"Considere a possÃvel modificação das regras do seu firewall. " -#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:511 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "Último nome:" + +#: ../data/glade/accounts_window.glade.h:33 msgid "Mer_ge accounts" msgstr "Mes_clar contas" -#: ../data/glade/accounts_window.glade.h:6 -msgid "_Enable link-local messaging" -msgstr "_Ativar mensagens \"link-local\"" +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2731 +msgid "Re_name" +msgstr "Re_nomear" -#: ../data/glade/accounts_window.glade.h:7 -msgid "_Modify" -msgstr "_Modificar" +#: ../data/glade/accounts_window.glade.h:51 +msgid "Use GPG _Agent" +msgstr "Usar o _Agente GPG" -#: ../data/glade/accounts_window.glade.h:8 -#: ../data/glade/remove_account_window.glade.h:4 -msgid "_Remove" -msgstr "_Remover" +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Usar servidor/porta personalizado" + +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "gtk-add" + +#: ../data/glade/accounts_window.glade.h:60 +#: ../data/glade/features_window.glade.h:4 +msgid "gtk-close" +msgstr "gtk-close" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "gtk-remove" #: ../data/glade/add_new_contact_window.glade.h:1 msgid "A_ccount:" @@ -580,6 +669,7 @@ msgid "This jabber entity does not expose any commands." msgstr "Esta entidade jabber não expõe quaisquer comandos." #: ../data/glade/advanced_configuration_window.glade.h:1 +#: ../data/glade/features_window.glade.h:1 msgid "<b>Description</b>" msgstr "<b>Descrição</b>" @@ -606,45 +696,41 @@ msgid "Deletes Message of the Day" msgstr "Excluir Mensagem do Dia" #: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Edit _Privacy Lists..." +msgstr "Editar Listas de _Privacidade..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 msgid "Sends a message to users currently connected to this server" msgstr "" "Envia uma mensagem para os usuários atualmente conectados a este servidor" -#: ../data/glade/advanced_menuitem_menu.glade.h:4 -msgid "Set MOTD" -msgstr "Configurar MOTD" - #: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Set MOTD..." +msgstr "Definir MOTD..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 msgid "Sets Message of the Day" msgstr "Configurar Mensagem do Dia" -#: ../data/glade/advanced_menuitem_menu.glade.h:6 +#: ../data/glade/advanced_menuitem_menu.glade.h:7 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 "Update MOTD..." +msgstr "Atualizar MOTD..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 msgid "Updates Message of the Day" msgstr "Atualizar Mensagem do Dia" -#: ../data/glade/advanced_menuitem_menu.glade.h:9 +#: ../data/glade/advanced_menuitem_menu.glade.h:10 msgid "_Administrator" msgstr "_Administrador" -#: ../data/glade/advanced_menuitem_menu.glade.h:10 -msgid "_Privacy Lists" -msgstr "_Listas de Privacidade" - #: ../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" +msgid "_Send Server Message..." +msgstr "_Enviar Mensagem de Servidor..." #: ../data/glade/advanced_notifications_window.glade.h:1 msgid " a window/tab opened with that contact " @@ -659,7 +745,7 @@ msgid "<b>Conditions</b>" msgstr "<b>Condições</b>" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "<b>Sounds</b>" msgstr "<b>Sons</b>" @@ -676,7 +762,7 @@ msgid "All statuses" msgstr "Totos os status" #: ../data/glade/advanced_notifications_window.glade.h:8 -#: ../src/common/commands.py:91 ../src/common/helpers.py:243 +#: ../src/common/commands.py:96 ../src/common/helpers.py:255 msgid "Away" msgstr "Afastado" @@ -693,7 +779,7 @@ msgid "Have " msgstr "Possui" #: ../data/glade/advanced_notifications_window.glade.h:12 -#: ../src/common/helpers.py:253 +#: ../src/common/helpers.py:265 msgid "Invisible" msgstr "InvisÃvel" @@ -702,7 +788,7 @@ msgid "Launch a command" msgstr "Executar um comando" #: ../data/glade/advanced_notifications_window.glade.h:14 -#: ../src/common/helpers.py:226 +#: ../src/common/helpers.py:238 msgid "Not Available" msgstr "Não DisponÃvel" @@ -828,6 +914,10 @@ msgstr "Novo evento recebido" msgid "You have received new entry:" msgstr "Você recebeu uma nova entrada:" +#: ../data/glade/blocked_contacts_window.glade.h:1 +msgid "Blocked Contacts" +msgstr "Contatos Bloqueados" + #: ../data/glade/change_password_dialog.glade.h:1 msgid "Change Password" msgstr "Alterar Senha" @@ -857,11 +947,9 @@ msgid "Join _Group Chat" msgstr "_Entrar em uma Conferência" #: ../data/glade/chat_context_menu.glade.h:2 -#: ../data/glade/chat_control_popup_menu.glade.h:5 -#: ../data/glade/gc_occupants_menu.glade.h:2 -#: ../data/glade/roster_contact_context_menu.glade.h:10 -msgid "_Add to Roster" -msgstr "_Adicionar à Lista" +#: ../data/glade/roster_contact_context_menu.glade.h:12 +msgid "_Add to Roster..." +msgstr "_Adicionar à Lista..." #: ../data/glade/chat_context_menu.glade.h:3 msgid "_Copy JID/Email Address" @@ -880,7 +968,6 @@ msgid "_Open Link in Browser" msgstr "_Visualizar no Navegador" #: ../data/glade/chat_context_menu.glade.h:7 -#: ../data/glade/roster_window.glade.h:20 #: ../data/glade/subscription_request_popup_menu.glade.h:1 #: ../data/glade/systray_context_menu.glade.h:7 msgid "_Start Chat" @@ -891,34 +978,63 @@ 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 -#, fuzzy -msgid "Ping" -msgstr "Comendo" +msgid "Invite _Contacts" +msgstr "Convidar _Contatos" #: ../data/glade/chat_control_popup_menu.glade.h:3 -#: ../data/glade/roster_contact_context_menu.glade.h:8 +#: ../data/glade/gc_occupants_menu.glade.h:3 #: ../data/glade/zeroconf_contact_context_menu.glade.h:4 msgid "Send _File" msgstr "Enviar _Arquivo" #: ../data/glade/chat_control_popup_menu.glade.h:4 +msgid "Toggle End to End Encryption" +msgstr "Alternar para Criptografia End to End" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 msgid "Toggle Open_PGP Encryption" msgstr "Ativar criptografia Open_PGP" #: ../data/glade/chat_control_popup_menu.glade.h:6 -#: ../data/glade/gc_control_popup_menu.glade.h:6 -msgid "_Compact View Alt+C" -msgstr "Visão _Compacta Alt+C" +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "_Adicionar à Lista" #: ../data/glade/chat_control_popup_menu.glade.h:7 -#: ../data/glade/gc_control_popup_menu.glade.h:8 -#: ../data/glade/gc_occupants_menu.glade.h:5 -#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_window.glade.h:19 #: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2600 msgid "_History" msgstr "_Histórico" -#: ../data/glade/data_form_window.glade.h:1 +#: ../data/glade/chat_to_muc_window.glade.h:1 +msgid "In_vite" +msgstr "Con_vidar" + +#: ../data/glade/chat_to_muc_window.glade.h:2 +msgid "Invite Friends !" +msgstr "Convidar Amigos!" + +#: ../data/glade/chat_to_muc_window.glade.h:3 +msgid "MUC server" +msgstr "Servidor MUC" + +#: ../data/glade/chat_to_muc_window.glade.h:4 +msgid "Please select a MUC server." +msgstr "Por favor, selecione um servidor MUC." + +#: ../data/glade/chat_to_muc_window.glade.h:5 +msgid "" +"You are going to begin a Multi-User Chat.\n" +"Select the contacts you want to invite" +msgstr "" +"Você está prestes a iniciar uma Conversa Multi-Usuário (MUC).\n" +"Selecione os contatos que você quer convidar" + +#: ../data/glade/data_form_window.glade.h:1 msgid "Fill in the form." msgstr "Preencha o formulário." @@ -930,6 +1046,14 @@ msgstr "Configuração da Sala" msgid "Edit Groups" msgstr "Editar Grupos" +#: ../data/glade/features_window.glade.h:2 +msgid "<b>List of possible features in Gajim:</b>" +msgstr "<b>Listas dos possÃveis recursos do Gajim:</b>" + +#: ../data/glade/features_window.glade.h:3 +msgid "Features" +msgstr "Recursos" + #: ../data/glade/filetransfers.glade.h:1 msgid "A list of active, completed and stopped file transfers" msgstr "Uma lista de transferências de arquivo ativas, completadas e paradas" @@ -985,7 +1109,7 @@ msgstr "" 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:761 +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:790 msgid "_Continue" msgstr "_Continuar" @@ -993,7 +1117,7 @@ msgstr "_Continuar" 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:188 +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:191 msgid "_Open Containing Folder" msgstr "_Abrir pasta do arquivo" @@ -1082,62 +1206,70 @@ msgid "_Background:" msgstr "Cor _de fundo" #: ../data/glade/gc_control_popup_menu.glade.h:1 -msgid "Change _Nickname" -msgstr "Mudar _Apelido" +msgid "Change _Nickname..." +msgstr "Alterar _Apelido..." #: ../data/glade/gc_control_popup_menu.glade.h:2 -msgid "Change _Subject" -msgstr "Mudar _Assunto" +msgid "Change _Subject..." +msgstr "Alterar _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" +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" +msgid "_Bookmark" +msgstr "_Favoritos" -#: ../data/glade/gc_control_popup_menu.glade.h:7 -msgid "_Destroy room" -msgstr "_Excluir sala" +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" +msgstr "_Excluir Sala" + +#: ../data/glade/gc_control_popup_menu.glade.h:8 +msgid "_Manage Room" +msgstr "_Gerenciar Sala" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "_Minimizar ao fechar" #: ../data/glade/gc_occupants_menu.glade.h:1 msgid "Mo_derator" msgstr "Mo_derador" -#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:2 +msgid "Occupant Actions" +msgstr "Ações de Ocupante" + +#: ../data/glade/gc_occupants_menu.glade.h:5 msgid "_Admin" msgstr "_Administração" -#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:6 msgid "_Ban" msgstr "_Banir" -#: ../data/glade/gc_occupants_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:8 msgid "_Kick" msgstr "_Chutar" -#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:9 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 +#: ../data/glade/gc_occupants_menu.glade.h:10 msgid "_Owner" msgstr "D_ono" -#: ../data/glade/gc_occupants_menu.glade.h:10 +#: ../data/glade/gc_occupants_menu.glade.h:11 msgid "_Send Private Message" msgstr "_Enviar Mensagem Privada" -#: ../data/glade/gc_occupants_menu.glade.h:11 +#: ../data/glade/gc_occupants_menu.glade.h:12 msgid "_Voice" msgstr "_Voz" @@ -1145,13 +1277,13 @@ msgstr "_Voz" msgid "Create new post" msgstr "Criar nova postagem" -#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:268 +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:280 msgid "From" msgstr "De" #. holds subject -#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:142 -#: ../src/history_manager.py:173 +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:147 +#: ../src/history_manager.py:178 msgid "Subject" msgstr "Assunto" @@ -1191,30 +1323,54 @@ msgid "_Search Database" msgstr "_Buscar no Bando de Dados" #: ../data/glade/history_window.glade.h:1 -msgid "Build custom query" -msgstr "Gerar consulta customizada" +msgid "<b>History Viewer</b>" +msgstr "<b>Visualizador de Histórico</b>" #: ../data/glade/history_window.glade.h:2 +msgid "<b>JID Selection</b>" +msgstr "<b>Seleção de JID</b>" + +#: ../data/glade/history_window.glade.h:3 +msgid "" +"Choose the chatlog you want to view. \n" +"Enter the jid of a groupchat or a contact here. For online accounts you can " +"even enter a a contact's nickname." +msgstr "" +"Selecione o registro de conversa que você quer ver. \n" +"Entre com o JID de uma sala ou contato aqui. Para contas online você sempre " +"entra com o apelido do contato." + +#: ../data/glade/history_window.glade.h:5 ../src/history_window.py:224 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:6 +msgid "" +"Current History\n" +"All Chat Histories" +msgstr "" +"Histórico Atual\n" +"Históricos de Todas as Conversas" -#: ../data/glade/history_window.glade.h:4 +#: ../data/glade/history_window.glade.h:8 +#: ../data/glade/search_window.glade.h:2 msgid "Search" msgstr "Buscar" -#: ../data/glade/history_window.glade.h:5 +#: ../data/glade/history_window.glade.h:9 #: ../data/glade/zeroconf_information_window.glade.h:10 msgid "_Log conversation history" msgstr "_Histórico de Conversação" -#: ../data/glade/history_window.glade.h:6 ../src/disco.py:1177 +#: ../data/glade/history_window.glade.h:10 +#: ../data/glade/search_window.glade.h:5 ../src/disco.py:1182 msgid "_Search" msgstr "_Buscar" +#: ../data/glade/history_window.glade.h:11 +msgid "in" +msgstr "em" + #: ../data/glade/invitation_received_dialog.glade.h:1 msgid "Accept" msgstr "Aceitar" @@ -1228,7 +1384,7 @@ msgstr "Negar" msgid "Invitation Received" msgstr "Convite Recebido" -#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1208 +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1385 msgid "Join Group Chat" msgstr "Ingressar numa conferência" @@ -1237,14 +1393,14 @@ msgid "Join this room automatically when I connect" msgstr "Entra nesta sala automaticamente quando eu conectar" #: ../data/glade/join_groupchat_window.glade.h:3 -#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:5 #: ../data/glade/profile_window.glade.h:24 -#: ../data/glade/vcard_information_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:31 msgid "Nickname:" msgstr "Apelido:" #: ../data/glade/join_groupchat_window.glade.h:4 -#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:6 msgid "Password:" msgstr "Senha:" @@ -1253,12 +1409,12 @@ msgid "Recently:" msgstr "Recentemente:" #: ../data/glade/join_groupchat_window.glade.h:6 -#: ../data/glade/manage_bookmarks_window.glade.h:7 +#: ../data/glade/manage_bookmarks_window.glade.h:8 msgid "Room:" msgstr "Sala:" -#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1165 -#: ../src/disco.py:1615 +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1170 +#: ../src/disco.py:1625 msgid "_Join" msgstr "_Ingressar" @@ -1279,15 +1435,19 @@ msgstr "" msgid "Manage Bookmarks" msgstr "Gerenciar Bookmarks" -#: ../data/glade/manage_bookmarks_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "Minimizar ao Entrar Automaticamente" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 msgid "Print status:" msgstr "Imprimir status:" -#: ../data/glade/manage_bookmarks_window.glade.h:8 +#: ../data/glade/manage_bookmarks_window.glade.h:9 msgid "Server:" msgstr "Servidor:" -#: ../data/glade/manage_bookmarks_window.glade.h:9 +#: ../data/glade/manage_bookmarks_window.glade.h:10 msgid "Title:" msgstr "TÃtulo:" @@ -1313,10 +1473,14 @@ msgstr "Gerenciar Perfis de Proxy" #: ../data/glade/manage_proxies_window.glade.h:6 #: ../data/glade/profile_window.glade.h:23 -#: ../data/glade/vcard_information_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:30 msgid "Name:" msgstr "Nome:" +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "_Senha:" + #: ../data/glade/manage_proxies_window.glade.h:8 msgid "Type:" msgstr "Tipo:" @@ -1325,17 +1489,22 @@ msgstr "Tipo:" msgid "Use authentication" msgstr "Usar autenticação" +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_Computador:" + #: ../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:1129 +#: ../data/glade/message_window.glade.h:2 ../src/chat_control2.py:1257 +#: ../src/chat_control.py:1268 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:10 +#: ../data/glade/roster_window.glade.h:12 #: ../data/glade/subscription_request_window.glade.h:6 msgid "_Actions" msgstr "_Ações" @@ -1343,7 +1512,7 @@ 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:245 +#: ../src/filetransfers_window.py:252 msgid "_Send" msgstr "_Enviar" @@ -1359,36 +1528,48 @@ msgstr "<b>Editor de Configurações Avançadas</b>" msgid "<b>Applications</b>" msgstr "<b>Aplicações</b>" +#: ../data/glade/preferences_window.glade.h:3 +msgid "<b>Chat Appearance</b>" +msgstr "<b>Aparência da Conversa</b>" + #. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../data/glade/preferences_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:5 msgid "<b>Custom</b>" msgstr "<b>Customizar</b>" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "<b>Format of a line</b>" msgstr "<b>Formato da linha</b>" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "<b>GMail Options</b>" msgstr "<b>Opções do Gmail</b>" -#: ../data/glade/preferences_window.glade.h:7 -msgid "<b>Interface Customization</b>" -msgstr "<b>Customização de interface</b>" - #: ../data/glade/preferences_window.glade.h:9 msgid "<b>Preset Status Messages</b>" msgstr "<b>Mensagens de Status DisponÃveis</b>" +#: ../data/glade/preferences_window.glade.h:10 +msgid "<b>Privacy</b>" +msgstr "<i>Privacidade</i>" + #: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "<b>Aparência da Lista</b>" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "<b>Themes</b>" +msgstr "<b>Tema</b>" + +#: ../data/glade/preferences_window.glade.h:14 msgid "<b>Visual Notifications</b>" msgstr "<b>Notificações Visuais</b>" -#: ../data/glade/preferences_window.glade.h:12 +#: ../data/glade/preferences_window.glade.h:15 msgid "Advanced" msgstr "Avançado" -#: ../data/glade/preferences_window.glade.h:13 +#: ../data/glade/preferences_window.glade.h:16 msgid "" "All chat states\n" "Composing only\n" @@ -1398,24 +1579,20 @@ msgstr "" "Escrevendo somente\n" "Desabilitado" -#: ../data/glade/preferences_window.glade.h:16 +#: ../data/glade/preferences_window.glade.h:19 msgid "Allow _OS information to be sent" msgstr "Permitir o envio de informações do _SO " -#: ../data/glade/preferences_window.glade.h:17 +#: ../data/glade/preferences_window.glade.h:20 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:18 -msgid "Also known as iChat style" -msgstr "Conhecido também como estilo iChat" - -#: ../data/glade/preferences_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:21 msgid "Always check to see if Gajim is the _default Jabber client on startup" msgstr "Sempre verificar ao iniciar se o Gajim é o cliente Jabber padrão" -#: ../data/glade/preferences_window.glade.h:20 +#: ../data/glade/preferences_window.glade.h:22 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 " @@ -1425,24 +1602,25 @@ msgstr "" "Gajim não perguntará mais por uma mensagem de status quando você mudá-lo " "para afastado, ele usará o padrão definido aqui" -#: ../data/glade/preferences_window.glade.h:21 +#: ../data/glade/preferences_window.glade.h:23 msgid "Ask status message when I:" msgstr "Solicite uma mensagem de status quanto eu:" -#: ../data/glade/preferences_window.glade.h:22 +#: ../data/glade/preferences_window.glade.h:24 msgid "Auto _away after:" msgstr "Marcar como _afastado depois:" -#: ../data/glade/preferences_window.glade.h:23 +#: ../data/glade/preferences_window.glade.h:25 msgid "Auto _not available after:" msgstr "Marcar como _afastado depois:" -#: ../data/glade/preferences_window.glade.h:24 +#: ../data/glade/preferences_window.glade.h:26 +#, fuzzy msgid "" "Autodetect on every Gajim startup\n" "Always use GNOME default applications\n" "Always use KDE default applications\n" -"Always use XFCE4 default applications\n" +"Always use Xfce default applications\n" "Custom" msgstr "" "Auto-detectar ao abrir o Gajim\n" @@ -1450,11 +1628,7 @@ msgstr "" "Sempre usar aplicações no padrão KDE\n" "Personalizar" -#: ../data/glade/preferences_window.glade.h:29 -msgid "Chat" -msgstr "Conversa" - -#: ../data/glade/preferences_window.glade.h:30 +#: ../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, because it blocks all messages from any contact that " @@ -1465,18 +1639,14 @@ msgstr "" "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 +#: ../data/glade/preferences_window.glade.h:32 msgid "Configure color and font of the interface" msgstr "Configurar cores e fontes da interface" -#: ../data/glade/preferences_window.glade.h:32 +#: ../data/glade/preferences_window.glade.h:33 msgid "Default Status Messages" msgstr "Mensagens de Status Padrão" -#: ../data/glade/preferences_window.glade.h:33 -msgid "Default status _iconset:" -msgstr "_Conjunto de Ãcones de status padrão:" - #: ../data/glade/preferences_window.glade.h:34 msgid "" "Determined by sender\n" @@ -1500,22 +1670,14 @@ msgid "Display status _messages of contacts in roster" msgstr "Mostrar _mensagem de status da lista de contato" #: ../data/glade/preferences_window.glade.h:40 -msgid "Displayed Chat state noti_fications:" -msgstr "Noti_ficações do status da conversa exibidas:" - -#: ../data/glade/preferences_window.glade.h:41 -msgid "E_very 5 minutes" -msgstr "De 5 _em 5 minutos" - -#: ../data/glade/preferences_window.glade.h:42 msgid "Emoticons:" msgstr "Emoticons:" -#: ../data/glade/preferences_window.glade.h:43 +#: ../data/glade/preferences_window.glade.h:41 msgid "Events" msgstr "Eventos" -#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/preferences_window.glade.h:42 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 " @@ -1525,7 +1687,7 @@ msgstr "" "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:45 +#: ../data/glade/preferences_window.glade.h:43 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 " @@ -1535,30 +1697,7 @@ msgstr "" "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:46 -msgid "" -"Gajim will automatically show new events by popping up the relevant window" -msgstr "" -"O Gajim automaticamente mostrará novos eventos em uma janela saltando sobre " -"a janela relevante" - -#: ../data/glade/preferences_window.glade.h:47 -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:48 -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:49 +#: ../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" @@ -1566,12 +1705,11 @@ 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:50 -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:46 +msgid "Hides buttons in chatwindows to " +msgstr "Esconder os botões nas janelas de conversa em" -#: ../data/glade/preferences_window.glade.h:52 +#: ../data/glade/preferences_window.glade.h:47 msgid "" "If checked, Gajim will also include information about the sender of the new " "emails" @@ -1579,7 +1717,7 @@ msgstr "" "Se marcado, o Gajim também incluirá informação sobre o remetente de novos " "emails" -#: ../data/glade/preferences_window.glade.h:53 +#: ../data/glade/preferences_window.glade.h:48 msgid "" "If checked, Gajim will display avatars of contacts in roster window and in " "group chats" @@ -1587,7 +1725,7 @@ msgstr "" "Se marcado, Gajim mostrará avatars dos contatos na janela da lista e na " "conferência" -#: ../data/glade/preferences_window.glade.h:54 +#: ../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" @@ -1595,15 +1733,7 @@ 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:55 -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:56 +#: ../data/glade/preferences_window.glade.h:50 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, " @@ -1613,7 +1743,7 @@ msgstr "" "exemplo, um contato do MSN terá o Ãcone equivalente do MSN para o status " "conectado, ausente, ocupado, etc....)" -#: ../data/glade/preferences_window.glade.h:57 +#: ../data/glade/preferences_window.glade.h:51 msgid "" "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " "animated or static graphical emoticons" @@ -1621,15 +1751,15 @@ 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:58 +#: ../data/glade/preferences_window.glade.h:52 msgid "Ignore rich content in incoming messages" msgstr "Ignorar conteúdo formatado nas mensagens recebidas." -#: ../data/glade/preferences_window.glade.h:59 +#: ../data/glade/preferences_window.glade.h:53 msgid "Ma_nage..." msgstr "Gere_nciar..." -#: ../data/glade/preferences_window.glade.h:60 +#: ../data/glade/preferences_window.glade.h:54 msgid "" "Never\n" "Always\n" @@ -1641,60 +1771,54 @@ msgstr "" "Por conta\n" "Por tipo" -#: ../data/glade/preferences_window.glade.h:64 -msgid "Notify me about contacts that: " -msgstr "Notifique-me sobre contatos ao: " +#: ../data/glade/preferences_window.glade.h:58 +msgid "Notify me about contacts that sign _in" +msgstr "Notifique-me sobre contatos ao _conectar" -#: ../data/glade/preferences_window.glade.h:65 +#: ../data/glade/preferences_window.glade.h:59 +msgid "Notify me about contacts that sign _out" +msgstr "Notifique-me sobre contatos ao _desconectar" + +#: ../data/glade/preferences_window.glade.h:60 msgid "Notify on new _GMail email" msgstr "Notificar cada nova mensagem do _Gmail" -#: ../data/glade/preferences_window.glade.h:66 -msgid "On every _message" -msgstr "Em todas as _mensagens" - -#: ../data/glade/preferences_window.glade.h:67 -msgid "One message _window:" -msgstr "Uma _janela de mensagem" - -#: ../data/glade/preferences_window.glade.h:68 -msgid "Outgoing Chat state noti_fications:" -msgstr "Enviar noti_ficações do status da conversa:" - -#: ../data/glade/preferences_window.glade.h:69 +#: ../data/glade/preferences_window.glade.h:61 msgid "Play _sounds" msgstr "Tocar _Sons" -#: ../data/glade/preferences_window.glade.h:70 +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" +"Mostrar em um pop-up\n" +"Notificar-me sobre\n" +"Mostra apenas na lista" + +#: ../data/glade/preferences_window.glade.h:65 msgid "Preferences" msgstr "Preferências" -#: ../data/glade/preferences_window.glade.h:71 -msgid "Print time:" -msgstr "Imprimir tempo:" - -#: ../data/glade/preferences_window.glade.h:72 -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:66 +msgid "Privacy" +msgstr "Privacidade" -#: ../data/glade/preferences_window.glade.h:73 +#: ../data/glade/preferences_window.glade.h:67 msgid "Set status message to reflect currently playing _music track" msgstr "" "Definir a mensagem de status de acordo com a música que estiver sendo tocada." -#: ../data/glade/preferences_window.glade.h:74 -msgid "Show only in _roster" -msgstr "Mostre somente na _lista" - -#: ../data/glade/preferences_window.glade.h:75 +#: ../data/glade/preferences_window.glade.h:68 msgid "Sign _in" msgstr "_Conectar" -#: ../data/glade/preferences_window.glade.h:76 +#: ../data/glade/preferences_window.glade.h:69 msgid "Sign _out" msgstr "_Desconectar" -#: ../data/glade/preferences_window.glade.h:77 +#: ../data/glade/preferences_window.glade.h:70 msgid "" "Some messages may include rich content (formatting, colors etc). If checked, " "Gajim will just display the raw message text." @@ -1702,55 +1826,47 @@ msgstr "" "Algumas mensagens podem incluir conteúdo rico (formatação, cores etc). Se " "marcado, o Gajim apenas mostrará as mensagens em texto puro." -#: ../data/glade/preferences_window.glade.h:78 +#: ../data/glade/preferences_window.glade.h:71 msgid "Status" msgstr "Status" -#: ../data/glade/preferences_window.glade.h:79 +#: ../data/glade/preferences_window.glade.h:72 +msgid "Status _iconset:" +msgstr "_Conjunto de Ãcones de status:" + +#: ../data/glade/preferences_window.glade.h:73 msgid "T_heme:" msgstr "_Tema:" -#: ../data/glade/preferences_window.glade.h:80 +#: ../data/glade/preferences_window.glade.h:74 msgid "The auto away status message" msgstr "A mensagem de status para o ausente automático" -#: ../data/glade/preferences_window.glade.h:81 +#: ../data/glade/preferences_window.glade.h:75 msgid "The auto not available status message" msgstr "A mensagem de status para o afastado automático" -#: ../data/glade/preferences_window.glade.h:82 +#: ../data/glade/preferences_window.glade.h:76 msgid "Treat all incoming messages as:" msgstr "Tratar todas as mensagens recebidas como:" -#: ../data/glade/preferences_window.glade.h:83 +#: ../data/glade/preferences_window.glade.h:77 msgid "Use _transports iconsets" msgstr "Usar conjunto de Ãcones de _transportes" -#: ../data/glade/preferences_window.glade.h:84 +#: ../data/glade/preferences_window.glade.h:78 +msgid "Use only one message _window:" +msgstr "Usar apenas uma _janela de mensagem:" + +#: ../data/glade/preferences_window.glade.h:79 msgid "Use system _default" msgstr "Usar o _padrão do sistema" -#: ../data/glade/preferences_window.glade.h:85 -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:86 -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:87 -msgid "When new event is received" -msgstr "Quando novo evento é recebido" +#: ../data/glade/preferences_window.glade.h:80 +msgid "When new event is received:" +msgstr "Quando novo evento é recebido:" -#: ../data/glade/preferences_window.glade.h:88 +#: ../data/glade/preferences_window.glade.h:81 msgid "" "Works for Rhythmbox and Muine players. For more players, please visit http://" "trac.gajim.org/wiki/GajimAndMusicPlayer" @@ -1758,83 +1874,83 @@ msgstr "" "Funciona para os reprodutores Rhythmbox e Muine. Para mais reprodutores, por " "favor visite a página http://trac.gajim.org/wiki/GajimAndMusicPlayer" -#: ../data/glade/preferences_window.glade.h:89 +#: ../data/glade/preferences_window.glade.h:82 msgid "_Advanced Notifications Control..." msgstr "Controle _Avançado de Notificações..." -#: ../data/glade/preferences_window.glade.h:90 +#: ../data/glade/preferences_window.glade.h:83 msgid "_Browser:" msgstr "_Navegar:" -#: ../data/glade/preferences_window.glade.h:91 +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Display chat state notifications:" +msgstr "_Mostrar notificações de status de conversa:" + +#: ../data/glade/preferences_window.glade.h:85 msgid "_File manager:" msgstr "_Gerenciamento de arquivos:" -#: ../data/glade/preferences_window.glade.h:92 +#: ../data/glade/preferences_window.glade.h:86 msgid "_Font:" msgstr "_Fonte:" -#: ../data/glade/preferences_window.glade.h:93 +#: ../data/glade/preferences_window.glade.h:87 msgid "_Highlight misspelled words" msgstr "_Destacar palavras mal escritas" -#: ../data/glade/preferences_window.glade.h:94 +#: ../data/glade/preferences_window.glade.h:88 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:95 +#: ../data/glade/preferences_window.glade.h:89 msgid "_Incoming message:" msgstr "Mensagem _recebida:" -#: ../data/glade/preferences_window.glade.h:96 +#: ../data/glade/preferences_window.glade.h:90 msgid "_Log status changes of contacts" msgstr "_Log mudanças de status dos contatos" -#: ../data/glade/preferences_window.glade.h:97 +#: ../data/glade/preferences_window.glade.h:91 msgid "_Mail client:" msgstr "_Cliente de email:" -#: ../data/glade/preferences_window.glade.h:98 -msgid "_Never" -msgstr "_Nunca" - -#: ../data/glade/preferences_window.glade.h:99 -msgid "_Notify me about it" -msgstr "_Notifique-me sobre isto" +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Make message windows compact" +msgstr "_Tornar a janela de mensagem compacta" -#: ../data/glade/preferences_window.glade.h:100 +#: ../data/glade/preferences_window.glade.h:93 msgid "_Open..." msgstr "_Abrir..." -#: ../data/glade/preferences_window.glade.h:101 +#: ../data/glade/preferences_window.glade.h:94 msgid "_Outgoing message:" msgstr "Mensagem _enviada:" -#: ../data/glade/preferences_window.glade.h:102 +#: ../data/glade/preferences_window.glade.h:95 msgid "_Player:" msgstr "_Tocador de som:" -#: ../data/glade/preferences_window.glade.h:103 -msgid "_Pop it up" -msgstr "_Alerta visual" - -#: ../data/glade/preferences_window.glade.h:104 +#: ../data/glade/preferences_window.glade.h:96 msgid "_Reset to Default Colors" msgstr "Voltar para as Cores _Padrões" -#: ../data/glade/preferences_window.glade.h:105 +#: ../data/glade/preferences_window.glade.h:97 +msgid "_Send chat state notifications:" +msgstr "_Enviar notificações de status de conversa:" + +#: ../data/glade/preferences_window.glade.h:98 msgid "_Sort contacts by status" msgstr "_Ordena contatos pelo status" -#: ../data/glade/preferences_window.glade.h:106 +#: ../data/glade/preferences_window.glade.h:99 msgid "_Status message:" msgstr "_Mensagem de status:" -#: ../data/glade/preferences_window.glade.h:107 +#: ../data/glade/preferences_window.glade.h:100 msgid "_URL:" msgstr "_URL:" -#: ../data/glade/preferences_window.glade.h:108 +#: ../data/glade/preferences_window.glade.h:101 msgid "minutes" msgstr "minutos" @@ -1878,7 +1994,7 @@ msgstr "Jabber ID" msgid "Order:" msgstr "Ordem:" -#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2052 +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2258 msgid "Privacy List" msgstr "Lista de Privacidade" @@ -1953,110 +2069,103 @@ msgid "Company:" msgstr "Empresa:" #: ../data/glade/profile_window.glade.h:9 -#: ../data/glade/vcard_information_window.glade.h:13 +#: ../data/glade/vcard_information_window.glade.h:14 msgid "Country:" msgstr "PaÃs:" #: ../data/glade/profile_window.glade.h:10 -#: ../data/glade/vcard_information_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:15 msgid "Department:" msgstr "Departamento:" -#: ../data/glade/profile_window.glade.h:11 -#: ../data/glade/vcard_information_window.glade.h:15 -#: ../data/glade/zeroconf_information_window.glade.h:2 -#: ../data/glade/zeroconf_properties_window.glade.h:5 -msgid "E-Mail:" -msgstr "E-Mail:" - #: ../data/glade/profile_window.glade.h:12 -#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:17 msgid "Extra Address:" msgstr "Complemento:" #. Family Name #: ../data/glade/profile_window.glade.h:14 -#: ../data/glade/vcard_information_window.glade.h:18 +#: ../data/glade/vcard_information_window.glade.h:19 msgid "Family:" msgstr "FamÃlia:" #. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) #: ../data/glade/profile_window.glade.h:16 -#: ../data/glade/vcard_information_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:21 msgid "Format: YYYY-MM-DD" msgstr "Formato: YYYY-MM-DD" -#. Given Name -#: ../data/glade/profile_window.glade.h:18 +#: ../data/glade/profile_window.glade.h:17 #: ../data/glade/vcard_information_window.glade.h:22 +msgid "Full Name" +msgstr "Nome Completo" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 msgid "Given:" msgstr "Nome:" -#: ../data/glade/profile_window.glade.h:19 -#: ../data/glade/vcard_information_window.glade.h:23 +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 msgid "Homepage:" msgstr "Homepage:" #. Middle Name -#: ../data/glade/profile_window.glade.h:21 -#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 msgid "Middle:" msgstr "Nome do meio:" -#: ../data/glade/profile_window.glade.h:22 -#: ../data/glade/vcard_information_window.glade.h:27 -msgid "More" -msgstr "Mais" - #: ../data/glade/profile_window.glade.h:25 -#: ../data/glade/vcard_information_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:34 msgid "Personal Info" msgstr "Informações Pessoais" #: ../data/glade/profile_window.glade.h:27 -#: ../data/glade/vcard_information_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:35 msgid "Phone No.:" msgstr "Telefone:" #: ../data/glade/profile_window.glade.h:28 -#: ../data/glade/vcard_information_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:36 msgid "Position:" msgstr "Cargo:" #: ../data/glade/profile_window.glade.h:29 -#: ../data/glade/vcard_information_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:37 msgid "Postal Code:" msgstr "Código Postal:" #. Prefix in Name #: ../data/glade/profile_window.glade.h:31 -#: ../data/glade/vcard_information_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:39 msgid "Prefix:" msgstr "Prefixo:" #: ../data/glade/profile_window.glade.h:32 -#: ../data/glade/vcard_information_window.glade.h:38 ../src/vcard.py:257 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:307 msgid "Role:" msgstr "Função:" #: ../data/glade/profile_window.glade.h:33 -#: ../data/glade/vcard_information_window.glade.h:39 +#: ../data/glade/vcard_information_window.glade.h:42 msgid "State:" msgstr "Estado:" #: ../data/glade/profile_window.glade.h:34 -#: ../data/glade/vcard_information_window.glade.h:41 +#: ../data/glade/vcard_information_window.glade.h:44 msgid "Street:" msgstr "Rua:" #. Suffix in Name #: ../data/glade/profile_window.glade.h:36 -#: ../data/glade/vcard_information_window.glade.h:45 +#: ../data/glade/vcard_information_window.glade.h:48 msgid "Suffix:" msgstr "Sobrenome:" #: ../data/glade/profile_window.glade.h:37 -#: ../data/glade/vcard_information_window.glade.h:46 +#: ../data/glade/vcard_information_window.glade.h:50 msgid "Work" msgstr "Trabalho" @@ -2072,136 +2181,180 @@ msgstr "Remover conta _somente do Gajim" msgid "Remove account from Gajim and from _server" msgstr "Remover conta do Gajim e do _servidor" +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2557 ../src/roster_window.py:2767 +#: ../src/roster_window.py:2903 +msgid "_Remove" +msgstr "_Remover" + #: ../data/glade/roster_contact_context_menu.glade.h:1 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 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 -msgid "Add Special _Notification" -msgstr "Adicionar Notificações Visuais" +msgid "Add Special _Notification..." +msgstr "Adicionar _Notificação Especial..." #: ../data/glade/roster_contact_context_menu.glade.h:3 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 -msgid "Assign Open_PGP Key" -msgstr "Atribuir chave OpenPGP" +msgid "Assign Open_PGP Key..." +msgstr "Atribuir Chave Open_PGP..." #: ../data/glade/roster_contact_context_menu.glade.h:4 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 -#: ../src/roster_window.py:2078 -msgid "Edit _Groups" -msgstr "Editar _Grupos" +msgid "Edit _Groups..." +msgstr "Editar _Grupos..." +#. Execute Command #: ../data/glade/roster_contact_context_menu.glade.h:5 -#: ../src/roster_window.py:2213 +#: ../src/roster_window.py:2860 msgid "Execute Command..." msgstr "Executar Comando..." +#. Invite to Groupchat #: ../data/glade/roster_contact_context_menu.glade.h:6 -#: ../src/roster_window.py:2036 +#: ../src/roster_window.py:2473 msgid "In_vite to" msgstr "Con_vidar para" +#. Send Custom Status #: ../data/glade/roster_contact_context_menu.glade.h:7 -#: ../data/glade/systray_context_menu.glade.h:2 -msgid "Send Single _Message" -msgstr "Enviar _Mensagem Simples" +#: ../src/roster_window.py:2697 ../src/roster_window.py:2831 +msgid "Send Cus_tom Status" +msgstr "Enviar Status Perso_nalizado" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "Enviar _Mensagem Simples..." #: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "Send _File..." +msgstr "Enviar _Arquivo..." + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "Definir _Avatar Personalizado..." + +#: ../data/glade/roster_contact_context_menu.glade.h:11 #: ../data/glade/zeroconf_contact_context_menu.glade.h:5 msgid "Start _Chat" msgstr "Iniciar conversa" -#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/roster_contact_context_menu.glade.h:13 msgid "_Allow him/her to see my status" msgstr "_Permitir que ele/ela veja meu status" -#: ../data/glade/roster_contact_context_menu.glade.h:12 -msgid "_Forbid him/her to see my status" -msgstr "_Proibir ele/ela de ver meu status" - -#. Remove group #: ../data/glade/roster_contact_context_menu.glade.h:14 -#: ../src/roster_window.py:2030 ../src/roster_window.py:2127 -#: ../src/roster_window.py:2234 -msgid "_Remove from Roster" -msgstr "_Remover da Lista" +#: ../src/roster_window.py:2547 ../src/roster_window.py:2758 +msgid "_Block" +msgstr "_Bloquear" #: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Forbid him/her to see my status" +msgstr "_Proibir ele/ela de ver meu status" + +#: ../data/glade/roster_contact_context_menu.glade.h:17 #: ../data/glade/zeroconf_contact_context_menu.glade.h:7 -#: ../src/roster_window.py:2222 -msgid "_Rename" -msgstr "_Renomear" +msgid "_Manage Contact" +msgstr "_Gerenciar Contato" -#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_contact_context_menu.glade.h:19 +msgid "_Rename..." +msgstr "_Renomear..." + +#: ../data/glade/roster_contact_context_menu.glade.h:20 msgid "_Subscription" msgstr "_Inscrição" +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2541 ../src/roster_window.py:2752 +msgid "_Unblock" +msgstr "_Desbloquear" + #: ../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" +msgid "Add _Contact..." +msgstr "Adicionar _Contato..." #: ../data/glade/roster_window.glade.h:3 +msgid "Fea_tures" +msgstr "Re_cursos" + +#: ../data/glade/roster_window.glade.h:4 msgid "File _Transfers" msgstr "Transferência de _Arquivos" -#: ../data/glade/roster_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:5 msgid "Frequently Asked Questions (online)" msgstr "Perguntas freqüentes (online)" -#: ../data/glade/roster_window.glade.h:6 +#: ../data/glade/roster_window.glade.h:7 msgid "Help online" msgstr "Ajuda online" -#: ../data/glade/roster_window.glade.h:7 +#: ../data/glade/roster_window.glade.h:9 msgid "Profile, A_vatar" msgstr "Perfil, A_vatar" -#: ../data/glade/roster_window.glade.h:8 +#: ../data/glade/roster_window.glade.h:10 msgid "Show Trans_ports" msgstr "Mostrar Trans_portes" -#: ../data/glade/roster_window.glade.h:9 +#: ../data/glade/roster_window.glade.h:11 msgid "Show _Offline Contacts" msgstr "Mostrar Contatos desc_onectados" -#: ../data/glade/roster_window.glade.h:12 +#: ../data/glade/roster_window.glade.h:14 msgid "_Contents" msgstr "_Ãndices" -#: ../data/glade/roster_window.glade.h:13 -msgid "_Discover Services" -msgstr "_Descubra Serviços" - -#: ../data/glade/roster_window.glade.h:14 ../src/disco.py:1353 -#: ../src/roster_window.py:2205 +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1358 msgid "_Edit" msgstr "_Editar" -#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/roster_window.glade.h:17 msgid "_FAQ" msgstr "_FAQ" -#: ../data/glade/roster_window.glade.h:17 +#: ../data/glade/roster_window.glade.h:18 msgid "_Help" msgstr "_Ajuda" -#: ../data/glade/roster_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:20 msgid "_Preferences" msgstr "_Preferências" -#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:21 msgid "_Quit" msgstr "_Sair" -#: ../data/glade/roster_window.glade.h:21 +#: ../data/glade/roster_window.glade.h:22 +msgid "_Send Single Message..." +msgstr "_Enviar Mensagem Simples..." + +#: ../data/glade/roster_window.glade.h:24 msgid "_View" msgstr "_Ver" +#: ../data/glade/search_window.glade.h:1 +msgid "Please wait while retrieving search form..." +msgstr "" +"Por favor aguarde enquanto o formulário de pesquisa está sendo obtido..." + +#: ../data/glade/search_window.glade.h:3 +msgid "_Add contact" +msgstr "_Adicionar contato" + +#. Information +#: ../data/glade/search_window.glade.h:4 ../src/roster_window.py:2915 +msgid "_Information" +msgstr "_Informações" + #: ../data/glade/service_discovery_window.glade.h:1 msgid "G_o" msgstr "_Ir" @@ -2210,10 +2363,6 @@ msgstr "_Ir" 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" @@ -2291,10 +2440,31 @@ msgstr "Solicitação de Inscrição" msgid "_Deny" msgstr "_Negar" +#: ../data/glade/synchronise_contacts_dialog.glade.h:1 +#, fuzzy +msgid "Select the account with which to synchronise" +msgstr "Selecione a conta que você quer sincronizar" + +#: ../data/glade/synchronise_select_account_dialog.glade.h:1 +msgid "Select the account with which you want to synchronise" +msgstr "Selecione a conta que você quer sincronizar" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:1 +msgid "Select the contacts you want to synchronise" +msgstr "Selecione os contatos que você quer sincronizar" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:2 +msgid "Synchronise : select contacts" +msgstr "Sincronizar: selecionar contatos" + #: ../data/glade/systray_context_menu.glade.h:1 msgid "Mute Sounds" msgstr "Sons Mudos" +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "Enviar _Mensagem Simples" + #: ../data/glade/systray_context_menu.glade.h:3 msgid "Show All Pending _Events" msgstr "Mostrar todos _Eventos Pendentes" @@ -2307,6 +2477,10 @@ msgstr "Mostre _Lista" msgid "Sta_tus" msgstr "Sta_tus" +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "_Conferência" + #. Given Name #: ../data/glade/vcard_information_window.glade.h:5 msgid "Ask:" @@ -2321,39 +2495,45 @@ msgid "Comments" msgstr "Comentários" #: ../data/glade/vcard_information_window.glade.h:11 +msgid "Configured avatar:" +msgstr "Configurar _avatar:" + +#: ../data/glade/vcard_information_window.glade.h:12 #: ../data/glade/zeroconf_information_window.glade.h:1 msgid "Contact" msgstr "Contato" -#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:13 msgid "Contact Information" msgstr "Informações do Contato" -#: ../data/glade/vcard_information_window.glade.h:24 -#: ../data/glade/zeroconf_information_window.glade.h:4 -#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:416 -msgid "Jabber ID:" -msgstr "Jabber ID:" +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "Mais" -#: ../data/glade/vcard_information_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:33 msgid "OS:" msgstr "SO:" -#: ../data/glade/vcard_information_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:40 #: ../data/glade/zeroconf_information_window.glade.h:8 msgid "Resource:" msgstr "Recurso:" -#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/vcard_information_window.glade.h:43 #: ../data/glade/zeroconf_information_window.glade.h:9 msgid "Status:" msgstr "Status:" #. Family Name -#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/vcard_information_window.glade.h:46 msgid "Subscription:" msgstr "Inscrição:" +#: ../data/glade/vcard_information_window.glade.h:49 +msgid "User avatar:" +msgstr "Avatar do usuário:" + #: ../data/glade/xml_console_window.glade.h:1 msgid "<b>Jabber Traffic</b>" msgstr "<b>Trafégo do Jabber</b>" @@ -2362,11 +2542,6 @@ msgstr "<b>Trafégo do Jabber</b>" msgid "<b>XML Input</b>" msgstr "<b>Entrada XML</b>" -#. 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" @@ -2385,15 +2560,29 @@ msgstr "_Mensagem" msgid "_Presence" msgstr "_Presença" -#: ../data/glade/zeroconf_information_window.glade.h:3 -#: ../data/glade/zeroconf_properties_window.glade.h:6 -msgid "First Name:" -msgstr "Primeiro nome:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Adicionar Notificações Visuais" -#: ../data/glade/zeroconf_information_window.glade.h:5 -#: ../data/glade/zeroconf_properties_window.glade.h:14 -msgid "Last Name:" -msgstr "Último nome:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Atribuir chave OpenPGP" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2530 +msgid "Edit _Groups" +msgstr "Editar _Grupos" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2887 +msgid "_Rename" +msgstr "_Renomear" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Alterar Conta..." #: ../data/glade/zeroconf_information_window.glade.h:6 msgid "Local jid:" @@ -2403,244 +2592,283 @@ msgstr "JID local:" msgid "Personal" msgstr "Pessoal" -#: ../data/glade/zeroconf_properties_window.glade.h:11 -msgid "" -"If the default port that is used for incoming messages is unfitting for your " -"setup you can select another one here.\n" -"You might consider to change possible firewall settings." -msgstr "" -"Se a porta padrão usada para recebimento de mensagens não for adequada você " -"pode selecionar outra aqui.\n" -"Considere a possÃvel modificação das regras do seu firewall. " - #: ../data/glade/zeroconf_properties_window.glade.h:15 msgid "Modify Account" msgstr "Alterar Conta" -#: ../data/glade/zeroconf_properties_window.glade.h:21 -msgid "Use custom port:" -msgstr "Usar servidor/porta personalizado" - #. For i18n -#: ../src/advanced.py:51 +#: ../src/advanced.py:56 msgid "Activated" msgstr "Ativado" -#: ../src/advanced.py:51 +#: ../src/advanced.py:56 msgid "Deactivated" msgstr "Desativado" -#: ../src/advanced.py:53 +#: ../src/advanced.py:58 msgid "Boolean" msgstr "Booleano" -#: ../src/advanced.py:54 +#: ../src/advanced.py:59 msgid "Integer" msgstr "Inteiro" -#: ../src/advanced.py:55 +#: ../src/advanced.py:60 msgid "Text" msgstr "Texto" -#: ../src/advanced.py:56 +#: ../src/advanced.py:61 msgid "Color" msgstr "Cor" -#: ../src/advanced.py:65 +#: ../src/advanced.py:70 msgid "Preference Name" msgstr "Nome da preferência" -#: ../src/advanced.py:71 +#: ../src/advanced.py:76 msgid "Value" msgstr "Valor" -#: ../src/advanced.py:79 +#: ../src/advanced.py:84 msgid "Type" msgstr "Tipo" #. we talk about option description in advanced configuration editor -#: ../src/advanced.py:136 +#: ../src/advanced.py:140 msgid "(None)" msgstr "(Nada)" #. we talk about password -#: ../src/advanced.py:239 +#: ../src/advanced.py:243 msgid "Hidden" msgstr "Escondido" #. 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) +#. LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done) #. echo "{_('en'):'en'",$LANG"}" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "English" msgstr "Inglês" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Belarusian" msgstr "Bielorusso" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Bulgarian" msgstr "Búlgaro" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Breton" msgstr "Bretão" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Czech" msgstr "Tcheco" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "German" msgstr "Alemão" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Greek" msgstr "Grego" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "British" msgstr "Inglês Britânico" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Esperanto" msgstr "Esperanto" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Spanish" msgstr "Espanhol" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Basque" msgstr "Basco" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "French" msgstr "Francês" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Croatian" msgstr "Croata" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Italian" msgstr "Italiano" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Norwegian (b)" msgstr "Norueguês (b)" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Dutch" msgstr "Holandês" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Norwegian" msgstr "Norueguês" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Polish" msgstr "Polonês" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Portuguese" msgstr "Português" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Brazilian Portuguese" msgstr "Português Brasileiro" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Russian" msgstr "Russo" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Serbian" msgstr "Sérvio" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Slovak" msgstr "Eslovaco" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Swedish" msgstr "Sueco" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Chinese (Ch)" msgstr "Chinês (Ch)" -#: ../src/chat_control.py:212 ../src/dialogs.py:1706 -msgid "" -"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" -"\n" -"Highlighting misspelled words feature will not be used" -msgstr "" -"Se este não for o idioma para o qual você quer destacar palavras incorretas, " -"por favor, configure a sua variável de ambiente $LANG com o valor " -"apropriado. Por exemplo, para o francês exporte LANG=fr_FR ou exporte " -"LANG=fr_FR.UTF-8 em ~/.bash_profile ou coloca-lo \n" -" globalmente em/etc/profile.\n" -"Caracteristica de destacar palavras erradas não será usada" - -#: ../src/chat_control.py:251 +#: ../src/chat_control2.py:310 ../src/chat_control.py:313 msgid "Spelling language" msgstr "Idioma do corretor ortográfico" #. we are not connected -#: ../src/chat_control.py:274 ../src/chat_control.py:480 +#: ../src/chat_control2.py:333 ../src/chat_control2.py:549 +#: ../src/chat_control.py:336 ../src/chat_control.py:559 msgid "A connection is not available" msgstr "Uma conexão não está disponÃvel" -#: ../src/chat_control.py:275 ../src/chat_control.py:481 +#: ../src/chat_control2.py:334 ../src/chat_control2.py:550 +#: ../src/chat_control.py:337 ../src/chat_control.py:560 msgid "Your message can not be sent until you are connected." msgstr "Sua mensagem não pode ser enviada até que esteja conectado." -#: ../src/chat_control.py:1054 +#: ../src/chat_control2.py:1176 ../src/chat_control.py:1186 #, python-format msgid "%(nickname)s from group chat %(room_name)s" msgstr "%(nickname)s da conferência %(room_name)s" #. we talk about a contact here -#: ../src/chat_control.py:1143 +#: ../src/chat_control2.py:1271 ../src/chat_control.py:1282 #, python-format msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" msgstr "%s não tem a transmissão uma chave de OpenPGP, nem uma foi atribuÃda" -#: ../src/chat_control.py:1275 +#: ../src/chat_control2.py:1314 ../src/chat_control.py:1325 +#: ../src/groupchat_control.py:1433 +#, 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)" + +#: ../src/chat_control2.py:1321 ../src/chat_control.py:1332 +#: ../src/groupchat_control.py:1456 +#, python-format +msgid "Commands: %s" +msgstr "Comandos: %s" + +#: ../src/chat_control2.py:1324 ../src/chat_control.py:1335 +#: ../src/groupchat_control.py:1470 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "Uso: /%s, apaga o texto da janela." + +#: ../src/chat_control2.py:1327 ../src/chat_control.py:1338 +#: ../src/groupchat_control.py:1475 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "Uso: /%s, esconde os botões do bate-papo." + +#: ../src/chat_control2.py:1330 ../src/chat_control.py:1341 +#: ../src/groupchat_control.py:1491 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Uso: /%s <ação>, emite a ação à sala atual. Use a terceira pessoa (por " +"exemplo: /%s explodes.)" + +#: ../src/chat_control2.py:1334 ../src/chat_control.py:1345 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "Uso: /%s, envia um ping para o contato" + +#: ../src/chat_control2.py:1337 ../src/chat_control.py:1348 +#, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "Uso: /%s, envia a mensagem para o contato" + +#: ../src/chat_control2.py:1340 ../src/chat_control.py:1351 +#: ../src/groupchat_control.py:1514 +#, python-format +msgid "No help info for /%s" +msgstr "Sem ajuda para /%s" + +#: ../src/chat_control2.py:1478 ../src/chat_control2.py:1504 +#: ../src/chat_control.py:1489 ../src/chat_control.py:1515 msgid "Encryption enabled" msgstr "Criptografia habilitada" -#: ../src/chat_control.py:1280 +#: ../src/chat_control2.py:1483 ../src/chat_control.py:1494 +msgid "Session WILL be logged" +msgstr "A sessão SERà gravada" + +#: ../src/chat_control2.py:1485 ../src/chat_control.py:1496 +msgid "Session WILL NOT be logged" +msgstr "A sessão NÃO SERà gravada" + +#: ../src/chat_control2.py:1492 ../src/chat_control.py:1503 +msgid "The following message was NOT encrypted" +msgstr "A seguinte mensagem NÃO estava criptografada" + +#: ../src/chat_control2.py:1496 ../src/chat_control2.py:1509 +#: ../src/chat_control2.py:2155 ../src/chat_control.py:1507 +#: ../src/chat_control.py:1520 ../src/chat_control.py:2166 msgid "Encryption disabled" msgstr "Criptografia desabilitada" #. add_to_roster_menuitem -#: ../src/chat_control.py:1425 ../src/conversation_textview.py:502 -#: ../src/dialogs.py:629 ../src/gajim.py:850 ../src/gajim.py:851 -#: ../src/gajim.py:1196 ../src/roster_window.py:333 -#: ../src/roster_window.py:411 ../src/roster_window.py:1497 -#: ../src/roster_window.py:1507 ../src/roster_window.py:1686 -#: ../src/roster_window.py:1892 ../src/roster_window.py:2477 -#: ../src/roster_window.py:2678 ../src/roster_window.py:3924 -#: ../src/roster_window.py:3926 ../src/common/contacts.py:73 -#: ../src/common/helpers.py:43 ../src/common/helpers.py:255 +#: ../src/chat_control2.py:1672 ../src/chat_control.py:1683 +#: ../src/conversation_textview.py:705 ../src/dialogs.py:732 +#: ../src/gajim.py:911 ../src/gajim.py:912 ../src/gajim.py:1436 +#: ../src/gajim.py:1687 ../src/roster_window.py:358 +#: ../src/roster_window.py:442 ../src/roster_window.py:1822 +#: ../src/roster_window.py:1832 ../src/roster_window.py:2072 +#: ../src/roster_window.py:2308 ../src/roster_window.py:3158 +#: ../src/roster_window.py:3397 ../src/roster_window.py:4759 +#: ../src/roster_window.py:4761 ../src/common/contacts.py:89 +#: ../src/common/helpers.py:53 ../src/common/helpers.py:267 msgid "Not in Roster" msgstr "Fora da lista" #. %s is being replaced in the code with JID -#: ../src/chat_control.py:1571 +#: ../src/chat_control2.py:1825 ../src/chat_control.py:1836 #, python-format msgid "You just received a new message from \"%s\"" msgstr "Você acabou de receber uma nova mensagem de \"%s\"" -#: ../src/chat_control.py:1572 +#: ../src/chat_control2.py:1826 ../src/chat_control.py:1837 msgid "" "If you close this tab and you have history disabled, this message will be " "lost." @@ -2648,29 +2876,32 @@ msgstr "" "Se você fechar esta aba e o histórico estiver desabilitado, esta mensagem " "será perdida." -#: ../src/config.py:139 ../src/config.py:588 +#: ../src/config.py:127 ../src/config.py:565 msgid "Disabled" msgstr "Desabilitado" -#: ../src/config.py:233 -#, python-format -msgid "Every %s _minutes" -msgstr "A cada %s _minutos" - -#: ../src/config.py:353 +#: ../src/config.py:293 msgid "Active" msgstr "Ativo" -#: ../src/config.py:361 +#: ../src/config.py:301 msgid "Event" msgstr "Evento" -#: ../src/config.py:684 ../src/gajim.py:2263 +#: ../src/config.py:407 +msgid "Always use OS/X default applications" +msgstr "Sempre usar as aplicações padrões do OS/X" + +#: ../src/config.py:408 +msgid "Custom" +msgstr "Personalizar" + +#: ../src/config.py:638 ../src/dialogs.py:1018 #, python-format msgid "Dictionary for lang %s not available" msgstr "O dicionário para o idioma %s não está disponÃvel" -#: ../src/config.py:685 ../src/gajim.py:2264 +#: ../src/config.py:639 #, python-format msgid "" "You have to install %s dictionary to use spellchecking, or choose another " @@ -2679,71 +2910,103 @@ msgstr "" "Você precisa instalar o dicionário %s para usar a correção ortográfica ou " "selecionar outro idioma ajustando a opção 'speller_language'." -#: ../src/config.py:1008 +#: ../src/config.py:1001 msgid "status message title" msgstr "tÃtulo da mensagem de status" -#: ../src/config.py:1008 +#: ../src/config.py:1001 msgid "status message text" msgstr "texto da mensagem de status" -#: ../src/config.py:1044 +#: ../src/config.py:1037 msgid "First Message Received" msgstr "Primeira Mensagem Recebida" -#: ../src/config.py:1045 +#: ../src/config.py:1038 msgid "Next Message Received" msgstr "Nova Mensagem Recebida" -#: ../src/config.py:1046 +#: ../src/config.py:1039 msgid "Contact Connected" msgstr "Contato Conectado" -#: ../src/config.py:1047 +#: ../src/config.py:1040 msgid "Contact Disconnected" msgstr "Contato Desconectou" -#: ../src/config.py:1048 +#: ../src/config.py:1041 msgid "Message Sent" msgstr "Mensagem Enviada" -#: ../src/config.py:1049 +#: ../src/config.py:1042 msgid "Group Chat Message Highlight" msgstr "Mensagem Destacada de Conferência" -#: ../src/config.py:1050 +#: ../src/config.py:1043 msgid "Group Chat Message Received" msgstr "Mensagem de Conferência Recebida" -#: ../src/config.py:1057 +#: ../src/config.py:1050 msgid "GMail Email Received" msgstr "Email do Gmail Recebido" -#: ../src/config.py:1260 +#. Name column +#: ../src/config.py:1319 ../src/dialogs.py:1517 ../src/dialogs.py:1581 +#: ../src/disco.py:743 ../src/disco.py:1569 ../src/disco.py:1815 +#: ../src/history_window.py:113 +msgid "Name" +msgstr "Nome" + +#: ../src/config.py:1425 ../src/common/config.py:393 +msgid "Be right back." +msgstr "Estou de volta." + +#: ../src/config.py:1429 +msgid "Relogin now?" +msgstr "Re-autenticar agora?" + +#: ../src/config.py:1430 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "Se você quer aplicar todas as mudanças, deve se re-autenticar." + +#: ../src/config.py:1525 ../src/config.py:1616 msgid "OpenPGP is not usable in this computer" msgstr "OpenPGP não disponÃvel neste computador" -#: ../src/config.py:1306 +#: ../src/config.py:1652 ../src/config.py:1693 +msgid "Unread events" +msgstr "Eventos não lidos" + +#: ../src/config.py:1653 +msgid "Read all pending events before removing this account." +msgstr "Ler todos os eventos pendentes antes de remover esta conta." + +#: ../src/config.py:1679 +#, python-format +msgid "You have opened chat in account %s" +msgstr "Você iniciou uma conversa usando a conta %s" + +#: ../src/config.py:1680 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "Todas as janelas de conversa e conferência serão fechadas. Confirma?" + +#: ../src/config.py:1689 msgid "You are currently connected to the server" msgstr "Você está atualmente conectado ao servidor" -#: ../src/config.py:1307 +#: ../src/config.py:1690 msgid "To change the account name, you must be disconnected." msgstr "Para mudar o nome da conta, você deve estar disconectado." -#: ../src/config.py:1310 ../src/config.py:1916 -msgid "Unread events" -msgstr "Eventos não lidos" - -#: ../src/config.py:1311 +#: ../src/config.py:1694 msgid "To change the account name, you must read all pending events." msgstr "Para mudar o nome da conta, você deve ler todas os eventos pendentes." -#: ../src/config.py:1315 +#: ../src/config.py:1700 msgid "Account Name Already Used" msgstr "Nome de conta já está em uso" -#: ../src/config.py:1316 +#: ../src/config.py:1701 msgid "" "This name is already used by another of your accounts. Please choose another " "name." @@ -2751,174 +3014,147 @@ msgstr "" "Este nome já está sendo usado por outra de suas contas. Por favor, escolha " "outro nome." -#: ../src/config.py:1320 ../src/config.py:1324 +#: ../src/config.py:1705 ../src/config.py:1709 msgid "Invalid account name" msgstr "Nome de conta inválido" -#: ../src/config.py:1321 +#: ../src/config.py:1706 msgid "Account name cannot be empty." msgstr "Nome da conta não pode ser vazio." -#: ../src/config.py:1325 +#: ../src/config.py:1710 msgid "Account name cannot contain spaces." msgstr "Nome da conta não pode conter espaços." -#: ../src/config.py:1333 ../src/config.py:1339 ../src/config.py:1349 -#: ../src/config.py:2900 +#: ../src/config.py:1774 +msgid "Rename Account" +msgstr "Renomear Conta" + +#: ../src/config.py:1775 +#, python-format +msgid "Enter a new name for account %s" +msgstr "Entre com um novo nome para a conta %s" + +#: ../src/config.py:1793 ../src/config.py:1801 ../src/config.py:1841 +#: ../src/config.py:3048 ../src/dataforms_widget.py:533 msgid "Invalid Jabber ID" msgstr "Jabber ID Inválido:" -#: ../src/config.py:1340 +#: ../src/config.py:1802 msgid "A Jabber ID must be in the form \"user@servername\"." msgstr "Um Jabber ID deve ter o seguinte formato \"usuário@nomedoservidor\"." -#: ../src/config.py:1399 +#: ../src/config.py:1988 ../src/config.py:3119 msgid "Invalid entry" msgstr "Entrada inválida" -#: ../src/config.py:1400 +#: ../src/config.py:1989 ../src/config.py:3120 msgid "Custom port must be a port number." msgstr "A porta do proxy deve ser um número de porta." -#: ../src/config.py:1528 ../src/common/config.py:367 -msgid "Be right back." -msgstr "Estou de volta." +#: ../src/config.py:2010 +msgid "Failed to get secret keys" +msgstr "Falha enquanto recebia as chaves secretas" -#: ../src/config.py:1538 -msgid "Relogin now?" -msgstr "Re-autenticar agora?" +#: ../src/config.py:2011 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "Houve um problema no recebimento de suas chaves secretas OpenPGP." -#: ../src/config.py:1539 -msgid "If you want all the changes to apply instantly, you must relogin." -msgstr "Se você quer aplicar todas as mudanças, deve se re-autenticar." +#: ../src/config.py:2014 +msgid "OpenPGP Key Selection" +msgstr "Seleção de Chave OpenPGP" + +#: ../src/config.py:2015 +msgid "Choose your OpenPGP key" +msgstr "Escolha sua chave OpenPGP" -#: ../src/config.py:1565 +#: ../src/config.py:2055 msgid "No such account available" msgstr "Conta não disponÃvel" -#: ../src/config.py:1566 +#: ../src/config.py:2056 msgid "You must create your account before editing your personal information." msgstr "" "Você deve primeiro criar sua conta antes de editar suas informações pessoais." -#: ../src/config.py:1573 ../src/dialogs.py:1190 ../src/dialogs.py:1326 -#: ../src/dialogs.py:1506 ../src/disco.py:420 ../src/profile_window.py:323 +#: ../src/config.py:2063 ../src/dialogs.py:1364 ../src/dialogs.py:1505 +#: ../src/dialogs.py:1685 ../src/disco.py:427 ../src/profile_window.py:318 msgid "You are not connected to the server" msgstr "Você não está conectado ao servidor" -#: ../src/config.py:1574 +#: ../src/config.py:2064 msgid "Without a connection, you can not edit your personal information." msgstr "Você deve estar conectado para editar suas informações pessoais." -#: ../src/config.py:1578 +#: ../src/config.py:2068 msgid "Your server doesn't support Vcard" msgstr "Seu servidor não suporta Vcard" -#: ../src/config.py:1579 +#: ../src/config.py:2069 msgid "Your server can't save your personal information." msgstr "Seu servidor não pode salvar suas informações pessoais." -#: ../src/config.py:1610 ../src/config.py:3288 -msgid "Failed to get secret keys" -msgstr "Falha enquanto recebia as chaves secretas" - -#: ../src/config.py:1611 ../src/config.py:3289 -msgid "There was a problem retrieving your OpenPGP secret keys." -msgstr "Houve um problema no recebimento de suas chaves secretas OpenPGP." - -#: ../src/config.py:1614 ../src/config.py:3292 -msgid "OpenPGP Key Selection" -msgstr "Seleção de Chave OpenPGP" - -#: ../src/config.py:1615 ../src/config.py:3293 -msgid "Choose your OpenPGP key" -msgstr "Escolha sua chave OpenPGP" - -#. Name column -#: ../src/config.py:1850 ../src/dialogs.py:1338 ../src/dialogs.py:1402 -#: ../src/disco.py:741 ../src/disco.py:1564 ../src/disco.py:1802 -#: ../src/history_window.py:78 -msgid "Name" -msgstr "Nome" - -#: ../src/config.py:1853 ../src/dialogs.py:1341 -msgid "Server" -msgstr "Servidor" - -#: ../src/config.py:1917 -msgid "Read all pending events before removing this account." -msgstr "Ler todos os eventos pendentes antes de remover esta conta." - -#: ../src/config.py:1954 -#, python-format -msgid "You have opened chat in account %s" -msgstr "Você iniciou uma conversa usando a conta %s" - -#: ../src/config.py:1955 -msgid "All chat and groupchat windows will be closed. Do you want to continue?" -msgstr "Todas as janelas de conversa e conferência serão fechadas. Confirma?" - -#: ../src/config.py:2014 +#: ../src/config.py:2100 msgid "Account Local already exists." msgstr "Conta local já existe." -#: ../src/config.py:2015 +#: ../src/config.py:2101 msgid "Please rename or remove it before enabling link-local messaging." msgstr "" "Por favor renomeie ou remova-o antes de ativar troca de mensagens \"link-" "local\"." -#: ../src/config.py:2111 +#: ../src/config.py:2277 #, python-format msgid "Edit %s" msgstr "_Editar %s" -#: ../src/config.py:2113 +#: ../src/config.py:2279 #, python-format msgid "Register to %s" msgstr "Registro para %s" #. list at the beginning -#: ../src/config.py:2179 +#: ../src/config.py:2315 msgid "Ban List" msgstr "Lista de Banidos" -#: ../src/config.py:2180 +#: ../src/config.py:2316 msgid "Member List" msgstr "Lista de Membros" -#: ../src/config.py:2181 +#: ../src/config.py:2317 msgid "Owner List" msgstr "Lista de Donos" -#: ../src/config.py:2182 +#: ../src/config.py:2318 msgid "Administrator List" msgstr "Lista de Administradores" #. Address column #. holds JID (who said this) -#: ../src/config.py:2231 ../src/disco.py:748 ../src/history_manager.py:155 +#: ../src/config.py:2367 ../src/disco.py:750 ../src/history_manager.py:160 msgid "JID" msgstr "JID" -#: ../src/config.py:2239 +#: ../src/config.py:2375 msgid "Reason" msgstr "Razão" -#: ../src/config.py:2244 +#: ../src/config.py:2380 msgid "Nick" msgstr "Apelido" -#: ../src/config.py:2248 +#: ../src/config.py:2384 msgid "Role" msgstr "Lista" -#: ../src/config.py:2273 +#: ../src/config.py:2409 msgid "Banning..." msgstr "Banindo..." #. You can move '\n' before user@domain if that line is TOO BIG -#: ../src/config.py:2275 +#: ../src/config.py:2411 msgid "" "<b>Whom do you want to ban?</b>\n" "\n" @@ -2926,11 +3162,11 @@ msgstr "" "<b>Quem você quer banir?</b>\n" "\n" -#: ../src/config.py:2277 +#: ../src/config.py:2413 msgid "Adding Member..." msgstr "Adicionando Membro..." -#: ../src/config.py:2278 +#: ../src/config.py:2414 msgid "" "<b>Whom do you want to make a member?</b>\n" "\n" @@ -2938,11 +3174,11 @@ msgstr "" "<b>Quem você quer fazer como membro?</b>\n" "\n" -#: ../src/config.py:2280 +#: ../src/config.py:2416 msgid "Adding Owner..." msgstr "Adicionando Proprietário..." -#: ../src/config.py:2281 +#: ../src/config.py:2417 msgid "" "<b>Whom do you want to make an owner?</b>\n" "\n" @@ -2950,11 +3186,11 @@ msgstr "" "<b>Quem você quer tornar um dono?</b>\n" "\n" -#: ../src/config.py:2283 +#: ../src/config.py:2419 msgid "Adding Administrator..." msgstr "Adicionando Administrador..." -#: ../src/config.py:2284 +#: ../src/config.py:2420 msgid "" "<b>Whom do you want to make an administrator?</b>\n" "\n" @@ -2962,7 +3198,7 @@ msgstr "" "<b>Quem você quer tornar um administrador?</b>\n" "\n" -#: ../src/config.py:2285 +#: ../src/config.py:2421 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -2978,101 +3214,85 @@ 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:2389 +#: ../src/config.py:2525 #, python-format msgid "Removing %s account" msgstr "Removendo %s conta" -#: ../src/config.py:2406 ../src/roster_window.py:2737 +#: ../src/config.py:2540 ../src/gajim.py:1343 ../src/roster_window.py:3455 msgid "Password Required" msgstr "Senha é obrigatória" -#: ../src/config.py:2407 ../src/roster_window.py:2733 +#: ../src/config.py:2541 ../src/roster_window.py:3451 #, python-format msgid "Enter your password for account %s" msgstr "Entre com a senha para conta %s" -#: ../src/config.py:2408 ../src/roster_window.py:2738 +#: ../src/config.py:2542 ../src/roster_window.py:3456 msgid "Save password" msgstr "Salvar senha" -#: ../src/config.py:2422 +#: ../src/config.py:2555 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Conta \"%s\" está conectada ao servidor" -#: ../src/config.py:2423 +#: ../src/config.py:2556 msgid "If you remove it, the connection will be lost." msgstr "Se você remover-lo, a conexão será perdida." -#: ../src/config.py:2508 +#: ../src/config.py:2649 msgid "Default" msgstr "Padrão" -#: ../src/config.py:2508 +#: ../src/config.py:2649 msgid "?print_status:All" msgstr "?exibir_status:Todos" -#: ../src/config.py:2509 +#: ../src/config.py:2650 msgid "Enter and leave only" msgstr "Apenas entre e saia" -#: ../src/config.py:2510 +#: ../src/config.py:2651 msgid "?print_status:None" msgstr "?exibir_status:Nenhum" -#: ../src/config.py:2578 +#: ../src/config.py:2720 msgid "New Group Chat" msgstr "Nova Conferência" -#: ../src/config.py:2611 +#: ../src/config.py:2753 msgid "This bookmark has invalid data" msgstr "Bookmark tem dados inválidos" -#: ../src/config.py:2612 +#: ../src/config.py:2754 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:2875 +#: ../src/config.py:3031 msgid "Invalid username" msgstr "Nome de usuário inválido" -#: ../src/config.py:2876 +#: ../src/config.py:3033 msgid "You must provide a username to configure this account." msgstr "Você deve entrar com um nome para configurar esta conta." -#: ../src/config.py:2886 ../src/dialogs.py:1525 -msgid "Invalid password" -msgstr "Senha Inválida" - -#: ../src/config.py:2887 -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:2891 ../src/dialogs.py:1530 -msgid "Passwords do not match" -msgstr "Senhas não conferem" - -#: ../src/config.py:2892 ../src/dialogs.py:1531 -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:2911 +#: ../src/config.py:3059 msgid "Duplicate Jabber ID" msgstr "Jabber ID Duplicado" -#: ../src/config.py:2912 +#: ../src/config.py:3060 msgid "This account is already configured in Gajim." msgstr "Esta conta já está configurada no Gajim." -#: ../src/config.py:2929 +#: ../src/config.py:3077 msgid "Account has been added successfully" msgstr "Conta foi adicionada com sucesso" -#: ../src/config.py:2930 ../src/config.py:2965 +#: ../src/config.py:3078 ../src/config.py:3223 msgid "" "You can set advanced account options by pressing the Advanced button, or " "later by choosing the Accounts menuitem under the Edit menu from the main " @@ -3082,23 +3302,31 @@ msgstr "" "Avançado, ou mais tarde clicando em Contas no menu Editar da janela " "principal." -#: ../src/config.py:2964 -msgid "Your new account has been created successfully" -msgstr "Sua nova conta foi criada com sucesso" +#: ../src/config.py:3095 +msgid "Invalid server" +msgstr "Servidor inválido" -#: ../src/config.py:2982 +#: ../src/config.py:3096 +msgid "Please provide a server on which you want to register." +msgstr "Por favor, forneça um servidor no qual você queira se registrar." + +#: ../src/config.py:3202 ../src/config.py:3241 msgid "An error occurred during account creation" msgstr "Um erro ocorreu durante a criação da conta" -#: ../src/config.py:3040 +#: ../src/config.py:3222 +msgid "Your new account has been created successfully" +msgstr "Sua nova conta foi criada com sucesso" + +#: ../src/config.py:3325 msgid "Account name is in use" msgstr "Nome de conta em uso" -#: ../src/config.py:3041 +#: ../src/config.py:3326 msgid "You already have an account using this name." msgstr "Você já tem uma conta usando este nome." -#: ../src/conversation_textview.py:280 +#: ../src/conversation_textview.py:454 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -3106,191 +3334,220 @@ 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:349 +#: ../src/conversation_textview.py:552 #, python-format msgid "_Actions for \"%s\"" msgstr "_Ações para \"%s\"" -#: ../src/conversation_textview.py:361 +#: ../src/conversation_textview.py:564 msgid "Read _Wikipedia Article" msgstr "Ler Artigo da _Wikipedia" -#: ../src/conversation_textview.py:366 +#: ../src/conversation_textview.py:569 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:382 +#: ../src/conversation_textview.py:585 #, 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:395 +#: ../src/conversation_textview.py:598 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL de Procura na Web não existe \"%s\"" -#: ../src/conversation_textview.py:398 +#: ../src/conversation_textview.py:601 msgid "Web _Search for it" msgstr "_Procura na Web por isto" -#: ../src/conversation_textview.py:404 +#: ../src/conversation_textview.py:607 msgid "Open as _Link" msgstr "Abrir como _Link" -#: ../src/conversation_textview.py:765 +#: ../src/conversation_textview.py:1073 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:769 +#: ../src/conversation_textview.py:1077 #, python-format msgid "%i days ago" msgstr "%i dias atrás" #. if we have subject, show it too! -#: ../src/conversation_textview.py:803 +#: ../src/conversation_textview.py:1111 #, python-format msgid "Subject: %s\n" msgstr "Assunto: %s\n" -#: ../src/dialogs.py:59 +#: ../src/dataforms_widget.py:537 +msgid "Jabber ID already in list" +msgstr "Jabber ID já existente na lista" + +#: ../src/dataforms_widget.py:538 +msgid "The Jabber ID you entered is already in the list. Choose another one." +msgstr "O Jabber ID que você forneceu já está na lista. Escolha outro." + +#. Default jid +#: ../src/dataforms_widget.py:549 +msgid "new@jabber.id" +msgstr "novo@jabber.id" + +#: ../src/dataforms_widget.py:552 ../src/dataforms_widget.py:554 +#, python-format +msgid "new%d@jabber.id" +msgstr "novo%d@jabber.id" + +#: ../src/dialogs.py:71 #, python-format msgid "Contact name: <i>%s</i>" msgstr "Nome do Contato: <i>%s</i>" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: <i>%s</i>" msgstr "Jabber ID: <i>%s</i>" -#: ../src/dialogs.py:211 +#: ../src/dialogs.py:223 msgid "Group" msgstr "Grupo" -#: ../src/dialogs.py:218 +#: ../src/dialogs.py:230 msgid "In the group" msgstr "Neste grupo" -#: ../src/dialogs.py:269 +#: ../src/dialogs.py:330 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:272 +#: ../src/dialogs.py:335 msgid "Contact name" msgstr "Nome do Contato" -#: ../src/dialogs.py:318 +#: ../src/dialogs.py:381 #, python-format msgid "%s Status Message" msgstr "%s Mensagem de status" -#: ../src/dialogs.py:320 +#: ../src/dialogs.py:383 msgid "Status Message" msgstr "Mensagem de status" -#: ../src/dialogs.py:395 +#: ../src/dialogs.py:483 msgid "Save as Preset Status Message" msgstr "Salvar como a mensagem de status pré-configurada" -#: ../src/dialogs.py:396 +#: ../src/dialogs.py:484 msgid "Please type a name for this status message" msgstr "Por favor, escreva um nome para esta mensagem de status" -#: ../src/dialogs.py:417 +#: ../src/dialogs.py:495 +msgid "Overwrite Status Message?" +msgstr "Sobrescrever Mensagem de Status?" + +#: ../src/dialogs.py:496 +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "" +"Este nome já está sendo usado. Você quer sobrescrever essa mensagem de " +"status?" + +#: ../src/dialogs.py:512 msgid "AIM Address:" msgstr "Endereço AIM:" -#: ../src/dialogs.py:418 +#: ../src/dialogs.py:513 msgid "GG Number:" msgstr "Número de GG:" -#: ../src/dialogs.py:419 +#: ../src/dialogs.py:514 msgid "ICQ Number:" msgstr "Número de ICQ:" -#: ../src/dialogs.py:420 +#: ../src/dialogs.py:515 msgid "MSN Address:" msgstr "Endereço MSN:" -#: ../src/dialogs.py:421 +#: ../src/dialogs.py:516 msgid "Yahoo! Address:" msgstr "Endereço Yahoo!:" -#: ../src/dialogs.py:457 +#: ../src/dialogs.py:553 #, 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" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:555 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" -#: ../src/dialogs.py:609 ../src/dialogs.py:615 +#: ../src/dialogs.py:712 ../src/dialogs.py:718 msgid "Invalid User ID" msgstr "Inválido ID do usuário" -#: ../src/dialogs.py:616 +#: ../src/dialogs.py:719 msgid "The user ID must not contain a resource." msgstr "O ID do usuário não contém um recurso." -#: ../src/dialogs.py:630 +#: ../src/dialogs.py:733 msgid "Contact already in roster" msgstr "Contato já foi adicionado à lista" -#: ../src/dialogs.py:631 +#: ../src/dialogs.py:734 msgid "This contact is already listed in your roster." msgstr "Este contato já encontra-se em sua lista." -#: ../src/dialogs.py:668 +#: ../src/dialogs.py:770 msgid "User ID:" msgstr "ID do Usuário:" -#: ../src/dialogs.py:731 +#: ../src/dialogs.py:832 msgid "A GTK+ jabber client" msgstr "Um cliente jabber GTK+" -#: ../src/dialogs.py:732 +#: ../src/dialogs.py:833 msgid "GTK+ Version:" msgstr "Versão do GTK+:" -#: ../src/dialogs.py:733 +#: ../src/dialogs.py:834 msgid "PyGTK Version:" msgstr "Versão do PyGTK:" -#: ../src/dialogs.py:747 +#: ../src/dialogs.py:848 msgid "Current Developers:" msgstr "Desenvolvedores Atuais:" -#: ../src/dialogs.py:749 +#: ../src/dialogs.py:850 msgid "Past Developers:" msgstr "Desenvolvedores Passados:" -#: ../src/dialogs.py:759 +#: ../src/dialogs.py:860 msgid "THANKS:" msgstr "AGRADECIMENTOS:" #. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:765 +#: ../src/dialogs.py:866 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 <someone@somewhere> -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:879 msgid "translator-credits" msgstr "" "Alfredo Jr. - Junix <junix@infolink.com.br> e Juracy Filho <juracy@gmail.com>" -#: ../src/dialogs.py:908 +#: ../src/dialogs.py:1011 #, python-format msgid "Unable to bind to port %s." msgstr "ImpossÃvel conectar à porta %s." -#: ../src/dialogs.py:909 +#: ../src/dialogs.py:1012 msgid "" "Maybe you have another running instance of Gajim. File Transfer will be " "cancelled." @@ -3298,76 +3555,93 @@ msgstr "" "Talvez haja uma outra instância do Gajim em execução. A Transferência de " "Arquivos será cancelada." -#: ../src/dialogs.py:1120 +#: ../src/dialogs.py:1019 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"Você precisa instalar o dicionário %s para usar a correção ortográfica ou " +"selecionar outro idioma definindo a opção speller_language.\n" +"\n" +"O recurso de destacar palavras grafadas incorretamente não será usado" + +#: ../src/dialogs.py:1293 #, python-format msgid "Subscription request for account %s from %s" msgstr "Solicitação de inscrição para conta %s de %s" -#: ../src/dialogs.py:1123 +#: ../src/dialogs.py:1296 #, python-format msgid "Subscription request from %s" msgstr "Solicitação de inscrição de %s" -#: ../src/dialogs.py:1183 ../src/roster_window.py:687 +#: ../src/dialogs.py:1357 ../src/roster_window.py:776 #, python-format msgid "You are already in group chat %s" msgstr "Você já está na conferência %s" -#: ../src/dialogs.py:1191 +#: ../src/dialogs.py:1365 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." -#: ../src/dialogs.py:1206 +#: ../src/dialogs.py:1383 #, python-format msgid "Join Group Chat with account %s" msgstr "Ingressar numa conferência com a conta %s" -#: ../src/dialogs.py:1274 ../src/dialogs.py:1280 -#: ../src/groupchat_control.py:1475 +#: ../src/dialogs.py:1453 ../src/dialogs.py:1459 +#: ../src/groupchat_control.py:1683 msgid "Invalid group chat Jabber ID" msgstr "Jabber ID da conferência inválido:" -#: ../src/dialogs.py:1275 ../src/dialogs.py:1281 -#: ../src/groupchat_control.py:1476 +#: ../src/dialogs.py:1454 ../src/dialogs.py:1460 +#: ../src/groupchat_control.py:1684 msgid "The group chat Jabber ID has not allowed characters." msgstr "O Jabber ID da conferência possui caracteres não permitidos." -#: ../src/dialogs.py:1287 +#: ../src/dialogs.py:1466 msgid "This is not a group chat" msgstr "Isto não é uma conferência" -#: ../src/dialogs.py:1288 +#: ../src/dialogs.py:1467 #, python-format msgid "%s is not the name of a group chat." msgstr "%s não é o nome da conferência." -#: ../src/dialogs.py:1327 +#: ../src/dialogs.py:1506 msgid "Without a connection, you can not synchronise your contacts." msgstr "Sem uma conexão, você pode não sincronizar seus contatos." -#: ../src/dialogs.py:1374 +#: ../src/dialogs.py:1520 +msgid "Server" +msgstr "Servidor" + +#: ../src/dialogs.py:1553 msgid "This account is not connected to the server" msgstr "Esta conta não está conectada ao servidor" -#: ../src/dialogs.py:1375 +#: ../src/dialogs.py:1554 msgid "You cannot synchronize with an account unless it is connected." msgstr "Você não pode sincronizar com uma conta a menos que esteja conectado." -#: ../src/dialogs.py:1399 +#: ../src/dialogs.py:1578 msgid "Synchronise" msgstr "Sincronizar" -#: ../src/dialogs.py:1457 +#: ../src/dialogs.py:1636 #, python-format msgid "Start Chat with account %s" msgstr "Iniciar uma conferência com a conta %s" -#: ../src/dialogs.py:1459 +#: ../src/dialogs.py:1638 msgid "Start Chat" msgstr "Iniciar conversa" -#: ../src/dialogs.py:1460 +#: ../src/dialogs.py:1639 msgid "" "Fill in the nickname or the Jabber ID of the contact you would like\n" "to send a chat message to:" @@ -3376,451 +3650,726 @@ msgstr "" "você quer enviar uma messagem:" #. if offline or connecting -#: ../src/dialogs.py:1485 ../src/dialogs.py:1844 ../src/dialogs.py:1975 +#: ../src/dialogs.py:1664 ../src/dialogs.py:2040 ../src/dialogs.py:2181 msgid "Connection not available" msgstr "Conexão não disponÃvel" -#: ../src/dialogs.py:1486 ../src/dialogs.py:1845 ../src/dialogs.py:1976 +#: ../src/dialogs.py:1665 ../src/dialogs.py:2041 ../src/dialogs.py:2182 #, 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:1495 ../src/dialogs.py:1498 +#: ../src/dialogs.py:1674 ../src/dialogs.py:1677 msgid "Invalid JID" msgstr "JID inválido:" -#: ../src/dialogs.py:1498 +#: ../src/dialogs.py:1677 #, python-format msgid "Unable to parse \"%s\"." msgstr "ImpossÃvel gravar o arquivo em \"%s\"." -#: ../src/dialogs.py:1507 +#: ../src/dialogs.py:1686 msgid "Without a connection, you can not change your password." msgstr "Você deve estar contectado para mudar sua senha" -#: ../src/dialogs.py:1526 +#: ../src/dialogs.py:1704 +msgid "Invalid password" +msgstr "Senha Inválida" + +#: ../src/dialogs.py:1705 msgid "You must enter a password." msgstr "Você deve entrar com uma senha." +#: ../src/dialogs.py:1709 +msgid "Passwords do not match" +msgstr "Senhas não conferem" + +#: ../src/dialogs.py:1710 +msgid "The passwords typed in both fields must be identical." +msgstr "As senhas digitadas em ambos os campos devem ser idênticas." + #. img to display #. default value -#: ../src/dialogs.py:1573 ../src/notify.py:212 ../src/notify.py:416 +#: ../src/dialogs.py:1752 ../src/notify.py:232 ../src/notify.py:447 msgid "Contact Signed In" msgstr "Contato conectou" -#: ../src/dialogs.py:1575 ../src/notify.py:220 ../src/notify.py:418 +#: ../src/dialogs.py:1754 ../src/notify.py:240 ../src/notify.py:449 msgid "Contact Signed Out" msgstr "Contato desconectou" #. chat message -#: ../src/dialogs.py:1577 ../src/notify.py:239 ../src/notify.py:420 +#: ../src/dialogs.py:1756 ../src/notify.py:263 ../src/notify.py:451 msgid "New Message" msgstr "Nova Mensagem" #. single message -#: ../src/dialogs.py:1577 ../src/notify.py:224 ../src/notify.py:420 +#: ../src/dialogs.py:1756 ../src/notify.py:244 ../src/notify.py:451 msgid "New Single Message" msgstr "Nova Mensagem" #. private message -#: ../src/dialogs.py:1578 ../src/notify.py:231 ../src/notify.py:421 +#: ../src/dialogs.py:1757 ../src/notify.py:251 ../src/notify.py:452 msgid "New Private Message" msgstr "Enviar Mensagem Privada" -#: ../src/dialogs.py:1578 ../src/gajim.py:1291 ../src/notify.py:429 +#: ../src/dialogs.py:1757 ../src/gajim.py:1532 ../src/notify.py:460 msgid "New E-mail" msgstr "Novo E-Mail" -#: ../src/dialogs.py:1580 ../src/gajim.py:1444 ../src/notify.py:423 +#: ../src/dialogs.py:1759 ../src/gajim.py:1707 ../src/notify.py:454 msgid "File Transfer Request" msgstr "Solicitação de Transferência de Arquivos" -#: ../src/dialogs.py:1582 ../src/gajim.py:1263 ../src/gajim.py:1420 -#: ../src/notify.py:425 +#: ../src/dialogs.py:1761 ../src/gajim.py:1504 ../src/gajim.py:1674 +#: ../src/notify.py:456 msgid "File Transfer Error" msgstr "Erro na Transferência de Arquivos" -#: ../src/dialogs.py:1584 ../src/gajim.py:1483 ../src/gajim.py:1505 -#: ../src/gajim.py:1522 ../src/notify.py:427 +#: ../src/dialogs.py:1763 ../src/gajim.py:1746 ../src/gajim.py:1768 +#: ../src/gajim.py:1785 ../src/notify.py:458 msgid "File Transfer Completed" msgstr "Transferência do Arquivo Completa" -#: ../src/dialogs.py:1585 ../src/gajim.py:1486 ../src/notify.py:427 +#: ../src/dialogs.py:1764 ../src/gajim.py:1749 ../src/notify.py:458 msgid "File Transfer Stopped" msgstr "Transferência do Arquivo Parada" -#: ../src/dialogs.py:1587 ../src/gajim.py:1160 ../src/notify.py:431 +#: ../src/dialogs.py:1766 ../src/gajim.py:1364 ../src/notify.py:462 msgid "Groupchat Invitation" msgstr "Convite para Conferência" -#: ../src/dialogs.py:1589 ../src/notify.py:204 ../src/notify.py:433 +#: ../src/dialogs.py:1768 ../src/notify.py:224 ../src/notify.py:464 msgid "Contact Changed Status" msgstr "O Contato Alterou seu Status" -#: ../src/dialogs.py:1774 +#: ../src/dialogs.py:1959 #, python-format msgid "Single Message using account %s" msgstr "Mensagem Simples usando conta %s" -#: ../src/dialogs.py:1776 +#: ../src/dialogs.py:1961 #, python-format msgid "Single Message in account %s" msgstr "Mensagem Simples na conta %s" -#: ../src/dialogs.py:1778 +#: ../src/dialogs.py:1963 msgid "Single Message" msgstr "Mensagem simples" #. prepare UI for Sending -#: ../src/dialogs.py:1781 +#: ../src/dialogs.py:1966 #, python-format msgid "Send %s" msgstr "Enviar %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1804 +#: ../src/dialogs.py:1989 #, python-format msgid "Received %s" msgstr "Recebido %s" +#. prepare UI for Receiving +#: ../src/dialogs.py:2012 +#, python-format +msgid "Form %s" +msgstr "Formulário %s" + #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1876 +#: ../src/dialogs.py:2082 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1877 +#: ../src/dialogs.py:2083 #, python-format msgid "%s wrote:\n" msgstr "%s escreveu:\n" -#: ../src/dialogs.py:1921 +#: ../src/dialogs.py:2127 #, python-format msgid "XML Console for %s" msgstr "Console XML para %s" -#: ../src/dialogs.py:1923 +#: ../src/dialogs.py:2129 msgid "XML Console" msgstr "Console XML" -#: ../src/dialogs.py:2046 +#: ../src/dialogs.py:2252 #, python-format msgid "Privacy List <b><i>%s</i></b>" msgstr "Lista de Privacidade <b><i>%s</i></b>" -#: ../src/dialogs.py:2050 +#: ../src/dialogs.py:2256 #, python-format msgid "Privacy List for %s" msgstr "Lista de Privacidade para %s" -#: ../src/dialogs.py:2098 +#: ../src/dialogs.py:2312 #, python-format msgid "Order: %s, action: %s, type: %s, value: %s" msgstr "Ordem: %s, ação: %s tipo: %s, valor: %s" -#: ../src/dialogs.py:2101 +#: ../src/dialogs.py:2315 #, python-format msgid "Order: %s, action: %s" msgstr "Ordem: %s, ação: %s" -#: ../src/dialogs.py:2143 +#: ../src/dialogs.py:2357 msgid "<b>Edit a rule</b>" msgstr "<b>Editar uma regra</b>" -#: ../src/dialogs.py:2230 +#: ../src/dialogs.py:2444 msgid "<b>Add a rule</b>" msgstr "<b>Adicionar uma regra</b>" -#: ../src/dialogs.py:2326 +#: ../src/dialogs.py:2540 #, python-format msgid "Privacy Lists for %s" msgstr "Lista de Privacidade para %s" -#: ../src/dialogs.py:2328 +#: ../src/dialogs.py:2542 msgid "Privacy Lists" msgstr "Listas de Privacidade" -#: ../src/dialogs.py:2398 +#: ../src/dialogs.py:2612 msgid "Invalid List Name" msgstr "Nome de Lista Inválido" -#: ../src/dialogs.py:2399 +#: ../src/dialogs.py:2613 msgid "You must enter a name to create a privacy list." msgstr "Você deve digitar um nome para criar uma lista de privacidade." -#. Don't translate $Contact -#: ../src/dialogs.py:2433 +#: ../src/dialogs.py:2650 +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact convidou você para ingressar em uma discussão" + +#: ../src/dialogs.py:2652 #, python-format msgid "$Contact has invited you to group chat %(room_jid)s" msgstr "$Contact convidou você para entrar na conferência %(room_jid)s" -#. only if not None and not '' -#: ../src/dialogs.py:2445 +#: ../src/dialogs.py:2665 #, python-format msgid "Comment: %s" msgstr "Comentário: %s" -#: ../src/dialogs.py:2507 +#: ../src/dialogs.py:2731 msgid "Choose Sound" msgstr "Escolher Som" -#: ../src/dialogs.py:2517 ../src/dialogs.py:2562 +#: ../src/dialogs.py:2741 ../src/dialogs.py:2792 msgid "All files" msgstr "Todos os arquivos" -#: ../src/dialogs.py:2522 +#: ../src/dialogs.py:2746 msgid "Wav Sounds" msgstr "Sons Wav" -#: ../src/dialogs.py:2552 +#: ../src/dialogs.py:2779 msgid "Choose Image" msgstr "Escolha imagem" -#: ../src/dialogs.py:2567 +#: ../src/dialogs.py:2797 msgid "Images" msgstr "Imagens" -#: ../src/dialogs.py:2624 +#: ../src/dialogs.py:2862 #, python-format msgid "When %s becomes:" msgstr "Quando %s chega:" -#: ../src/dialogs.py:2626 +#: ../src/dialogs.py:2864 #, python-format msgid "Adding Special Notification for %s" msgstr "Adicionando Notificação Especial para %s" #. # means number -#: ../src/dialogs.py:2697 +#: ../src/dialogs.py:2935 msgid "#" msgstr "#" -#: ../src/dialogs.py:2703 +#: ../src/dialogs.py:2941 msgid "Condition" msgstr "Condição" -#: ../src/dialogs.py:2824 +#: ../src/dialogs.py:3059 msgid "when I am " msgstr "quando eu estiver" -#: ../src/disco.py:104 +#: ../src/disco.py:111 msgid "Others" msgstr "Outros" -#: ../src/disco.py:105 ../src/disco.py:106 ../src/disco.py:1350 -#: ../src/gajim.py:604 ../src/roster_window.py:272 ../src/roster_window.py:330 -#: ../src/roster_window.py:369 ../src/roster_window.py:451 -#: ../src/roster_window.py:483 ../src/roster_window.py:485 -#: ../src/roster_window.py:3920 ../src/roster_window.py:3922 -#: ../src/common/contacts.py:267 ../src/common/contacts.py:282 -#: ../src/common/helpers.py:43 +#: ../src/disco.py:112 ../src/disco.py:113 ../src/disco.py:1355 +#: ../src/gajim.py:660 ../src/roster_window.py:295 ../src/roster_window.py:355 +#: ../src/roster_window.py:395 ../src/roster_window.py:503 +#: ../src/roster_window.py:535 ../src/roster_window.py:537 +#: ../src/roster_window.py:4755 ../src/roster_window.py:4757 +#: ../src/common/contacts.py:295 ../src/common/contacts.py:310 +#: ../src/common/helpers.py:53 msgid "Transports" msgstr "Transportes" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:108 +#: ../src/disco.py:115 msgid "Conference" msgstr "Conferência" -#: ../src/disco.py:421 -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:428 +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:502 +#, python-format +msgid "Service Discovery using account %s" +msgstr "Buscar Serviços usando conta %s" + +#: ../src/disco.py:504 +msgid "Service Discovery" +msgstr "Buscar Serviços" + +#: ../src/disco.py:644 +msgid "The service could not be found" +msgstr "O serviço não pode ser encontrado" + +#: ../src/disco.py:645 +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:649 ../src/disco.py:930 +msgid "The service is not browsable" +msgstr "Serviço não navegável" + +#: ../src/disco.py:650 +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:730 +#, python-format +msgid "Browsing %s using account %s" +msgstr "Visualizando %s usando conta %s" + +#: ../src/disco.py:769 +msgid "_Browse" +msgstr "_Navegar" + +#: ../src/disco.py:931 +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:1152 +msgid "_Execute Command" +msgstr "_Executar Comando" + +#: ../src/disco.py:1162 ../src/disco.py:1360 +msgid "Re_gister" +msgstr "Re_gistrar" + +#: ../src/disco.py:1397 +#, python-format +msgid "Scanning %d / %d.." +msgstr "Buscando %d / %d" + +#. Users column +#: ../src/disco.py:1579 +msgid "Users" +msgstr "Usuários" + +#. Description column +#: ../src/disco.py:1587 +msgid "Description" +msgstr "Descrição" + +#. Id column +#: ../src/disco.py:1595 +msgid "Id" +msgstr "Id" + +#: ../src/disco.py:1824 +msgid "Subscribed" +msgstr "Inscrito" + +#: ../src/disco.py:1832 +msgid "Node" +msgstr "Nó" + +#: ../src/disco.py:1889 +msgid "New post" +msgstr "Nova postagem" + +#: ../src/disco.py:1895 +msgid "_Subscribe" +msgstr "_Inscrever" + +#: ../src/disco.py:1901 +msgid "_Unsubscribe" +msgstr "_Desinscrever" + +#: ../src/features_window.py:47 +msgid "PyOpenSSL" +msgstr "PyOpenSSL" + +#: ../src/features_window.py:48 +msgid "" +"A library used to validate server certificates to ensure a secure connection." +msgstr "" +"Uma biblioteca usada para validar os certificados do servidor para garantir " +"uma conexão segura." + +#: ../src/features_window.py:49 ../src/features_window.py:50 +msgid "Requires python-pyopenssl." +msgstr "Requer o python-pyopenssl." + +#: ../src/features_window.py:51 +msgid "Bonjour / Zeroconf" +msgstr "Bonjour / Zeroconf" + +#: ../src/features_window.py:52 +msgid "Serverless chatting with autodetected clients in a local network." +msgstr "" +"Conversa sem servidor com clientes detectados automaticamente em uma rede " +"local." + +#: ../src/features_window.py:53 +msgid "Requires python-avahi." +msgstr "Requer o python-avahi." + +#: ../src/features_window.py:54 +msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." +msgstr "Requer pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." + +#: ../src/features_window.py:55 +msgid "gajim-remote" +msgstr "gajim-remote" + +#: ../src/features_window.py:56 +msgid "A script to controle gajim via commandline." +msgstr "Um script para controlar o Gajim via linha de comando." + +#: ../src/features_window.py:57 +msgid "Requires python-dbus." +msgstr "Requer o python-dbus." + +#: ../src/features_window.py:58 ../src/features_window.py:62 +#: ../src/features_window.py:66 ../src/features_window.py:70 +#: ../src/features_window.py:74 ../src/features_window.py:82 +#: ../src/features_window.py:86 ../src/features_window.py:98 +msgid "Feature not available under Windows." +msgstr "Recurso não disponÃvel no Windows." + +#: ../src/features_window.py:59 +msgid "OpenGPG" +msgstr "OpenGPG" + +#: ../src/features_window.py:60 +msgid "Encrypting chatmessages with gpg keys." +msgstr "Criptografando as mensagens das conversas com chaves PGP." + +#: ../src/features_window.py:61 +msgid "Requires gpg and python-GnuPGInterface." +msgstr "Requer gpg e python-GnuPGInterface." + +#: ../src/features_window.py:63 +msgid "network-manager" +msgstr "network-manager" + +#: ../src/features_window.py:64 +msgid "Autodetection of network status." +msgstr "Detecção automática do status da rede." + +#: ../src/features_window.py:65 +msgid "Requires gnome-network-manager and python-dbus." +msgstr "Requer gnome-network-manager e python-dbus." + +#: ../src/features_window.py:67 +msgid "Session Management" +msgstr "Gerenciamento de Sessão" + +#: ../src/features_window.py:68 +msgid "Gajim session is stored on logout and restored on login." +msgstr "A sessão do Gajim é armazenada no logout and restaurada no login." + +#: ../src/features_window.py:69 +msgid "Requires python-gnome2." +msgstr "Requer python-gnome2." + +#: ../src/features_window.py:71 +msgid "gnome-keyring" +msgstr "gnome-keyring" + +#: ../src/features_window.py:72 +msgid "Passwords can be stored securely and not just in plaintext." +msgstr "" +"As senhas podem ser armazenadas de maneira segura e não apenas em texto " +"plano." + +#: ../src/features_window.py:73 +msgid "Requires gnome-keyring and python-gnome2-desktop." +msgstr "Requer gnome-keyring e python-gnome2-desktop." + +#: ../src/features_window.py:75 +msgid "SRV" +msgstr "SRV" + +#: ../src/features_window.py:76 +msgid "Ability to connect to servers which are using SRV records." +msgstr "Habilidade de conectar a servidores que estão usando registros SRV." + +#: ../src/features_window.py:77 +msgid "Requires dnsutils." +msgstr "Requer dnsutils." + +#: ../src/features_window.py:78 +msgid "Requires nslookup to use SRV records." +msgstr "Requer nslookup para usar registros SRV." + +#: ../src/features_window.py:79 +msgid "Spell Checker" +msgstr "Verificador Ortográfico" + +#: ../src/features_window.py:80 +msgid "Spellchecking of composed messages." +msgstr "Verificação ortográfica das mensagens escritas." + +#: ../src/features_window.py:81 +msgid "" +"Requires python-gnome2-extras or compilation of gtkspell module from Gajim " +"sources." +msgstr "" +"Requer python-gnome2-extras ou a compilação do módulo gtkspell a partir dos " +"fontes do Gajim." + +#: ../src/features_window.py:83 +msgid "Notification-daemon" +msgstr "Notification-daemon" -#: ../src/disco.py:500 -#, python-format -msgid "Service Discovery using account %s" -msgstr "Buscar Serviços usando conta %s" +#: ../src/features_window.py:84 +msgid "Passive popups notifying for new events." +msgstr "Popups passivos notificando novos eventos." -#: ../src/disco.py:502 -msgid "Service Discovery" -msgstr "Buscar Serviços" +#: ../src/features_window.py:85 +msgid "" +"Requires python-notify or instead python-dbus in conjunction with " +"notification-daemon." +msgstr "" +"Requer python-notify ou então python-dbus em conjunto com notification-" +"daemon." -#: ../src/disco.py:642 -msgid "The service could not be found" -msgstr "O serviço não pode ser encontrado" +#: ../src/features_window.py:87 +msgid "Trayicon" +msgstr "Ãcone da Bandeja" -#: ../src/disco.py:643 +#: ../src/features_window.py:88 +msgid "A icon in systemtray reflecting the current presence." +msgstr "Um Ãcone na bandeja do sistema refletindo a presença atual." + +#: ../src/features_window.py:89 msgid "" -"There is no service at the address you entered, or it is not responding. " -"Check the address and try again." +"Requires python-gnome2-extras or compiled trayicon module from Gajim " +"sources." 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." +"Requer python-gnome2-extras ou módulo trayicon compilado a partir dos fontes " +"do Gajim." -#: ../src/disco.py:647 ../src/disco.py:928 -msgid "The service is not browsable" -msgstr "Serviço não navegável" +#: ../src/features_window.py:90 +msgid "Requires PyGTK >= 2.10." +msgstr "Requer PyGTK >= 2.10." -#: ../src/disco.py:648 -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/features_window.py:91 +msgid "Idle" +msgstr "Ocioso" -#: ../src/disco.py:728 -#, python-format -msgid "Browsing %s using account %s" -msgstr "Visualizando %s usando conta %s" +#: ../src/features_window.py:92 +msgid "Ability to measure idle time, in order to set auto status." +msgstr "" +"Habilidade de medir o tempo de inatividade para definir o status automático." -#: ../src/disco.py:767 -msgid "_Browse" -msgstr "_Navegar" +#: ../src/features_window.py:93 ../src/features_window.py:94 +msgid "Requires compilation of the idle module from Gajim sources." +msgstr "Requer a compilação do módulo idle a partir dos fontes do Gajim." -#: ../src/disco.py:929 -msgid "This service does not contain any items to browse." -msgstr "Este serviço não contém nenhum item para navegar." +#: ../src/features_window.py:95 +msgid "LaTeX" +msgstr "LaTeX" -#: ../src/disco.py:1147 -#, fuzzy -msgid "_Execute Command" -msgstr "_Executar Comando" +#: ../src/features_window.py:96 +msgid "Transform LaTeX espressions between $$ $$." +msgstr "Tranforma expressões LaTeX entre $$ $$." -#: ../src/disco.py:1157 ../src/disco.py:1355 -msgid "Re_gister" -msgstr "Re_gistrar" +#: ../src/features_window.py:97 +msgid "" +"Requires texlive-latex-base, dvips and imagemagick. You have to set " +"'use_latex' to True in the Advanced Configuration Editor." +msgstr "" +"Requer textlive-latex-base, dvips e imagemagick. Você tem que definir a " +"opção 'use_latex' para Verdadeiro no Editor de Configurações Avançadas." -#: ../src/disco.py:1392 -#, python-format -msgid "Scanning %d / %d.." -msgstr "Buscando %d / %d" +#: ../src/features_window.py:99 +msgid "End to end encryption" +msgstr "Criptografia end to end" -#. Users column -#: ../src/disco.py:1573 -msgid "Users" -msgstr "Usuários" +#: ../src/features_window.py:100 +msgid "Encrypting chatmessages." +msgstr "Criptografando mensagens." -#. Description column -#: ../src/disco.py:1580 -msgid "Description" -msgstr "Descrição" +#: ../src/features_window.py:101 ../src/features_window.py:102 +msgid "Requires python-crypto." +msgstr "Requer python-crypto." -#. Id column -#: ../src/disco.py:1587 -msgid "Id" -msgstr "Id" +#: ../src/features_window.py:103 +msgid "RST Generator" +msgstr "Gerador RST" -#: ../src/disco.py:1810 -msgid "Subscribed" -msgstr "Inscrito" +#: ../src/features_window.py:104 +msgid "" +"Generate XHTML output from RST code (see http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html)." +msgstr "" +"Gera saÃda XHTML a partir de código RST (veja http://docutils.sourceforge." +"net/docs/ref/rst/restructuredtext.html)." -#: ../src/disco.py:1836 -msgid "New post" -msgstr "Nova postagem" +#: ../src/features_window.py:105 ../src/features_window.py:106 +msgid "Requires python-docutils." +msgstr "Requer python-docutils." -#: ../src/disco.py:1842 -msgid "_Subscribe" -msgstr "_Inscrever" +#: ../src/features_window.py:107 +msgid "libsexy" +msgstr "libsexy" -#: ../src/disco.py:1848 -msgid "_Unsubscribe" -msgstr "_Desinscrever" +#: ../src/features_window.py:108 +msgid "Ability to have clickable URLs in chat window." +msgstr "Habilidade de ter URL's clicáveis na janela de conversa." + +#: ../src/features_window.py:109 ../src/features_window.py:110 +msgid "Requires python-sexy." +msgstr "Requer python-sexy." + +#: ../src/features_window.py:117 ../src/common/helpers.py:248 +msgid "Available" +msgstr "DisponÃvel" + +#: ../src/features_window.py:124 +msgid "Feature" +msgstr "Recurso" -#: ../src/filetransfers_window.py:72 +#: ../src/filetransfers_window.py:77 msgid "File" msgstr "Arquivo" -#: ../src/filetransfers_window.py:87 +#: ../src/filetransfers_window.py:92 msgid "Time" msgstr "Tempo" -#: ../src/filetransfers_window.py:99 +#: ../src/filetransfers_window.py:104 msgid "Progress" msgstr "Progresso" -#: ../src/filetransfers_window.py:161 ../src/filetransfers_window.py:215 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:218 #, python-format msgid "Filename: %s" msgstr "Nome do arquivo: %s" -#: ../src/filetransfers_window.py:162 ../src/filetransfers_window.py:290 +#: ../src/filetransfers_window.py:165 ../src/filetransfers_window.py:305 #, 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:171 ../src/filetransfers_window.py:181 -#: ../src/history_manager.py:463 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:184 +#: ../src/history_manager.py:468 msgid "You" msgstr "Você" -#: ../src/filetransfers_window.py:172 +#: ../src/filetransfers_window.py:175 #, python-format msgid "Sender: %s" msgstr "Remetente: %s" -#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:564 -#: ../src/tooltips.py:575 +#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:593 +#: ../src/tooltips.py:592 msgid "Recipient: " msgstr "Destinatário: " -#: ../src/filetransfers_window.py:184 +#: ../src/filetransfers_window.py:187 #, python-format msgid "Saved in: %s" msgstr "Salvo em: %s" -#: ../src/filetransfers_window.py:186 +#: ../src/filetransfers_window.py:189 msgid "File transfer completed" msgstr "Transferência de arquivos completa" -#: ../src/filetransfers_window.py:200 ../src/filetransfers_window.py:206 +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:209 msgid "File transfer cancelled" msgstr "Transferência de arquivos cancelada" -#: ../src/filetransfers_window.py:200 ../src/filetransfers_window.py:207 +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:210 msgid "Connection with peer cannot be established." msgstr "Conexão ponto a ponto não pode ser estabelecida." -#: ../src/filetransfers_window.py:216 +#: ../src/filetransfers_window.py:219 #, python-format msgid "Recipient: %s" msgstr "Conteúdo: %s" -#: ../src/filetransfers_window.py:218 +#: ../src/filetransfers_window.py:221 #, python-format msgid "Error message: %s" msgstr "Mensagem de erro: %s" -#: ../src/filetransfers_window.py:219 +#: ../src/filetransfers_window.py:222 msgid "File transfer stopped by the contact at the other end" msgstr "Transferência de arquivo parada pelo contato do outro lado" -#: ../src/filetransfers_window.py:236 +#: ../src/filetransfers_window.py:243 msgid "Choose File to Send..." msgstr "Escolha o Arquivo para Enviar..." -#: ../src/filetransfers_window.py:255 +#: ../src/filetransfers_window.py:259 ../src/tooltips.py:631 +#, fuzzy +msgid "Description: " +msgstr "Descrição: %s" + +#: ../src/filetransfers_window.py:270 msgid "Gajim cannot access this file" msgstr "Gajim não pode acessar este arquivo" -#: ../src/filetransfers_window.py:256 +#: ../src/filetransfers_window.py:271 msgid "This file is being used by another process." msgstr "Este arquivo está sendo usado por outro processo." -#: ../src/filetransfers_window.py:288 +#: ../src/filetransfers_window.py:303 #, python-format msgid "File: %s" msgstr "Arquivo: %s" -#: ../src/filetransfers_window.py:293 +#: ../src/filetransfers_window.py:308 #, python-format msgid "Type: %s" msgstr "Tipo: %s" -#: ../src/filetransfers_window.py:295 +#: ../src/filetransfers_window.py:310 #, python-format msgid "Description: %s" msgstr "Descrição: %s" -#: ../src/filetransfers_window.py:296 +#: ../src/filetransfers_window.py:311 #, python-format msgid "%s wants to send you a file:" msgstr "%s quer te enviar um arquivo:" -#: ../src/filetransfers_window.py:310 ../src/gtkgui_helpers.py:750 +#: ../src/filetransfers_window.py:324 ../src/gtkgui_helpers.py:773 #, python-format msgid "Cannot overwrite existing file \"%s\"" msgstr "Não é possÃvel sobrescrever o arquivo \"%s\"" -#: ../src/filetransfers_window.py:311 ../src/gtkgui_helpers.py:752 +#: ../src/filetransfers_window.py:325 ../src/gtkgui_helpers.py:775 msgid "" "A file with this name already exists and you do not have permission to " "overwrite it." @@ -3828,31 +4377,31 @@ msgstr "" "Um arquivo com este nome já existe e você não tem permissão para sobrescrevê-" "lo." -#: ../src/filetransfers_window.py:318 ../src/gtkgui_helpers.py:756 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:779 msgid "This file already exists" msgstr "Este arquivo já existe" -#: ../src/filetransfers_window.py:318 ../src/gtkgui_helpers.py:756 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:779 msgid "What do you want to do?" msgstr "O que você quer fazer?" -#: ../src/filetransfers_window.py:330 ../src/gtkgui_helpers.py:766 +#: ../src/filetransfers_window.py:344 ../src/gtkgui_helpers.py:789 #, python-format msgid "Directory \"%s\" is not writable" msgstr "O diretório \"%s\" não é gravável" -#: ../src/filetransfers_window.py:330 ../src/gtkgui_helpers.py:767 +#: ../src/filetransfers_window.py:344 ../src/gtkgui_helpers.py:790 msgid "You do not have permission to create files in this directory." msgstr "Você não tem permissão para criar este diretório" -#: ../src/filetransfers_window.py:340 +#: ../src/filetransfers_window.py:354 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:421 +#: ../src/filetransfers_window.py:434 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -3860,65 +4409,65 @@ 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:497 +#: ../src/filetransfers_window.py:523 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:536 ../src/filetransfers_window.py:539 +#: ../src/filetransfers_window.py:563 ../src/filetransfers_window.py:566 msgid "Invalid File" msgstr "Arquivo inválido" -#: ../src/filetransfers_window.py:536 +#: ../src/filetransfers_window.py:563 msgid "File: " msgstr "Arquivo:" -#: ../src/filetransfers_window.py:540 +#: ../src/filetransfers_window.py:567 msgid "It is not possible to send empty files" msgstr "não é possÃvel enviar arquivos vazios" -#: ../src/filetransfers_window.py:560 ../src/tooltips.py:565 +#: ../src/filetransfers_window.py:589 ../src/tooltips.py:582 msgid "Name: " msgstr "Nome: " -#: ../src/filetransfers_window.py:562 ../src/tooltips.py:569 +#: ../src/filetransfers_window.py:591 ../src/tooltips.py:586 msgid "Sender: " msgstr "Remetente: " -#: ../src/filetransfers_window.py:750 +#: ../src/filetransfers_window.py:779 msgid "Pause" msgstr "Pausa" -#: ../src/gajim.py:47 +#: ../src/gajim.py:56 #, python-format msgid "%s is not a valid loglevel" -msgstr "%s não é um nÃvel de registro (loglevel) válido" +msgstr "%s não é um nÃvel de gravação (loglevel) válido" -#: ../src/gajim.py:122 +#: ../src/gajim.py:129 msgid "Gajim needs X server to run. Quiting..." msgstr "O Gajim necessita do servidor X para rodar. Encerrando..." -#: ../src/gajim.py:126 +#: ../src/gajim.py:156 msgid "Gajim needs PyGTK 2.8 or above" msgstr "O Gajim necessita do PyGTK 2.8 ou superior" -#: ../src/gajim.py:127 +#: ../src/gajim.py:157 msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." msgstr "O Gajim necessita do PyGTK 2.8 ou superior para rodar. Encerrando..." -#: ../src/gajim.py:129 +#: ../src/gajim.py:159 msgid "Gajim needs GTK 2.8 or above" msgstr "O Gajim necessita do GTK 2.8 ou superior" -#: ../src/gajim.py:130 +#: ../src/gajim.py:160 msgid "Gajim needs GTK 2.8 or above to run. Quiting..." msgstr "O Gajim necessita do GTK 2.8 ou superior para rodar. Encerrando..." -#: ../src/gajim.py:135 +#: ../src/gajim.py:165 msgid "GTK+ runtime is missing libglade support" msgstr "Não existe suporte para libglade no GTK+ runtime" -#: ../src/gajim.py:137 +#: ../src/gajim.py:167 #, python-format msgid "" "Please remove your current GTK+ runtime and install the latest stable " @@ -3927,22 +4476,22 @@ msgstr "" "Por favor remova seu GTK+ runtime atual e instale a última versão estável de " "%s" -#: ../src/gajim.py:139 +#: ../src/gajim.py:169 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:144 +#: ../src/gajim.py:174 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim necessita de PySQLite2 para rodar" -#: ../src/gajim.py:152 +#: ../src/gajim.py:182 msgid "Gajim needs pywin32 to run" msgstr "O Gajim precisa do pywin32 para rodar" -#: ../src/gajim.py:153 +#: ../src/gajim.py:183 #, python-format msgid "" "Please make sure that Pywin32 is installed on your system. You can get it at " @@ -3952,11 +4501,11 @@ msgstr "" "pode obtê-lo em %s" #. set the icon to all newly opened wind -#: ../src/gajim.py:300 +#: ../src/gajim.py:328 msgid "Gajim is already running" msgstr "O Gajim já está em execução" -#: ../src/gajim.py:301 +#: ../src/gajim.py:329 msgid "" "Another instance of Gajim seems to be running\n" "Run anyway?" @@ -3964,83 +4513,166 @@ msgstr "" "Outra instância do Gajim parece estar rodando\n" "Executar de qualquer forma?" -#: ../src/gajim.py:408 +#: ../src/gajim.py:352 ../src/common/connection_handlers.py:908 +#: ../src/common/connection_handlers.py:1620 +#: ../src/common/connection_handlers.py:1649 +#: ../src/common/connection_handlers.py:1659 +#: ../src/common/connection_handlers.py:1678 +#: ../src/common/connection_handlers.py:1915 +#: ../src/common/connection_handlers.py:2027 ../src/common/connection.py:939 +msgid "Disk Write Error" +msgstr "Erro de Escrita em Disco" + +#: ../src/gajim.py:448 +msgid "Do you accept this request?" +msgstr "Você aceita a solicitação?" + +#: ../src/gajim.py:450 +#, python-format +msgid "Do you accept this request on account %s?" +msgstr "Você aceita essa requisição na conta %s?" + +#: ../src/gajim.py:453 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "Autorização HTTP (%s) para %s (id: %s)" -#: ../src/gajim.py:409 -msgid "Do you accept this request?" -msgstr "Você aceita a solicitação?" - -#: ../src/gajim.py:455 ../src/notify.py:435 +#: ../src/gajim.py:500 ../src/notify.py:466 msgid "Connection Failed" msgstr "Falha na Conexão" -#: ../src/gajim.py:775 +#: ../src/gajim.py:834 #, python-format msgid "Subject: %s" msgstr "Assunto: %s" #. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) -#: ../src/gajim.py:820 ../src/gajim.py:833 +#: ../src/gajim.py:881 ../src/gajim.py:894 #, python-format msgid "error while sending %s ( %s )" msgstr "erro no envio %s ( %s )" -#: ../src/gajim.py:866 +#: ../src/gajim.py:927 msgid "Authorization accepted" msgstr "Autorização aceita" -#: ../src/gajim.py:867 +#: ../src/gajim.py:928 #, 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:875 +#: ../src/gajim.py:936 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Contato \"%s\" removeu sua inscrição" -#: ../src/gajim.py:876 +#: ../src/gajim.py:937 msgid "You will always see him or her as offline." msgstr "Você sempre o verá como offline." -#: ../src/gajim.py:920 +#: ../src/gajim.py:981 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Contato com \"%s\" não pode ser estabelecido" -#: ../src/gajim.py:921 ../src/common/connection.py:435 +#: ../src/gajim.py:982 ../src/common/connection.py:465 msgid "Check your connection or try again later." msgstr "Verifique sua conexão ou tente novamente mais tarde." -#: ../src/gajim.py:1070 ../src/roster_window.py:1218 +#: ../src/gajim.py:1151 ../src/groupchat_control.py:991 +#, python-format +msgid "%s is now known as %s" +msgstr "%s agora é conhecido como %s" + +#: ../src/gajim.py:1167 ../src/roster_window.py:1372 #, python-format msgid "%s is now %s (%s)" msgstr "%s agora está %s (%s)" #. No status message -#: ../src/gajim.py:1073 ../src/groupchat_control.py:968 -#: ../src/roster_window.py:1221 +#: ../src/gajim.py:1170 ../src/groupchat_control.py:1142 +#: ../src/roster_window.py:1375 #, python-format msgid "%s is now %s" msgstr "%s agora está %s" -#: ../src/gajim.py:1170 +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1291 ../src/groupchat_control.py:951 +msgid "Any occupant is allowed to see your full JID" +msgstr "Algum ocupante tem permissão de ver o seu JID inteiro" + +#: ../src/gajim.py:1294 +msgid "Room now shows unavailable member" +msgstr "A sala agora mostra membros indisponÃveis" + +#: ../src/gajim.py:1296 +msgid "room now does not show unavailable members" +msgstr "a sala agora não mostra membros indisponÃveis" + +#: ../src/gajim.py:1299 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "" +"Uma modificação na configuração da sala que não tem relação com privacidade " +"ocorreu" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1302 +msgid "Room logging is now enabled" +msgstr "A gravação das conversas da sala está ativo agora" + +#: ../src/gajim.py:1304 +msgid "Room logging is now disabled" +msgstr "A gravação das conversas da sala está desligado agora" + +#: ../src/gajim.py:1306 +msgid "Room is now non-anonymous" +msgstr "Agora a sala é não-anônima" + +#: ../src/gajim.py:1309 +msgid "Room is now semi-anonymous" +msgstr "Agora a sala é semi-anônima" + +#: ../src/gajim.py:1312 +msgid "Room is now fully-anonymous" +msgstr "Agora a sala é totalmente anônima" + +#: ../src/gajim.py:1344 +#, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "Uma Senha é requerida para ingressar na sala %s. Por favor, digite-a" + +#: ../src/gajim.py:1379 msgid "Your passphrase is incorrect" msgstr "Sua frase de acesso está incorreta" -#: ../src/gajim.py:1171 +#: ../src/gajim.py:1380 msgid "You are currently connected without your OpenPGP key." msgstr "Você está atualmente conectado sem sua chave OpenPGP." -#: ../src/gajim.py:1274 +#: ../src/gajim.py:1392 ../src/secrets.py:44 +msgid "Passphrase Required" +msgstr "Frase de acesso é obrigatória" + +#: ../src/gajim.py:1393 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Entre com a frase de acesso da chave GPG para conta %s" + +#: ../src/gajim.py:1405 +msgid "Wrong Passphrase" +msgstr "Frase de acesso Errada" + +#: ../src/gajim.py:1406 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "Por favor, reescreva sua frase de segurança GPG ou pressione Cancelar." + +#: ../src/gajim.py:1515 #, python-format msgid "New mail on %(gmail_mail_address)s" msgstr "Novo email em %(gmail_mail_address)s" -#: ../src/gajim.py:1276 +#: ../src/gajim.py:1517 #, python-format msgid "You have %d new mail conversation" msgid_plural "You have %d new mail conversations" @@ -4050,7 +4682,7 @@ msgstr[1] "Você tem %d novas mensagens de email" #. 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 -#: ../src/gajim.py:1285 +#: ../src/gajim.py:1526 #, python-format msgid "" "\n" @@ -4059,92 +4691,154 @@ msgstr "" "\n" "De: %(from_address)s" -#: ../src/gajim.py:1441 +#: ../src/gajim.py:1704 #, python-format msgid "%s wants to send you a file." msgstr "%s quer te enviar um arquivo:" -#: ../src/gajim.py:1506 +#: ../src/gajim.py:1769 #, python-format msgid "You successfully received %(filename)s from %(name)s." msgstr "Você recebeu com sucesso %(filename)s de %(name)s." #. ft stopped -#: ../src/gajim.py:1510 +#: ../src/gajim.py:1773 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." msgstr "Transferência de arquivo de %(filename)s de %(name)s parou." -#: ../src/gajim.py:1523 +#: ../src/gajim.py:1786 #, python-format msgid "You successfully sent %(filename)s to %(name)s." msgstr "Você enviou com sucesso o %(filename)s a %(name)s." #. ft stopped -#: ../src/gajim.py:1527 +#: ../src/gajim.py:1790 #, python-format msgid "File transfer of %(filename)s to %(name)s stopped." msgstr "Transferência de arquivo de %(filename)s to %(name)s parado." -#: ../src/gajim.py:1640 +#: ../src/gajim.py:1885 +msgid "Session negotiation cancelled" +msgstr "Negociação da sessão cancelada" + +#: ../src/gajim.py:1886 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "O cliente em %s cancelou a negociação da sessão." + +#: ../src/gajim.py:1927 ../src/gajim.py:1971 +msgid "Confirm these session options" +msgstr "Confirme essas opções de sessão" + +#: ../src/gajim.py:1928 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t\t%s\n" +"\n" +"\t\tAre these options acceptable?" +msgstr "" +"O cliente remoto quer negociar uma sessão com esses recursos:\n" +"\n" +"\t\t%s\n" +"\n" +"\t\tEssas opções são aceitáveis?" + +#: ../src/gajim.py:1972 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" +"O cliente remoto selecionou essas opções:\n" +"\n" +"%s\n" +"\n" +"Continuar com a sessão?" + +#: ../src/gajim.py:2097 msgid "Username Conflict" msgstr "Conflito de nome de usuário" -#: ../src/gajim.py:1641 +#: ../src/gajim.py:2098 msgid "Please type a new username for your local account" msgstr "Por favor digite um novo nome de usuário para sua conta local" -#: ../src/gajim.py:1658 +#: ../src/gajim.py:2115 msgid "Ping?" -msgstr "" +msgstr "Ping?" -#: ../src/gajim.py:1666 +#: ../src/gajim.py:2123 #, python-format msgid "Pong! (%s s.)" -msgstr "" +msgstr "Pong! (%s s.)" -#: ../src/gajim.py:1672 +#: ../src/gajim.py:2129 msgid "Error." +msgstr "Erro." + +#: ../src/gajim.py:2154 +msgid "Resource Conflict" +msgstr "Conflito de Recurso" + +#: ../src/gajim.py:2155 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" msgstr "" +"Você já está conectado a essa conta com o mesmo recurso. Por favor digite um " +"novo" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:2012 +#: ../src/gajim.py:2521 msgid "Could not save your settings and preferences" msgstr "ImpossÃvel salvar suas preferências" -#: ../src/gajim.py:2211 +#. sorted alphanum +#: ../src/gajim.py:2657 ../src/common/config.py:102 +#: ../src/common/config.py:413 ../src/common/optparser.py:206 +#: ../src/common/optparser.py:424 ../src/common/optparser.py:458 +msgid "default" +msgstr "padrão" + +#: ../src/gajim.py:2743 msgid "Network Manager support not available" msgstr "Não há suporte disponÃvel para o Network Manager" -#: ../src/gajim.py:2290 +#: ../src/gajim.py:2848 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)" -#: ../src/gajim-remote.py:65 +#: ../src/gajim-remote.py:73 msgid "Shows a help on specific command" msgstr "Mostra uma ajuda para um comando especÃfico" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:68 +#: ../src/gajim-remote.py:76 msgid "command" msgstr "comando" -#: ../src/gajim-remote.py:69 +#: ../src/gajim-remote.py:77 msgid "show help on command" msgstr "mostrar ajuda no comando" -#: ../src/gajim-remote.py:73 +#: ../src/gajim-remote.py:81 msgid "Shows or hides the roster window" msgstr "Mostrar ou esconder a janela principal" -#: ../src/gajim-remote.py:77 +#: ../src/gajim-remote.py:85 msgid "Pops up a window with the next pending event" msgstr "Exibir uma janela popup com o próximo evento pendente" -#: ../src/gajim-remote.py:81 +#: ../src/gajim-remote.py:89 msgid "" "Prints a list of all contacts in the roster. Each contact appears on a " "separate line" @@ -4152,48 +4846,48 @@ msgstr "" "Exibir uma lista de todos os contatos na lista. Cada contato aparecerá em " "uma linha separada" -#: ../src/gajim-remote.py:84 ../src/gajim-remote.py:99 -#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:122 -#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:157 -#: ../src/gajim-remote.py:187 ../src/gajim-remote.py:196 -#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:210 -#: ../src/gajim-remote.py:221 ../src/gajim-remote.py:237 -#: ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:92 ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:117 ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:144 ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:174 ../src/gajim-remote.py:204 +#: ../src/gajim-remote.py:213 ../src/gajim-remote.py:220 +#: ../src/gajim-remote.py:227 ../src/gajim-remote.py:238 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:263 msgid "account" msgstr "conta" -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:92 msgid "show only contacts of the given account" msgstr "mostrar somente os contatos desta conta" -#: ../src/gajim-remote.py:90 +#: ../src/gajim-remote.py:98 msgid "Prints a list of registered accounts" msgstr "Imprimir uma lista das contas registradas" -#: ../src/gajim-remote.py:94 +#: ../src/gajim-remote.py:102 msgid "Changes the status of account or accounts" msgstr "Mudar o status da conta ou contas" #. offline, online, chat, away, xa, dnd, invisible should not be translated -#: ../src/gajim-remote.py:97 +#: ../src/gajim-remote.py:105 msgid "status" msgstr "status" -#: ../src/gajim-remote.py:97 +#: ../src/gajim-remote.py:105 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "" "um desses: desconectado, conectado, bate-papo, inativo, fora, np, invisÃvel" -#: ../src/gajim-remote.py:98 ../src/gajim-remote.py:119 -#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:106 ../src/gajim-remote.py:127 +#: ../src/gajim-remote.py:141 ../src/gajim-remote.py:152 msgid "message" msgstr "mensagem" -#: ../src/gajim-remote.py:98 +#: ../src/gajim-remote.py:106 msgid "status message" msgstr "mensagem de status" -#: ../src/gajim-remote.py:99 +#: ../src/gajim-remote.py:107 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -4202,21 +4896,21 @@ msgstr "" "status de todas as contas existentes com a opção \"sincronizar com status " "global\" marcada" -#: ../src/gajim-remote.py:105 +#: ../src/gajim-remote.py:113 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" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:115 msgid "JID of the contact that you want to chat with" msgstr "JID do contato que você quer conversar" -#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:187 +#: ../src/gajim-remote.py:117 ../src/gajim-remote.py:204 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:114 +#: ../src/gajim-remote.py:122 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 " @@ -4226,28 +4920,30 @@ msgstr "" "são opcionais. Se você quer configurar somente a 'conta', sem a 'chave " "OpenPGP', apenas configure a 'chave para ''." -#: ../src/gajim-remote.py:118 ../src/gajim-remote.py:131 +#: ../src/gajim-remote.py:126 ../src/gajim-remote.py:139 msgid "JID of the contact that will receive the message" msgstr "JID do contato que irá receber a mensagem" -#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:127 ../src/gajim-remote.py:141 +#: ../src/gajim-remote.py:152 msgid "message contents" msgstr "conteúdos da mensagem" -#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:128 ../src/gajim-remote.py:142 msgid "pgp key" msgstr "chave pgp" -#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:128 ../src/gajim-remote.py:142 msgid "if specified, the message will be encrypted using this public key" msgstr "" "se especificada, a mensagem será criptografada usando esta chave pública" -#: ../src/gajim-remote.py:122 ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:130 ../src/gajim-remote.py:144 +#: ../src/gajim-remote.py:153 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:127 +#: ../src/gajim-remote.py:135 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 " @@ -4257,127 +4953,136 @@ msgstr "" "conta são opcionais. Se você quer configurar somente a 'conta', sem a 'chave " "OpenPGP, apenas configure a 'chave OpenPGP' para ''." -#: ../src/gajim-remote.py:132 +#: ../src/gajim-remote.py:140 msgid "subject" msgstr "assunto" -#: ../src/gajim-remote.py:132 +#: ../src/gajim-remote.py:140 msgid "message subject" msgstr "assunto da mensagem" -#: ../src/gajim-remote.py:141 +#: ../src/gajim-remote.py:149 +msgid "Sends new message to a groupchat you've joined." +msgstr "" +"Envia uma nova messagem para uma conferência em que você tiver ingressado." + +#: ../src/gajim-remote.py:151 +msgid "JID of the room that will receive the message" +msgstr "O JID do contato que receberá a mensagem" + +#: ../src/gajim-remote.py:158 msgid "Gets detailed info on a contact" msgstr "Informações detalhadas do contato" -#: ../src/gajim-remote.py:143 ../src/gajim-remote.py:156 -#: ../src/gajim-remote.py:186 ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:160 ../src/gajim-remote.py:173 +#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:212 msgid "JID of the contact" msgstr "JID do contato" -#: ../src/gajim-remote.py:147 +#: ../src/gajim-remote.py:164 msgid "Gets detailed info on a account" msgstr "Informações detalhadas do contato" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:166 msgid "Name of the account" msgstr "Nome da conta" -#: ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:170 msgid "Sends file to a contact" msgstr "Enviar arquivo para um contato" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:172 msgid "file" msgstr "arquivo" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:172 msgid "File path" msgstr "Caminho do arquivo" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:174 msgid "if specified, file will be sent using this account" msgstr "se especificada, arquivo irá ser enviado usando esta conta" -#: ../src/gajim-remote.py:162 +#: ../src/gajim-remote.py:179 msgid "Lists all preferences and their values" msgstr "Lista todas as preferências e seus valores" -#: ../src/gajim-remote.py:166 +#: ../src/gajim-remote.py:183 msgid "Sets value of 'key' to 'value'." msgstr "Ajusta o valor da 'chave' ao 'valor '." -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:185 msgid "key=value" msgstr "chave=valor" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:185 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:173 +#: ../src/gajim-remote.py:190 msgid "Deletes a preference item" msgstr "Deleta um item de preferência" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:192 msgid "key" msgstr "chave" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:192 msgid "name of the preference to be deleted" msgstr "nome da preferência a ser deletado" -#: ../src/gajim-remote.py:179 +#: ../src/gajim-remote.py:196 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:184 +#: ../src/gajim-remote.py:201 msgid "Removes contact from roster" msgstr "Remover contato da lista" -#: ../src/gajim-remote.py:193 +#: ../src/gajim-remote.py:210 msgid "Adds contact to roster" msgstr "Adicionar contato para a lista" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:212 msgid "jid" msgstr "JID" -#: ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:213 msgid "Adds new contact to this account" msgstr "Adicionar novo contato para esta conta" -#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:218 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:208 +#: ../src/gajim-remote.py:225 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:215 +#: ../src/gajim-remote.py:232 msgid "Returns number of unread messages" msgstr "Retorna o número das mensagens não lidas" -#: ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:236 msgid "Opens 'Start Chat' dialog" msgstr "Abrir o diálogo 'Iniciar Conversa'" -#: ../src/gajim-remote.py:221 +#: ../src/gajim-remote.py:238 msgid "Starts chat, using this account" msgstr "Iniciar conversa, usando esta conta" -#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:242 msgid "Sends custom XML" msgstr "Envia XML personalizado" -#: ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:244 msgid "XML to send" msgstr "XML a enviar" -#: ../src/gajim-remote.py:228 +#: ../src/gajim-remote.py:245 msgid "" "Account in which the xml will be sent; if not specified, xml will be sent to " "all accounts" @@ -4385,35 +5090,35 @@ msgstr "" "A conta em que o XML será enviado; se não estiver especificado, será enviado " "para todas as contas" -#: ../src/gajim-remote.py:234 +#: ../src/gajim-remote.py:251 msgid "Handle a xmpp:/ uri" msgstr "Manipular uma URI xmpp:/" -#: ../src/gajim-remote.py:236 +#: ../src/gajim-remote.py:253 msgid "uri" msgstr "URI" -#: ../src/gajim-remote.py:241 +#: ../src/gajim-remote.py:258 msgid "Join a MUC room" msgstr "Entrar em uma sala MUC" -#: ../src/gajim-remote.py:243 +#: ../src/gajim-remote.py:260 msgid "room" msgstr "sala" -#: ../src/gajim-remote.py:244 +#: ../src/gajim-remote.py:261 msgid "nick" msgstr "apelido" -#: ../src/gajim-remote.py:245 +#: ../src/gajim-remote.py:262 msgid "password" msgstr "senha" -#: ../src/gajim-remote.py:268 +#: ../src/gajim-remote.py:285 msgid "Missing argument \"contact_jid\"" msgstr "Argumento não informado \"contact_jid\"" -#: ../src/gajim-remote.py:287 +#: ../src/gajim-remote.py:304 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -4422,11 +5127,11 @@ msgstr "" "'%s' não está em sua lista.\n" "Por favor, especifique a conta para enviar a mensagem." -#: ../src/gajim-remote.py:290 +#: ../src/gajim-remote.py:307 msgid "You have no active account" msgstr "Você não tem uma conta ativa" -#: ../src/gajim-remote.py:354 +#: ../src/gajim-remote.py:371 #, python-format msgid "" "Usage: %s %s %s \n" @@ -4435,16 +5140,16 @@ msgstr "" "Uso: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:357 +#: ../src/gajim-remote.py:374 msgid "Arguments:" msgstr "Argumentos:" -#: ../src/gajim-remote.py:361 +#: ../src/gajim-remote.py:378 #, python-format msgid "%s not found" msgstr "%s não encontrado" -#: ../src/gajim-remote.py:365 +#: ../src/gajim-remote.py:382 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -4453,7 +5158,7 @@ msgstr "" "Uso: %s comando [argumentos]\n" "Comando é um desses:\n" -#: ../src/gajim-remote.py:438 +#: ../src/gajim-remote.py:455 #, python-format msgid "" "Too many arguments. \n" @@ -4462,7 +5167,7 @@ msgstr "" "Muitos argumentos.\n" "Digite \"%s help %s\" para mais informações" -#: ../src/gajim-remote.py:442 +#: ../src/gajim-remote.py:459 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -4471,116 +5176,152 @@ msgstr "" "Argumento \"%s\" não está especificado. \n" "Tipo \"%s ajuda %s\" para maiores informações" -#: ../src/gajim-remote.py:460 +#: ../src/gajim-remote.py:477 msgid "Wrong uri" msgstr "URI incorreta" -#: ../src/gajim_themes_window.py:60 +#: ../src/gajim_themes_window.py:67 msgid "Theme" msgstr "Tema" +#: ../src/gajim_themes_window.py:105 +msgid "You cannot make changes to the default theme" +msgstr "Você não pode fazer alterações no tema padrão" + +#: ../src/gajim_themes_window.py:106 +msgid "Please create a clean new theme with your desired name." +msgstr "Crie um novo tema com o nome que você desejar." + #. don't confuse translators -#: ../src/gajim_themes_window.py:155 +#: ../src/gajim_themes_window.py:180 msgid "theme name" msgstr "nome do tema" -#: ../src/gajim_themes_window.py:172 +#: ../src/gajim_themes_window.py:197 msgid "You cannot delete your current theme" msgstr "Você não pode apagar o seu tema corrente" -#: ../src/gajim_themes_window.py:173 +#: ../src/gajim_themes_window.py:198 msgid "Please first choose another for your current theme." msgstr "Por favor escolha outro para seu tema corrente." -#: ../src/groupchat_control.py:122 +#: ../src/groupchat_control.py:139 msgid "Sending private message failed" msgstr "Falha ao Enviar uma mensagem privada" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:124 +#: ../src/groupchat_control.py:141 #, python-format msgid "You are no longer in group chat \"%s\" or \"%s\" has left." msgstr "Você não está mais na sala \"%s\" ou \"%s\" saiu." -#: ../src/groupchat_control.py:322 +#: ../src/groupchat_control.py:350 msgid "Insert Nickname" msgstr "Inserir Apelido" +#: ../src/groupchat_control.py:878 +msgid "Really send file?" +msgstr "Enviar o arquivo mesmo?" + +#: ../src/groupchat_control.py:879 +#, python-format +msgid "If you send a file to %s, he/she will know your real Jabber ID." +msgstr "Se você enviar um arquivo para %s, ele(a) saberá o seu Jabber ID real." + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:954 +msgid "Room logging is enabled" +msgstr "A gravação das conversas da sala está ligado" + +#: ../src/groupchat_control.py:956 +msgid "A new room has been created" +msgstr "Uma nova sala foi criada" + +#: ../src/groupchat_control.py:959 +msgid "The server has assigned or modified your roomnick" +msgstr "O servidor atribuiu ou modificou o apelido da sua sala" + #. do not print 'kicked by None' -#: ../src/groupchat_control.py:850 +#: ../src/groupchat_control.py:965 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s foi chutado: %(reason)s" -#: ../src/groupchat_control.py:854 +#: ../src/groupchat_control.py:969 #, 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:861 +#: ../src/groupchat_control.py:976 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s foi banido: %(reason)s" -#: ../src/groupchat_control.py:865 +#: ../src/groupchat_control.py:980 #, 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:873 +#: ../src/groupchat_control.py:989 #, python-format msgid "You are now known as %s" msgstr "Você agora é conhecido como %s" -#: ../src/groupchat_control.py:875 +#: ../src/groupchat_control.py:1025 ../src/groupchat_control.py:1029 +#: ../src/groupchat_control.py:1034 #, python-format -msgid "%s is now known as %s" -msgstr "%s agora é conhecido como %s" +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s foi removido da sala (%(reason)s)" + +#: ../src/groupchat_control.py:1026 +msgid "affiliation changed" +msgstr "filiação alterada" + +#: ../src/groupchat_control.py:1031 +msgid "room configuration changed to members-only" +msgstr "a configuração da sala mudou para aceitar apenas membros" -#: ../src/groupchat_control.py:961 +#: ../src/groupchat_control.py:1036 +msgid "system shutdown" +msgstr "desligamento do sistema" + +#: ../src/groupchat_control.py:1135 #, python-format msgid "%s has left" msgstr "%s saiu da sala" -#: ../src/groupchat_control.py:966 +#: ../src/groupchat_control.py:1140 #, python-format msgid "%s has joined the group chat" msgstr "%s entrou na conferência" -#: ../src/groupchat_control.py:1088 ../src/groupchat_control.py:1106 -#: ../src/groupchat_control.py:1199 ../src/groupchat_control.py:1216 +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1253 ../src/groupchat_control.py:1532 +msgid "Invalid nickname" +msgstr "Apelido inválido" + +#: ../src/groupchat_control.py:1254 ../src/groupchat_control.py:1533 +msgid "The nickname has not allowed characters." +msgstr "O apelido possui caracteres não permitidos." + +#: ../src/groupchat_control.py:1277 ../src/groupchat_control.py:1295 +#: ../src/groupchat_control.py:1379 ../src/groupchat_control.py:1396 #, python-format msgid "Nickname not found: %s" msgstr "Apelido não encontrado: %s" -#: ../src/groupchat_control.py:1122 +#: ../src/groupchat_control.py:1311 msgid "This group chat has no subject" msgstr "Esta conferência não tem assunto" -#: ../src/groupchat_control.py:1135 +#: ../src/groupchat_control.py:1322 #, 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:1142 ../src/groupchat_control.py:1170 -#, 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:1253 -#, 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)" - -#: ../src/groupchat_control.py:1276 -#, python-format -msgid "Commands: %s" -msgstr "Comandos: %s" - -#: ../src/groupchat_control.py:1279 +#: ../src/groupchat_control.py:1459 #, python-format msgid "" "Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " @@ -4593,7 +5334,7 @@ msgstr "" "estiver atualmente na sala, ele/ela será chutado também. NÃO suporta " "espaços no apelido." -#: ../src/groupchat_control.py:1286 +#: ../src/groupchat_control.py:1466 #, python-format msgid "" "Usage: /%s <nickname>, opens a private chat window with the specified " @@ -4602,12 +5343,7 @@ msgstr "" "Uso: /%s <apelido>, abre uma janela de conferência privada com um ocupante " "especÃfico." -#: ../src/groupchat_control.py:1290 -#, python-format -msgid "Usage: /%s, clears the text window." -msgstr "Uso: /%s, apaga o texto da janela." - -#: ../src/groupchat_control.py:1292 +#: ../src/groupchat_control.py:1472 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -4616,12 +5352,7 @@ msgstr "" "Uso: /%s [rasão], fecha a janela corrente ou a aba, mostrando a razão se " "especificada." -#: ../src/groupchat_control.py:1295 -#, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "Uso: /%s, esconde os botões do bate-papo." - -#: ../src/groupchat_control.py:1298 +#: ../src/groupchat_control.py:1478 #, python-format msgid "" "Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " @@ -4630,7 +5361,7 @@ msgstr "" "Uso: /%s <JID> [ razão ], convida JID à sala atual, fornecendo " "opcionalmente uma razão." -#: ../src/groupchat_control.py:1302 +#: ../src/groupchat_control.py:1482 #, python-format msgid "" "Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " @@ -4639,7 +5370,7 @@ msgstr "" "Uso: /%s <sala>@<servidor>[/apelido], oferece para entrar na sala@servidor " "opcionalmente usando um apelido especÃfico." -#: ../src/groupchat_control.py:1306 +#: ../src/groupchat_control.py:1486 #, python-format msgid "" "Usage: /%s <nickname> [reason], removes the occupant specified by nickname " @@ -4649,16 +5380,7 @@ msgstr "" "Uso: /%s <apelido> [razão], remove da sala o ocupante especificado pelo " "apelido e indica opcionalmente uma razão. Não suporta espaços no apelido." -#: ../src/groupchat_control.py:1311 -#, python-format -msgid "" -"Usage: /%s <action>, sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"Uso: /%s <ação>, emite a ação à sala atual. Use a terceira pessoa (por " -"exemplo: /%s explodes.)" - -#: ../src/groupchat_control.py:1315 +#: ../src/groupchat_control.py:1495 #, python-format msgid "" "Usage: /%s <nickname> [message], opens a private message window and sends " @@ -4667,70 +5389,65 @@ msgstr "" "Uso: /%s <apelido> [mensagem], abre uma janela de mensagem privada e envia " "uma mensagem ao ocupante especificado pelo apelido." -#: ../src/groupchat_control.py:1320 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Usage: /%s <nickname>, changes your nickname in current group chat." msgstr "Uso: /%s <apelido>, muda seu apelido na sala corrente." -#: ../src/groupchat_control.py:1324 +#: ../src/groupchat_control.py:1504 #, python-format msgid "Usage: /%s , display the names of group chat occupants." msgstr "Uso: /%s [tópico], mostra ou atualiza o tópico da sala atual." -#: ../src/groupchat_control.py:1328 +#: ../src/groupchat_control.py:1508 #, python-format msgid "Usage: /%s [topic], displays or updates the current group chat topic." msgstr "Uso: /%s [tópico], mostra ou atualiza o tópico da sala atual." -#: ../src/groupchat_control.py:1331 +#: ../src/groupchat_control.py:1511 #, python-format msgid "" "Usage: /%s <message>, sends a message without looking for other commands." msgstr "" "Uso: /%s <mensagem>, envia uma mensagem sem procurar por outros comandos." -#: ../src/groupchat_control.py:1334 -#, python-format -msgid "No help info for /%s" -msgstr "Sem ajuda para /%s" - -#: ../src/groupchat_control.py:1397 +#: ../src/groupchat_control.py:1606 #, python-format msgid "Are you sure you want to leave group chat \"%s\"?" msgstr "Você tem certeza que quer deixar a conferência \"%s\"?" -#: ../src/groupchat_control.py:1399 +#: ../src/groupchat_control.py:1608 msgid "" "If you close this window, you will be disconnected from this group chat." msgstr "Se você fechar esta janela, será desconectado desta conferência." -#: ../src/groupchat_control.py:1403 ../src/roster_window.py:4066 +#: ../src/groupchat_control.py:1612 ../src/roster_window.py:4902 msgid "Do _not ask me again" msgstr "_Não me pergunte novamente" -#: ../src/groupchat_control.py:1437 +#: ../src/groupchat_control.py:1644 msgid "Changing Subject" msgstr "Mudando Assunto" -#: ../src/groupchat_control.py:1438 +#: ../src/groupchat_control.py:1645 msgid "Please specify the new subject:" msgstr "Por favor, especifique o novo assunto:" -#: ../src/groupchat_control.py:1447 +#: ../src/groupchat_control.py:1654 msgid "Changing Nickname" msgstr "Mudando Apelido" -#: ../src/groupchat_control.py:1448 +#: ../src/groupchat_control.py:1655 msgid "Please specify the new nickname you want to use:" msgstr "Por favor, especifique o novo apelido que você quer usar:" #. Ask for a reason -#: ../src/groupchat_control.py:1463 +#: ../src/groupchat_control.py:1670 #, python-format msgid "Destroying %s" msgstr "Excluindo %s" -#: ../src/groupchat_control.py:1464 +#: ../src/groupchat_control.py:1671 msgid "" "You are going to definitively destroy this room.\n" "You may specify a reason below:" @@ -4738,139 +5455,139 @@ msgstr "" "Você está prestes a excluir definitivamente esta sala.\n" "Você deve especificar uma justificativa abaixo:" -#: ../src/groupchat_control.py:1466 +#: ../src/groupchat_control.py:1673 msgid "You may also enter an alternate venue:" msgstr "Você também pode entrar um ponto de encontro alternativo:" -#: ../src/groupchat_control.py:1496 +#: ../src/groupchat_control.py:1705 msgid "Bookmark already set" msgstr "Bookmark já configurado" -#: ../src/groupchat_control.py:1497 +#: ../src/groupchat_control.py:1706 #, python-format msgid "Group Chat \"%s\" is already in your bookmarks." msgstr "A sala \"%s\" já existe nos favoritos." -#: ../src/groupchat_control.py:1506 +#: ../src/groupchat_control.py:1715 msgid "Bookmark has been added successfully" msgstr "Bookmark foi adicionado com sucesso" -#: ../src/groupchat_control.py:1507 +#: ../src/groupchat_control.py:1716 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." #. ask for reason -#: ../src/groupchat_control.py:1635 +#: ../src/groupchat_control.py:1868 #, python-format msgid "Kicking %s" msgstr "Chutando %s" -#: ../src/groupchat_control.py:1636 ../src/groupchat_control.py:1919 +#: ../src/groupchat_control.py:1869 ../src/groupchat_control.py:2169 msgid "You may specify a reason below:" msgstr "Você deve especificar uma razão abaixo:" #. ask for reason -#: ../src/groupchat_control.py:1918 +#: ../src/groupchat_control.py:2168 #, python-format msgid "Banning %s" msgstr "Banindo %s" -#: ../src/gtkexcepthook.py:41 +#: ../src/gtkexcepthook.py:46 msgid "A programming error has been detected" msgstr "Um erro de programação foi detectado" -#: ../src/gtkexcepthook.py:42 +#: ../src/gtkexcepthook.py:47 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:48 +#: ../src/gtkexcepthook.py:53 msgid "_Report Bug" msgstr "_Reportar Erro" -#: ../src/gtkexcepthook.py:71 +#: ../src/gtkexcepthook.py:76 msgid "Details" msgstr "Detalhes" #. we talk about file -#: ../src/gtkgui_helpers.py:156 ../src/gtkgui_helpers.py:171 +#: ../src/gtkgui_helpers.py:162 ../src/gtkgui_helpers.py:177 #, python-format msgid "Error: cannot open %s for reading" msgstr "Erro: impossÃvel abrir %s para leitura" -#: ../src/gtkgui_helpers.py:336 +#: ../src/gtkgui_helpers.py:347 msgid "Error reading file:" msgstr "Erro lendo arquivo:" -#: ../src/gtkgui_helpers.py:339 +#: ../src/gtkgui_helpers.py:350 msgid "Error parsing file:" msgstr "Erro ao analisar gramaticalmente o arquivo:" #. do not traceback (could be a permission problem) #. we talk about a file here -#: ../src/gtkgui_helpers.py:376 +#: ../src/gtkgui_helpers.py:387 #, python-format msgid "Could not write to %s. Session Management support will not work" msgstr "" "Não foi possÃvel escrever à %s. O suporte de gerência da sessão não funciona" #. xmpp: is currently handled by another program, so ask the user -#: ../src/gtkgui_helpers.py:694 +#: ../src/gtkgui_helpers.py:719 msgid "Gajim is not the default Jabber client" msgstr "O Gajim não é o cliente Jabber padrão" -#: ../src/gtkgui_helpers.py:695 +#: ../src/gtkgui_helpers.py:720 msgid "Would you like to make Gajim the default Jabber client?" msgstr "Você gostaria de tornar o Gajim o cliente Jabber padrão?" -#: ../src/gtkgui_helpers.py:696 +#: ../src/gtkgui_helpers.py:721 msgid "Always check to see if Gajim is the default Jabber client on startup" msgstr "Sempre verificar ao iniciar se o Gajim é o cliente Jabber padrão" -#: ../src/gtkgui_helpers.py:795 +#: ../src/gtkgui_helpers.py:818 msgid "Extension not supported" msgstr "Extensão não suportada" -#: ../src/gtkgui_helpers.py:796 +#: ../src/gtkgui_helpers.py:819 #, python-format msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" msgstr "" "A imagem não pode ser salva no formato %(type)s. Salvar como %(new_filename)" "s?" -#: ../src/gtkgui_helpers.py:805 +#: ../src/gtkgui_helpers.py:828 msgid "Save Image as..." msgstr "Salvar Imagem como..." -#: ../src/history_manager.py:65 +#: ../src/history_manager.py:73 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:108 +#: ../src/history_manager.py:113 msgid "Contacts" msgstr "Contatos" #. holds time -#: ../src/history_manager.py:121 ../src/history_manager.py:161 -#: ../src/history_window.py:86 +#: ../src/history_manager.py:126 ../src/history_manager.py:166 +#: ../src/history_window.py:121 msgid "Date" msgstr "Data:" #. holds nickname -#: ../src/history_manager.py:127 ../src/history_manager.py:179 +#: ../src/history_manager.py:132 ../src/history_manager.py:184 msgid "Nickname" msgstr "Apelido" #. holds message -#: ../src/history_manager.py:135 ../src/history_manager.py:167 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:140 ../src/history_manager.py:172 +#: ../src/history_window.py:129 msgid "Message" msgstr "Mensagem" -#: ../src/history_manager.py:187 +#: ../src/history_manager.py:192 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" @@ -4878,7 +5595,7 @@ msgstr "" "Você quer limpar o banco de dados? (ALTAMENTE NÃO RECOMENDADO COM O GAJIM EM " "EXECUÇÃO)" -#: ../src/history_manager.py:189 +#: ../src/history_manager.py:194 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 " @@ -4892,221 +5609,293 @@ msgstr "" "\n" "Se caso você clicou SIM, por favor espere... " -#: ../src/history_manager.py:401 +#: ../src/history_manager.py:406 msgid "Exporting History Logs..." msgstr "Exportando Histórico de Logs..." -#: ../src/history_manager.py:476 +#: ../src/history_manager.py:481 #, 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:514 +#: ../src/history_manager.py:518 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:518 ../src/history_manager.py:554 +#: ../src/history_manager.py:522 ../src/history_manager.py:557 msgid "This is an irreversible operation." msgstr "Esta é uma operação irreversÃvel." -#: ../src/history_manager.py:551 +#: ../src/history_manager.py:554 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:103 ../src/history_window.py:105 +#: ../src/history_window.py:209 ../src/history_window.py:211 #, python-format msgid "Conversation History with %s" msgstr "Histórico de Conversação com %s" -#: ../src/history_window.py:266 +#: ../src/history_window.py:342 #, 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:270 ../src/notify.py:199 +#: ../src/history_window.py:346 ../src/notify.py:219 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s agora está %(status)s" -#: ../src/history_window.py:276 +#: ../src/history_window.py:352 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status agora é: %(status)s: %(status_msg)s" -#: ../src/history_window.py:279 +#: ../src/history_window.py:355 #, python-format msgid "Status is now: %(status)s" msgstr "Status agora é: %(status)s" -#: ../src/message_window.py:278 +#: ../src/htmltextview.py:586 ../src/htmltextview.py:597 +msgid "Timeout loading image" +msgstr "Tempo esgotado ao carregar a imagem" + +#: ../src/htmltextview.py:607 +msgid "Image is too big" +msgstr "A imagem é grande demais" + +#: ../src/message_window.py:350 msgid "Chats" msgstr "Conversas" -#: ../src/message_window.py:280 +#: ../src/message_window.py:352 msgid "Group Chats" msgstr "Conferências" -#: ../src/message_window.py:282 +#: ../src/message_window.py:354 msgid "Private Chats" msgstr "ConversasPrivada" -#: ../src/message_window.py:284 +#: ../src/message_window.py:356 msgid "Messages" msgstr "Mensagens" -#: ../src/message_window.py:285 +#: ../src/message_window.py:357 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/notify.py:197 +#: ../src/negotiation.py:13 +msgid "- messages will be logged" +msgstr "- as mensagens serão gravadas" + +#: ../src/negotiation.py:15 +msgid "- messages will not be logged" +msgstr "- as mensagens não serão gravadas" + +#: ../src/negotiation.py:24 +msgid "OK to continue with negotiation?" +msgstr "Tudo certo para continuar com a negociação?" + +#: ../src/negotiation.py:25 +#, python-format +msgid "" +"You've begun an encrypted session with %s, but it can't be guaranteed that " +"you're talking directly to the person you think you are.\n" +"\n" +"You should speak with them directly (in person or on the phone) and confirm " +"that their Short Authentication String is identical to this one: %s\n" +"\n" +"Would you like to continue with the encrypted session?" +msgstr "" +"Você começou uma sessão criptografada com %s, mas não há garantias de que " +"você esteja falando diretamente com a pessoa que você imagina.\n" +"\n" +"Você deve falar com eles diretamente (pessoalmente ou por telefone) e " +"confirmar que a String de Autenticação Curta deles é idêntica a esta: %s\n" +"\n" +"Você quer continuar com a sessão criptografada?" + +#: ../src/negotiation.py:31 +msgid "Yes, I verified the Short Authentication String" +msgstr "Sim, eu verifiquei a String de Verificação Curta" + +#: ../src/notify.py:217 #, python-format msgid "%(nick)s Changed Status" msgstr "%(nick)s Alterou seu Status" -#: ../src/notify.py:207 +#: ../src/notify.py:227 #, python-format msgid "%(nickname)s Signed In" msgstr "%(nickname)s Conectou" -#: ../src/notify.py:215 +#: ../src/notify.py:235 #, python-format msgid "%(nickname)s Signed Out" msgstr "%(nickname)s Desconectou" -#: ../src/notify.py:227 +#: ../src/notify.py:247 #, python-format msgid "New Single Message from %(nickname)s" msgstr "Nova Mensagem Simples de %(nickname)s" -#: ../src/notify.py:235 +#: ../src/notify.py:255 #, python-format msgid "New Private Message from group chat %s" msgstr "Nova Mensagem Privada da conferência %s" -#: ../src/notify.py:236 +#: ../src/notify.py:257 #, python-format msgid "%(nickname)s: %(message)s" msgstr "%(nickname)s: %(message)s" -#: ../src/notify.py:242 +#: ../src/notify.py:260 +#, python-format +msgid "Messaged by %(nickname)s" +msgstr "Mensagem enviada por %(nickname)s" + +#: ../src/notify.py:266 #, python-format msgid "New Message from %(nickname)s" msgstr "Nova Mensagem de %(nickname)s" -#: ../src/profile_window.py:72 +#: ../src/profile_window.py:54 msgid "Retrieving profile..." msgstr "Recuperando perfil..." +#: ../src/profile_window.py:107 ../src/roster_window.py:1914 +msgid "File is empty" +msgstr "O arquivo está vazio" + +#: ../src/profile_window.py:110 ../src/roster_window.py:1917 +msgid "File does not exist" +msgstr "O arquivo não existe" + #. keep identation -#: ../src/profile_window.py:143 +#. unknown format +#: ../src/profile_window.py:124 ../src/profile_window.py:140 +#: ../src/roster_window.py:1919 ../src/roster_window.py:1930 msgid "Could not load image" msgstr "A imagem não pode ser carregada" -#: ../src/profile_window.py:255 +#: ../src/profile_window.py:250 msgid "Information received" msgstr "Informação recebida" -#: ../src/profile_window.py:324 +#: ../src/profile_window.py:319 msgid "Without a connection you can not publish your contact information." msgstr "Você deve estar conectado para publicar suas informações de contato." -#: ../src/profile_window.py:336 +#: ../src/profile_window.py:331 msgid "Sending profile..." msgstr "Enviando perfil..." -#: ../src/profile_window.py:351 +#: ../src/profile_window.py:346 msgid "Information NOT published" msgstr "Informação NÃO publicada" -#: ../src/profile_window.py:358 +#: ../src/profile_window.py:353 msgid "vCard publication failed" msgstr "Publicação do vCard falhou" -#: ../src/profile_window.py:359 +#: ../src/profile_window.py:354 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." -#: ../src/roster_window.py:172 ../src/roster_window.py:227 +#: ../src/roster_window.py:194 ../src/roster_window.py:249 msgid "Merged accounts" msgstr "Juntar contas" -#: ../src/roster_window.py:345 ../src/common/helpers.py:43 +#: ../src/roster_window.py:370 ../src/roster_window.py:635 +#: ../src/roster_window.py:2145 ../src/common/contacts.py:312 +#: ../src/common/helpers.py:53 msgid "Observers" msgstr "Observadores" -#: ../src/roster_window.py:692 ../src/roster_window.py:3222 +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:454 ../src/roster_window.py:459 +#: ../src/roster_window.py:1967 ../src/roster_window.py:1970 +#: ../src/roster_window.py:2640 ../src/roster_window.py:2643 +#: ../src/roster_window.py:2668 ../src/roster_window.py:4763 +#: ../src/roster_window.py:4765 ../src/common/commands.py:199 +#: ../src/common/contacts.py:102 ../src/common/helpers.py:53 +msgid "Groupchats" +msgstr "Salas" + +#: ../src/roster_window.py:784 ../src/roster_window.py:4012 msgid "You cannot join a group chat while you are invisible" msgstr "Você não pode ingressar em uma sala enquanto estiver invisÃvel" #. new chat +#. single message #. for chat_with #. for single message -#: ../src/roster_window.py:884 ../src/systray.py:206 ../src/systray.py:211 +#. join gc +#: ../src/roster_window.py:1005 ../src/roster_window.py:1015 +#: ../src/roster_window.py:1024 ../src/systray.py:212 ../src/systray.py:217 +#: ../src/systray.py:223 #, python-format msgid "using account %s" msgstr "usando conta %s" -#. the 'manage gc bookmarks' item is shown -#. below to avoid duplicate code #. add -#: ../src/roster_window.py:909 +#: ../src/roster_window.py:1031 #, python-format msgid "to %s account" msgstr "para %s conta" #. disco -#: ../src/roster_window.py:914 +#: ../src/roster_window.py:1036 #, python-format msgid "using %s account" msgstr "usando %s conta" +#: ../src/roster_window.py:1117 +msgid "_Manage Bookmarks..." +msgstr "_Gerenciar Favoritos..." + #. profile, avatar -#: ../src/roster_window.py:989 +#: ../src/roster_window.py:1136 #, python-format msgid "of account %s" msgstr "da conta %s" -#: ../src/roster_window.py:1009 -msgid "_Manage Bookmarks..." -msgstr "_Gerenciar Favoritos..." - -#: ../src/roster_window.py:1038 +#: ../src/roster_window.py:1176 #, python-format msgid "for account %s" msgstr "para conta %s" #. History manager -#: ../src/roster_window.py:1059 +#: ../src/roster_window.py:1200 msgid "History Manager" msgstr "Gerenciador de Histórico" -#: ../src/roster_window.py:1068 +#: ../src/roster_window.py:1209 msgid "_Join New Group Chat" msgstr "_Ingressar em uma nova Conferência" -#: ../src/roster_window.py:1397 ../src/roster_window.py:3418 -#: ../src/roster_window.py:3425 +#: ../src/roster_window.py:1576 ../src/roster_window.py:4217 +#: ../src/roster_window.py:4224 msgid "You have unread messages" msgstr "Você tem mensagens não lidas" -#: ../src/roster_window.py:1398 +#: ../src/roster_window.py:1577 msgid "You must read them before removing this transport." msgstr "Você precisa lê-los antes de remover este transporte." -#: ../src/roster_window.py:1401 +#: ../src/roster_window.py:1580 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transporte \"%s\" será removido" -#: ../src/roster_window.py:1402 +#: ../src/roster_window.py:1581 msgid "" "You will no longer be able to send and receive messages from contacts using " "this transport." @@ -5114,11 +5903,11 @@ msgstr "" "Você não poderá mais enviar e receber mensagens dos contatos usando este " "transporte." -#: ../src/roster_window.py:1405 +#: ../src/roster_window.py:1584 msgid "Transports will be removed" msgstr "Os transportes serão removidos" -#: ../src/roster_window.py:1410 +#: ../src/roster_window.py:1589 #, python-format msgid "" "You will no longer be able to send and receive messages to contacts from " @@ -5128,114 +5917,149 @@ msgstr "" "%s" #. it's jid -#: ../src/roster_window.py:1430 +#: ../src/roster_window.py:1755 msgid "Rename Contact" msgstr "Renomear Contato" -#: ../src/roster_window.py:1431 +#: ../src/roster_window.py:1756 #, python-format msgid "Enter a new nickname for contact %s" msgstr "Entre com um novo apelido para o contato %s" -#: ../src/roster_window.py:1438 +#: ../src/roster_window.py:1763 msgid "Rename Group" msgstr "Renomear Grupo" -#: ../src/roster_window.py:1439 +#: ../src/roster_window.py:1764 #, python-format msgid "Enter a new name for group %s" msgstr "Entre com um novo nome para o grupo %s" -#: ../src/roster_window.py:1514 +#: ../src/roster_window.py:1839 msgid "Remove Group" msgstr "Remover Grupo" -#: ../src/roster_window.py:1515 +#: ../src/roster_window.py:1840 #, python-format msgid "Do you want to remove group %s from the roster?" msgstr "Você quer remover o grupo %s da lista?" -#: ../src/roster_window.py:1516 +#: ../src/roster_window.py:1841 msgid "Remove also all contacts in this group from your roster" msgstr "Remover também todos os contatos neste grupo da sua lista" -#: ../src/roster_window.py:1547 +#: ../src/roster_window.py:1872 msgid "Assign OpenPGP Key" msgstr "Atribuir chave OpenPGP" -#: ../src/roster_window.py:1548 +#: ../src/roster_window.py:1873 msgid "Select a key to apply to the contact" msgstr "Selecione uma chave para atribuir ao contato" -#: ../src/roster_window.py:1784 ../src/roster_window.py:2045 -msgid "_New group chat" -msgstr "_Nova conferência" +#: ../src/roster_window.py:2191 +msgid "_New Group Chat" +msgstr "_Nova Conferência" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:2331 msgid "I would like to add you to my roster" msgstr "Eu gostaria de adiciona-lo à minha lista" -#: ../src/roster_window.py:2090 ../src/roster_window.py:2137 +#. Send Group Message +#: ../src/roster_window.py:2465 ../src/roster_window.py:2677 msgid "Send Group M_essage" msgstr "Enviar M_ensagem de Grupo" -#: ../src/roster_window.py:2116 -msgid "Re_name" -msgstr "Re_nomear" +#: ../src/roster_window.py:2484 +msgid "_New group chat" +msgstr "_Nova conferência" + +#. Manage Transport submenu +#: ../src/roster_window.py:2522 +msgid "_Manage Contacts" +msgstr "_Gerenciar Contatos" + +#: ../src/roster_window.py:2583 +msgid "_Maximize" +msgstr "_Maximizar" -#: ../src/roster_window.py:2143 +#: ../src/roster_window.py:2590 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: ../src/roster_window.py:2669 +msgid "_Maximize All" +msgstr "_Maximizar Tudo" + +#: ../src/roster_window.py:2685 msgid "To all users" msgstr "Para todos os usuários" -#: ../src/roster_window.py:2146 +#: ../src/roster_window.py:2688 msgid "To all online users" msgstr "Para todos os usuários conectados" -#: ../src/roster_window.py:2182 +#. Log Off +#: ../src/roster_window.py:2805 +msgid "_Log off" +msgstr "_Efetuar logoff" + +#. Log on +#: ../src/roster_window.py:2811 msgid "_Log on" msgstr "_Conectar" -#: ../src/roster_window.py:2192 -msgid "Log _off" -msgstr "_Desconectar" +#. Send single message +#: ../src/roster_window.py:2823 +msgid "Send Single Message" +msgstr "Enviar Mensagem Simples" + +#. Manage Transport submenu +#: ../src/roster_window.py:2870 +msgid "_Manage Transport" +msgstr "_Gerenciar Transporte" + +#. Modify Transport +#: ../src/roster_window.py:2878 +msgid "_Modify Transport" +msgstr "_Modificar Transporte" -#: ../src/roster_window.py:2314 ../src/roster_window.py:2385 +#: ../src/roster_window.py:2992 ../src/roster_window.py:3066 msgid "_Change Status Message" msgstr "_Mudar Mensagem de Status" -#: ../src/roster_window.py:2457 +#: ../src/roster_window.py:3138 msgid "Authorization has been sent" msgstr "Autorização foi enviada" -#: ../src/roster_window.py:2458 +#: ../src/roster_window.py:3139 #, python-format msgid "Now \"%s\" will know your status." msgstr "Agora \"%s\" saberá seu status." -#: ../src/roster_window.py:2478 +#: ../src/roster_window.py:3159 msgid "Subscription request has been sent" msgstr "Solicitação de inscrição foi enviada" -#: ../src/roster_window.py:2479 +#: ../src/roster_window.py:3160 #, 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:2491 +#: ../src/roster_window.py:3172 msgid "Authorization has been removed" msgstr "Autorização foi removida" -#: ../src/roster_window.py:2492 +#: ../src/roster_window.py:3173 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Agora \"%s\" você sempre o verá como offline." -#: ../src/roster_window.py:2684 +#: ../src/roster_window.py:3407 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Contato \"%s\" será removido de sua lista" -#: ../src/roster_window.py:2688 +#: ../src/roster_window.py:3411 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -5243,7 +6067,7 @@ msgstr "" "Removendo este contato, você também removerá a autorização, resultando em " "ele ou ela sempre o verá offiline." -#: ../src/roster_window.py:2693 +#: ../src/roster_window.py:3416 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -5251,16 +6075,16 @@ 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:2696 +#: ../src/roster_window.py:3419 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" #. several contact to remove at the same time -#: ../src/roster_window.py:2700 +#: ../src/roster_window.py:3423 msgid "Contacts will be removed from your roster" msgstr "Os contatos serão removidos da sua lista" -#: ../src/roster_window.py:2704 +#: ../src/roster_window.py:3427 #, python-format msgid "" "By removing these contacts:%s\n" @@ -5270,7 +6094,7 @@ msgstr "" "você também remove a autorização fazendo com que eles sempre vejam você " "offline." -#: ../src/roster_window.py:2736 +#: ../src/roster_window.py:3454 msgid "" "Gnome Keyring is installed but not correctly started (environment variable " "probably not correctly set)" @@ -5278,40 +6102,22 @@ msgstr "" "O Gnome Keyring está instalado mas não corretamente iniciado (provavelmente " "a variável de ambiente não está definida corretamente)" -#. TODO: make this string translatable +#: ../src/roster_window.py:3473 +msgid "GPG is not usable" +msgstr "GPG não é usável" + #. %s is the account name here -#: ../src/roster_window.py:2764 ../src/common/connection.py:704 -#: ../src/common/zeroconf/connection_zeroconf.py:160 +#: ../src/roster_window.py:3474 ../src/common/connection_handlers.py:2153 +#: ../src/common/zeroconf/connection_zeroconf.py:171 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Você será conectado ao %s sem OpenPGP." -#: ../src/roster_window.py:2781 -msgid "Passphrase Required" -msgstr "Frase de acesso é obrigatória" - -#: ../src/roster_window.py:2782 -#, 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:2787 -msgid "Save passphrase" -msgstr "Salvar Frase de acesso" - -#: ../src/roster_window.py:2795 -msgid "Wrong Passphrase" -msgstr "Frase de acesso Errada" - -#: ../src/roster_window.py:2796 -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:2860 ../src/roster_window.py:2920 +#: ../src/roster_window.py:3545 ../src/roster_window.py:3623 msgid "You are participating in one or more group chats" msgstr "Você está participando em uma ou mais conferências" -#: ../src/roster_window.py:2861 ../src/roster_window.py:2921 +#: ../src/roster_window.py:3546 ../src/roster_window.py:3624 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -5319,21 +6125,21 @@ 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:2878 +#: ../src/roster_window.py:3580 msgid "No account available" msgstr "Conta não disponÃvel" -#: ../src/roster_window.py:2879 +#: ../src/roster_window.py:3581 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." -#: ../src/roster_window.py:2981 +#: ../src/roster_window.py:3730 #, python-format msgid "\"%(title)s\" by %(artist)s" msgstr "\"%(title)s\" by %(artist)s" -#: ../src/roster_window.py:3419 ../src/roster_window.py:3426 +#: ../src/roster_window.py:4218 ../src/roster_window.py:4225 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -5341,26 +6147,25 @@ msgstr "" "Mensagem somente estará disponÃvel para leitura mais tarde se você tiver o " "histórico habilitado." -#: ../src/roster_window.py:4016 +#: ../src/roster_window.py:4849 msgid "Metacontacts storage not supported by your server" msgstr "O armazenamento de metacontatos não é suportado pelo seu servidor." -#: ../src/roster_window.py:4018 +#: ../src/roster_window.py:4851 msgid "" "Your server does not support storing metacontacts information. So those " -"information will not be save on next reconnection." +"information will not be saved on next reconnection." msgstr "" -"O seu servidor não suporta a gravação de informação de metacontatos, " -"portanto essas informações não serão estarão disponÃveis na próxima vez que " -"você se conectar." +"O seu servidor não suporta a gravação de informação de metacontatos, então " +"essas informações não estarão salvas na próxima vez que você conectar." -#: ../src/roster_window.py:4060 +#: ../src/roster_window.py:4896 msgid "" "You are about to create a metacontact. Are you sure you want to continue?" msgstr "" "Você está prestes a criar um metacontato. Tem certeza que quer continuar?" -#: ../src/roster_window.py:4062 +#: ../src/roster_window.py:4898 msgid "" "Metacontacts are a way to regroup several contacts in one line. Generally it " "is used when the same person has several Jabber accounts or transport " @@ -5370,117 +6175,170 @@ msgstr "" "Geralmente isso é usado quando a mesma pessoa possui muitas contas de Jabber " "ou transportes." -#: ../src/roster_window.py:4140 -#, python-format -msgid "Do you want to send that file to %s:" +#: ../src/roster_window.py:4993 +#, fuzzy +msgid "Invalid file URI:" +msgstr "Arquivo inválido" + +#: ../src/roster_window.py:5004 +#, fuzzy, python-format +msgid "Do you want to send this file to %s:" msgid_plural "Do you want to send those files to %s:" msgstr[0] "Você quer enviar esse arquivo para %s:" msgstr[1] "%s quer te enviar um arquivo:" -#: ../src/roster_window.py:4245 -#, python-format -msgid "Drop %s in group %s" -msgstr "Derrubar %s no grupo %s" - -#: ../src/roster_window.py:4252 -#, python-format -msgid "Make %s and %s metacontacts" -msgstr "Fazer %s e %s metacontatos" - -#: ../src/roster_window.py:4439 +#: ../src/roster_window.py:5332 msgid "Change Status Message..." msgstr "Mudar Mensagem de Status..." -#: ../src/systray.py:163 +#: ../src/search_window.py:91 +msgid "Waiting for results" +msgstr "Esperando resultados" + +#: ../src/search_window.py:131 ../src/search_window.py:209 +msgid "Error in received dataform" +msgstr "Erro no formulário de dados recebido" + +#. No result +#: ../src/search_window.py:165 ../src/search_window.py:201 +msgid "No result" +msgstr "Sem resultados" + +#: ../src/secrets.py:45 +msgid "" +"To continue, Gajim needs to access your stored secrets. Enter your passphrase" +msgstr "" +"Para continuar, o Gajim precisa acessar suas senhas armazenadas. Entre com " +"sua senha" + +#: ../src/secrets.py:89 +msgid "Confirm Passphrase" +msgstr "Confirmar Frase de Acesso" + +#: ../src/secrets.py:90 +msgid "Enter your new passphrase again for confirmation" +msgstr "Digite novamente sua nova frase de acessar para confirmação" + +#: ../src/secrets.py:95 ../src/secrets.py:107 +msgid "Create Passphrase" +msgstr "Criar Frase de Acesso" + +#: ../src/secrets.py:96 +msgid "Passphrases did not match.\n" +msgstr "Frases de acesso não conferem.\n" + +#: ../src/secrets.py:97 ../src/secrets.py:108 +msgid "Gajim needs you to create a passphrase to encrypt stored secrets" +msgstr "" +"O Gajim precisa que você crie uma frase de acesso para criptografar as " +"senhas armazenadas" + +#: ../src/systray.py:169 msgid "_Change Status Message..." msgstr "_Mudar Mensagem de Status..." -#: ../src/systray.py:251 +#: ../src/systray.py:254 msgid "Hide this menu" msgstr "Esconder este menu" -#: ../src/tooltips.py:309 ../src/tooltips.py:493 +#: ../src/tooltips.py:316 ../src/tooltips.py:509 msgid "Jabber ID: " msgstr "Jabber ID:" -#: ../src/tooltips.py:312 ../src/tooltips.py:497 +#: ../src/tooltips.py:319 ../src/tooltips.py:513 msgid "Resource: " msgstr "Recurso: " -#: ../src/tooltips.py:317 +#: ../src/tooltips.py:324 #, python-format msgid "%(owner_or_admin_or_member)s of this group chat" msgstr "%(owner_or_admin_or_member)s dessa sala" -#: ../src/tooltips.py:430 ../src/tooltips.py:612 +#: ../src/tooltips.py:422 +msgid " [blocked]" +msgstr "[bloqueado]" + +#: ../src/tooltips.py:426 +msgid " [minimized]" +msgstr "[minimizado]" + +#: ../src/tooltips.py:441 ../src/tooltips.py:629 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:461 +#: ../src/tooltips.py:471 #, python-format msgid "Last status: %s" msgstr "Último status: %s" -#: ../src/tooltips.py:463 +#: ../src/tooltips.py:473 #, python-format msgid " since %s" msgstr "desde %s" +#: ../src/tooltips.py:491 +msgid "Connected" +msgstr "Conectado" + +#: ../src/tooltips.py:493 +msgid "Disconnected" +msgstr "Desconectado" + #. ('both' is the normal sub so we don't show it) -#: ../src/tooltips.py:503 +#: ../src/tooltips.py:520 msgid "Subscription: " msgstr "Inscrição: " -#: ../src/tooltips.py:513 +#: ../src/tooltips.py:530 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:568 +#: ../src/tooltips.py:585 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:574 +#: ../src/tooltips.py:591 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:581 +#: ../src/tooltips.py:598 msgid "Type: " msgstr "Tipo: " -#: ../src/tooltips.py:587 +#: ../src/tooltips.py:604 msgid "Transferred: " msgstr "Transferido: " -#: ../src/tooltips.py:590 ../src/tooltips.py:611 +#: ../src/tooltips.py:607 ../src/tooltips.py:628 msgid "Not started" msgstr "Não iniciado" -#: ../src/tooltips.py:594 +#: ../src/tooltips.py:611 msgid "Stopped" msgstr "Parado" -#: ../src/tooltips.py:596 ../src/tooltips.py:599 +#: ../src/tooltips.py:613 ../src/tooltips.py:616 msgid "Completed" msgstr "Completo" -#: ../src/tooltips.py:603 +#: ../src/tooltips.py:620 msgid "?transfer status:Paused" msgstr "?status da transferência: Parado" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:607 +#: ../src/tooltips.py:624 msgid "Stalled" msgstr "Parado" -#: ../src/tooltips.py:609 +#: ../src/tooltips.py:626 msgid "Transferring" msgstr "Transferindo" -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 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:644 +#: ../src/tooltips.py:663 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -5488,24 +6346,24 @@ msgstr "" "Este serviço não poderia responder com informações detalhadas.\n" "É mais provável quebrado" -#: ../src/vcard.py:201 +#: ../src/vcard.py:245 msgid "?Client:Unknown" msgstr "?Cliente:Desconhecido" -#: ../src/vcard.py:203 +#: ../src/vcard.py:247 msgid "?OS:Unknown" msgstr "?SO:Desconhecido" -#: ../src/vcard.py:231 ../src/vcard.py:409 +#: ../src/vcard.py:272 ../src/vcard.py:282 ../src/vcard.py:472 #, python-format msgid "since %s" msgstr "desde %s" -#: ../src/vcard.py:261 +#: ../src/vcard.py:311 msgid "Affiliation:" msgstr "Filiação:" -#: ../src/vcard.py:269 +#: ../src/vcard.py:319 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -5513,7 +6371,7 @@ 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:271 +#: ../src/vcard.py:321 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -5521,13 +6379,13 @@ msgstr "" "Você está interessado na informação da presença do contato, mas ele/ela não " "está interessado em seu" -#: ../src/vcard.py:273 +#: ../src/vcard.py:323 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" #. None -#: ../src/vcard.py:275 +#: ../src/vcard.py:325 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -5535,140 +6393,144 @@ msgstr "" "Você não está interessado na presença do contato, e nenhum está interessado " "no seu" -#: ../src/vcard.py:283 +#: ../src/vcard.py:333 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" -#: ../src/vcard.py:287 ../src/vcard.py:314 ../src/vcard.py:434 +#: ../src/vcard.py:337 ../src/vcard.py:374 ../src/vcard.py:497 msgid " resource with priority " msgstr " recurso com prioridade " -#: ../src/common/check_paths.py:33 +#: ../src/common/check_paths.py:38 msgid "creating logs database" msgstr "criando banco de dados de logs" -#: ../src/common/check_paths.py:89 ../src/common/check_paths.py:100 -#: ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:112 +#: ../src/common/check_paths.py:119 #, python-format msgid "%s is a file but it should be a directory" msgstr "%s é um arquivo, mas deveria ser um diretório" -#: ../src/common/check_paths.py:90 ../src/common/check_paths.py:101 -#: ../src/common/check_paths.py:108 ../src/common/check_paths.py:116 +#: ../src/common/check_paths.py:102 ../src/common/check_paths.py:113 +#: ../src/common/check_paths.py:120 ../src/common/check_paths.py:128 msgid "Gajim will now exit" msgstr "Gajim sairá agora" -#: ../src/common/check_paths.py:115 +#: ../src/common/check_paths.py:127 #, python-format msgid "%s is a directory but should be a file" msgstr "%s é um diretório, mas deveria ser um arquivo" -#: ../src/common/check_paths.py:131 +#: ../src/common/check_paths.py:143 #, python-format msgid "creating %s directory" msgstr "criando diretório %s" -#: ../src/common/commands.py:69 +#: ../src/common/commands.py:74 msgid "Change status information" msgstr "Alterar informação de status" -#: ../src/common/commands.py:82 +#: ../src/common/commands.py:87 msgid "Change status" msgstr "Alterar status" -#: ../src/common/commands.py:83 +#: ../src/common/commands.py:88 msgid "Set the presence type and description" msgstr "Definir o tipo e a descrição da presença" -#: ../src/common/commands.py:89 +#: ../src/common/commands.py:94 msgid "Free for chat" msgstr "Livre para conversa" -#: ../src/common/commands.py:90 +#: ../src/common/commands.py:95 msgid "Online" msgstr "Conectado" -#: ../src/common/commands.py:92 +#: ../src/common/commands.py:97 msgid "Extended away" msgstr "Muito afastado" -#: ../src/common/commands.py:93 +#: ../src/common/commands.py:98 msgid "Do not disturb" msgstr "Não perturbe" -#: ../src/common/commands.py:94 +#: ../src/common/commands.py:99 msgid "Offline - disconnect" msgstr "Desconectado" -#: ../src/common/commands.py:99 +#: ../src/common/commands.py:104 msgid "Presence description:" msgstr "Descrição da presença:" -#: ../src/common/commands.py:134 +#: ../src/common/commands.py:139 msgid "The status has been changed." msgstr "O status foi alterado." -#: ../src/common/commands.py:179 +#: ../src/common/commands.py:184 #, python-format msgid "%(nickname)s on %(room_jid)s" msgstr "%(nickname)s da sala %(room_jid)s" -#: ../src/common/commands.py:183 +#: ../src/common/commands.py:188 msgid "You have not joined a groupchat." msgstr "Você não entrou em uma sala." -#: ../src/common/commands.py:189 +#: ../src/common/commands.py:194 msgid "Leave Groupchats" msgstr "Sair das salas" -#: ../src/common/commands.py:190 +#: ../src/common/commands.py:195 msgid "Choose the groupchats you want to leave" msgstr "Selecione as salas das quais você quer sair" -#: ../src/common/commands.py:194 -msgid "Groupchats" -msgstr "Salas" - -#: ../src/common/commands.py:230 +#: ../src/common/commands.py:235 msgid "You left the following groupchats:" msgstr "Você saiu das seguintes salas:" -#: ../src/common/config.py:56 +#: ../src/common/commands.py:247 +msgid "Forward unread messages" +msgstr "Encaminhar mensagens não lidas" + +#: ../src/common/commands.py:267 +msgid "All unread messages have been forwarded." +msgstr "Todas as mensagens não lidas foram encaminhadas." + +#: ../src/common/config.py:74 msgid "Use D-Bus and Notification-Daemon to show notifications" msgstr "Usar DBus e Notification-Daemon para mostrar notificações" -#: ../src/common/config.py:61 +#: ../src/common/config.py:79 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:62 +#: ../src/common/config.py:80 msgid "Away as a result of being idle" msgstr "Afastado em conseqüência de estar inativo" -#: ../src/common/config.py:64 +#: ../src/common/config.py:82 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:65 +#: ../src/common/config.py:83 msgid "Not available as a result of being idle" msgstr "Não disponÃvel em conseqüência de estar inativo" -#: ../src/common/config.py:83 +#: ../src/common/config.py:101 msgid "" "List (space separated) of rows (accounts and groups) that are collapsed." msgstr "" "Lista (separada por espaços) de linhas (contas e grupos) que estão agrupados." -#: ../src/common/config.py:88 +#: ../src/common/config.py:106 msgid "Enable link-local/zeroconf messaging" msgstr "Ativar mensagens \"link-local\"/\"zeroconf\"" -#: ../src/common/config.py:91 +#: ../src/common/config.py:109 msgid "Language used by speller" msgstr "Idioma usado pelo corretor ortográfico" -#: ../src/common/config.py:92 +#: ../src/common/config.py:110 msgid "" "'always' - print time for every message.\n" "'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" @@ -5678,7 +6540,7 @@ msgstr "" "'à s vezes' - mostrar hora a cada print_ichat_every_foo_minutes minutos.\n" "'nunca' - nunca mostrar a hora." -#: ../src/common/config.py:93 +#: ../src/common/config.py:111 msgid "" "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 least precise one. " @@ -5688,18 +6550,18 @@ msgstr "" "varia de 1 a 4, 0 desabilita a função. 1 é relógio mais preciso, 4 é o " "menos. Isto é usado apenas se o valor de print_time for 'à s vezes'." -#: ../src/common/config.py:96 +#: ../src/common/config.py:114 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Aproveite os pare * /_ como caracteres de formatação. " -#: ../src/common/config.py:97 +#: ../src/common/config.py:115 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:100 +#: ../src/common/config.py:118 msgid "" "Uses ReStructured text markup to send HTML, plus ascii formatting if " "selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" @@ -5710,7 +6572,7 @@ msgstr "" "sourceforge.net/docs/ref/rst/restructuredtext.html (Se você quiser usar " "isso, instale o docutils)" -#: ../src/common/config.py:109 +#: ../src/common/config.py:127 msgid "" "Character to add after nickname when using nick completion (tab) in group " "chat." @@ -5718,7 +6580,7 @@ msgstr "" "Caracter a adicionar ao apelido quando se estiver usando o recurso de " "completar apelido (tecla Tab) na conferência." -#: ../src/common/config.py:110 +#: ../src/common/config.py:128 msgid "" "Character to propose to add after desired nickname when desired nickname is " "used by someone else in group chat." @@ -5726,7 +6588,7 @@ msgstr "" "O caracter a ser proposto para adicionar ao final do apelido desejado quando " "ele já estiver sendo usado por outra pessoa na conferência." -#: ../src/common/config.py:133 +#: ../src/common/config.py:151 msgid "" "This option let you customize timestamp that is printed in conversation. For " "exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " @@ -5737,19 +6599,34 @@ msgstr "" "por strftime na documentação do Python: http://docs.python.org/lib/module-" "time.html" -#: ../src/common/config.py:134 +#: ../src/common/config.py:152 msgid "Characters that are printed before the nickname in conversations" msgstr "Os caracteres que são exibidos antes do apelido nas conversas" -#: ../src/common/config.py:135 +#: ../src/common/config.py:153 msgid "Characters that are printed after the nickname in conversations" msgstr "Os caracteres que são exibidos após o apelidos nas conversas" -#: ../src/common/config.py:142 +#: ../src/common/config.py:156 +msgid "" +"If checked, Gajim can regularly poll a Last.fm account and adjust the status " +"message to reflect recently played songs. " +"set_status_msg_from_current_music_track option must be False." +msgstr "" +"Se marcado, o Gajim pode pesquisar regularmente em uma conta do Last.fm para " +"ajustar a mensagem de status de modo a refletir as músicas tocadas " +"recentemente. A opção set_status_msg_from_current_music_track precisa ser " +"Falso." + +#: ../src/common/config.py:157 +msgid "The username used to identify the Last.fm account." +msgstr "O nome de usuário usado para identificar a conta Last.fm." + +#: ../src/common/config.py:162 msgid "Add * and [n] in roster title?" msgstr "Adicionar * e [n] no tÃtulo da lista?" -#: ../src/common/config.py:143 +#: ../src/common/config.py:163 msgid "" "How many lines to remember from previous conversation when a chat tab/window " "is reopened." @@ -5757,12 +6634,12 @@ msgstr "" "Quantas linhas lembrar da conversação anterior quando uma aba/janela de bate-" "papo for reaberta." -#: ../src/common/config.py:144 +#: ../src/common/config.py:164 msgid "How many minutes should last lines from previous conversation last." msgstr "" "Quantos minutos mostrar ao exibir as últimas linhas da conversação anterior." -#: ../src/common/config.py:145 +#: ../src/common/config.py:165 msgid "" "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " "Client default behaviour)." @@ -5770,11 +6647,11 @@ msgstr "" "Enviar a mensagem com Ctrl+Enter e criar uma nova linha com Enter " "(comportamento padrão do cliente ICQ da Mirabilis)." -#: ../src/common/config.py:147 +#: ../src/common/config.py:167 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Quantas linhas armazenar com Ctrl+Acima." -#: ../src/common/config.py:150 +#: ../src/common/config.py:170 #, python-format msgid "" "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " @@ -5783,12 +6660,12 @@ msgstr "" "Uma ou outra URL costuma vir com %s onde %s é a palvra/frase ou ' em " "WIKTIONARY ' que significam o uso wiktionary." -#: ../src/common/config.py:153 +#: ../src/common/config.py:173 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "" "Se verificado, Gajim pode ser remotamente controlado usando gajim-remoto." -#: ../src/common/config.py:154 +#: ../src/common/config.py:174 msgid "" "If True, listen to D-Bus signals from NetworkManager and change the status " "of accounts (provided they do not have listen_to_network_manager set to " @@ -5800,14 +6677,14 @@ msgstr "" "configurado para Falso e se estiverem sincronizadas com o status global) " "baseado no status da conexão de rede." -#: ../src/common/config.py:155 +#: ../src/common/config.py:175 msgid "" "Sent chat state notifications. Can be one of all, composing_only, disabled." msgstr "" "Notificações de estado de conversa enviados. Pode ser one of all, " "composing_only, disabled." -#: ../src/common/config.py:156 +#: ../src/common/config.py:176 msgid "" "Displayed chat state notifications in chat windows. Can be one of all, " "composing_only, disabled." @@ -5815,7 +6692,7 @@ msgstr "" "Notificações de estado de conversa exibidos nas janelas de conversa. Pode " "ser one of all, composing_only, disabled." -#: ../src/common/config.py:158 +#: ../src/common/config.py:178 msgid "" "When not printing time for every message (print_time==sometimes), print it " "every x minutes." @@ -5823,11 +6700,11 @@ msgstr "" "Quando não estiver exibindo a hora para cada mensagem (print_time == " "simetimes), exibi-lo a cada x minutos." -#: ../src/common/config.py:159 +#: ../src/common/config.py:179 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:160 +#: ../src/common/config.py:180 msgid "" "Always ask before closing group chat tab/window in this space separated list " "of group chat jids." @@ -5835,7 +6712,7 @@ msgstr "" "Sempre perguntar antes de fechar um aba/janela nesta lista separada por " "espaço de JID's de conferências." -#: ../src/common/config.py:161 +#: ../src/common/config.py:181 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of group chat jids." @@ -5843,7 +6720,7 @@ msgstr "" "Nunca perguntar antes de fechar uma aba/janela de conferência nesta lista " "separada por espaço de salas separadas por jids." -#: ../src/common/config.py:164 +#: ../src/common/config.py:184 msgid "" "Comma separated list of hosts that we send, in addition of local interfaces, " "for File Transfer in case of address translation/port forwarding." @@ -5852,34 +6729,54 @@ msgstr "" "interfaces locais, para Transferência de Arquivo no caso de tradução de " "endereço/encaminhamento de porta." -#: ../src/common/config.py:166 +#: ../src/common/config.py:186 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." msgstr "Padrão da IEC diz que KiB = 1024 bytes e KB = 1000 bytes." -#: ../src/common/config.py:168 +#: ../src/common/config.py:188 msgid "Notify of events in the system trayicon." msgstr "Notificar os eventos no Ãcone da bandeja do sistema." -#: ../src/common/config.py:174 +#: ../src/common/config.py:194 msgid "Show tab when only one conversation?" msgstr "Mostrar aba quando tiver apenas uma bate papo?" -#: ../src/common/config.py:175 +#: ../src/common/config.py:195 msgid "Show tabbed notebook border in chat windows?" msgstr "Mostrar borda de caderno tabulada nas janelas de conversa?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:196 msgid "Show close button in tab?" msgstr "Mostrar botão de fechar na aba?" -#: ../src/common/config.py:189 +#: ../src/common/config.py:197 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "" +"Ao negociar uma sessão criptografada, o Gajim deve assumir que você quer que " +"suas mensagens sejam gravadas?" + +#: ../src/common/config.py:198 +msgid "" +"When negotiating an encrypted session, should Gajim prefer to use public " +"keys for identification?" +msgstr "" +"Ao negociar uma sessão criptografada o Gajim deve preferir usar chaves " +"públicas para identificação?" + +#: ../src/common/config.py:207 +msgid "Preview new messages in notification popup?" +msgstr "Pré-visualizar novas mensagens em uma janela popup?" + +#: ../src/common/config.py:212 msgid "" "A semicolon-separated list of words that will be highlighted in group chats." msgstr "" "Uma lista separada por ponto-e-vÃrgula das palavras que serão destacadas nas " "conferências." -#: ../src/common/config.py:190 +#: ../src/common/config.py:213 msgid "" "If True, quits Gajim when X button of Window Manager is clicked. This " "setting is taken into account only if trayicon is used." @@ -5887,13 +6784,13 @@ 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:191 +#: ../src/common/config.py:214 msgid "" "If True, Gajim will check if it's the default jabber client on each startup." msgstr "" "Se Verdadeiro, o Gajim verifica ao iniciar se é o cliente Jabber padrão." -#: ../src/common/config.py:192 +#: ../src/common/config.py:215 msgid "" "If True, Gajim will display an icon on each tab containing unread messages. " "Depending on the theme, this icon may be animated." @@ -5901,7 +6798,7 @@ 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:193 +#: ../src/common/config.py:216 msgid "" "If True, Gajim will display the status message, if not empty, for every " "contact under the contact name in roster window." @@ -5909,7 +6806,7 @@ msgstr "" "Se Verdadeiro, o Gajim indicará a mensagem de status, se não estiver vazia, " "para cada contato sob o nome do contato na janela da lista." -#: ../src/common/config.py:195 +#: ../src/common/config.py:218 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." @@ -5917,7 +6814,7 @@ 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:196 +#: ../src/common/config.py:219 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." @@ -5925,7 +6822,7 @@ msgstr "" "Se Falso, você não verá por mais muito tempo a linha de status nas conversas " "quando um contato alterar seu status e/ou sua mensagem de status." -#: ../src/common/config.py:197 +#: ../src/common/config.py:220 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 " @@ -5939,29 +6836,29 @@ msgstr "" "\" o Gajim exibirá todas as mensagens de status. Se for \"in_and_out\" o " "Gajim só mostrará FOO entradas/saÃdas em conferências." -#: ../src/common/config.py:199 +#: ../src/common/config.py:222 msgid "Background color of contacts when they just signed in." msgstr "Cor de fundo dos contatos quando eles simplesmente conectarem." -#: ../src/common/config.py:200 +#: ../src/common/config.py:223 msgid "Background color of contacts when they just signed out." msgstr "Cor de fundo dos contatos quando eles simplesmente desconectarem." -#: ../src/common/config.py:202 +#: ../src/common/config.py:225 msgid "" "If True, restored messages will use a smaller font than the default one." msgstr "" "Se Verdadeiro, as mensagens restauradas usarão uma fonte menor que o padrão." -#: ../src/common/config.py:203 +#: ../src/common/config.py:226 msgid "Don't show avatar for the transport itself." msgstr "Não mostrar o avatar para o próprio transporte." -#: ../src/common/config.py:204 +#: ../src/common/config.py:227 msgid "Don't show roster in the system taskbar." msgstr "Não mostrar a lista na bandeja do sistema." -#: ../src/common/config.py:205 +#: ../src/common/config.py:228 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 " @@ -5971,7 +6868,7 @@ msgstr "" "faz a janela piscar (o comportamento padrão na maioria dos Gerenciadores de " "Janela) quando esperam eventos pendentes." -#: ../src/common/config.py:207 +#: ../src/common/config.py:230 msgid "" "Jabberd1.4 does not like sha info when one join a password protected group " "chat. Turn this option to False to stop sending sha info in group chat " @@ -5982,7 +6879,7 @@ msgstr "" "informações sha na presenças de conferências." #. always, never, peracct, pertype should not be translated -#: ../src/common/config.py:210 +#: ../src/common/config.py:233 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -6000,36 +6897,32 @@ msgstr "" "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:211 +#: ../src/common/config.py:234 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:212 +#: ../src/common/config.py:235 msgid "If True, pressing the escape key closes a tab/window." msgstr "Se Verdadeiro, pressionando a tecla Esc fecha a aba/janela" -#: ../src/common/config.py:213 -msgid "Hides the buttons in group chat window." -msgstr "Esconder os botões na janela de conferência." - -#: ../src/common/config.py:214 -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:236 +msgid "Hides the buttons in chat windows." +msgstr "Esconder os botões nas janelas de conversa." -#: ../src/common/config.py:215 +#: ../src/common/config.py:237 msgid "Hides the banner in a group chat window" msgstr "Esconder o banner na janela de conferência" -#: ../src/common/config.py:216 +#: ../src/common/config.py:238 msgid "Hides the banner in two persons chat window" msgstr "Esconder o banner na janela de conversa para duas pessoas " -#: ../src/common/config.py:217 +#: ../src/common/config.py:239 msgid "Hides the group chat occupants list in group chat window." msgstr "Esconder a lista dos ocupantes da sala na janela da conferência." -#: ../src/common/config.py:218 +#: ../src/common/config.py:240 msgid "" "In a chat, show the nickname at the beginning of a line only when it's not " "the same person talking than in previous message." @@ -6037,22 +6930,26 @@ msgstr "" "Em uma conferência, mostrar o apelido no começo da linha apenas quando a " "mensagem atual não for da mesma pessoa que mandou a última." -#: ../src/common/config.py:219 +#: ../src/common/config.py:241 msgid "Indentation when using merge consecutive nickname." msgstr "Usar identação ao mesclar apelidos consecutivos." -#: ../src/common/config.py:220 +#: ../src/common/config.py:242 +msgid "Smooth scroll message in conversation window" +msgstr "Suavizar a rolagem de mensagens na janela de conversação" + +#: ../src/common/config.py:243 msgid "List of colors that will be used to color nicknames in group chats." msgstr "" "A lista de cores que serão usadas para os apelidos nas salas de conferência." -#: ../src/common/config.py:221 +#: ../src/common/config.py:244 msgid "Ctrl-Tab go to next composing tab when none is unread." msgstr "" "Quando nenhum aba tiver uma mensagem não lida, Ctrl + Tab vai para a próxima " "aba." -#: ../src/common/config.py:222 +#: ../src/common/config.py:245 msgid "" "Should we show the confirm metacontacts creation dialog or not? Empty string " "means we never show the dialog." @@ -6060,7 +6957,7 @@ msgstr "" "Devemos mostrar o diálogo de confirmação de metacontatos ou não? Uma string " "vazia significa que nós nunca devemos mostrar o diálogo." -#: ../src/common/config.py:223 +#: ../src/common/config.py:246 msgid "" "If True, you will be able to set a negative priority to your account in " "account modification window. BE CAREFUL, when you are logged in with a " @@ -6071,7 +6968,7 @@ msgstr "" "autenticado com uma prioridade negativa, você NÃO poderá receber nenhuma " "mensagem do seu servidor." -#: ../src/common/config.py:224 +#: ../src/common/config.py:247 msgid "" "If True, Gajim will use Gnome Keyring (if available) to store account " "passwords." @@ -6079,7 +6976,7 @@ msgstr "" "Se Verdadeiro, o Gajim usará o Gnome Keyring (se disponÃvel) para armazenar " "as senhas das contas." -#: ../src/common/config.py:225 +#: ../src/common/config.py:248 msgid "" "If True, Gajim will show number of online and total contacts in account and " "group rows." @@ -6087,7 +6984,7 @@ msgstr "" "Se Verdadeiro, o Gajim mostrará o número de contatos online e do total de " "contatos nas linha de conta e grupo." -#: ../src/common/config.py:226 +#: ../src/common/config.py:249 msgid "" "Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " "as if they were of this type" @@ -6095,7 +6992,7 @@ msgstr "" "Pode ser vazio, 'chat' ou 'normal'. Se for vazio, trata todas as mensagens " "recebidas como se elas fossem do tipo especificado" -#: ../src/common/config.py:227 +#: ../src/common/config.py:250 msgid "" "If True, Gajim will scroll and select the contact who sent you the last " "message, if chat window is not already opened." @@ -6103,7 +7000,37 @@ msgstr "" "Se Verdadeiro, o Gajim irá rolar e selecionar o contato que lhe enviou a " "última mensagem, se a janela de conversa ainda não estiver aberta." -#: ../src/common/config.py:238 +#: ../src/common/config.py:251 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" +"Se definido como Verdadeiro o Gajim converterá strings entre $$ e $$ em uma " +"imagem usando o dvips antes de inseri-la em uma janela de conversa." + +#: ../src/common/config.py:252 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "" +"O tempo de inatividade necessário antes de fechar a janela de alteração de " +"status." + +#: ../src/common/config.py:253 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "" +"Número máximo de linhas que são exibidas em conversações. As linhas mais " +"antigas são apagadas." + +#: ../src/common/config.py:254 +msgid "" +"If True, notification windows from notification-daemon will be attached to " +"systray icon." +msgstr "" +"Se marcado como Verdadeiro as janelas de notificação do notification-daemon " +"serão anexadas ao Ãcone da bandeja do sistema." + +#: ../src/common/config.py:265 msgid "" "Priority will change automatically according to your status. Priorities are " "defined in autopriority_* options." @@ -6112,11 +7039,11 @@ msgstr "" "prioridades são definidas nas opções autopriority_." #. yes, no, ask -#: ../src/common/config.py:267 +#: ../src/common/config.py:293 msgid "Jabberd2 workaround" msgstr "Jabberd2 rodando" -#: ../src/common/config.py:271 +#: ../src/common/config.py:297 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -6124,101 +7051,101 @@ 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:330 +#: ../src/common/config.py:356 msgid "Is OpenPGP enabled for this contact?" msgstr "O OpenPGP está ativado para este contato?" -#: ../src/common/config.py:331 ../src/common/config.py:334 +#: ../src/common/config.py:357 ../src/common/config.py:360 msgid "Language for which we want to check misspelled words" msgstr "Idioma a usar na verificação ortográficas das palavras" -#: ../src/common/config.py:340 +#: ../src/common/config.py:366 msgid "all or space separated status" msgstr "todos ou lista de status separados por espaço" -#: ../src/common/config.py:341 +#: ../src/common/config.py:367 msgid "'yes', 'no', or 'both'" msgstr "'sim', 'não' ou 'ambos'" -#: ../src/common/config.py:342 ../src/common/config.py:344 -#: ../src/common/config.py:345 ../src/common/config.py:348 -#: ../src/common/config.py:349 +#: ../src/common/config.py:368 ../src/common/config.py:370 +#: ../src/common/config.py:371 ../src/common/config.py:374 +#: ../src/common/config.py:375 msgid "'yes', 'no' or ''" msgstr "'sim', 'não', ou ''" -#: ../src/common/config.py:355 +#: ../src/common/config.py:381 msgid "Sleeping" msgstr "Dormindo" -#: ../src/common/config.py:356 +#: ../src/common/config.py:382 msgid "Back soon" msgstr "Volto logo" -#: ../src/common/config.py:356 +#: ../src/common/config.py:382 msgid "Back in some minutes." msgstr "Volto em alguns minutos." -#: ../src/common/config.py:357 +#: ../src/common/config.py:383 msgid "Eating" msgstr "Comendo" -#: ../src/common/config.py:357 +#: ../src/common/config.py:383 msgid "I'm eating, so leave me a message." msgstr "Eu estou comendo, então deixe-me uma mensagem." -#: ../src/common/config.py:358 +#: ../src/common/config.py:384 msgid "Movie" msgstr "Filme" -#: ../src/common/config.py:358 +#: ../src/common/config.py:384 msgid "I'm watching a movie." msgstr "Estou assistindo um filme." -#: ../src/common/config.py:359 +#: ../src/common/config.py:385 msgid "Working" msgstr "Trabalhando" -#: ../src/common/config.py:359 +#: ../src/common/config.py:385 msgid "I'm working." msgstr "Estou trabalhando." -#: ../src/common/config.py:360 +#: ../src/common/config.py:386 msgid "Phone" msgstr "Telefone" -#: ../src/common/config.py:360 +#: ../src/common/config.py:386 msgid "I'm on the phone." msgstr "Estou no telefone." -#: ../src/common/config.py:361 +#: ../src/common/config.py:387 msgid "Out" msgstr "Estou fora" -#: ../src/common/config.py:361 +#: ../src/common/config.py:387 msgid "I'm out enjoying life." msgstr "Estou fora curtindo a vida." -#: ../src/common/config.py:365 +#: ../src/common/config.py:391 msgid "I'm available." msgstr "Estou disponÃvel." -#: ../src/common/config.py:366 +#: ../src/common/config.py:392 msgid "I'm free for chat." msgstr "Estou livre para conversar." -#: ../src/common/config.py:368 +#: ../src/common/config.py:394 msgid "I'm not available." msgstr "Não estou disponÃvel." -#: ../src/common/config.py:369 +#: ../src/common/config.py:395 msgid "Do not disturb." msgstr "Não perturbe." -#: ../src/common/config.py:370 ../src/common/config.py:371 +#: ../src/common/config.py:396 ../src/common/config.py:397 msgid "Bye!" msgstr "Tchau!" -#: ../src/common/config.py:380 +#: ../src/common/config.py:406 msgid "" "Sound to play when a group chat message contains one of the words in " "muc_highlight_words, or when a group chat message contains your nickname." @@ -6226,138 +7153,128 @@ msgstr "" "Som para tocar quando uma mensagem MUC conter uma das palavras no " "muc_hightlight_words, ou quando uma mensagem MUC contiver seu apelido." -#: ../src/common/config.py:381 +#: ../src/common/config.py:407 msgid "Sound to play when any MUC message arrives." msgstr "Som a ser tocado quando qualquer mensagem MUC chegar." -#: ../src/common/config.py:390 ../src/common/optparser.py:195 +#: ../src/common/config.py:416 ../src/common/optparser.py:220 msgid "green" msgstr "verde" -#: ../src/common/config.py:394 ../src/common/optparser.py:181 +#: ../src/common/config.py:420 ../src/common/optparser.py:206 msgid "grocery" msgstr "mantimento" -#: ../src/common/config.py:398 +#: ../src/common/config.py:424 msgid "human" msgstr "humano" -#: ../src/common/config.py:402 +#: ../src/common/config.py:428 msgid "marine" msgstr "marinho" -#: ../src/common/connection_handlers.py:52 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 +#: ../src/common/connection_handlers.py:61 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:49 msgid "Unable to load idle module" msgstr "Incapaz de carregar o módulo inativo" -#: ../src/common/connection_handlers.py:180 -#: ../src/common/connection_handlers.py:215 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +#: ../src/common/connection_handlers.py:219 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 msgid "Wrong host" msgstr "Servidor errado" -#: ../src/common/connection_handlers.py:180 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 -#, python-format -msgid "" -"The host %s you configured as the ft_add_hosts_to_send advanced option is " -"not valid, so ignored." -msgstr "" -"O computador %s que você especificou na configuração avançada " -"ft_override_host_to_send não é válido e será ignorado." - -#: ../src/common/connection_handlers.py:216 +#: ../src/common/connection_handlers.py:220 msgid "Invalid local address? :-O" msgstr "Endereço local inválido? :-O" -#: ../src/common/connection_handlers.py:607 +#: ../src/common/connection_handlers.py:618 #, 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" -#: ../src/common/connection_handlers.py:1550 +#: ../src/common/connection_handlers.py:1802 #, python-format msgid "Nickname not allowed: %s" msgstr "Apelido não permitido: %s" -#. password required to join #. we are banned #. group chat does not exist -#: ../src/common/connection_handlers.py:1615 -#: ../src/common/connection_handlers.py:1618 -#: ../src/common/connection_handlers.py:1621 -#: ../src/common/connection_handlers.py:1624 -#: ../src/common/connection_handlers.py:1627 -#: ../src/common/connection_handlers.py:1630 -#: ../src/common/connection_handlers.py:1638 +#: ../src/common/connection_handlers.py:1872 +#: ../src/common/connection_handlers.py:1875 +#: ../src/common/connection_handlers.py:1878 +#: ../src/common/connection_handlers.py:1881 +#: ../src/common/connection_handlers.py:1885 +#: ../src/common/connection_handlers.py:1894 msgid "Unable to join group chat" msgstr "ImpossÃvel ingressar na sala" -#: ../src/common/connection_handlers.py:1616 -msgid "A password is required to join this group chat." -msgstr "Uma senha é requerida para entrar nesta sala." - -#: ../src/common/connection_handlers.py:1619 -msgid "You are banned from this group chat." -msgstr "Você está banido desta sala." +#: ../src/common/connection_handlers.py:1873 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Você está banido da sala %s." -#: ../src/common/connection_handlers.py:1622 -msgid "Such group chat does not exist." -msgstr "Tal sala não existe." +#: ../src/common/connection_handlers.py:1876 +#, python-format +msgid "Group chat %s does not exist." +msgstr "A sala %s não existe." -#: ../src/common/connection_handlers.py:1625 +#: ../src/common/connection_handlers.py:1879 msgid "Group chat creation is restricted." msgstr "A criação de sala é restrita." -#: ../src/common/connection_handlers.py:1628 -msgid "Your registered nickname must be used." -msgstr "Seu nickname registado deve ser usado." +#: ../src/common/connection_handlers.py:1882 +#, python-format +msgid "Your registered nickname must be used in group chat %s." +msgstr "Seu nickname registado deve ser usado na sala %s." -#: ../src/common/connection_handlers.py:1631 -msgid "You are not in the members list." -msgstr "Você não está na lista de membros." +#: ../src/common/connection_handlers.py:1886 +#, python-format +msgid "You are not in the members list in groupchat %s." +msgstr "Você não está na lista de membros da sala %s." -#: ../src/common/connection_handlers.py:1639 +#: ../src/common/connection_handlers.py:1895 +#, python-format msgid "" -"Your desired nickname is in use or registered by another occupant.\n" +"Your desired nickname in group chat %s 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:" +"O apelido que você deseja usar está em uso ou registado por um outro " +"ocupante.\n" +"Por favor, especifique um outro apelido abaixo:" #. Room has been destroyed. see #. http://www.xmpp.org/extensions/xep-0045.html#destroyroom -#: ../src/common/connection_handlers.py:1682 +#: ../src/common/connection_handlers.py:1926 msgid "Room has been destroyed" msgstr "A sala foi excluÃda" -#: ../src/common/connection_handlers.py:1689 +#: ../src/common/connection_handlers.py:1933 #, python-format msgid "You can join this room instead: %s" msgstr "Você pode entrar nessa sala ao invés: %s" -#: ../src/common/connection_handlers.py:1715 +#: ../src/common/connection_handlers.py:1960 msgid "I would like to add you to my roster." msgstr "Eu gostaria de adiciona-lo à minha lista." #. BE CAREFUL: no con.updateRosterItem() in a callback -#: ../src/common/connection_handlers.py:1736 +#: ../src/common/connection_handlers.py:1981 #, python-format msgid "we are now subscribed to %s" msgstr "nós estamos agora inscritos para %s" -#: ../src/common/connection_handlers.py:1738 +#: ../src/common/connection_handlers.py:1983 #, python-format msgid "unsubscribe request from %s" msgstr "Remoção de Inscrição solicitada por %s" -#: ../src/common/connection_handlers.py:1740 +#: ../src/common/connection_handlers.py:1985 #, python-format msgid "we are now unsubscribed from %s" msgstr "nós estamos agora sem inscrição para %s" -#: ../src/common/connection_handlers.py:1859 +#: ../src/common/connection_handlers.py:2112 #, python-format msgid "" "JID %s is not RFC compliant. It will not be added to your roster. Use roster " @@ -6367,88 +7284,71 @@ msgstr "" "ferramentas de gerência da lista como http://jru.jabberstudio.org/ para " "removê-lo" -#: ../src/common/connection.py:194 -#: ../src/common/zeroconf/connection_zeroconf.py:198 +#. We didn't set a passphrase +#: ../src/common/connection_handlers.py:2151 +#: ../src/common/zeroconf/connection_zeroconf.py:169 +msgid "OpenPGP passphrase was not given" +msgstr "Palavra-chave do OpenPGP não foi recebida" + +#: ../src/common/connection.py:243 +#: ../src/common/zeroconf/connection_zeroconf.py:209 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Conexão com a conta \"%s\" foi perdida" -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:244 msgid "Reconnect manually." msgstr "Reconecte manualmente." -#: ../src/common/connection.py:206 ../src/common/connection.py:233 +#: ../src/common/connection.py:255 #, python-format -msgid "Transport %s answered wrongly to register request: %s" -msgstr "Transporte %s respondeu errado para registar o pedido: %s" +msgid "Server %s answered wrongly to register request: %s" +msgstr "O servidor %s respondeu erroneamente à requisição de registro: %s" #. wrong answer -#: ../src/common/connection.py:232 +#: ../src/common/connection.py:263 msgid "Invalid answer" msgstr "Resposta inválida" -#: ../src/common/connection.py:380 +#: ../src/common/connection.py:264 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "Transporte %s respondeu errado para registar o pedido: %s" + +#: ../src/common/connection.py:410 msgid "Connection to proxy failed" msgstr "Falha na conexão com o proxy" -#: ../src/common/connection.py:434 ../src/common/connection.py:532 -#: ../src/common/connection.py:1003 -#: ../src/common/zeroconf/connection_zeroconf.py:219 +#: ../src/common/connection.py:464 ../src/common/connection.py:510 +#: ../src/common/connection.py:1081 +#: ../src/common/zeroconf/connection_zeroconf.py:243 #, python-format msgid "Could not connect to \"%s\"" msgstr "ImpossÃvel conectar a \"%s\"" -#: ../src/common/connection.py:448 +#: ../src/common/connection.py:478 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Conectado ao servidor %s:%s com %s" -#: ../src/common/connection.py:461 -#, python-format -msgid "Security error connecting to \"%s\"" -msgstr "Erro de segurança ao conectar a \"%s\"" - -#: ../src/common/connection.py:462 -msgid "" -"The server's key has changed, or someone is trying to hack your connection." -msgstr "" -"A chave do servidor foi alterada ou alguém está tentando hackear a sua " -"conexão." - -#: ../src/common/connection.py:469 -#, python-format -msgid "Unable to check fingerprint for %s. Connection could be insecure." -msgstr "" -"Incapaz de verifica a impressão digital de %s. A conexão pode ser insegura." - #: ../src/common/connection.py:511 -#, python-format -msgid "Missing fingerprint in SSL connection to %s" -msgstr "Faltando impressão digital na conexão SSL para %s" - -#: ../src/common/connection.py:517 -#, python-format -msgid "Fingerprint mismatch for %s: Got %s, expected %s" -msgstr "Conflito de impressões digitais para %s: obtido %s, esperado %s" - -#: ../src/common/connection.py:533 msgid "Check your connection or try again later" msgstr "Verifique sua conexão ou tente novamente mais tarde" -#: ../src/common/connection.py:559 +#: ../src/common/connection.py:536 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Falha na autenticação com \"%s\"" -#: ../src/common/connection.py:560 +#: ../src/common/connection.py:538 msgid "Please check your login and password for correctness." msgstr "Por favor, verifique seu login e senha para exatidão." -#: ../src/common/connection.py:603 +#: ../src/common/connection.py:581 msgid "Error while removing privacy list" msgstr "Erro ao remover lista de privacidade" -#: ../src/common/connection.py:604 +#: ../src/common/connection.py:582 #, python-format msgid "" "Privacy list %s has not been removed. It is maybe active in one of your " @@ -6457,20 +7357,14 @@ msgstr "" "A lista de privacidade %s não foi removida. Ela pode estar ativa em um ou " "mais recursos conectados. Desative-os e tente novamente." -#. We didn't set a passphrase -#: ../src/common/connection.py:702 -#: ../src/common/zeroconf/connection_zeroconf.py:158 -msgid "OpenPGP passphrase was not given" -msgstr "Palavra-chave do OpenPGP não foi recebida" - #. we're not english #. one in locale and one en -#: ../src/common/connection.py:833 +#: ../src/common/connection.py:856 msgid "[This message is *encrypted* (See :JEP:`27`]" msgstr "[Esta mensagem está *criptografada* (Veja:JEP:'27')]" -#: ../src/common/connection.py:889 -#: ../src/common/zeroconf/connection_zeroconf.py:399 +#: ../src/common/connection.py:930 +#: ../src/common/zeroconf/connection_zeroconf.py:437 #, python-format msgid "" "Subject: %s\n" @@ -6479,39 +7373,39 @@ msgstr "" "Assunto: %s\n" "%s" -#: ../src/common/connection.py:1029 +#: ../src/common/connection.py:1113 msgid "Not fetched because of invisible status" msgstr "Não baixado por causa do status invisÃvel" -#: ../src/common/contacts.py:271 +#: ../src/common/contacts.py:299 msgid "Not in roster" msgstr "Fora da lista" #. only say that to non Windows users -#: ../src/common/dbus_support.py:33 +#: ../src/common/dbus_support.py:41 msgid "D-Bus python bindings are missing in this computer" msgstr "Acesso ao python D-Bus foi perdido neste computador" -#: ../src/common/dbus_support.py:34 +#: ../src/common/dbus_support.py:42 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "As potencialidades do D-Bus no Gajim não podem ser usadas" -#: ../src/common/exceptions.py:22 +#: ../src/common/exceptions.py:27 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "O pysqlite2 (ou python-pysqlite2) está faltando. Encerrando..." -#: ../src/common/exceptions.py:30 +#: ../src/common/exceptions.py:44 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Serviço não disponÃvel: o Gajim não está funcionando ou o controle remoto é " "falso" -#: ../src/common/exceptions.py:38 +#: ../src/common/exceptions.py:52 msgid "D-Bus is not present on this machine or python module is missing" msgstr "" "O D-Bus não está presente nesta máquina ou o módulo do Python está faltando" -#: ../src/common/exceptions.py:46 +#: ../src/common/exceptions.py:60 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -6519,443 +7413,446 @@ msgstr "" "O bus de sessão não está disponÃvel.\n" "Veja http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "one" msgstr "um" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "two" msgstr "dois" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "three" msgstr "três" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "four" msgstr "quatro" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "five" msgstr "cinco" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "six" msgstr "seis" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "seven" msgstr "sete" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eight" msgstr "oito" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "nine" msgstr "nove" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "ten" msgstr "dez" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eleven" msgstr "onze" -#: ../src/common/fuzzyclock.py:44 +#: ../src/common/fuzzyclock.py:49 msgid "twelve" msgstr "doze" #. 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). ''' #. A "singular-form". It is used when talking about hour 0 -#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "$0 o'clock" msgstr "$0 horas" -#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 msgid "five past $0" msgstr "$0 e cinco" -#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 msgid "ten past $0" msgstr "$0 e dez" -#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 msgid "quarter past $0" msgstr "$0 e quinze" -#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 msgid "twenty past $0" msgstr "$0 e vinte" -#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 msgid "twenty five past $0" msgstr "$0 e vinte e cinco" -#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 msgid "half past $0" msgstr "$0 e meia" -#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 msgid "twenty five to $1" msgstr "vinte e cinco para as $1" -#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 msgid "twenty to $1" msgstr "vinte para as $1" -#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 msgid "quarter to $1" msgstr "quinze para as $1" -#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 msgid "ten to $1" msgstr "dez para as $1" -#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 msgid "five to $1" msgstr "cinco para as $1" -#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:61 +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:66 msgid "$1 o'clock" msgstr "$1 horas" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Night" msgstr "Noite" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Early morning" msgstr "Madrugada" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Morning" msgstr "Manhã" -#: ../src/common/fuzzyclock.py:64 +#: ../src/common/fuzzyclock.py:69 msgid "Almost noon" msgstr "Quase meio-dia" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Noon" msgstr "Meio-dia" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Afternoon" msgstr "Tarde" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Evening" msgstr "Noite" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:70 msgid "Late evening" msgstr "Tarde da noite" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "Start of week" msgstr "Começo da semana" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "Middle of week" msgstr "Meio da semana" -#: ../src/common/fuzzyclock.py:67 +#: ../src/common/fuzzyclock.py:72 msgid "End of week" msgstr "Fim da semana" -#: ../src/common/fuzzyclock.py:68 +#: ../src/common/fuzzyclock.py:73 msgid "Weekend!" msgstr "Final de semana!" -#: ../src/common/helpers.py:114 +#: ../src/common/helpers.py:124 msgid "Invalid character in username." msgstr "Caracter inválido no nome do usuário" -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:129 msgid "Server address required." msgstr "Endereço do servidor é requerido." -#: ../src/common/helpers.py:124 +#: ../src/common/helpers.py:134 msgid "Invalid character in hostname." msgstr "Caracter inválido no nome do host" -#: ../src/common/helpers.py:130 +#: ../src/common/helpers.py:140 msgid "Invalid character in resource." msgstr "Caracter inválido no recurso." #. GiB means gibibyte -#: ../src/common/helpers.py:170 +#: ../src/common/helpers.py:180 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:183 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:177 +#: ../src/common/helpers.py:187 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:180 +#: ../src/common/helpers.py:190 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:184 +#: ../src/common/helpers.py:194 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:187 +#: ../src/common/helpers.py:197 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:190 +#: ../src/common/helpers.py:200 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:219 +#: ../src/common/helpers.py:231 msgid "_Busy" msgstr "_Ocupado" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:233 msgid "Busy" msgstr "Ocupado" -#: ../src/common/helpers.py:224 +#: ../src/common/helpers.py:236 msgid "_Not Available" msgstr "_Não DisponÃvel" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:241 msgid "_Free for Chat" msgstr "Livre para _Conversa" -#: ../src/common/helpers.py:231 +#: ../src/common/helpers.py:243 msgid "Free for Chat" msgstr "Livre para Conversa" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:246 msgid "_Available" msgstr "Dis_ponÃvel" -#: ../src/common/helpers.py:236 -msgid "Available" -msgstr "DisponÃvel" - -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:250 msgid "Connecting" msgstr "Conectando" -#: ../src/common/helpers.py:241 +#: ../src/common/helpers.py:253 msgid "A_way" msgstr "_Afastado" -#: ../src/common/helpers.py:246 +#: ../src/common/helpers.py:258 msgid "_Offline" msgstr "_Desconectado" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:260 msgid "Offline" msgstr "Desconectado" -#: ../src/common/helpers.py:251 +#: ../src/common/helpers.py:263 msgid "_Invisible" msgstr "_InvisÃvel" -#: ../src/common/helpers.py:257 +#: ../src/common/helpers.py:269 msgid "?contact has status:Unknown" msgstr "?contato tem status:Desconhecido" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:271 msgid "?contact has status:Has errors" msgstr "?contato tem status:Com erros" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:276 msgid "?Subscription we already have:None" msgstr "?Inscrição existente:Nenhuma" -#: ../src/common/helpers.py:266 +#: ../src/common/helpers.py:278 msgid "To" msgstr "Para" -#: ../src/common/helpers.py:270 +#: ../src/common/helpers.py:282 msgid "Both" msgstr "Ambos" -#: ../src/common/helpers.py:278 +#: ../src/common/helpers.py:290 msgid "?Ask (for Subscription):None" msgstr "?Pergunta (para Inscrição):Nenhuma" -#: ../src/common/helpers.py:280 +#: ../src/common/helpers.py:292 msgid "Subscribe" msgstr "Inscrever" -#: ../src/common/helpers.py:289 +#: ../src/common/helpers.py:301 msgid "?Group Chat Contact Role:None" msgstr "?Regra do Contato para Conversa em Grupo:Nenhuma" -#: ../src/common/helpers.py:292 +#: ../src/common/helpers.py:304 msgid "Moderators" msgstr "Moderadores" -#: ../src/common/helpers.py:294 +#: ../src/common/helpers.py:306 msgid "Moderator" msgstr "Moderador" -#: ../src/common/helpers.py:297 +#: ../src/common/helpers.py:309 msgid "Participants" msgstr "Participantes" -#: ../src/common/helpers.py:299 +#: ../src/common/helpers.py:311 msgid "Participant" msgstr "Participante" -#: ../src/common/helpers.py:302 +#: ../src/common/helpers.py:314 msgid "Visitors" msgstr "Visitantes" -#: ../src/common/helpers.py:304 +#: ../src/common/helpers.py:316 msgid "Visitor" msgstr "Visitante" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:322 msgid "?Group Chat Contact Affiliation:None" msgstr "?Filiação do Contato de Conferência:Nenhuma" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:324 msgid "Owner" msgstr "Dono" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:326 msgid "Administrator" msgstr "Administrador" -#: ../src/common/helpers.py:316 +#: ../src/common/helpers.py:328 msgid "Member" msgstr "Membro" -#: ../src/common/helpers.py:355 +#: ../src/common/helpers.py:367 msgid "is paying attention to the conversation" msgstr "está prestando a atenção na conversa" -#: ../src/common/helpers.py:357 +#: ../src/common/helpers.py:369 msgid "is doing something else" msgstr "está fazendo outra coisa" -#: ../src/common/helpers.py:359 +#: ../src/common/helpers.py:371 msgid "is composing a message..." msgstr "está digitando..." #. paused means he or she was composing but has stopped for a while -#: ../src/common/helpers.py:362 +#: ../src/common/helpers.py:374 msgid "paused composing a message" msgstr "parou de digitar" -#: ../src/common/helpers.py:364 +#: ../src/common/helpers.py:376 msgid "has closed the chat window or tab" msgstr "fechou a janela de conversa ou aba" -#: ../src/common/helpers.py:890 +#: ../src/common/helpers.py:947 ../src/common/helpers.py:954 #, python-format -msgid " %d unread message" -msgid_plural " %d unread messages" -msgstr[0] "%d mensagem não lida" -msgstr[1] "%d mensagens não lidas" +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "%d mensagem pendente" +msgstr[1] "%s mensagens pendentes" -#: ../src/common/helpers.py:896 +#: ../src/common/helpers.py:960 #, python-format -msgid " %d unread single message" -msgid_plural " %d unread single messages" -msgstr[0] "%d mensagem individual não lida" -msgstr[1] "%d mensagens individuais não lidas" +msgid " from room %s" +msgstr " da sala %s" -#: ../src/common/helpers.py:902 +#: ../src/common/helpers.py:963 ../src/common/helpers.py:982 #, python-format -msgid " %d unread group chat message" -msgid_plural " %d unread group chat messages" -msgstr[0] "%d mensagem de conferência não lida" -msgstr[1] "%d mensagens de conferência não lidas" +msgid " from user %s" +msgstr " do usuário %s" -#: ../src/common/helpers.py:908 +#: ../src/common/helpers.py:965 #, python-format -msgid " %d unread private message" -msgid_plural " %d unread private messages" -msgstr[0] "%d mensagem privada não lida" -msgstr[1] "%d mensagens privadas não lidas" +msgid " from %s" +msgstr " de %s" -#: ../src/common/helpers.py:918 ../src/common/helpers.py:920 +#: ../src/common/helpers.py:972 ../src/common/helpers.py:979 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "%d evento pendente" +msgstr[1] "%d eventos pendentes" + +#: ../src/common/helpers.py:1012 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" #. we talk about a file -#: ../src/common/optparser.py:59 +#: ../src/common/optparser.py:65 #, python-format msgid "error: cannot open %s for reading" msgstr "erro: impossÃvel abrir %s para leitura" -#: ../src/common/optparser.py:181 -msgid "gtk+" -msgstr "gtk+" - -#: ../src/common/optparser.py:190 ../src/common/optparser.py:191 +#: ../src/common/optparser.py:215 ../src/common/optparser.py:216 msgid "cyan" msgstr "azul celeste" -#: ../src/common/optparser.py:308 +#: ../src/common/optparser.py:332 msgid "migrating logs database to indices" msgstr "migrando base de dados de registros para Ãndices" -#: ../src/common/passwords.py:82 +#: ../src/common/passwords.py:88 #, python-format msgid "Gajim account %s" msgstr "Conta %s do Gajim" -#: ../src/common/zeroconf/client_zeroconf.py:191 +#: ../src/common/zeroconf/client_zeroconf.py:149 +#: ../src/common/zeroconf/client_zeroconf.py:232 +msgid "Connection to host could not be established" +msgstr "A conexão ao computador não pôde ser estabelecida." + +#: ../src/common/zeroconf/client_zeroconf.py:206 msgid "" "Connection to host could not be established: Incorrect answer from server." msgstr "" "A conexão ao computador não pôde ser estabelecida: resposta incorreta do " "servidor." -#: ../src/common/zeroconf/client_zeroconf.py:207 -msgid "Connection to host could not be established" -msgstr "A conexão ao computador não pôde ser estabelecida." - -#: ../src/common/zeroconf/client_zeroconf.py:341 +#: ../src/common/zeroconf/client_zeroconf.py:366 msgid "" "Connection to host could not be established: Timeout while sending data." msgstr "" "A conexão ao computador não pode ser estabelecida: tempo excedido ao " "transmitir os dados." -#: ../src/common/zeroconf/client_zeroconf.py:634 +#: ../src/common/zeroconf/client_zeroconf.py:652 msgid "Contact is offline. Your message could not be sent." msgstr "O contato está offline. Sua mensagem não pode ser enviada." -#: ../src/common/zeroconf/connection_zeroconf.py:199 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 +#, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"O computador %s que você especificou na configuração avançada " +"ft_override_host_to_send não é válido e será ignorado." + +#: ../src/common/zeroconf/connection_zeroconf.py:210 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Para continuar enviando e recebendo mensagens, você precisará reconectar." -#: ../src/common/zeroconf/connection_zeroconf.py:209 +#: ../src/common/zeroconf/connection_zeroconf.py:233 msgid "Avahi error" msgstr "Erro do Avahi" -#: ../src/common/zeroconf/connection_zeroconf.py:209 +#: ../src/common/zeroconf/connection_zeroconf.py:233 #, python-format msgid "" "%s\n" @@ -6964,31 +7861,31 @@ msgstr "" "%s\n" "Mensagens link-local podem não funcionar adequadamente." -#: ../src/common/zeroconf/connection_zeroconf.py:220 +#: ../src/common/zeroconf/connection_zeroconf.py:244 msgid "Please check if Avahi is installed." msgstr "Por favor verifique se o Avahi está instalado." -#: ../src/common/zeroconf/connection_zeroconf.py:229 -#: ../src/common/zeroconf/connection_zeroconf.py:233 +#: ../src/common/zeroconf/connection_zeroconf.py:253 +#: ../src/common/zeroconf/connection_zeroconf.py:257 msgid "Could not start local service" msgstr "ImpossÃvel iniciar o serviço local" -#: ../src/common/zeroconf/connection_zeroconf.py:230 +#: ../src/common/zeroconf/connection_zeroconf.py:254 #, python-format msgid "Unable to bind to port %d." msgstr "ImpossÃvel conectar-se à porta %d." -#: ../src/common/zeroconf/connection_zeroconf.py:234 -#: ../src/common/zeroconf/connection_zeroconf.py:327 +#: ../src/common/zeroconf/connection_zeroconf.py:258 +#: ../src/common/zeroconf/connection_zeroconf.py:353 msgid "Please check if avahi-daemon is running." msgstr "Por favor verifique se o serviço avahi-daemon está rodando." -#: ../src/common/zeroconf/connection_zeroconf.py:326 +#: ../src/common/zeroconf/connection_zeroconf.py:352 #, python-format msgid "Could not change status of account \"%s\"" msgstr "ImpossÃvel alterar status da conta \"%s\"" -#: ../src/common/zeroconf/connection_zeroconf.py:343 +#: ../src/common/zeroconf/connection_zeroconf.py:369 msgid "" "You are not connected or not visible to others. Your message could not be " "sent." @@ -6997,20 +7894,225 @@ msgstr "" "pode ser enviada." #. we're not english -#: ../src/common/zeroconf/connection_zeroconf.py:355 +#: ../src/common/zeroconf/connection_zeroconf.py:381 msgid "[This message is encrypted]" msgstr "[Esta mensagem está criptografada]" -#: ../src/common/zeroconf/zeroconf.py:180 +#: ../src/common/zeroconf/zeroconf_avahi.py:183 +#: ../src/common/zeroconf/zeroconf_bonjour.py:194 #, python-format msgid "Error while adding service. %s" msgstr "Erro ao adicionar serviço. %s" -#~ msgid "Select the account with which you want to synchronise" -#~ msgstr "Selecione a conta que você quer sincronizar" - -#~ msgid "Select the contacts you want to synchronise" -#~ msgstr "Selecione os contatos que você quer sincronizar" - -#~ msgid "Synchronise : select contacts" -#~ msgstr "Sincronizar: selecionar contatos" +#~ msgid "Save passphrase" +#~ msgstr "Salvar Frase de acesso" + +#~ msgid "_Discover Services..." +#~ msgstr "_Procurar Serviços..." + +#~ msgid "_Retype Password:" +#~ msgstr "_Reescreva a Senha:" + +#~ msgid "_Use proxy" +#~ msgstr "_Usar proxy" + +#~ msgid "Accounts" +#~ msgstr "Contas" + +#~ msgid "" +#~ "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.\n" +#~ "This is only available if python-avahi is installed and avahi-daemon is " +#~ "running." +#~ msgstr "" +#~ "Se marcado, todos os contatos locais que usam um cliente de chat " +#~ "compatÃvel com o Bonjour (como iChat, Trillian ou Gaim) serão mostrados " +#~ "na lista. Você não precisa estar conectado a um servidor jabber para que " +#~ "ele funcione.\n" +#~ " Isto só está disponÃvel se o python-avahi estiver instalado e o serviço " +#~ "avahi-daemon estiver rodando." + +#~ msgid "" +#~ "If you have 2 or more accounts and this is checked, Gajim will list all " +#~ "contacts as if you had one account" +#~ msgstr "" +#~ "Se você tiver duas ou mais contas e isto estiver marcado, o Gajim listará " +#~ "todos os contatos como se você tivesse somente uma única conta" + +#~ msgid "_Enable link-local messaging" +#~ msgstr "_Ativar mensagens \"link-local\"" + +#~ msgid "_Modify" +#~ msgstr "_Modificar" + +#~ msgid "_Compact View Alt+C" +#~ msgstr "Visão _Compacta Alt+C" + +#~ msgid "Build custom query" +#~ msgstr "Gerar consulta customizada" + +#~ msgid "Query Builder..." +#~ msgstr "Gerador de consultas..." + +#~ msgid "<b>Interface Customization</b>" +#~ msgstr "<b>Customização de interface</b>" + +#~ msgid "Also known as iChat style" +#~ msgstr "Conhecido também como estilo iChat" + +#~ msgid "Chat" +#~ msgstr "Conversa" + +#~ msgid "E_very 5 minutes" +#~ msgstr "De 5 _em 5 minutos" + +#~ msgid "" +#~ "Gajim will automatically show new events by popping up the relevant window" +#~ msgstr "" +#~ "O Gajim automaticamente mostrará novos eventos em uma janela saltando " +#~ "sobre a janela relevante" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ msgid "On every _message" +#~ msgstr "Em todas as _mensagens" + +#~ msgid "Outgoing Chat state noti_fications:" +#~ msgstr "Enviar noti_ficações do status da conversa:" + +#~ msgid "Print time:" +#~ msgstr "Imprimir tempo:" + +#~ msgid "Save _position and size for roster and chat windows" +#~ msgstr "" +#~ "Salvar _posição e tamanho das janelas de conversa e lista de contatos" + +#~ msgid "Show only in _roster" +#~ msgstr "Mostre somente na _lista" + +#~ msgid "Use t_rayicon (aka. notification area icon)" +#~ msgstr "Usar Ãcone na bandeja (também conhecido por área de notificação)" + +#~ 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" + +#~ msgid "_Never" +#~ msgstr "_Nunca" + +#~ msgid "_Notify me about it" +#~ msgstr "_Notifique-me sobre isto" + +#~ msgid "_Pop it up" +#~ msgstr "_Alerta visual" + +#~ msgid "_Remove from Roster" +#~ msgstr "_Remover da Lista" + +#~ msgid "_Filter:" +#~ msgstr "_Filtro:" + +#~ msgid "" +#~ "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" +#~ "\n" +#~ "Highlighting misspelled words feature will not be used" +#~ msgstr "" +#~ "Se este não for o idioma para o qual você quer destacar palavras " +#~ "incorretas, por favor, configure a sua variável de ambiente $LANG com o " +#~ "valor apropriado. Por exemplo, para o francês exporte LANG=fr_FR ou " +#~ "exporte LANG=fr_FR.UTF-8 em ~/.bash_profile ou coloca-lo \n" +#~ " globalmente em/etc/profile.\n" +#~ "Caracteristica de destacar palavras erradas não será usada" + +#~ msgid "Every %s _minutes" +#~ msgstr "A cada %s _minutos" + +#~ msgid "You must enter a password for the new account." +#~ msgstr "Você deve entrar com uma senha para registrar uma nova conta." + +#~ msgid "%s does not appear to be a valid JID" +#~ msgstr "%s não parece ser um JID válido" + +#~ msgid "Drop %s in group %s" +#~ msgstr "Derrubar %s no grupo %s" + +#~ msgid "Make %s and %s metacontacts" +#~ msgstr "Fazer %s e %s metacontatos" + +#~ msgid "Hides the buttons in two persons chat window." +#~ msgstr "Esconder os botões na janela de conversa para duas pessoas." + +#~ msgid "Security error connecting to \"%s\"" +#~ msgstr "Erro de segurança ao conectar a \"%s\"" + +#~ msgid "" +#~ "The server's key has changed, or someone is trying to hack your " +#~ "connection." +#~ msgstr "" +#~ "A chave do servidor foi alterada ou alguém está tentando hackear a sua " +#~ "conexão." + +#~ msgid "Unable to check fingerprint for %s. Connection could be insecure." +#~ msgstr "" +#~ "Incapaz de verifica a impressão digital de %s. A conexão pode ser " +#~ "insegura." + +#~ msgid "Missing fingerprint in SSL connection to %s" +#~ msgstr "Faltando impressão digital na conexão SSL para %s" + +#~ msgid "Fingerprint mismatch for %s: Got %s, expected %s" +#~ msgstr "Conflito de impressões digitais para %s: obtido %s, esperado %s" + +#~ msgid " %d unread single message" +#~ msgid_plural " %d unread single messages" +#~ msgstr[0] "%d mensagem individual não lida" +#~ msgstr[1] "%d mensagens individuais não lidas" + +#~ msgid " %d unread group chat message" +#~ msgid_plural " %d unread group chat messages" +#~ msgstr[0] "%d mensagem de conferência não lida" +#~ msgstr[1] "%d mensagens de conferência não lidas" + +#~ msgid " %d unread private message" +#~ msgid_plural " %d unread private messages" +#~ msgstr[0] "%d mensagem privada não lida" +#~ msgstr[1] "%d mensagens privadas não lidas" + +#~ msgid "gtk+" +#~ msgstr "gtk+" diff --git a/po/ru.po b/po/ru.po index 3fc70b80df..bbd4287660 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,23 +6,27 @@ # This file is distributed under the same license as the gajim package. # # -#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:209 # <nebulam51@gmail.com>, 2005. # <nebulam51@gmail.com>, 2005. # Yakov Bezrukov <nebulam51@gmail.com>, 2005, 2006, 2007. # Yakov Bezrukov <bezrukov@isp.nsc.ru>, 2005. +#: ../src/gajim-remote.py:220 ../src/gajim-remote.py:227 +#: ../src/gajim-remote.py:253 ../src/gajim-remote.py:254 +#: ../src/gajim-remote.py:260 ../src/gajim-remote.py:261 +#: ../src/gajim-remote.py:262 ../src/gajim-remote.py:263 msgid "" msgstr "" "Project-Id-Version: ru\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-12-18 09:32+0100\n" -"PO-Revision-Date: 2007-07-08 21:53+0700\n" -"Last-Translator: Yakov Bezrukov <nebulam51@gmail.com>\n" +"POT-Creation-Date: 2007-12-05 23:47+0100\n" +"PO-Revision-Date: 2007-12-05 18:32+0300\n" +"Last-Translator: Fomin Denis, Oleg N. Stadnik. <fominde@mail.ru>\n" "Language-Team: РуÑÑкий <ru@li.org>\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.4\n" #: ../data/gajim.desktop.in.in.h:1 @@ -35,39 +39,39 @@ msgstr "Клиент Ð´Ð»Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñ‹Ñ… Ñообщений Gajim" #: ../data/gajim.desktop.in.in.h:3 msgid "Jabber IM Client" -msgstr "Jabber-клиент на GTK+" +msgstr "Jabber клиент Ð´Ð»Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñ‹Ñ… Ñообщений" #: ../data/glade/account_context_menu.glade.h:1 -msgid "Send Single _Message..." -msgstr "Отправить одиночное _Ñообщение..." +#: ../data/glade/roster_window.glade.h:8 +msgid "Join _Group Chat..." +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/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_ПроÑмотреть ÑервиÑÑ‹" #: ../data/glade/account_context_menu.glade.h:4 msgid "_Execute Command..." msgstr "Ð’_ыполнить команду..." #: ../data/glade/account_context_menu.glade.h:5 -#: ../data/glade/roster_window.glade.h:16 -#: ../data/glade/systray_context_menu.glade.h:6 -msgid "_Group Chat" -msgstr "_Комната" +msgid "_Modify Account" +msgstr "Редактировать учетную запиÑÑŒ" #: ../data/glade/account_context_menu.glade.h:6 -#: ../data/glade/zeroconf_context_menu.glade.h:1 -msgid "_Modify Account..." -msgstr "_Изменить учетную запиÑÑŒ..." - -#: ../data/glade/account_context_menu.glade.h:7 msgid "_Open Gmail Inbox" msgstr "_Открыть Gmail" +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:23 +msgid "_Start Chat..." +msgstr "Ðачать беÑеду" + #: ../data/glade/account_context_menu.glade.h:8 #: ../data/glade/zeroconf_context_menu.glade.h:2 msgid "_Status" @@ -75,11 +79,11 @@ msgstr "_СтатуÑ" #: ../data/glade/account_creation_wizard_window.glade.h:1 msgid "" -"<b>Account is being created</b>\n" +"<b>Connecting to server</b>\n" "\n" "Please wait..." msgstr "" -"<b>Была Ñоздана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ </b>\n" +"<b>Соединение Ñ Ñервером </b>\n" "\n" "ПожалуйÑта подождите..." @@ -92,51 +96,74 @@ msgid "<b>Please fill in the data for your new account</b>" msgstr "<b>ПожалуйÑта, заполните данные Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ новой учетной запиÑи</b>" #: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "<b>Please select a server</b>" +msgstr "<b>ПожалуйÑта выберите Ñервер</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "" +"Add this certificate to the list of trusted certificates.\n" +"SHA1 fingerprint of the certificate:\n" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 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 +#: ../data/glade/account_creation_wizard_window.glade.h:11 msgid "Connect when I press Finish" -msgstr "ПодключитьÑÑ, когда Ñ Ð½Ð°Ð¶Ð¼Ñƒ \"Завершить\"" +msgstr "ПодключитьÑÑ, когда Ñ Ð½Ð°Ð¶Ð¼Ñƒ \"Закончить\"" -#: ../data/glade/account_creation_wizard_window.glade.h:8 +#: ../data/glade/account_creation_wizard_window.glade.h:12 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" +#: ../data/glade/account_creation_wizard_window.glade.h:13 +msgid "I already have an account I want to _use" msgstr "У Ð¼ÐµÐ½Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, которую Ñ Ñ…Ð¾Ñ‡Ñƒ иÑпользовать" -#: ../data/glade/account_creation_wizard_window.glade.h:10 +#: ../data/glade/account_creation_wizard_window.glade.h:14 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 +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:23 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:16 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "Управление..." -#: ../data/glade/account_creation_wizard_window.glade.h:13 -#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/account_creation_wizard_window.glade.h:17 +msgid "Prox_y:" +msgstr "ПрокÑи:" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:47 msgid "Save pass_word" msgstr "Сохранить _пароль" -#: ../data/glade/account_creation_wizard_window.glade.h:14 +#: ../data/glade/account_creation_wizard_window.glade.h:19 msgid "Servers Features" msgstr "Параметры Ñервера" -#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_creation_wizard_window.glade.h:20 msgid "Set my profile when I connect" msgstr "ÐаÑтроить мой профиль поÑле ÑоединениÑ" -#: ../data/glade/account_creation_wizard_window.glade.h:16 +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "ИÑпользовать пользовательÑкие хоÑÑ‚/порт" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 msgid "" "You need to have an account in order to connect\n" "to the Jabber network." @@ -144,67 +171,63 @@ msgstr "" "Ðеобходимо Ñоздать учетную запиÑÑŒ Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ \n" "к Ñети Jabber." -#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_creation_wizard_window.glade.h:24 msgid "Your JID:" msgstr "Ваш JID:" -#: ../data/glade/account_creation_wizard_window.glade.h:19 -#: ../data/glade/roster_window.glade.h:11 +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/roster_window.glade.h:13 msgid "_Advanced" msgstr "_Дополнительно" -#: ../data/glade/account_creation_wizard_window.glade.h:20 +#: ../data/glade/account_creation_wizard_window.glade.h:26 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:27 +msgid "_Hostname:" +msgstr "ХоÑÑ‚: " -#: ../data/glade/account_creation_wizard_window.glade.h:22 -#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/account_creation_wizard_window.glade.h:28 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 msgid "_Password:" msgstr "_Пароль:" -#: ../data/glade/account_creation_wizard_window.glade.h:23 -#: ../data/glade/manage_proxies_window.glade.h:10 +#: ../data/glade/account_creation_wizard_window.glade.h:29 +#: ../data/glade/manage_proxies_window.glade.h:11 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 +#: ../data/glade/account_creation_wizard_window.glade.h:30 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 +#: ../data/glade/account_creation_wizard_window.glade.h:31 +#: ../data/glade/manage_proxies_window.glade.h:12 msgid "_Username:" msgstr "_Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:" #: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 #: ../data/glade/preferences_window.glade.h:8 msgid "<b>Miscellaneous</b>" msgstr "<b>Прочее</b>" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "<b>OpenPGP</b>" msgstr "<b>OpenPGP</b>" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "<b>Personal Information</b>" msgstr "<b>Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ</b>" #: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 msgid "Account" msgstr "Учетные запиÑи" @@ -213,19 +236,28 @@ msgid "Account Modification" msgstr "Изменение учетной запиÑи" #: ../data/glade/account_modification_window.glade.h:6 -msgid "Autoreconnect when connection is lost" -msgstr "Ðвтоподключение при разрыве ÑвÑзи" +#: ../data/glade/accounts_window.glade.h:5 +msgid "Administration operations" +msgstr "ÐдминиÑтративные операции" #: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 +msgid "Auto-reconnect when connection is lost" +msgstr "Ðвтоподключение при разрыве ÑвÑзи" + +#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 #: ../data/glade/zeroconf_properties_window.glade.h:3 msgid "C_onnect on Gajim startup" msgstr "_СоединÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸ запуÑке Gajim" -#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 msgid "Chan_ge Password" msgstr "И_зменить пароль" -#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/accounts_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 " @@ -237,44 +269,60 @@ msgstr "" "TLS шифрование по умолчанию, еÑли Ñервер предоÑтавлÑет такую возможноÑÑ‚ÑŒ, Ñ " "Ñтой же опцией TLS отключаетÑÑ" -#: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/accounts_window.glade.h:10 #: ../data/glade/zeroconf_properties_window.glade.h:4 msgid "Choose _Key..." msgstr "Выбрать _ключ..." -#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_window.glade.h:11 msgid "Click to change account's password" msgstr "Щелкните Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ" -#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "Щелкните чтобы запроÑить авторизацию у вÑех контактов другого аккаунта" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 msgid "Connection" msgstr "Соединение" -#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 msgid "Edit Personal Information..." msgstr "Редактировать личную информацию..." -#: ../data/glade/account_modification_window.glade.h:14 -#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:453 -#: ../src/notify.py:475 ../src/notify.py:487 ../src/common/helpers.py:905 +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:489 +#: ../src/notify.py:520 ../src/notify.py:532 ../src/common/helpers.py:998 +#: ../src/common/helpers.py:1010 msgid "Gajim" msgstr "Gajim" -#. Contact is not in a group, so count it in General group -#: ../data/glade/account_modification_window.glade.h:15 -#: ../data/glade/preferences_window.glade.h:49 +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 #: ../data/glade/zeroconf_properties_window.glade.h:7 -#: ../src/roster_window.py:342 ../src/roster_window.py:1207 -#: ../src/roster_window.py:1418 ../src/roster_window.py:2029 -#: ../src/roster_window.py:2071 ../src/common/contacts.py:278 +#: ../src/roster_window.py:372 ../src/roster_window.py:637 +#: ../src/roster_window.py:1384 ../src/roster_window.py:1760 +#: ../src/roster_window.py:2147 ../src/roster_window.py:2661 +#: ../src/roster_window.py:2779 ../src/common/contacts.py:314 msgid "General" msgstr "Общие" -#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 msgid "Hostname: " msgstr "ХоÑÑ‚: " -#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 msgid "" "If checked, Gajim will also broadcast some more IPs except from just your " "IP, so file transfer has higher chances of working." @@ -282,15 +330,16 @@ msgstr "" "ЕÑли отмечено, Gajim будет передавать еще неÑколько IP адреÑов в дополнение " "к вашему, так что передача файла имеет больше шанÑов на уÑпех." -#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/accounts_window.glade.h:24 msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" +"If checked, Gajim will send keep-alive packets to prevent connection timeout " +"which results in disconnection" msgstr "" "ЕÑли отмечено, то Gajim будет пинговать Ñервер, чтобы избежать разрыва " "ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ таймауту" -#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/account_modification_window.glade.h:22 #: ../data/glade/zeroconf_properties_window.glade.h:8 msgid "" "If checked, Gajim will store the password in ~/.gajim/config with 'read' " @@ -299,7 +348,8 @@ msgstr "" "ЕÑли отмечено, то Gajim Ñохранит пароль в ~/.gajim/config Ñ Ð´Ð¾Ñтупом на " "чтение только Ð´Ð»Ñ Ð²Ð°Ñ" -#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/accounts_window.glade.h:25 #: ../data/glade/zeroconf_properties_window.glade.h:9 msgid "" "If checked, Gajim, when launched, will automatically connect to jabber using " @@ -308,7 +358,8 @@ msgstr "" "ЕÑли отмечено, Gajim, поÑле запуÑка, будет автоматичеÑки подÑоединÑÑ‚ÑŒÑÑ Ðº " "jabber Ñерверу Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" -#: ../data/glade/account_modification_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/accounts_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:10 msgid "" "If checked, any change to the global status (handled by the combobox at the " @@ -319,44 +370,50 @@ msgstr "" "выпадающего ÑпиÑка внизу окна роÑтера) повлекут за Ñобой изменение ÑтатуÑа " "Ñтой учетной запиÑи" -#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/account_modification_window.glade.h:25 +#: ../data/glade/accounts_window.glade.h:29 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 -#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1643 -#: ../src/config.py:3436 +#: ../data/glade/account_modification_window.glade.h:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1548 +#: ../src/config.py:2025 msgid "No key selected" msgstr "Ðе выбран ключ" #. None means no proxy profile selected -#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1225 -#: ../src/config.py:1230 ../src/config.py:1414 ../src/config.py:1633 -#: ../src/config.py:1642 ../src/config.py:1701 ../src/config.py:1775 -#: ../src/config.py:2646 ../src/config.py:3426 ../src/config.py:3435 -#: ../src/dialogs.py:281 ../src/dialogs.py:283 +#. GPG Key +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1142 +#: ../src/config.py:1213 ../src/config.py:1456 ../src/config.py:1461 +#: ../src/config.py:1923 ../src/config.py:2010 ../src/config.py:2024 +#: ../src/config.py:3114 ../src/config.py:3172 ../src/dialogs.py:344 +#: ../src/dialogs.py:346 ../src/roster_window.py:1864 +#: ../src/roster_window.py:1871 ../src/roster_window.py:1878 msgid "None" msgstr "Ðет" -#: ../data/glade/account_modification_window.glade.h:28 -#: ../data/glade/profile_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 +#: ../data/glade/profile_window.glade.h:26 #: ../data/glade/zeroconf_properties_window.glade.h:17 msgid "Personal Information" msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" -#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 msgid "Port: " msgstr "Порт: " -#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 msgid "Priori_ty:" msgstr "Приори_тет:" -#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/accounts_window.glade.h:40 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 " @@ -367,19 +424,23 @@ msgstr "" "той же учетной запиÑью. Клиент Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ приоритетом будет получать " "ÑобытиÑ" -#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 msgid "Priority will change automatically according to your status." msgstr "ИзменÑÑ‚ÑŒ приоритет автоматичеÑки в ÑоответÑтвии Ñо ÑтатуÑом." -#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 msgid "Proxy:" msgstr "ПрокÑи:" -#: ../data/glade/account_modification_window.glade.h:34 -msgid "Resour_ce: " +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 +msgid "Resour_ce:" msgstr "РеÑу_Ñ€Ñ: " -#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/accounts_window.glade.h:45 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 " @@ -394,88 +455,137 @@ msgstr "" "одновременно. РеÑурÑ, который имеет больший приоритет будет получать вÑе " "ÑобытиÑ. (См. ниже)" -#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/account_modification_window.glade.h:38 #: ../data/glade/zeroconf_properties_window.glade.h:18 msgid "Save _passphrase (insecure)" msgstr "Сохранить _парольную фразу (небезопаÑно)" -#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:46 #: ../data/glade/zeroconf_properties_window.glade.h:19 msgid "Save conversation _logs for all contacts" msgstr "_СохранÑÑ‚ÑŒ иÑторию Ð´Ð»Ñ Ð²Ñех контактов" -#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:48 msgid "Send keep-alive packets" msgstr "Отправить пинг" -#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:49 #: ../data/glade/zeroconf_properties_window.glade.h:20 msgid "Synch_ronize account status with global status" msgstr "Син_хронизировать ÑÑ‚Ð°Ñ‚ÑƒÑ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ ÑтатуÑом" -#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:50 +#: ../data/glade/synchronise_contacts_dialog.glade.h:2 +#: ../data/glade/synchronise_select_account_dialog.glade.h:2 +msgid "Synchronise contacts" +msgstr "Объединить контакты" + +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 msgid "Use _SSL (legacy)" msgstr "ИÑпользовать _SSL (уÑтарело)" -#: ../data/glade/account_modification_window.glade.h:42 -msgid "Use custom hostname/port" -msgstr "ИÑпользовать пользовательÑкие хоÑÑ‚/порт" - -#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 msgid "Use file transfer proxies" msgstr "ИÑпользовать прокÑи Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ файла" -#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 msgid "_Adjust to status" msgstr "Ð’ завиÑимоÑти от ÑтатуÑа" -#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 msgid "_Jabber ID:" msgstr "_Jabber ID:" -#: ../data/glade/account_modification_window.glade.h:46 -msgid "_Name: " +#: ../data/glade/account_modification_window.glade.h:49 +msgid "_Name:" msgstr "_ИмÑ: " -#: ../data/glade/accounts_window.glade.h:1 -msgid "Accounts" -msgstr "Учетные запиÑи" +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "Почта:" -#: ../data/glade/accounts_window.glade.h:2 -msgid "" -"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.\n" -"This is only available if python-avahi is installed and avahi-daemon is " -"running." -msgstr "" -"ЕÑли отмечено, то вÑе локальные контакты, которые иÑпользуют Bonjour-ÑовмеÑтимый клиент (напр. iChat, Trillian или Gaim) будут показаны в роÑтере. Ð”Ð»Ñ Ñтого не нужно подключатьÑÑ Ðº jabber-Ñерверу.\n" -"ДоÑтупно только в том Ñлучае, когда уÑтановлен python-avahi и запущен avahi-daemon." +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Включить" -#: ../data/glade/accounts_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "ИмÑ:" + +#: ../data/glade/accounts_window.glade.h:22 +msgid "If checked, Gajim will get the password from a GPG agent like seahorse" +msgstr "ЕÑли отмечено, то Gajim запомнит пароль учетной запиÑи" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." msgstr "" -"ЕÑли у Ð²Ð°Ñ 2 и более учетных запиÑей, то, отметив здеÑÑŒ, вы заÑтавите Gajim " -"показывать вмеÑте контакты из вÑех учетных запиÑей" +"ЕÑли порт по умолчанию, который иÑпользуетÑÑ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñщих ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð²Ð°Ñ Ð½Ðµ " +"уÑтраивает, вы можете выбрать другой.\n" +"Так же возможно придетÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ некоторые наÑтройки брандмауÑра." -#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:511 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "ФамилиÑ:" + +#: ../data/glade/accounts_window.glade.h:33 msgid "Mer_ge accounts" msgstr "_Объединить учетные запиÑи" -#: ../data/glade/accounts_window.glade.h:6 -msgid "_Enable link-local messaging" -msgstr "_Включить локальный обмен ÑообщениÑми" +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2731 +msgid "Re_name" +msgstr "П_ереименовать" -#: ../data/glade/accounts_window.glade.h:7 -msgid "_Modify" -msgstr "_Изменить" +#: ../data/glade/accounts_window.glade.h:51 +msgid "Use GPG _Agent" +msgstr "ИÑпользовать GPG _Agent" -#: ../data/glade/accounts_window.glade.h:8 -#: ../data/glade/remove_account_window.glade.h:4 -msgid "_Remove" -msgstr "_Удалить" +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Другой порт" + +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "gtk-add" + +#: ../data/glade/accounts_window.glade.h:60 +#: ../data/glade/features_window.glade.h:4 +msgid "gtk-close" +msgstr "gtk-close" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "gtk-remove" #: ../data/glade/add_new_contact_window.glade.h:1 msgid "A_ccount:" @@ -495,7 +605,7 @@ msgstr "Ð’Ñ‹ не возражаете, еÑли Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑŽ Ð’Ð°Ñ Ð² к #: ../data/glade/add_new_contact_window.glade.h:5 msgid "" -"You have to register to this transport\n" +"You have to register with this transport\n" "to be able to add a contact from this\n" "protocol. Click on register button to\n" "proceed." @@ -534,7 +644,7 @@ msgid "_User ID:" msgstr "ID пользователÑ:" #: ../data/glade/adhoc_commands_window.glade.h:1 -msgid "<b>An error has occured:</b>" +msgid "<b>An error has occurred:</b>" msgstr "<b>Произошла ошибка:</b>" #: ../data/glade/adhoc_commands_window.glade.h:2 @@ -570,12 +680,15 @@ msgid "This jabber entity does not expose any commands." msgstr "" #: ../data/glade/advanced_configuration_window.glade.h:1 +#: ../data/glade/features_window.glade.h:1 msgid "<b>Description</b>" msgstr "<b>ОпиÑание</b>" #: ../data/glade/advanced_configuration_window.glade.h:2 -msgid "<b>NOTE:</b> You should restart gajim for some setting to take effect" -msgstr "<b>ПРИМЕЧÐÐИЕ:</b> Ð’Ñ‹ должны перезапуÑтить gajim, чтобы некоторые наÑтройки вÑтупили в Ñилу" +msgid "<b>NOTE:</b> You should restart Gajim for some settings to take effect" +msgstr "" +"<b>ПРИМЕЧÐÐИЕ:</b> Ð’Ñ‹ должны перезапуÑтить Gajim, чтобы некоторые наÑтройки " +"вÑтупили в Ñилу" #: ../data/glade/advanced_configuration_window.glade.h:3 msgid "Advanced Configuration Editor" @@ -594,48 +707,45 @@ 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 "ОтправлÑет Ñообщение пользователÑм подÑоединенным к Ñерверу в данный момент" +msgid "Edit _Privacy Lists..." +msgstr "Редактировать _ÑпиÑки доÑтупа..." #: ../data/glade/advanced_menuitem_menu.glade.h:4 -msgid "Set MOTD" -msgstr "УÑтановить Ñобщение днÑ" +msgid "Sends a message to users currently connected to this server" +msgstr "" +"ОтправлÑет Ñообщение пользователÑм подÑоединенным к Ñерверу в данный момент" #: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Set MOTD..." +msgstr "УÑтановить Ñобщение днÑ" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 msgid "Sets Message of the Day" msgstr "УÑтанавливает Ñообщение днÑ" -#: ../data/glade/advanced_menuitem_menu.glade.h:6 +#: ../data/glade/advanced_menuitem_menu.glade.h:7 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 "ОбновлÑет фортунку" +msgid "Update MOTD..." +msgstr "Обновить Ñобщение днÑ" #: ../data/glade/advanced_menuitem_menu.glade.h:9 -msgid "_Administrator" -msgstr "_ÐдминиÑтрирование" +msgid "Updates Message of the Day" +msgstr "ОбновлÑет Ñообщение днÑ" #: ../data/glade/advanced_menuitem_menu.glade.h:10 -msgid "_Privacy Lists" -msgstr "_СпиÑки доÑтупа" +msgid "_Administrator" +msgstr "_ÐдминиÑтрирование" #: ../data/glade/advanced_menuitem_menu.glade.h:11 -msgid "_Send Server Message" +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 " Ñ Ñтим контактом уже открыты окно или вкладка" +msgstr " Ñ Ñтим контактом открытых окон/вкладок" #: ../data/glade/advanced_notifications_window.glade.h:2 msgid "<b>Actions</b>" @@ -646,7 +756,7 @@ msgid "<b>Conditions</b>" msgstr "<b>УÑловиÑ</b>" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "<b>Sounds</b>" msgstr "<b>Звуки</b>" @@ -663,7 +773,7 @@ msgid "All statuses" msgstr "Ð’Ñе ÑтатуÑÑ‹" #: ../data/glade/advanced_notifications_window.glade.h:8 -#: ../src/common/helpers.py:234 +#: ../src/common/commands.py:96 ../src/common/helpers.py:255 msgid "Away" msgstr "Ушел" @@ -673,14 +783,14 @@ msgstr "ЗанÑÑ‚ " #: ../data/glade/advanced_notifications_window.glade.h:10 msgid "Don't have " -msgstr "Ðе имеет " +msgstr "Ðет " #: ../data/glade/advanced_notifications_window.glade.h:11 msgid "Have " -msgstr "Имеет " +msgstr "ЕÑÑ‚ÑŒ " #: ../data/glade/advanced_notifications_window.glade.h:12 -#: ../src/common/helpers.py:244 +#: ../src/common/helpers.py:265 msgid "Invisible" msgstr "Ðевидимка" @@ -689,7 +799,7 @@ msgid "Launch a command" msgstr "Выполнить команду" #: ../data/glade/advanced_notifications_window.glade.h:14 -#: ../src/common/helpers.py:217 +#: ../src/common/helpers.py:238 msgid "Not Available" msgstr "ÐедоÑтупен" @@ -708,17 +818,15 @@ msgstr "Проигрывать звук" #: ../data/glade/advanced_notifications_window.glade.h:18 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" +"File Transfer Request \n" +"File Transfer Started \n" +"File Transfer Finished" msgstr "" "Получено Ñообщение\n" -"Контакт подключилÑÑ\n" "Контакт отключилÑÑ\n" "Контакт Ñменил ÑтатуÑ\n" "Упоминание в комнате\n" @@ -727,55 +835,58 @@ msgstr "" "Ðачата передача файла\n" "Завершена передача файла" -#: ../data/glade/advanced_notifications_window.glade.h:27 +#: ../data/glade/advanced_notifications_window.glade.h:26 msgid "When " msgstr "Когда " +#: ../data/glade/advanced_notifications_window.glade.h:27 +msgid "" +"_Activate window manager's UrgencyHint to make chat window in taskbar flash" +msgstr "" +"_Ðктивировать функцию оконного менеджера \"UrgencyHint\", чтобы окно чата " +"мигало на панели" + #: ../data/glade/advanced_notifications_window.glade.h:28 -msgid "_Activate window manager's UrgencyHint to make chat window in taskbar flash" -msgstr "_Ðктивировать функцию оконного менеджера \"UrgencyHint\", чтобы окно беÑеды мигало на панели" +msgid "_Disable auto opening chat window" +msgstr "_Отключить автоматичеÑкое открытие окна чата" #: ../data/glade/advanced_notifications_window.glade.h:29 -msgid "_Disable auto opening chat window" -msgstr "_Отключить автоматичеÑкое открытие окна беÑеды" +msgid "_Disable existing popup window" +msgstr "_Отключить вÑе вÑплывающие окна" #: ../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 +#: ../data/glade/advanced_notifications_window.glade.h:31 msgid "_Disable showing event in roster" msgstr "_Отключить показ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð² роÑтере" -#: ../data/glade/advanced_notifications_window.glade.h:33 +#: ../data/glade/advanced_notifications_window.glade.h:32 msgid "_Disable showing event in systray" msgstr "_Отключить показ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð² ÑиÑтемном лотке" -#: ../data/glade/advanced_notifications_window.glade.h:34 +#: ../data/glade/advanced_notifications_window.glade.h:33 msgid "_Inform me with a popup window" msgstr "_Сообщить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вÑплывающего окна" -#: ../data/glade/advanced_notifications_window.glade.h:35 +#: ../data/glade/advanced_notifications_window.glade.h:34 msgid "_Open chat window with user" -msgstr "_Открыть окно беÑеды Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð¼" +msgstr "_Открыть окно чата Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð¼" -#: ../data/glade/advanced_notifications_window.glade.h:36 +#: ../data/glade/advanced_notifications_window.glade.h:35 msgid "_Show event in roster" msgstr "_Показывать Ñобытие в роÑтере" -#: ../data/glade/advanced_notifications_window.glade.h:37 +#: ../data/glade/advanced_notifications_window.glade.h:36 msgid "_Show event in systray" -msgstr "_Показывать Ñобытие в лотке" +msgstr "_Показывать Ñобытие в ÑиÑтемном лотке" -#: ../data/glade/advanced_notifications_window.glade.h:38 +#: ../data/glade/advanced_notifications_window.glade.h:37 msgid "and I " -msgstr "и Ñ" +msgstr "и у менÑ" -#: ../data/glade/advanced_notifications_window.glade.h:39 +#: ../data/glade/advanced_notifications_window.glade.h:38 msgid "" "contact(s)\n" "group(s)\n" @@ -785,50 +896,38 @@ msgstr "" "группа(Ñ‹)\n" "вÑе" -#: ../data/glade/advanced_notifications_window.glade.h:42 +#: ../data/glade/advanced_notifications_window.glade.h:41 msgid "for " msgstr "Ð´Ð»Ñ " -#: ../data/glade/advanced_notifications_window.glade.h:43 +#: ../data/glade/advanced_notifications_window.glade.h:42 msgid "when I'm in" msgstr "Когда Ñ Ð² " #: ../data/glade/atom_entry_window.glade.h:1 -msgid "2003-12-13T18:30:02Z" -msgstr "2003-12-13T18:30:02Z" - -#: ../data/glade/atom_entry_window.glade.h:2 -msgid "<small>Romeo and Juliet</small>" -msgstr "<small>Иван и МарьÑ</small>" - -#: ../data/glade/atom_entry_window.glade.h:3 msgid "Entry:" msgstr "ЗапиÑÑŒ:" -#: ../data/glade/atom_entry_window.glade.h:4 +#: ../data/glade/atom_entry_window.glade.h:2 msgid "Feed name:" msgstr "Ðазвание ленты:" -#: ../data/glade/atom_entry_window.glade.h:5 +#: ../data/glade/atom_entry_window.glade.h:3 msgid "Last modified:" msgstr "ПоÑледнее изменение:" -#: ../data/glade/atom_entry_window.glade.h:6 +#: ../data/glade/atom_entry_window.glade.h:4 msgid "New entry received" msgstr "Получена Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" -#: ../data/glade/atom_entry_window.glade.h:7 -msgid "Old stories" -msgstr "Старые запиÑи" - -#: ../data/glade/atom_entry_window.glade.h:8 -msgid "Soliloquy" -msgstr "Монолог" - -#: ../data/glade/atom_entry_window.glade.h:9 +#: ../data/glade/atom_entry_window.glade.h:5 msgid "You have received new entry:" msgstr "Получена Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ:" +#: ../data/glade/blocked_contacts_window.glade.h:1 +msgid "Blocked Contacts" +msgstr "Заблокированне контакты" + #: ../data/glade/change_password_dialog.glade.h:1 msgid "Change Password" msgstr "Изменить пароль" @@ -858,10 +957,8 @@ 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:10 -msgid "_Add to Roster" +#: ../data/glade/roster_contact_context_menu.glade.h:12 +msgid "_Add to Roster..." msgstr "Добавить в роÑтер" #: ../data/glade/chat_context_menu.glade.h:3 @@ -881,7 +978,6 @@ msgid "_Open Link in Browser" msgstr "_ПроÑмотреть ÑÑылку в браузере" #: ../data/glade/chat_context_menu.glade.h:7 -#: ../data/glade/roster_window.glade.h:20 #: ../data/glade/subscription_request_popup_menu.glade.h:1 #: ../data/glade/systray_context_menu.glade.h:7 msgid "_Start Chat" @@ -892,28 +988,63 @@ 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:8 +msgid "Invite _Contacts" +msgstr "ПриглаÑить _учаÑтников" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 #: ../data/glade/zeroconf_contact_context_menu.glade.h:4 msgid "Send _File" msgstr "Отправить _файл" -#: ../data/glade/chat_control_popup_menu.glade.h:3 -msgid "Toggle Open_PGP Encryption" +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#, fuzzy +msgid "Toggle End to End 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" +msgid "Toggle Open_PGP Encryption" +msgstr "Включить Open_PGP шифрование" #: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "Добавить в роÑтер" + +#: ../data/glade/chat_control_popup_menu.glade.h:7 #: ../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:13 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_window.glade.h:19 #: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2600 msgid "_History" msgstr "_ИÑториÑ" +#: ../data/glade/chat_to_muc_window.glade.h:1 +msgid "In_vite" +msgstr "_ПриглаÑить" + +#: ../data/glade/chat_to_muc_window.glade.h:2 +msgid "Invite Friends !" +msgstr "ПриглаÑить Друзей !" + +#: ../data/glade/chat_to_muc_window.glade.h:3 +msgid "MUC server" +msgstr "MUC Ñервер" + +#: ../data/glade/chat_to_muc_window.glade.h:4 +msgid "Please select a MUC server." +msgstr "ПожалуйÑта выберите Ñервер" + +#: ../data/glade/chat_to_muc_window.glade.h:5 +msgid "" +"You are going to begin a Multi-User Chat.\n" +"Select the contacts you want to invite" +msgstr "" +"Ð’Ñ‹ хотите начать чат(Multi-User Chat).\n" +"Выберите контакты которых вы хотите приглаÑить" + #: ../data/glade/data_form_window.glade.h:1 msgid "Fill in the form." msgstr "Заполните форму." @@ -926,6 +1057,14 @@ msgstr "ÐаÑтройки комнаты" msgid "Edit Groups" msgstr "Редактировать группы" +#: ../data/glade/features_window.glade.h:2 +msgid "<b>List of possible features in Gajim:</b>" +msgstr "<b>СпиÑок возможных функций Gajim:</b>" + +#: ../data/glade/features_window.glade.h:3 +msgid "Features" +msgstr "ВозможноÑти" + #: ../data/glade/filetransfers.glade.h:1 msgid "A list of active, completed and stopped file transfers" msgstr "СпиÑок активных, завершенных и оÑтановленных передач файлов" @@ -959,11 +1098,11 @@ 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" +msgid "Removes completed, cancelled 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" +msgid "Shows a list of file transfers between you and others" msgstr "Показывает ÑпиÑок передач между вами и оÑтальными" #: ../data/glade/filetransfers.glade.h:11 @@ -978,7 +1117,7 @@ msgstr "" msgid "When a file transfer is complete show a popup notification" msgstr "Показать уведомление по окончании загрузки" -#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:769 +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:792 msgid "_Continue" msgstr "_Продолжить" @@ -986,7 +1125,7 @@ msgstr "_Продолжить" msgid "_Notify me when a file transfer is complete" msgstr "_Уведомить менÑ, когда передача файлов закончитÑÑ" -#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:191 msgid "_Open Containing Folder" msgstr "_Открыть папку Ñ Ð¿Ñ€Ð¸Ð½Ñтым файлом" @@ -1012,7 +1151,7 @@ msgstr "" "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ\n" "Группа\n" "Контакт\n" -"Заголовок окна беÑеды" +"Баннер в окне чата" #: ../data/glade/gajim_themes_window.glade.h:6 msgid "Bold" @@ -1073,11 +1212,11 @@ msgid "_Background:" msgstr "Цвет _фона" #: ../data/glade/gc_control_popup_menu.glade.h:1 -msgid "Change _Nickname" +msgid "Change _Nickname..." msgstr "Изменить _ник" #: ../data/glade/gc_control_popup_menu.glade.h:2 -msgid "Change _Subject" +msgid "Change _Subject..." msgstr "Изменить _тему" #: ../data/glade/gc_control_popup_menu.glade.h:3 @@ -1085,46 +1224,58 @@ msgid "Click to see past conversation in this room" msgstr "Щелкните Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра беÑед в Ñтой комнате" #: ../data/glade/gc_control_popup_menu.glade.h:4 -msgid "Configure _Room" +msgid "Configure _Room..." msgstr "ÐаÑтроить _комнату" #: ../data/glade/gc_control_popup_menu.glade.h:5 -msgid "_Bookmark This Room" +msgid "_Bookmark" msgstr "Добавить Ñту комнату в _закладки" +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" +msgstr "Уничтожить комнату" + +#: ../data/glade/gc_control_popup_menu.glade.h:8 +msgid "_Manage Room" +msgstr "_Управление комнатой" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "Сворачивать при закрытии" + #: ../data/glade/gc_occupants_menu.glade.h:1 msgid "Mo_derator" msgstr "_Модератор" -#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:2 +msgid "Occupant Actions" +msgstr "_ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ поÑетителем" + +#: ../data/glade/gc_occupants_menu.glade.h:5 msgid "_Admin" msgstr "_Ðдмин" -#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:6 msgid "_Ban" msgstr "_Забанить" -#: ../data/glade/gc_occupants_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:8 msgid "_Kick" msgstr "_Выгнать" -#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:9 msgid "_Member" msgstr "_УчаÑтник" -#: ../data/glade/gc_occupants_menu.glade.h:8 -msgid "_Occupant Actions" -msgstr "_ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ поÑетителем" - -#: ../data/glade/gc_occupants_menu.glade.h:9 +#: ../data/glade/gc_occupants_menu.glade.h:10 msgid "_Owner" msgstr "_Владелец" -#: ../data/glade/gc_occupants_menu.glade.h:10 +#: ../data/glade/gc_occupants_menu.glade.h:11 msgid "_Send Private Message" msgstr "_Отправить личное Ñообщение" -#: ../data/glade/gc_occupants_menu.glade.h:11 +#: ../data/glade/gc_occupants_menu.glade.h:12 msgid "_Voice" msgstr "_Право говорить" @@ -1132,72 +1283,110 @@ msgstr "_Право говорить" msgid "Create new post" msgstr "Создать новое Ñообщение" -#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:259 +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:280 msgid "From" msgstr "От" #. holds subject -#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:141 -#: ../src/history_manager.py:172 +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:147 +#: ../src/history_manager.py:178 msgid "Subject" msgstr "Тема" #: ../data/glade/history_manager.glade.h:1 msgid "" -"<big><b>Welcome to Gajim History Logs Manager</b></big>\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" "<b>WARNING:</b>\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 "" -"<big><b>Добро пожаловать в менеджер иÑтории Gajim'а</b></big>\n" -"\n" -"Ð’Ñ‹ можете выбрать логи в левом поле и/или иÑкать в базе данных в форме " -"внизу. \n" -"\n" "<b>Ð’ÐИМÐÐИЕ:</b>\n" "ЕÑли вы ÑобираетеÑÑŒ уÑтроить маÑÑовую чиÑтку, пожалуйÑта удоÑтоверьтеÑÑŒ что " "Gajim не запущен. Избегайте удалений из логов контактов Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ вы " "разговариваете в Ñтот момент." -#: ../data/glade/history_manager.glade.h:7 +#: ../data/glade/history_manager.glade.h:3 +msgid "<big><b>Welcome to Gajim History Logs Manager</b></big>" +msgstr "<big><b>Добро пожаловать в менеджер иÑтории Gajim'а</b></big>" + +#: ../data/glade/history_manager.glade.h:4 msgid "Delete" msgstr "Удалить" -#: ../data/glade/history_manager.glade.h:8 +#: ../data/glade/history_manager.glade.h:5 msgid "Export" msgstr "ÐкÑпорт" -#: ../data/glade/history_manager.glade.h:9 +#: ../data/glade/history_manager.glade.h:6 msgid "Gajim History Logs Manager" msgstr "Менеджер иÑтории Gajim'а" +#: ../data/glade/history_manager.glade.h:7 +msgid "" +"This log manager is not intended for log viewing. If you are looking for " +"such functionality, use the history window instead.\n" +"\n" +"Use this program to delete or export logs. You can select logs from the left " +"and/or search database from below." +msgstr "" +"Ðтот менеджер иÑтории не предназначен Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра. ЕÑли вы хотите " +"проÑмативать иÑторию Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ количеÑтвом функций, иÑпользуйте окно " +"иÑтории.\n" +"\n" +"ИÑпользуйте Ñту программу Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑкÑпорта иÑтории. Ð’Ñ‹ можете " +"выбрать лог Ñлева или воÑпользоватьÑÑ Ð¿Ð¾Ð¸Ñком в базе." + #: ../data/glade/history_manager.glade.h:10 msgid "_Search Database" msgstr "_ПоиÑк в базе данных" #: ../data/glade/history_window.glade.h:1 -msgid "Build custom query" -msgstr "СоÑтавить Ñвой запроÑ" +msgid "<b>History Viewer</b>" +msgstr "<b>Менеджер иÑтории</b>" #: ../data/glade/history_window.glade.h:2 +msgid "<b>JID Selection</b>" +msgstr "<b>Выбор JID</b>" + +#: ../data/glade/history_window.glade.h:3 +msgid "" +"Choose the chatlog you want to view. \n" +"Enter the jid of a groupchat or a contact here. For online accounts you can " +"even enter a a contact's nickname." +msgstr "" +"Выберите лог чата который хотите поÑмотреть. \n" +"Введите jid чата или контакта. Ð”Ð»Ñ Ð¾Ð½Ð»Ð°Ð¹Ð½ контактов можете ввеÑти ники." + +#: ../data/glade/history_window.glade.h:5 ../src/history_window.py:224 msgid "Conversation History" msgstr "ИÑториÑ" -#: ../data/glade/history_window.glade.h:3 -msgid "Query Builder..." -msgstr "Редактор запроÑов..." +#: ../data/glade/history_window.glade.h:6 +msgid "" +"Current History\n" +"All Chat Histories" +msgstr "" +"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð¸ÑториÑ\n" +"ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ñех чатов" -#: ../data/glade/history_window.glade.h:4 +#: ../data/glade/history_window.glade.h:8 +#: ../data/glade/search_window.glade.h:2 msgid "Search" msgstr "ПоиÑк" -#: ../data/glade/history_window.glade.h:5 +#: ../data/glade/history_window.glade.h:9 +#: ../data/glade/zeroconf_information_window.glade.h:10 +msgid "_Log conversation history" +msgstr "_ИÑÑ‚Ð¾Ñ€Ð¸Ñ ÑообщениÑ" + +#: ../data/glade/history_window.glade.h:10 +#: ../data/glade/search_window.glade.h:5 ../src/disco.py:1182 msgid "_Search" msgstr "_ПоиÑк" +#: ../data/glade/history_window.glade.h:11 +msgid "in" +msgstr "в" + #: ../data/glade/invitation_received_dialog.glade.h:1 msgid "Accept" msgstr "ПринÑÑ‚ÑŒ" @@ -1211,33 +1400,37 @@ msgstr "Отклонить" msgid "Invitation Received" msgstr "Получено приглашение" -#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1146 +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1385 msgid "Join Group Chat" msgstr "Войти в комнату" #: ../data/glade/join_groupchat_window.glade.h:2 -#: ../data/glade/manage_bookmarks_window.glade.h:4 -#: ../data/glade/profile_window.glade.h:23 -#: ../data/glade/vcard_information_window.glade.h:29 -msgid "Nickname:" -msgstr "Ðик:" +msgid "Join this room automatically when I connect" +msgstr "Ðвтовход в комнату при подключении" #: ../data/glade/join_groupchat_window.glade.h:3 #: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/profile_window.glade.h:24 +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Nickname:" +msgstr "Ðик:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:6 msgid "Password:" msgstr "Пароль:" -#: ../data/glade/join_groupchat_window.glade.h:4 +#: ../data/glade/join_groupchat_window.glade.h:5 msgid "Recently:" msgstr "Ðедавно:" -#: ../data/glade/join_groupchat_window.glade.h:5 -#: ../data/glade/manage_bookmarks_window.glade.h:7 +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 msgid "Room:" msgstr "Комната:" -#: ../data/glade/join_groupchat_window.glade.h:6 ../src/disco.py:1151 -#: ../src/disco.py:1518 +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1170 +#: ../src/disco.py:1591 msgid "_Join" msgstr "_ПриÑоединитьÑÑ" @@ -1257,15 +1450,19 @@ msgstr "ЕÑли отмечено, то Gajim будет входить в ко msgid "Manage Bookmarks" msgstr "Управление закладками" -#: ../data/glade/manage_bookmarks_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "Сворачивать при авто входе" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 msgid "Print status:" msgstr "Показывать ÑтатуÑ:" -#: ../data/glade/manage_bookmarks_window.glade.h:8 +#: ../data/glade/manage_bookmarks_window.glade.h:9 msgid "Server:" msgstr "Сервер:" -#: ../data/glade/manage_bookmarks_window.glade.h:9 +#: ../data/glade/manage_bookmarks_window.glade.h:10 msgid "Title:" msgstr "Заголовок:" @@ -1278,38 +1475,51 @@ msgid "<b>Settings</b>" msgstr "<b>Ðатройки</b>" #: ../data/glade/manage_proxies_window.glade.h:3 -msgid "HTTP Connect" -msgstr "HTTP Соединение" +msgid "" +"HTTP Connect\n" +"SOCKS5" +msgstr "" +"HTTP Соединение\n" +"SOCKS5" -#: ../data/glade/manage_proxies_window.glade.h:4 +#: ../data/glade/manage_proxies_window.glade.h:5 msgid "Manage Proxy Profiles" msgstr "Управление профилÑми прокÑи" -#: ../data/glade/manage_proxies_window.glade.h:5 -#: ../data/glade/profile_window.glade.h:22 -#: ../data/glade/vcard_information_window.glade.h:28 +#: ../data/glade/manage_proxies_window.glade.h:6 +#: ../data/glade/profile_window.glade.h:23 +#: ../data/glade/vcard_information_window.glade.h:30 msgid "Name:" msgstr "ИмÑ:" #: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "П_ароль" + +#: ../data/glade/manage_proxies_window.glade.h:8 msgid "Type:" msgstr "Тип:" -#: ../data/glade/manage_proxies_window.glade.h:8 +#: ../data/glade/manage_proxies_window.glade.h:9 msgid "Use authentication" msgstr "ИÑпользовать аутентификацию" +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +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:1104 +#: ../data/glade/message_window.glade.h:2 ../src/chat_control2.py:1257 +#: ../src/chat_control.py:1271 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:10 +#: ../data/glade/roster_window.glade.h:12 #: ../data/glade/subscription_request_window.glade.h:6 msgid "_Actions" msgstr "_ДейÑтвиÑ" @@ -1317,7 +1527,7 @@ 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:253 +#: ../src/filetransfers_window.py:252 msgid "_Send" msgstr "_Отправить" @@ -1327,46 +1537,54 @@ msgstr "ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" #: ../data/glade/preferences_window.glade.h:1 msgid "<b>Advanced Configuration Editor</b>" -msgstr "<b>Редактор наÑтроек</b>" +msgstr "<b>РаÑширенный редактор наÑтроек</b>" #: ../data/glade/preferences_window.glade.h:2 msgid "<b>Applications</b>" msgstr "<b>ПриложениÑ</b>" +#: ../data/glade/preferences_window.glade.h:3 +msgid "<b>Chat Appearance</b>" +msgstr "<b>ÐаÑтройки окна чата</b>" + #. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../data/glade/preferences_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:5 msgid "<b>Custom</b>" msgstr "<b>ПользовательÑкие наÑтройки</b>" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "<b>Format of a line</b>" msgstr "<b>Формат Ñтроки</b>" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "<b>GMail Options</b>" msgstr "<b>ÐаÑтройки GMail</b>" -#: ../data/glade/preferences_window.glade.h:7 -msgid "<b>Interface Customization</b>" -msgstr "<b>ÐаÑтройка интерфейÑа</b>" - #: ../data/glade/preferences_window.glade.h:9 msgid "<b>Preset Status Messages</b>" msgstr "<b>ПредуÑтановленные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе</b>" -#: ../data/glade/preferences_window.glade.h:11 -msgid "<b>Visual Notifications</b>" +#: ../data/glade/preferences_window.glade.h:10 +msgid "<b>Privacy</b>" msgstr "<b>УведомлениÑ</b>" -#: ../data/glade/preferences_window.glade.h:12 -msgid "A_fter nickname:" -msgstr "П_оÑле ника:" +#: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "<b>ÐаÑтройки роÑтера</b>" #: ../data/glade/preferences_window.glade.h:13 -msgid "Advanced" -msgstr "РаÑширенный" +msgid "<b>Themes</b>" +msgstr "<b>ÐаÑтройки интерфейÑа</b>" #: ../data/glade/preferences_window.glade.h:14 +msgid "<b>Visual Notifications</b>" +msgstr "<b>УведомлениÑ</b>" + +#: ../data/glade/preferences_window.glade.h:15 +msgid "Advanced" +msgstr "РаÑширенные" + +#: ../data/glade/preferences_window.glade.h:16 msgid "" "All chat states\n" "Composing only\n" @@ -1376,43 +1594,48 @@ msgstr "" "Только печать\n" "Отключено " -#: ../data/glade/preferences_window.glade.h:17 +#: ../data/glade/preferences_window.glade.h:19 msgid "Allow _OS information to be sent" msgstr "ОтÑылать информацию об _ОС" -#: ../data/glade/preferences_window.glade.h:18 +#: ../data/glade/preferences_window.glade.h:20 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:21 +msgid "Always check to see if Gajim is the _default Jabber client on startup" +msgstr "" +"Ð’Ñегда проверÑÑ‚ÑŒ при запуÑке, ÑвлÑетÑÑ Ð»Ð¸ Gajim jabber-клиентом по-умолчанию" -#: ../data/glade/preferences_window.glade.h:20 +#: ../data/glade/preferences_window.glade.h:22 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 "Пример: еÑли вы включили ÑтатуÑные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° \"Отошел\", Gajim Ð²Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ не будет Ñпрашивать о ÑтатуÑом Ñообщении, когда вы Ñмените ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° \"Отошел\", поÑкольку будет иÑпользовать значение по-умолчанию, которое уÑтановлено здеÑÑŒ" +msgstr "" +"Пример: еÑли вы включили ÑтатуÑные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° \"Отошел\", Gajim " +"Ð²Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ не будет Ñпрашивать о ÑтатуÑом Ñообщении, когда вы Ñмените ÑÑ‚Ð°Ñ‚ÑƒÑ " +"на \"Отошел\", поÑкольку будет иÑпользовать значение по-умолчанию, которое " +"уÑтановлено здеÑÑŒ" -#: ../data/glade/preferences_window.glade.h:21 +#: ../data/glade/preferences_window.glade.h:23 msgid "Ask status message when I:" msgstr "Запрашивать Ñообщение о ÑтатуÑе, когда Ñ: " -#: ../data/glade/preferences_window.glade.h:22 +#: ../data/glade/preferences_window.glade.h:24 msgid "Auto _away after:" msgstr "Ðвто-_отошел поÑле:" -#: ../data/glade/preferences_window.glade.h:23 +#: ../data/glade/preferences_window.glade.h:25 msgid "Auto _not available after:" msgstr "Ðвто-_недоÑтупен поÑле:" -#: ../data/glade/preferences_window.glade.h:24 +#: ../data/glade/preferences_window.glade.h:26 msgid "" "Autodetect on every Gajim startup\n" "Always use GNOME default applications\n" "Always use KDE default applications\n" -"Always use XFCE4 default applications\n" +"Always use Xfce default applications\n" "Custom" msgstr "" "ОпределÑÑ‚ÑŒ автоматичеÑки при каждом запуÑке Gajim\n" @@ -1421,23 +1644,15 @@ msgstr "" "Ð’Ñегда иÑпользовать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ XFCE4 по умолчанию\n" "Другое" -#: ../data/glade/preferences_window.glade.h:29 -msgid "B_efore nickname:" -msgstr "_До ника:" - -#: ../data/glade/preferences_window.glade.h:30 ../src/chat_control.py:844 -msgid "Chat" -msgstr "Чат" - #: ../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" +"you. Use with caution, because it blocks all messages from any contact that " +"is not in the roster" msgstr "" "Отметьте Ñту опцию, только еÑли кто-то не из вашего роÑтера Ñпамит/доÑтает " "ваÑ. ИÑпользуйте Ñ Ð¾ÑторожноÑтью, потому что Ñто заблокирует вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ " -"от контактов не из вашего ротера." +"от контактов не из вашего роcтера." #: ../data/glade/preferences_window.glade.h:32 msgid "Configure color and font of the interface" @@ -1448,28 +1663,26 @@ msgid "Default Status Messages" msgstr "ÐвтоматичеÑкие ÑтатуÑные ÑообщениÑ" #: ../data/glade/preferences_window.glade.h:34 -msgid "Default status _iconset:" -msgstr "Тема ÑтатуÑных _иконок:" +msgid "" +"Determined by sender\n" +"Chat message\n" +"Single message" +msgstr "" +"ОпределÑетÑÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»ÐµÐ¼\n" +"Сообщение чата\n" +"Одиночное Ñообщение" -#: ../data/glade/preferences_window.glade.h:35 +#: ../data/glade/preferences_window.glade.h:37 msgid "Display _extra email details" msgstr "Отображать _дополнительные данные о почте" -#: ../data/glade/preferences_window.glade.h:36 -msgid "Display a_vatars of contacts in roster" -msgstr "Показавать а_ватары Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð² в роÑтере" - -#: ../data/glade/preferences_window.glade.h:37 -msgid "Display status _messages of contacts in roster" -msgstr "Показать _ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе контакта в роÑтере" - #: ../data/glade/preferences_window.glade.h:38 -msgid "Displayed Chat state noti_fications:" -msgstr "Отображать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñо_ÑтоÑнии беÑеды:" +msgid "Display a_vatars of contacts in roster" +msgstr "Показывать а_ватары Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð² в роÑтере" #: ../data/glade/preferences_window.glade.h:39 -msgid "E_very 5 minutes" -msgstr "Каждые 5 _минут" +msgid "Display status _messages of contacts in roster" +msgstr "Показывать _ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе контакта в роÑтере" #: ../data/glade/preferences_window.glade.h:40 msgid "Emoticons:" @@ -1486,7 +1699,8 @@ msgid "" "display in chat windows." msgstr "" "Gajim может отÑылать и получать метаданные отноÑÑщиеÑÑ Ðº беÑеде Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð¼. " -"ЗдеÑÑŒ вы можете указать какие ÑоÑтоÑние беÑеды вы хотели бы видеть в окне беÑеды." +"ЗдеÑÑŒ вы можете указать, какие ÑоÑтоÑние чата вы хотели бы видеть в окне " +"чата." #: ../data/glade/preferences_window.glade.h:43 msgid "" @@ -1495,32 +1709,10 @@ msgid "" "send to the other party." msgstr "" "Gajim может отÑылать и получать метаданные, отноÑÑщиеÑÑ Ðº беÑеде Ñ " -"контактом. ЗдеÑÑŒ вы можете указать, какие ÑоÑтоÑÐ½Ð¸Ñ Ð±ÐµÑеды клиент будет " +"контактом. ЗдеÑÑŒ вы можете указать, какие ÑоÑтоÑÐ½Ð¸Ñ Ñ‡Ð°Ñ‚Ð° Gajim будет " "отÑылать вашему реÑпонденту." #: ../data/glade/preferences_window.glade.h:44 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Gajim будет автоматичеÑки показывать новые ÑобытиÑ, Ð¿Ð¾Ð´Ð½Ð¸Ð¼Ð°Ñ ÑоответÑтвующее " -"окно." - -#: ../data/glade/preferences_window.glade.h:45 -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:46 -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:47 msgid "" "Gajim will notify you via a popup window in the bottom right of the screen " "about contacts that just signed out" @@ -1528,17 +1720,18 @@ msgstr "" "Gajim будет уведомлÑÑ‚ÑŒ Ð²Ð°Ñ Ð¾Ð± отÑоединившемÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ðµ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² " "правом нижнем углу Ñкрана" -#: ../data/glade/preferences_window.glade.h:48 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim будет лишь менÑÑ‚ÑŒ иконку у контакта, от которого пришло новое Ñообщение" +#: ../data/glade/preferences_window.glade.h:46 +msgid "Hides buttons in chatwindows to " +msgstr "Скрывает кнопки окна комнаты." -#: ../data/glade/preferences_window.glade.h:50 +#: ../data/glade/preferences_window.glade.h:47 msgid "" "If checked, Gajim will also include information about the sender of the new " "emails" -msgstr "ЕÑли отмечено, то Gajim будет включать информацию об отправителе новых пиÑем." +msgstr "" +"ЕÑли отмечено, то Gajim будет включать информацию об отправителе новых пиÑем." -#: ../data/glade/preferences_window.glade.h:51 +#: ../data/glade/preferences_window.glade.h:48 msgid "" "If checked, Gajim will display avatars of contacts in roster window and in " "group chats" @@ -1546,7 +1739,7 @@ msgstr "" "ЕÑли отмечено, то Gajim будет показывать аватары контактов в окне роÑтера и " "в окнах комнат" -#: ../data/glade/preferences_window.glade.h:52 +#: ../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" @@ -1554,13 +1747,7 @@ msgstr "" "ЕÑли отмечено, то Gajim будет отображать Ñообщение о ÑтатуÑе контакта под " "его именем в окне роÑтера и в окнах комнат" -#: ../data/glade/preferences_window.glade.h:53 -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:54 +#: ../data/glade/preferences_window.glade.h:50 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, " @@ -1570,7 +1757,7 @@ msgstr "" "(например, контакты из MSN будут иметь ÑоответÑтвующие иконки msn Ð´Ð»Ñ " "ÑтатуÑов \"в Ñети\", \"ушёл\", \"занÑÑ‚\" и Ñ‚.д.)" -#: ../data/glade/preferences_window.glade.h:55 +#: ../data/glade/preferences_window.glade.h:51 msgid "" "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " "animated or static graphical emoticons" @@ -1579,15 +1766,15 @@ msgstr "" "анимированным Ñквивалентом. Выберите \"Отключены\", чтобы Ñтого не " "проиÑходило." -#: ../data/glade/preferences_window.glade.h:56 +#: ../data/glade/preferences_window.glade.h:52 msgid "Ignore rich content in incoming messages" msgstr "Игнорировать форматирование во входÑщих ÑообщениÑÑ…" -#: ../data/glade/preferences_window.glade.h:57 +#: ../data/glade/preferences_window.glade.h:53 msgid "Ma_nage..." msgstr "_Управление..." -#: ../data/glade/preferences_window.glade.h:58 +#: ../data/glade/preferences_window.glade.h:54 msgid "" "Never\n" "Always\n" @@ -1599,59 +1786,53 @@ msgstr "" "По учетной запиÑи\n" "По типу" -#: ../data/glade/preferences_window.glade.h:62 -msgid "Notify me about contacts that: " -msgstr "УведомлÑÑ‚ÑŒ о контактах, которые: " +#: ../data/glade/preferences_window.glade.h:58 +msgid "Notify me about contacts that sign _in" +msgstr "УведомлÑÑ‚ÑŒ о контактах, которые вошли: " -#: ../data/glade/preferences_window.glade.h:63 +#: ../data/glade/preferences_window.glade.h:59 +msgid "Notify me about contacts that sign _out" +msgstr "УведомлÑÑ‚ÑŒ о контактах, которые вышли: " + +#: ../data/glade/preferences_window.glade.h:60 msgid "Notify on new _GMail email" msgstr "Сообщать о новых пиÑьмах в _Gmail" -#: ../data/glade/preferences_window.glade.h:64 -msgid "On every _message" -msgstr "Ð’ _каждой Ñтроке" - -#: ../data/glade/preferences_window.glade.h:65 -msgid "One message _window:" -msgstr "Одно _окно ÑообщениÑ:" - -#: ../data/glade/preferences_window.glade.h:66 -msgid "Outgoing Chat state noti_fications:" -msgstr "ИÑходÑщие у_Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑоÑтоÑнии беÑеды:" - -#: ../data/glade/preferences_window.glade.h:67 +#: ../data/glade/preferences_window.glade.h:61 msgid "Play _sounds" msgstr "Проигрывать _звук" -#: ../data/glade/preferences_window.glade.h:68 +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" +"Показать вÑплывающее окно\n" +"Сообщить мне об Ñтом\n" +"Показать в роÑтере" + +#: ../data/glade/preferences_window.glade.h:65 msgid "Preferences" msgstr "ÐаÑтройки" -#: ../data/glade/preferences_window.glade.h:69 -msgid "Print time:" -msgstr "Выводить времÑ:" - -#: ../data/glade/preferences_window.glade.h:70 -msgid "Save _position and size for roster and chat windows" -msgstr "Сохранить _положение и размер роÑтера и окон беÑед" +#: ../data/glade/preferences_window.glade.h:66 +msgid "Privacy" +msgstr "Личные" -#: ../data/glade/preferences_window.glade.h:71 +#: ../data/glade/preferences_window.glade.h:67 msgid "Set status message to reflect currently playing _music track" msgstr "Отображать в ÑтатуÑном Ñообщении название проигрываемого трека" -#: ../data/glade/preferences_window.glade.h:72 -msgid "Show only in _roster" -msgstr "Показывать только в _роÑтере" - -#: ../data/glade/preferences_window.glade.h:73 +#: ../data/glade/preferences_window.glade.h:68 msgid "Sign _in" -msgstr "Ð’_ошли" +msgstr "Ð’_ошел" -#: ../data/glade/preferences_window.glade.h:74 +#: ../data/glade/preferences_window.glade.h:69 msgid "Sign _out" -msgstr "Ð’_ышли" +msgstr "Ð’_ышел" -#: ../data/glade/preferences_window.glade.h:75 +#: ../data/glade/preferences_window.glade.h:70 msgid "" "Some messages may include rich content (formatting, colors etc). If checked, " "Gajim will just display the raw message text." @@ -1659,51 +1840,47 @@ msgstr "" "Ðекоторые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ Ñодержать форматирование (цвет, шрифт и Ñ‚.д.). " "ЕÑли отмечено, Gajim будет отображать только их текÑÑ‚, без форматированиÑ." -#: ../data/glade/preferences_window.glade.h:76 +#: ../data/glade/preferences_window.glade.h:71 msgid "Status" msgstr "СтатуÑ" -#: ../data/glade/preferences_window.glade.h:77 +#: ../data/glade/preferences_window.glade.h:72 +msgid "Status _iconset:" +msgstr "Тема ÑтатуÑных _иконок:" + +#: ../data/glade/preferences_window.glade.h:73 msgid "T_heme:" msgstr "_Тема:" -#: ../data/glade/preferences_window.glade.h:78 +#: ../data/glade/preferences_window.glade.h:74 msgid "The auto away status message" msgstr "Сообщение о ÑтатуÑе Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾-отошел" -#: ../data/glade/preferences_window.glade.h:79 +#: ../data/glade/preferences_window.glade.h:75 msgid "The auto not available status message" msgstr "Сообщение о ÑтатуÑе Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾-недоÑтупен" -#: ../data/glade/preferences_window.glade.h:80 +#: ../data/glade/preferences_window.glade.h:76 +msgid "Treat all incoming messages as:" +msgstr "ВходÑщее Ñообщение:" + +#: ../data/glade/preferences_window.glade.h:77 msgid "Use _transports iconsets" msgstr "ИÑпользовать иконки _транÑпортов" -#: ../data/glade/preferences_window.glade.h:81 +#: ../data/glade/preferences_window.glade.h:78 +msgid "Use only one message _window:" +msgstr "Только одно окно:" + +#: ../data/glade/preferences_window.glade.h:79 msgid "Use system _default" msgstr "ИÑпользовать ÑиÑтемный шрифт" -#: ../data/glade/preferences_window.glade.h:82 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Иконка в _трее (или в облаÑти уведомлениÑ)" - -#: ../data/glade/preferences_window.glade.h:83 -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:84 -msgid "When new event is received" -msgstr "Когда получено новое Ñообытие" +#: ../data/glade/preferences_window.glade.h:80 +msgid "When new event is received:" +msgstr "Когда получено новое Ñообытие:" -#: ../data/glade/preferences_window.glade.h:85 +#: ../data/glade/preferences_window.glade.h:81 msgid "" "Works for Rhythmbox and Muine players. For more players, please visit http://" "trac.gajim.org/wiki/GajimAndMusicPlayer" @@ -1711,91 +1888,83 @@ msgstr "" "Работает Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñми Rhythmbox и Muine. О других проигрывателÑÑ… Ñм. " "http://trac.gajim.org/wiki/GajimAndMusicPlayer" -#: ../data/glade/preferences_window.glade.h:86 +#: ../data/glade/preferences_window.glade.h:82 msgid "_Advanced Notifications Control..." msgstr "_Дополнительные наÑтройки уведомлений..." -#: ../data/glade/preferences_window.glade.h:87 -msgid "_After time:" -msgstr "_ПоÑле времени:" - -#: ../data/glade/preferences_window.glade.h:88 -msgid "_Before time:" -msgstr "_До времени:" - -#: ../data/glade/preferences_window.glade.h:89 +#: ../data/glade/preferences_window.glade.h:83 msgid "_Browser:" msgstr "_Браузер:" -#: ../data/glade/preferences_window.glade.h:90 +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Display chat state notifications:" +msgstr "Отображать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑоÑтоÑнии чата:" + +#: ../data/glade/preferences_window.glade.h:85 msgid "_File manager:" msgstr "_Менеджер файлов:" -#: ../data/glade/preferences_window.glade.h:91 +#: ../data/glade/preferences_window.glade.h:86 msgid "_Font:" msgstr "Шри_Ñ„Ñ‚:" -#: ../data/glade/preferences_window.glade.h:92 +#: ../data/glade/preferences_window.glade.h:87 msgid "_Highlight misspelled words" msgstr "ВыделÑÑ‚ÑŒ _Ñлова Ñ Ð¾Ð¿ÐµÑ‡Ð°Ñ‚ÐºÐ°Ð¼Ð¸" -#: ../data/glade/preferences_window.glade.h:93 +#: ../data/glade/preferences_window.glade.h:88 msgid "_Ignore events from contacts not in the roster" msgstr "_Игнорировать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¾Ñ‚ контактов не из роÑтера" -#: ../data/glade/preferences_window.glade.h:94 +#: ../data/glade/preferences_window.glade.h:89 msgid "_Incoming message:" msgstr "_ВходÑщее Ñообщение:" -#: ../data/glade/preferences_window.glade.h:95 +#: ../data/glade/preferences_window.glade.h:90 msgid "_Log status changes of contacts" -msgstr "_ЗапиÑывать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑтатуÑа контактов" +msgstr "_ЗапиÑывать в лог Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑтатуÑов контактов" -#: ../data/glade/preferences_window.glade.h:96 +#: ../data/glade/preferences_window.glade.h:91 msgid "_Mail client:" msgstr "_Почтовый клиент:" -#: ../data/glade/preferences_window.glade.h:97 -msgid "_Never" -msgstr "_Ðикогда" - -#: ../data/glade/preferences_window.glade.h:98 -msgid "_Notify me about it" -msgstr "_Сообщать об Ñтом" +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Make message windows compact" +msgstr "Компактное окно Ñообщений" -#: ../data/glade/preferences_window.glade.h:99 +#: ../data/glade/preferences_window.glade.h:93 msgid "_Open..." msgstr "_Открыть..." -#: ../data/glade/preferences_window.glade.h:100 +#: ../data/glade/preferences_window.glade.h:94 msgid "_Outgoing message:" msgstr "_ИÑходÑщее Ñообщение:" -#: ../data/glade/preferences_window.glade.h:101 +#: ../data/glade/preferences_window.glade.h:95 msgid "_Player:" msgstr "_Проигрыватель:" -#: ../data/glade/preferences_window.glade.h:102 -msgid "_Pop it up" -msgstr "_ВывеÑти окно" - -#: ../data/glade/preferences_window.glade.h:103 +#: ../data/glade/preferences_window.glade.h:96 msgid "_Reset to Default Colors" msgstr "_ВернутьÑÑ Ðº цветам по умолчанию" -#: ../data/glade/preferences_window.glade.h:104 +#: ../data/glade/preferences_window.glade.h:97 +msgid "_Send chat state notifications:" +msgstr "ОтправлÑÑ‚ÑŒ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑоÑтоÑнии чата:" + +#: ../data/glade/preferences_window.glade.h:98 msgid "_Sort contacts by status" msgstr "_Сортировать контакты по ÑтатуÑу" -#: ../data/glade/preferences_window.glade.h:105 +#: ../data/glade/preferences_window.glade.h:99 msgid "_Status message:" msgstr "_Сообщение о ÑтатуÑе:" -#: ../data/glade/preferences_window.glade.h:106 +#: ../data/glade/preferences_window.glade.h:100 msgid "_URL:" msgstr "_URL:" -#: ../data/glade/preferences_window.glade.h:107 +#: ../data/glade/preferences_window.glade.h:101 msgid "minutes" msgstr "минут" @@ -1839,7 +2008,7 @@ msgstr "JabberID" msgid "Order:" msgstr "Ðомер:" -#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:1841 +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2258 msgid "Privacy List" msgstr "СпиÑок доÑтупа" @@ -1892,7 +2061,7 @@ msgstr "ÐдреÑ" #: ../data/glade/profile_window.glade.h:4 msgid "Avatar:" -msgstr "Ðватара:" +msgstr "Ðватар:" #: ../data/glade/profile_window.glade.h:5 #: ../data/glade/vcard_information_window.glade.h:6 @@ -1905,126 +2074,115 @@ msgid "City:" msgstr "Город:" #: ../data/glade/profile_window.glade.h:7 +msgid "Click to set your avatar" +msgstr "УÑтановить Ñвою аватару" + +#: ../data/glade/profile_window.glade.h:8 #: ../data/glade/vcard_information_window.glade.h:10 msgid "Company:" msgstr "КомпаниÑ:" -#: ../data/glade/profile_window.glade.h:8 -#: ../data/glade/vcard_information_window.glade.h:13 -msgid "Country:" -msgstr "Страна:" - #: ../data/glade/profile_window.glade.h:9 #: ../data/glade/vcard_information_window.glade.h:14 -msgid "Department:" -msgstr "Отделение:" +msgid "Country:" +msgstr "Страна:" #: ../data/glade/profile_window.glade.h:10 #: ../data/glade/vcard_information_window.glade.h:15 -#: ../data/glade/zeroconf_information_window.glade.h:2 -#: ../data/glade/zeroconf_properties_window.glade.h:5 -msgid "E-Mail:" -msgstr "Почта:" +msgid "Department:" +msgstr "Отделение:" -#: ../data/glade/profile_window.glade.h:11 -#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/profile_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:17 msgid "Extra Address:" msgstr "Дополнительный адреÑ:" #. Family Name -#: ../data/glade/profile_window.glade.h:13 -#: ../data/glade/vcard_information_window.glade.h:18 +#: ../data/glade/profile_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:19 msgid "Family:" msgstr "ФамилиÑ:" #. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) -#: ../data/glade/profile_window.glade.h:15 -#: ../data/glade/vcard_information_window.glade.h:20 +#: ../data/glade/profile_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:21 msgid "Format: YYYY-MM-DD" msgstr "Формат: YYYY-MM-DD" -#. Given Name #: ../data/glade/profile_window.glade.h:17 #: ../data/glade/vcard_information_window.glade.h:22 +msgid "Full Name" +msgstr "ИмÑ" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 msgid "Given:" msgstr "ИмÑ:" -#: ../data/glade/profile_window.glade.h:18 -#: ../data/glade/vcard_information_window.glade.h:23 +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 msgid "Homepage:" msgstr "Веб-Ñтраница:" #. Middle Name -#: ../data/glade/profile_window.glade.h:20 -#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 msgid "Middle:" msgstr "ОтчеÑтво:" -#: ../data/glade/profile_window.glade.h:21 -#: ../data/glade/vcard_information_window.glade.h:27 -msgid "More" -msgstr "Еще" - -#: ../data/glade/profile_window.glade.h:24 -#: ../data/glade/vcard_information_window.glade.h:31 +#: ../data/glade/profile_window.glade.h:25 +#: ../data/glade/vcard_information_window.glade.h:34 msgid "Personal Info" msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" -#: ../data/glade/profile_window.glade.h:26 -#: ../data/glade/vcard_information_window.glade.h:32 +#: ../data/glade/profile_window.glade.h:27 +#: ../data/glade/vcard_information_window.glade.h:35 msgid "Phone No.:" msgstr "Телефон:" -#: ../data/glade/profile_window.glade.h:27 -#: ../data/glade/vcard_information_window.glade.h:33 +#: ../data/glade/profile_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:36 msgid "Position:" msgstr "ДолжноÑÑ‚ÑŒ:" -#: ../data/glade/profile_window.glade.h:28 -#: ../data/glade/vcard_information_window.glade.h:34 +#: ../data/glade/profile_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:37 msgid "Postal Code:" msgstr "ИндекÑ:" #. Prefix in Name -#: ../data/glade/profile_window.glade.h:30 -#: ../data/glade/vcard_information_window.glade.h:36 +#: ../data/glade/profile_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:39 msgid "Prefix:" msgstr "ПрефикÑ:" -#: ../data/glade/profile_window.glade.h:31 -#: ../data/glade/vcard_information_window.glade.h:38 ../src/vcard.py:273 +#: ../data/glade/profile_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:307 msgid "Role:" msgstr "ОбÑзанноÑти:" -#: ../data/glade/profile_window.glade.h:32 -#: ../data/glade/vcard_information_window.glade.h:39 +#: ../data/glade/profile_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:42 msgid "State:" msgstr "Штат:" -#: ../data/glade/profile_window.glade.h:33 -#: ../data/glade/vcard_information_window.glade.h:41 +#: ../data/glade/profile_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:44 msgid "Street:" msgstr "Улица:" #. Suffix in Name -#: ../data/glade/profile_window.glade.h:35 -#: ../data/glade/vcard_information_window.glade.h:45 +#: ../data/glade/profile_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:48 msgid "Suffix:" msgstr "СуффикÑ:" -#: ../data/glade/profile_window.glade.h:36 -#: ../data/glade/vcard_information_window.glade.h:46 +#: ../data/glade/profile_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:50 msgid "Work" msgstr "Работа" -#: ../data/glade/profile_window.glade.h:37 -msgid "_Publish" -msgstr "_Опубликовать" - -#: ../data/glade/profile_window.glade.h:38 -msgid "_Retrieve" -msgstr "_Получить" - #: ../data/glade/remove_account_window.glade.h:1 msgid "<b>What do you want to do?</b>" msgstr "<b>Что вы хотите Ñделать?</b>" @@ -2037,136 +2195,179 @@ msgstr "Удалит учетную запиÑÑŒ _только из Gajim" msgid "Remove account from Gajim and from _server" msgstr "Удалить учетную запиÑÑŒ из Gajim и Ñ _Ñервера" +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2557 ../src/roster_window.py:2767 +#: ../src/roster_window.py:2903 +msgid "_Remove" +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 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 -msgid "Add Special _Notification" +msgid "Add Special _Notification..." msgstr "Добавить Ñпециальное _уведомление" #: ../data/glade/roster_contact_context_menu.glade.h:3 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 -msgid "Assign Open_PGP Key" +msgid "Assign Open_PGP Key..." msgstr "Ðазначить OpenPGP ключ" #: ../data/glade/roster_contact_context_menu.glade.h:4 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 -#: ../src/roster_window.py:1993 -msgid "Edit _Groups" +msgid "Edit _Groups..." msgstr "Редактировать группы" +#. Execute Command #: ../data/glade/roster_contact_context_menu.glade.h:5 -#: ../src/roster_window.py:2128 +#: ../src/roster_window.py:2860 msgid "Execute Command..." msgstr "Выполнить команду..." +#. Invite to Groupchat #: ../data/glade/roster_contact_context_menu.glade.h:6 -#: ../src/roster_window.py:1951 +#: ../src/roster_window.py:2473 msgid "In_vite to" msgstr "_ПриглаÑить в" +#. Send Custom Status #: ../data/glade/roster_contact_context_menu.glade.h:7 -#: ../data/glade/systray_context_menu.glade.h:2 -msgid "Send Single _Message" -msgstr "Отправить _Ñообщение" +#: ../src/roster_window.py:2697 ../src/roster_window.py:2831 +msgid "Send Cus_tom Status" +msgstr "УÑтановить ÑтатуÑ" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "Отправить одиночное _Ñообщение..." #: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "Send _File..." +msgstr "Отправить _файл..." + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "УÑтановить _аватар..." + +#: ../data/glade/roster_contact_context_menu.glade.h:11 #: ../data/glade/zeroconf_contact_context_menu.glade.h:5 msgid "Start _Chat" -msgstr "Ðачать _чат" +msgstr "Ðачать _беÑеду" -#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/roster_contact_context_menu.glade.h:13 msgid "_Allow him/her to see my status" msgstr "Позволить ему или ей видеть мой ÑтатуÑ" -#: ../data/glade/roster_contact_context_menu.glade.h:12 -msgid "_Forbid him/her to see my status" -msgstr "Запретить ему или ей видеть мой ÑтатуÑ" - -#. Remove group #: ../data/glade/roster_contact_context_menu.glade.h:14 -#: ../src/roster_window.py:1945 ../src/roster_window.py:2042 -#: ../src/roster_window.py:2149 -msgid "_Remove from Roster" -msgstr "_Удалить из роÑтера" +#: ../src/roster_window.py:2547 ../src/roster_window.py:2758 +msgid "_Block" +msgstr "_Блокировать" #: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Forbid him/her to see my status" +msgstr "Запретить ему или ей видеть мой ÑтатуÑ" + +#: ../data/glade/roster_contact_context_menu.glade.h:17 #: ../data/glade/zeroconf_contact_context_menu.glade.h:7 -#: ../src/roster_window.py:2137 -msgid "_Rename" +msgid "_Manage Contact" +msgstr "Управление контактом" + +#: ../data/glade/roster_contact_context_menu.glade.h:19 +msgid "_Rename..." msgstr "П_ереименовать" -#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/roster_contact_context_menu.glade.h:20 msgid "_Subscription" msgstr "_ПодпиÑка" +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2541 ../src/roster_window.py:2752 +msgid "_Unblock" +msgstr "_Разблокировать" + #: ../data/glade/roster_window.glade.h:1 msgid "A_ccounts" msgstr "Учётные запиÑи" #: ../data/glade/roster_window.glade.h:2 -msgid "Add _Contact" -msgstr "Добавить _контакт" +msgid "Add _Contact..." +msgstr "_Добавить контакт..." #: ../data/glade/roster_window.glade.h:3 +msgid "Fea_tures" +msgstr "ВозможноÑти" + +#: ../data/glade/roster_window.glade.h:4 msgid "File _Transfers" msgstr "_Передачи" -#: ../data/glade/roster_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:5 msgid "Frequently Asked Questions (online)" -msgstr "ЧаÑто задаваемые вопроÑÑ‹ (в Ñети)" +msgstr "ЧаÑто задаваемые вопроÑÑ‹ (онлайн)" -#: ../data/glade/roster_window.glade.h:6 +#: ../data/glade/roster_window.glade.h:7 msgid "Help online" msgstr "Помощь онлайн" -#: ../data/glade/roster_window.glade.h:7 +#: ../data/glade/roster_window.glade.h:9 msgid "Profile, A_vatar" -msgstr "Профиль и аватара" +msgstr "Профиль и аватар" -#: ../data/glade/roster_window.glade.h:8 +#: ../data/glade/roster_window.glade.h:10 msgid "Show Trans_ports" msgstr "Показать транÑпорты" -#: ../data/glade/roster_window.glade.h:9 +#: ../data/glade/roster_window.glade.h:11 msgid "Show _Offline Contacts" msgstr "Показать _отключенных" -#: ../data/glade/roster_window.glade.h:12 +#: ../data/glade/roster_window.glade.h:14 msgid "_Contents" msgstr "_Содержание" -#: ../data/glade/roster_window.glade.h:13 -msgid "_Discover Services" -msgstr "_ПроÑмотреть ÑервиÑÑ‹" - -#: ../data/glade/roster_window.glade.h:14 ../src/disco.py:1256 -#: ../src/roster_window.py:2120 +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1324 msgid "_Edit" msgstr "_Правка" -#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/roster_window.glade.h:17 msgid "_FAQ" msgstr "_ЧаВО" -#: ../data/glade/roster_window.glade.h:17 +#: ../data/glade/roster_window.glade.h:18 msgid "_Help" msgstr "_Помощь" -#: ../data/glade/roster_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:20 msgid "_Preferences" msgstr "_ÐаÑтройки" -#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:21 msgid "_Quit" msgstr "_Выйти" -#: ../data/glade/roster_window.glade.h:21 +#: ../data/glade/roster_window.glade.h:22 +msgid "_Send Single Message..." +msgstr "Отправить одиночное _Ñообщение..." + +#: ../data/glade/roster_window.glade.h:24 msgid "_View" msgstr "_Вид" +#: ../data/glade/search_window.glade.h:1 +msgid "Please wait while retrieving search form..." +msgstr "Получаю форму поиÑка. Подождите..." + +#: ../data/glade/search_window.glade.h:3 +msgid "_Add contact" +msgstr "Добавить _контакт" + +#. Information +#: ../data/glade/search_window.glade.h:4 ../src/roster_window.py:2915 +msgid "_Information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ контакте" + #: ../data/glade/service_discovery_window.glade.h:1 msgid "G_o" msgstr "_Вперед" @@ -2175,10 +2376,6 @@ msgstr "_Вперед" 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 "ЗарегиÑтрировать в" @@ -2236,11 +2433,13 @@ msgid "Au_thorize" msgstr "Ð_вторизовать" #: ../data/glade/subscription_request_window.glade.h:2 -msgid "Authorize contact so he can know when you're connected" +msgid "Authorize contact so he or she can know when you're connected" msgstr "Ðвторизовать контакт (он будет видеть ваш ÑтатуÑ)" #: ../data/glade/subscription_request_window.glade.h:3 -msgid "Deny authorization from contact so he cannot know when you're connected" +msgid "" +"Deny authorization from contact so he or she cannot know when you're " +"connected" msgstr "Отклонить авторизацию от контакта (Он не Ñможет видеть ваш ÑтатуÑ)" #: ../data/glade/subscription_request_window.glade.h:4 @@ -2251,10 +2450,32 @@ msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки" msgid "_Deny" msgstr "_Отклонить" +#: ../data/glade/synchronise_contacts_dialog.glade.h:1 +#, fuzzy +msgid "Select the account with which to synchronise" +msgstr "Выберите аккаунт Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ" + +#: ../data/glade/synchronise_select_account_dialog.glade.h:1 +msgid "Select the account with which you want to synchronise" +msgstr "Выберите аккаунт Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:1 +#, fuzzy +msgid "Select the contacts you want to synchronise" +msgstr "JID контакта, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ вы хотели бы побеÑедовать" + +#: ../data/glade/synchronise_select_contacts_dialog.glade.h:2 +msgid "Synchronise : select contacts" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ : выберите контакт" + #: ../data/glade/systray_context_menu.glade.h:1 msgid "Mute Sounds" msgstr "Выключить звук" +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "Отправить _Ñообщение" + #: ../data/glade/systray_context_menu.glade.h:3 msgid "Show All Pending _Events" msgstr "Показать непроÑмотренные _ÑобытиÑ" @@ -2267,6 +2488,10 @@ msgstr "Показать _роÑтер" msgid "Sta_tus" msgstr "Ста_туÑ" +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "_Комната" + #. Given Name #: ../data/glade/vcard_information_window.glade.h:5 msgid "Ask:" @@ -2281,43 +2506,44 @@ msgid "Comments" msgstr "Комментарии" #: ../data/glade/vcard_information_window.glade.h:11 +msgid "Configured avatar:" +msgstr "ÐаÑтроить _аватар:" + +#: ../data/glade/vcard_information_window.glade.h:12 #: ../data/glade/zeroconf_information_window.glade.h:1 msgid "Contact" msgstr "Контакт" -#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:13 msgid "Contact Information" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ контакте" -#: ../data/glade/vcard_information_window.glade.h:24 -#: ../data/glade/zeroconf_information_window.glade.h:4 -#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:416 -msgid "Jabber ID:" -msgstr "Jabber ID:" +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "Еще" -#: ../data/glade/vcard_information_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:33 msgid "OS:" msgstr "ОС:" -#: ../data/glade/vcard_information_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:40 #: ../data/glade/zeroconf_information_window.glade.h:8 msgid "Resource:" msgstr "РеÑурÑ:" -#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/vcard_information_window.glade.h:43 #: ../data/glade/zeroconf_information_window.glade.h:9 msgid "Status:" msgstr "СтатуÑ:" #. Family Name -#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/vcard_information_window.glade.h:46 msgid "Subscription:" msgstr "ПодпиÑка:" -#: ../data/glade/vcard_information_window.glade.h:47 -#: ../data/glade/zeroconf_information_window.glade.h:10 -msgid "_Log conversation history" -msgstr "_ИÑÑ‚Ð¾Ñ€Ð¸Ñ ÑообщениÑ" +#: ../data/glade/vcard_information_window.glade.h:49 +msgid "User avatar:" +msgstr "Ðватар:" #: ../data/glade/xml_console_window.glade.h:1 msgid "<b>Jabber Traffic</b>" @@ -2327,11 +2553,6 @@ msgstr "<b>Jabber Траффик</b>" msgid "<b>XML Input</b>" msgstr "<b>XML Ввод</b>" -#. 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" @@ -2350,15 +2571,29 @@ msgstr "_Сообщение" msgid "_Presence" msgstr "_ПриÑутÑтвие" -#: ../data/glade/zeroconf_information_window.glade.h:3 -#: ../data/glade/zeroconf_properties_window.glade.h:6 -msgid "First Name:" -msgstr "ИмÑ:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Добавить Ñпециальное _уведомление" -#: ../data/glade/zeroconf_information_window.glade.h:5 -#: ../data/glade/zeroconf_properties_window.glade.h:14 -msgid "Last Name:" -msgstr "ФамилиÑ:" +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Ðазначить OpenPGP ключ" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2530 +msgid "Edit _Groups" +msgstr "Редактировать группы" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2887 +msgid "_Rename" +msgstr "П_ереименовать" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Изменить учетную запиÑÑŒ..." #: ../data/glade/zeroconf_information_window.glade.h:6 msgid "Local jid:" @@ -2368,211 +2603,288 @@ msgstr "Локальный JID:" msgid "Personal" msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" -#: ../data/glade/zeroconf_properties_window.glade.h:11 -msgid "" -"If the default port that is used for incoming messages is unfitting for your " -"setup you can select another one here.\n" -"You might consider to change possible firewall settings." -msgstr "" -"ЕÑли порт по умолчанию, который иÑпользуетÑÑ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñщих ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð²Ð°Ñ Ð½Ðµ уÑтраивает, вы можете выбрать другой.\n" -"Так же возможно придетÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ некоторые наÑтройки брандмауÑра." - #: ../data/glade/zeroconf_properties_window.glade.h:15 msgid "Modify Account" msgstr "Редактировать учетную запиÑÑŒ" -#: ../data/glade/zeroconf_properties_window.glade.h:21 -msgid "Use custom port:" -msgstr "Другой порт" +#. For i18n +#: ../src/advanced.py:56 +#, fuzzy +msgid "Activated" +msgstr "Ðктивен" + +#: ../src/advanced.py:56 +#, fuzzy +msgid "Deactivated" +msgstr "Ðеактивен" + +#: ../src/advanced.py:58 +msgid "Boolean" +msgstr "" + +#: ../src/advanced.py:59 +msgid "Integer" +msgstr "" -#: ../src/advanced.py:57 +#: ../src/advanced.py:60 +msgid "Text" +msgstr "" + +#: ../src/advanced.py:61 +msgid "Color" +msgstr "" + +#: ../src/advanced.py:70 msgid "Preference Name" msgstr "Ðазвание опции" -#: ../src/advanced.py:63 +#: ../src/advanced.py:76 msgid "Value" msgstr "Значение" -#: ../src/advanced.py:72 +#: ../src/advanced.py:84 msgid "Type" msgstr "Тип" #. we talk about option description in advanced configuration editor -#: ../src/advanced.py:128 +#: ../src/advanced.py:140 msgid "(None)" msgstr "(Ðет)" #. we talk about password -#: ../src/advanced.py:227 +#: ../src/advanced.py:243 msgid "Hidden" msgstr "Скрытый" #. 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) +#. LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done) #. echo "{_('en'):'en'",$LANG"}" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "English" msgstr "ÐнглийÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 +msgid "Belarusian" +msgstr "БеларуÑÑкий" + +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Bulgarian" msgstr "БолгарÑкий" -#: ../src/chat_control.py:52 -msgid "Briton" +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 +#, fuzzy +msgid "Breton" msgstr "БриттÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Czech" msgstr "ЧешÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "German" msgstr "Ðемецкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Greek" msgstr "ГречеÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 +msgid "British" +msgstr "БританÑкий" + +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Esperanto" msgstr "ÐÑперанто" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Spanish" msgstr "ИÑпанÑкий" -#: ../src/chat_control.py:52 -msgid "Basc" +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 +#, fuzzy +msgid "Basque" msgstr "БаÑкÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "French" msgstr "ФранцузÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Croatian" msgstr "ХорватÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Italian" msgstr "ИтальÑнÑкий" -#: ../src/chat_control.py:52 -msgid "Norvegian b" +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 +msgid "Norwegian (b)" msgstr "ÐорвежÑкий b" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Dutch" msgstr "ГолландÑкий" -#: ../src/chat_control.py:52 -msgid "Norvegian" +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 +msgid "Norwegian" msgstr "ÐорвежÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Polish" msgstr "ПольÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Portuguese" msgstr "ПортугальÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Brazilian Portuguese" msgstr "ПортугальÑкий (БразилиÑ)" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Russian" msgstr "РуÑÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 +msgid "Serbian" +msgstr "СербÑкий" + +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Slovak" msgstr "Словацкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Swedish" msgstr "ШведÑкий" -#: ../src/chat_control.py:52 +#: ../src/chat_control2.py:60 ../src/chat_control.py:60 msgid "Chinese (Ch)" msgstr "КитайÑкий" -#: ../src/chat_control.py:201 ../src/dialogs.py:1497 -msgid "" -"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" -"\n" -"Highlighting misspelled words feature will not be used" -msgstr "" -"ЕÑли Ñтот Ñзык не ÑвлÑетÑÑ Ñ‚ÐµÐ¼ Ñзыком, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ вы хотели бы видеть " -"проверку орфографии, то уÑтановите нужное значение в переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ " -"$LANG. Ðапример, Ð´Ð»Ñ Ñ€ÑƒÑÑкого: export LANG=ru_RU или export LANG=ru_RU.UTF-8 " -"в ~/.bash_profile, либо же, еÑли вы хотите Ñделать Ñту уÑтановку ÑиÑтемной, " -"то добавьте то же Ñамое в /etc/profile \n" -"\n" -"Выделение Ñлов Ñ Ð¾Ð¿ÐµÑ‡Ð°Ñ‚ÐºÐ°Ð¼Ð¸ выключено" - -#: ../src/chat_control.py:239 +#: ../src/chat_control2.py:310 ../src/chat_control.py:313 msgid "Spelling language" msgstr "Язык проверки орфографии" #. we are not connected -#: ../src/chat_control.py:262 ../src/chat_control.py:468 +#: ../src/chat_control2.py:333 ../src/chat_control2.py:549 +#: ../src/chat_control.py:336 ../src/chat_control.py:559 msgid "A connection is not available" msgstr "Подключение недоÑтупно" -#: ../src/chat_control.py:263 ../src/chat_control.py:469 +#: ../src/chat_control2.py:334 ../src/chat_control2.py:550 +#: ../src/chat_control.py:337 ../src/chat_control.py:560 msgid "Your message can not be sent until you are connected." msgstr "Ваше Ñообщение не может быть отправлено, пока вы не подключитеÑÑŒ." -#: ../src/chat_control.py:844 -msgid "Chats" -msgstr "Чаты" - -#: ../src/chat_control.py:1030 +#: ../src/chat_control2.py:1176 ../src/chat_control.py:1186 #, python-format msgid "%(nickname)s from group chat %(room_name)s" msgstr "%(nickname)s из комнаты %(room_name)s" #. we talk about a contact here -#: ../src/chat_control.py:1118 +#: ../src/chat_control2.py:1271 ../src/chat_control.py:1285 #, python-format msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" msgstr "%s не выдал OpenPGP ключ или вы не приÑвоили ему такового" -#: ../src/chat_control.py:1254 +#: ../src/chat_control2.py:1314 ../src/chat_control.py:1328 +#: ../src/groupchat_control.py:1437 +#, python-format +msgid "No such command: /%s (if you want to send this, prefix it with /say)" +msgstr "" +"Ðет такой команды: /%s (еÑли вы хотите её проÑто передать, то добавьте к ней " +"Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ /say)" + +#: ../src/chat_control2.py:1321 ../src/chat_control.py:1335 +#: ../src/groupchat_control.py:1460 +#, python-format +msgid "Commands: %s" +msgstr "Команды: %s" + +#: ../src/chat_control2.py:1324 ../src/chat_control.py:1338 +#: ../src/groupchat_control.py:1474 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "ИÑпользование: /%s, очищает текÑтовое окно." + +#: ../src/chat_control2.py:1327 ../src/chat_control.py:1341 +#: ../src/groupchat_control.py:1479 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "ИÑпользование: /%s, Ñкрывает кнопки беÑеды." + +#: ../src/chat_control2.py:1330 ../src/chat_control.py:1344 +#: ../src/groupchat_control.py:1495 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"ИÑпользование: /%s <дейÑтвие>, Ñовершает дейÑтвие в текущей комнате. " +"ИÑпользуйте третье лицо (например, «/%s взрываетÑÑ».)" + +#: ../src/chat_control2.py:1334 ../src/chat_control.py:1348 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "ИÑпользование: /%s, поÑылает пинг контакту" + +#: ../src/chat_control2.py:1337 ../src/chat_control.py:1351 +#, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "ИÑпользование: /%s, поÑылает Ñообщение контакту" + +#: ../src/chat_control2.py:1340 ../src/chat_control.py:1354 +#: ../src/groupchat_control.py:1518 +#, python-format +msgid "No help info for /%s" +msgstr "Ðет подÑказки Ð´Ð»Ñ /%s" + +#: ../src/chat_control2.py:1478 ../src/chat_control2.py:1504 +#: ../src/chat_control.py:1492 ../src/chat_control.py:1518 msgid "Encryption enabled" msgstr "Шифрование включено" -#: ../src/chat_control.py:1259 +#: ../src/chat_control2.py:1483 ../src/chat_control.py:1497 +msgid "Session WILL be logged" +msgstr "СеÑÑÐ¸Ñ Ð‘Ð£Ð”Ð•Ð¢ Ñохранена в иÑтории" + +#: ../src/chat_control2.py:1485 ../src/chat_control.py:1499 +msgid "Session WILL NOT be logged" +msgstr "СеÑÑÐ¸Ñ ÐЕ БУДЕТ Ñохранена в иÑтории" + +#: ../src/chat_control2.py:1492 ../src/chat_control.py:1506 +msgid "The following message was NOT encrypted" +msgstr "ПоÑледующее Ñообщение ÐЕБЫЛО зашифровано" + +#: ../src/chat_control2.py:1496 ../src/chat_control2.py:1509 +#: ../src/chat_control2.py:2155 ../src/chat_control.py:1510 +#: ../src/chat_control.py:1523 ../src/chat_control.py:2169 msgid "Encryption disabled" msgstr "Шифрование отключено" #. add_to_roster_menuitem -#: ../src/chat_control.py:1401 ../src/conversation_textview.py:495 -#: ../src/dialogs.py:629 ../src/gajim.py:781 ../src/gajim.py:782 -#: ../src/gajim.py:1121 ../src/roster_window.py:328 -#: ../src/roster_window.py:404 ../src/roster_window.py:1638 -#: ../src/roster_window.py:1819 ../src/roster_window.py:2392 -#: ../src/roster_window.py:2596 ../src/roster_window.py:2607 -#: ../src/roster_window.py:3832 ../src/roster_window.py:3834 -#: ../src/common/contacts.py:73 ../src/common/helpers.py:42 -#: ../src/common/helpers.py:246 +#: ../src/chat_control2.py:1672 ../src/chat_control.py:1686 +#: ../src/conversation_textview.py:705 ../src/dialogs.py:732 +#: ../src/gajim.py:911 ../src/gajim.py:912 ../src/gajim.py:1440 +#: ../src/gajim.py:1691 ../src/roster_window.py:358 +#: ../src/roster_window.py:442 ../src/roster_window.py:1822 +#: ../src/roster_window.py:1832 ../src/roster_window.py:2072 +#: ../src/roster_window.py:2308 ../src/roster_window.py:3158 +#: ../src/roster_window.py:3397 ../src/roster_window.py:4759 +#: ../src/roster_window.py:4761 ../src/common/contacts.py:89 +#: ../src/common/helpers.py:53 ../src/common/helpers.py:267 msgid "Not in Roster" msgstr "Ðе в роÑтере" #. %s is being replaced in the code with JID -#: ../src/chat_control.py:1545 +#: ../src/chat_control2.py:1825 ../src/chat_control.py:1839 #, python-format msgid "You just received a new message from \"%s\"" msgstr "Ð’Ñ‹ получили новое Ñообщение от \"%s\"" -#: ../src/chat_control.py:1546 +#: ../src/chat_control2.py:1826 ../src/chat_control.py:1840 msgid "" "If you close this tab and you have history disabled, this message will be " "lost." @@ -2580,29 +2892,33 @@ msgstr "" "ЕÑли вы закроете Ñту вкладку и у Ð²Ð°Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ñтории " "Ñообщений, то Ñто Ñообщение будет утерÑно." -#: ../src/config.py:135 ../src/config.py:594 +#: ../src/config.py:127 ../src/config.py:565 msgid "Disabled" msgstr "Отключены" -#: ../src/config.py:221 -#, python-format -msgid "Every %s _minutes" -msgstr "Каждые %s _минут" - -#: ../src/config.py:363 +#: ../src/config.py:293 msgid "Active" msgstr "Ðктивен" -#: ../src/config.py:371 +#: ../src/config.py:301 msgid "Event" msgstr "Событие" -#: ../src/config.py:685 ../src/gajim.py:2142 +#: ../src/config.py:407 +msgid "Always use OS/X default applications" +msgstr "Ð’Ñегда иÑпользовать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ OS/X по умолчанию" + +#: ../src/config.py:408 +#, fuzzy +msgid "Custom" +msgstr "<b>ПользовательÑкие наÑтройки</b>" + +#: ../src/config.py:638 ../src/dialogs.py:1018 #, python-format msgid "Dictionary for lang %s not available" msgstr "Ðет ÑÐ»Ð¾Ð²Ð°Ñ€Ñ Ð´Ð»Ñ Ñзыка %s" -#: ../src/config.py:686 ../src/gajim.py:2143 +#: ../src/config.py:639 #, python-format msgid "" "You have to install %s dictionary to use spellchecking, or choose another " @@ -2611,71 +2927,106 @@ msgstr "" "Чтобы воÑпользоватьÑÑ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¾Ð¹ правопиÑаниÑ, уÑтановите Ñловарь Ð´Ð»Ñ Ñзыка %" "s или выберите другой Ñзык, иÑправив наÑтройку speller_language." -#: ../src/config.py:1038 +#: ../src/config.py:1001 msgid "status message title" msgstr "заголовок ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñервера" -#: ../src/config.py:1038 +#: ../src/config.py:1001 msgid "status message text" msgstr "текÑÑ‚ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñервера" -#: ../src/config.py:1073 +#: ../src/config.py:1037 msgid "First Message Received" msgstr "Получено первое Ñообщение" -#: ../src/config.py:1074 +#: ../src/config.py:1038 msgid "Next Message Received" msgstr "Получено Ñледующее Ñообщение" -#: ../src/config.py:1075 +#: ../src/config.py:1039 msgid "Contact Connected" msgstr "Контакт подключилÑÑ" -#: ../src/config.py:1076 +#: ../src/config.py:1040 msgid "Contact Disconnected" msgstr "Контакт отключилÑÑ" -#: ../src/config.py:1077 +#: ../src/config.py:1041 msgid "Message Sent" msgstr "Сообщение отправлено" -#: ../src/config.py:1078 +#: ../src/config.py:1042 msgid "Group Chat Message Highlight" msgstr "Ð’Ð°Ñ ÑƒÐ¿Ð¾Ð¼Ñнули в комнате" -#: ../src/config.py:1079 +#: ../src/config.py:1043 msgid "Group Chat Message Received" msgstr "Получено Ñообщение в комнате" -#: ../src/config.py:1086 +#: ../src/config.py:1050 msgid "GMail Email Received" msgstr "Получено пиÑьмо на Gmail" -#: ../src/config.py:1289 +#. Name column +#: ../src/config.py:1315 ../src/dialogs.py:1517 ../src/dialogs.py:1581 +#: ../src/disco.py:743 ../src/disco.py:1535 ../src/disco.py:1781 +#: ../src/history_window.py:113 +msgid "Name" +msgstr "ИмÑ" + +#: ../src/config.py:1421 ../src/common/config.py:394 +msgid "Be right back." +msgstr "Скоро буду." + +#: ../src/config.py:1425 +msgid "Relogin now?" +msgstr "ПереподключитьÑÑ ÑейчаÑ?" + +#: ../src/config.py:1426 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "" +"ЕÑли вы хотите чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ применены немедленно, вы должны " +"переподключитьÑÑ." + +#: ../src/config.py:1522 ../src/config.py:1613 msgid "OpenPGP is not usable in this computer" msgstr "Ðевозможно иÑпользовать OpenPGP" -#: ../src/config.py:1335 +#: ../src/config.py:1649 ../src/config.py:1690 +msgid "Unread events" +msgstr "ÐепроÑмотренные ÑобытиÑ" + +#: ../src/config.py:1650 +msgid "Read all pending events before removing this account." +msgstr "ПроÑмотрите вÑе ожидающие ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ удалением учетной запиÑи." + +#: ../src/config.py:1676 +#, python-format +msgid "You have opened chat in account %s" +msgstr "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ окна чата под учётной запиÑью %s" + +#: ../src/config.py:1677 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "Ð’Ñе окна чатов и комнат будут закрыты. Продолжить?" + +#: ../src/config.py:1686 msgid "You are currently connected to the server" msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ð´Ñоединены к Ñерверу" -#: ../src/config.py:1336 +#: ../src/config.py:1687 msgid "To change the account name, you must be disconnected." msgstr "Ð”Ð»Ñ Ñмены имени учетной запиÑи необходимо отключитьÑÑ." -#: ../src/config.py:1339 ../src/config.py:1931 -msgid "Unread events" -msgstr "ÐепроÑмотренные ÑобытиÑ" - -#: ../src/config.py:1340 +#: ../src/config.py:1691 msgid "To change the account name, you must read all pending events." -msgstr "Ð”Ð»Ñ Ñмены имени учетной запиÑи необходимо проÑмотреть ожидающие ÑобытиÑ." +msgstr "" +"Ð”Ð»Ñ Ñмены имени учетной запиÑи необходимо проÑмотреть ожидающие ÑобытиÑ." -#: ../src/config.py:1344 +#: ../src/config.py:1697 msgid "Account Name Already Used" msgstr "Такое Ð¸Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи уже иÑпользуетÑÑ" -#: ../src/config.py:1345 +#: ../src/config.py:1698 msgid "" "This name is already used by another of your accounts. Please choose another " "name." @@ -2683,175 +3034,147 @@ msgstr "" "Ðто Ð¸Ð¼Ñ ÑƒÐ¶Ðµ иÑпользуетÑÑ Ð² другой вашей учетной запиÑи. ПожалуйÑта, выберите " "другое." -#: ../src/config.py:1349 ../src/config.py:1353 +#: ../src/config.py:1702 ../src/config.py:1706 msgid "Invalid account name" msgstr "Ðеверное Ð¸Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи" -#: ../src/config.py:1350 +#: ../src/config.py:1703 msgid "Account name cannot be empty." msgstr "Ð˜Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи не может быть пуÑтым." -#: ../src/config.py:1354 +#: ../src/config.py:1707 msgid "Account name cannot contain spaces." msgstr "Ð˜Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи не может Ñодержать пробелы." -#: ../src/config.py:1362 ../src/config.py:1368 ../src/config.py:1378 -#: ../src/config.py:3036 +#: ../src/config.py:1771 +msgid "Rename Account" +msgstr "Переименовать учетную запиÑÑŒ" + +#: ../src/config.py:1772 +#, python-format +msgid "Enter a new name for account %s" +msgstr "Введите новое название Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" + +#: ../src/config.py:1790 ../src/config.py:1798 ../src/config.py:1838 +#: ../src/config.py:3052 ../src/dataforms_widget.py:533 msgid "Invalid Jabber ID" msgstr "Ðеверный Jabber ID" -#: ../src/config.py:1369 +#: ../src/config.py:1799 msgid "A Jabber ID must be in the form \"user@servername\"." msgstr "Jabber ID должен иметь формат \"имÑ_пользователÑ@Ñервер\"." -#: ../src/config.py:1428 +#: ../src/config.py:1985 ../src/config.py:3124 msgid "Invalid entry" msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" -#: ../src/config.py:1429 +#: ../src/config.py:1986 ../src/config.py:3125 msgid "Custom port must be a port number." msgstr "Ð’ качеÑтве номера порта должно выÑтупать чиÑло" -#: ../src/config.py:1555 ../src/common/config.py:363 -msgid "Be right back." -msgstr "Скоро буду." +#: ../src/config.py:2007 +msgid "Failed to get secret keys" +msgstr "Ðе удалоÑÑŒ получить Ñекретный ключ" -#: ../src/config.py:1565 -msgid "Relogin now?" -msgstr "ПереподключитьÑÑ ÑейчаÑ?" +#: ../src/config.py:2008 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "Возникла проблема Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ вашего Ñекретного ключа OpenPGP." -#: ../src/config.py:1566 -msgid "If you want all the changes to apply instantly, you must relogin." -msgstr "" -"ЕÑли вы хотите чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ применены немедленно, вы должны " -"переподключитьÑÑ." +#: ../src/config.py:2011 +msgid "OpenPGP Key Selection" +msgstr "Выбор ключа OpenPGP" + +#: ../src/config.py:2012 +msgid "Choose your OpenPGP key" +msgstr "Выберите Ñвой ключ OpenPGP" -#: ../src/config.py:1592 +#: ../src/config.py:2052 msgid "No such account available" msgstr "Ð¢Ð°ÐºÐ°Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ недоÑтупна" -#: ../src/config.py:1593 +#: ../src/config.py:2053 msgid "You must create your account before editing your personal information." msgstr "" "Перед редактированием личных данных необходимо Ñначала Ñоздать учетную " "запиÑÑŒ." -#: ../src/config.py:1600 ../src/dialogs.py:1128 ../src/dialogs.py:1297 -#: ../src/disco.py:417 ../src/profile_window.py:307 -#: ../src/profile_window.py:373 +#: ../src/config.py:2060 ../src/dialogs.py:1364 ../src/dialogs.py:1505 +#: ../src/dialogs.py:1685 ../src/disco.py:427 ../src/profile_window.py:318 msgid "You are not connected to the server" msgstr "Ð’Ñ‹ не подключены к Ñерверу" -#: ../src/config.py:1601 +#: ../src/config.py:2061 msgid "Without a connection, you can not edit your personal information." -msgstr "Чтобы отредактировать личную информацию, нужно подÑоединитьÑÑ Ðº Ñерверу." +msgstr "" +"Чтобы отредактировать личную информацию, нужно подÑоединитьÑÑ Ðº Ñерверу." -#: ../src/config.py:1605 +#: ../src/config.py:2065 msgid "Your server doesn't support Vcard" msgstr "Сервер не поддерживает Vcard" -#: ../src/config.py:1606 +#: ../src/config.py:2066 msgid "Your server can't save your personal information." msgstr "Ваш Ñервер не может хранить личную информацию." -#: ../src/config.py:1630 ../src/config.py:3423 -msgid "Failed to get secret keys" -msgstr "Ðе удалоÑÑŒ получить Ñекретный ключ" - -#: ../src/config.py:1631 ../src/config.py:3424 -msgid "There was a problem retrieving your OpenPGP secret keys." -msgstr "Возникла проблема Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ вашего Ñекретного ключа OpenPGP." - -#: ../src/config.py:1634 ../src/config.py:3427 -msgid "OpenPGP Key Selection" -msgstr "Выбор ключа OpenPGP" - -#: ../src/config.py:1635 ../src/config.py:3428 -msgid "Choose your OpenPGP key" -msgstr "Выберите Ñвой ключ OpenPGP" - -#. Name column -#: ../src/config.py:1865 ../src/disco.py:741 ../src/disco.py:1467 -#: ../src/disco.py:1705 ../src/history_window.py:78 -msgid "Name" -msgstr "ИмÑ" - -#: ../src/config.py:1868 -msgid "Server" -msgstr "Сервер" - -#: ../src/config.py:1932 -msgid "Read all pending events before removing this account." -msgstr "ПроÑмотрите вÑе ожидающие ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ удалением учетной запиÑи." - -#: ../src/config.py:1969 -#, python-format -msgid "You have opened chat in account %s" -msgstr "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ окна чата под учётной запиÑью %s" - -#: ../src/config.py:1970 -msgid "All chat and groupchat windows will be closed. Do you want to continue?" -msgstr "Ð’Ñе окна чатов и комнат будут закрыты. Продолжить?" - -#: ../src/config.py:2029 +#: ../src/config.py:2097 msgid "Account Local already exists." msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Local уже ÑущеÑтвует." -#: ../src/config.py:2030 +#: ../src/config.py:2098 msgid "Please rename or remove it before enabling link-local messaging." msgstr "Переименуйте или удалите её, прежде чем включать локальные ÑообщениÑ." -#: ../src/config.py:2262 +#: ../src/config.py:2277 #, python-format msgid "Edit %s" msgstr "Править %s" -#: ../src/config.py:2264 +#: ../src/config.py:2279 #, python-format msgid "Register to %s" msgstr "ЗарегиÑтрировать %s" -#. list at the begining -#: ../src/config.py:2336 +#. list at the beginning +#: ../src/config.py:2315 msgid "Ban List" msgstr "Черный ÑпиÑок" -#: ../src/config.py:2337 +#: ../src/config.py:2316 msgid "Member List" msgstr "СпиÑок учаÑтников" -#: ../src/config.py:2338 +#: ../src/config.py:2317 msgid "Owner List" msgstr "СпиÑок владельцев" -#: ../src/config.py:2339 +#: ../src/config.py:2318 msgid "Administrator List" msgstr "СпиÑок админиÑтрираторов" #. Address column #. holds JID (who said this) -#: ../src/config.py:2372 ../src/disco.py:748 ../src/history_manager.py:154 +#: ../src/config.py:2367 ../src/disco.py:750 ../src/history_manager.py:160 msgid "JID" msgstr "JID" -#: ../src/config.py:2380 +#: ../src/config.py:2375 msgid "Reason" msgstr "Причина" -#: ../src/config.py:2385 +#: ../src/config.py:2380 msgid "Nick" msgstr "Ðик" -#: ../src/config.py:2389 +#: ../src/config.py:2384 msgid "Role" msgstr "ОбÑзанноÑÑ‚ÑŒ" -#: ../src/config.py:2410 +#: ../src/config.py:2409 msgid "Banning..." msgstr "Баню..." #. You can move '\n' before user@domain if that line is TOO BIG -#: ../src/config.py:2412 +#: ../src/config.py:2411 msgid "" "<b>Whom do you want to ban?</b>\n" "\n" @@ -2859,11 +3182,11 @@ msgstr "" "<b>Кого вы хотите забанить?</b>\n" "\n" -#: ../src/config.py:2414 +#: ../src/config.py:2413 msgid "Adding Member..." msgstr "ДобавлÑÑŽ учаÑтника..." -#: ../src/config.py:2415 +#: ../src/config.py:2414 msgid "" "<b>Whom do you want to make a member?</b>\n" "\n" @@ -2871,23 +3194,23 @@ msgstr "" "<b>Кого вы хотите Ñделать учаÑтником?</b>\n" "\n" -#: ../src/config.py:2417 +#: ../src/config.py:2416 msgid "Adding Owner..." msgstr "ДобавлÑÑŽ владельца..." -#: ../src/config.py:2418 +#: ../src/config.py:2417 msgid "" -"<b>Whom do you want to make a owner?</b>\n" +"<b>Whom do you want to make an owner?</b>\n" "\n" msgstr "" "<b>Кого вы хотите Ñделать владельцем?</b>\n" "\n" -#: ../src/config.py:2420 +#: ../src/config.py:2419 msgid "Adding Administrator..." msgstr "ДобавлÑÑŽ админиÑтратора..." -#: ../src/config.py:2421 +#: ../src/config.py:2420 msgid "" "<b>Whom do you want to make an administrator?</b>\n" "\n" @@ -2895,7 +3218,7 @@ msgstr "" "<b>Кого вы хотите Ñделать админиÑтратором?</b>\n" "\n" -#: ../src/config.py:2422 +#: ../src/config.py:2421 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -2911,121 +3234,137 @@ msgstr "" "4. domain (Ñам домен, Ñ‚.е. как любое Ñочетание user@domain,\n" "domain/resource, так и адреÑ, Ñодержащий Ñтот поддомен)" -#: ../src/config.py:2527 +#: ../src/config.py:2525 #, python-format msgid "Removing %s account" msgstr "Удаление учетной запиÑи %s" -#: ../src/config.py:2544 ../src/roster_window.py:2665 +#: ../src/config.py:2540 ../src/gajim.py:1344 ../src/roster_window.py:3455 msgid "Password Required" msgstr "ТребуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ" -#: ../src/config.py:2545 ../src/roster_window.py:2666 +#: ../src/config.py:2541 ../src/roster_window.py:3451 #, python-format msgid "Enter your password for account %s" msgstr "Введите пароль Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/config.py:2546 ../src/roster_window.py:2667 +#: ../src/config.py:2542 ../src/roster_window.py:3456 msgid "Save password" msgstr "Сохранить пароль" -#: ../src/config.py:2560 +#: ../src/config.py:2555 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ \"%s\" подключена к Ñерверу" -#: ../src/config.py:2561 +#: ../src/config.py:2556 msgid "If you remove it, the connection will be lost." msgstr "ЕÑли вы удалите его, произойдет отключение." -#: ../src/config.py:2645 +#: ../src/config.py:2649 msgid "Default" msgstr "По умолчанию" -#: ../src/config.py:2645 +#: ../src/config.py:2649 msgid "?print_status:All" msgstr "Ð’Ñе" -#: ../src/config.py:2646 +#: ../src/config.py:2650 msgid "Enter and leave only" msgstr "Только приход и уход" -#: ../src/config.py:2716 +#: ../src/config.py:2651 +msgid "?print_status:None" +msgstr "" + +#: ../src/config.py:2720 msgid "New Group Chat" msgstr "ÐÐ¾Ð²Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð°" -#: ../src/config.py:2748 +#: ../src/config.py:2753 msgid "This bookmark has invalid data" msgstr "Ðта закладка Ñодержит неверные данные" -#: ../src/config.py:2749 -msgid "Please be sure to fill out server and room fields or remove this bookmark." +#: ../src/config.py:2754 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." msgstr "" "ПожалуйÑта, удоÑтоверьтеÑÑŒ, что заполнены Ð¿Ð¾Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñервера и комнаты, " "либо удалите Ñту закладку." -#: ../src/config.py:3011 +#: ../src/config.py:3035 msgid "Invalid username" msgstr "Ðеверное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" -#: ../src/config.py:3012 +#: ../src/config.py:3037 msgid "You must provide a username to configure this account." msgstr "Ð”Ð»Ñ Ð½Ð°Ñтройки учетной запиÑи необходимо ввеÑти Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." -#: ../src/config.py:3022 ../src/dialogs.py:1316 -msgid "Invalid password" -msgstr "Ðеверный пароль" - -#: ../src/config.py:3023 -msgid "You must enter a password for the new account." -msgstr "Ðеобходимо ввеÑти пароль Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ учетной запиÑи." - -#: ../src/config.py:3027 ../src/dialogs.py:1321 -msgid "Passwords do not match" -msgstr "Пароли не Ñовпадают" - -#: ../src/config.py:3028 ../src/dialogs.py:1322 -msgid "The passwords typed in both fields must be identical." -msgstr "Пароли, введенные в оба полÑ, должны быть одинаковы." - -#: ../src/config.py:3047 +#: ../src/config.py:3063 msgid "Duplicate Jabber ID" msgstr "ДублирующийÑÑ Jabber ID" -#: ../src/config.py:3048 +#: ../src/config.py:3064 msgid "This account is already configured in Gajim." msgstr "Ðтот контакт уже наÑтроен в Gajim." -#: ../src/config.py:3065 +#: ../src/config.py:3081 msgid "Account has been added successfully" msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уÑпешно добавлена" -#: ../src/config.py:3066 ../src/config.py:3101 +#: ../src/config.py:3082 ../src/config.py:3255 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." +"You can set advanced account options by pressing the Advanced button, or " +"later by choosing the Accounts menuitem under the Edit menu from the main " +"window." msgstr "" "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была уÑпешно добавлена. \n" -"Ð’Ñ‹ можете наÑтроить ее иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ \n" -"\"ÐаÑтройка->Учетные запиÑи\" из главного окна." +" Ð’Ñ‹ можете дополнительно ее наÑтроить иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ \n" +"\"ÐаÑтройка - >Учетные запиÑи\" из главного окна." #: ../src/config.py:3100 -msgid "Your new account has been created successfully" -msgstr "Ваша Ð½Ð¾Ð²Ð°Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уÑпешно Ñоздана" +msgid "Invalid server" +msgstr "Ðеверный Ñервер" + +#: ../src/config.py:3101 +msgid "Please provide a server on which you want to register." +msgstr "ПожалуйÑта, укажите Ñервер на котором Ð’Ñ‹ хотите зарегиÑтрироватьÑÑ." + +#: ../src/config.py:3211 +#, python-format +msgid "" +"<b>Security Warning</b>\n" +"\n" +"The authenticity of the %s SSL certificate could be invalid.\n" +"SSL Error: %s\n" +"Do you still want to connect to this server?" +msgstr "" + +#: ../src/config.py:3216 ../src/gajim.py:2181 +#, python-format +msgid "" +"Add this certificate to the list of trusted certificates.\n" +"SHA1 fingerprint of the certificate:\n" +"%s" +msgstr "" -#: ../src/config.py:3118 -msgid "An error occured during account creation" +#: ../src/config.py:3234 ../src/config.py:3273 +msgid "An error occurred during account creation" msgstr "Произошла ошибка при Ñоздании учетной запиÑи" -#: ../src/config.py:3176 +#: ../src/config.py:3254 +msgid "Your new account has been created successfully" +msgstr "Ваша Ð½Ð¾Ð²Ð°Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уÑпешно Ñоздана" + +#: ../src/config.py:3357 msgid "Account name is in use" msgstr "Такое Ð¸Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи уже иÑпользуетÑÑ" -#: ../src/config.py:3177 +#: ../src/config.py:3358 msgid "You already have an account using this name." msgstr "У Ð²Ð°Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем." -#: ../src/conversation_textview.py:273 +#: ../src/conversation_textview.py:454 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -3033,518 +3372,604 @@ msgstr "" "ТекÑÑ‚ под Ñтой линией был Ñказан поÑле того, как вы поÑледний раз " "заглÑдывали в Ñту комнату" -#: ../src/conversation_textview.py:342 +#: ../src/conversation_textview.py:552 #, python-format msgid "_Actions for \"%s\"" msgstr "_ДейÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ \"%s\"" -#: ../src/conversation_textview.py:354 +#: ../src/conversation_textview.py:564 msgid "Read _Wikipedia Article" msgstr "Смотреть Ñтатью в _Wikipedia" -#: ../src/conversation_textview.py:359 +#: ../src/conversation_textview.py:569 msgid "Look it up in _Dictionary" msgstr "ИÑкать в _Ñловаре" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:375 +#: ../src/conversation_textview.py:585 #, 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:388 +#: ../src/conversation_textview.py:598 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL Web-поиÑка отÑутÑтвует в \"%s\"" -#: ../src/conversation_textview.py:391 +#: ../src/conversation_textview.py:601 msgid "Web _Search for it" msgstr "_ПоиÑк по Web" -#: ../src/conversation_textview.py:397 +#: ../src/conversation_textview.py:607 msgid "Open as _Link" msgstr "Открыть как ÑÑылку" -#: ../src/conversation_textview.py:757 +#: ../src/conversation_textview.py:1073 msgid "Yesterday" msgstr "Вчера" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:761 +#: ../src/conversation_textview.py:1077 #, python-format msgid "%i days ago" msgstr "%i дней назад" #. if we have subject, show it too! -#: ../src/conversation_textview.py:793 +#: ../src/conversation_textview.py:1111 #, python-format msgid "Subject: %s\n" msgstr "Тема: %s\n" -#: ../src/dialogs.py:59 +#: ../src/dataforms_widget.py:537 +msgid "Jabber ID already in list" +msgstr "Jabber ID уже в ÑпиÑке" + +#: ../src/dataforms_widget.py:538 +msgid "The Jabber ID you entered is already in the list. Choose another one." +msgstr "Jabber ID который вы ввели ÑущеÑтвует.ПожалуйÑта выберите другой." + +#. Default jid +#: ../src/dataforms_widget.py:549 +msgid "new@jabber.id" +msgstr "" + +#: ../src/dataforms_widget.py:552 ../src/dataforms_widget.py:554 +#, python-format +msgid "new%d@jabber.id" +msgstr "" + +#: ../src/dialogs.py:71 #, python-format msgid "Contact name: <i>%s</i>" msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°: <i>%s</i>" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: <i>%s</i>" msgstr "Jabber ID: <i>%s</i>" -#: ../src/dialogs.py:211 +#: ../src/dialogs.py:223 msgid "Group" msgstr "Группа" -#: ../src/dialogs.py:218 +#: ../src/dialogs.py:230 msgid "In the group" msgstr "Ð’ группе" -#: ../src/dialogs.py:269 +#: ../src/dialogs.py:330 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:272 +#: ../src/dialogs.py:335 msgid "Contact name" msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°" -#: ../src/dialogs.py:318 +#: ../src/dialogs.py:381 #, python-format msgid "%s Status Message" msgstr "Сообщение о ÑтатуÑе %s" -#: ../src/dialogs.py:320 +#: ../src/dialogs.py:383 msgid "Status Message" msgstr "Сообщение о ÑтатуÑе" -#: ../src/dialogs.py:395 +#: ../src/dialogs.py:483 msgid "Save as Preset Status Message" msgstr "Сохранить уÑтановленное Ñообщение о ÑтатуÑе" -#: ../src/dialogs.py:396 +#: ../src/dialogs.py:484 msgid "Please type a name for this status message" msgstr "Введите Ð¸Ð¼Ñ Ð´Ð»Ñ Ñтого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе" -#: ../src/dialogs.py:417 +#: ../src/dialogs.py:495 +msgid "Overwrite Status Message?" +msgstr "Изменить Ñообщение о ÑтатуÑе?" + +#: ../src/dialogs.py:496 +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "Ðто Ð¸Ð¼Ñ ÑƒÐ¶Ðµ иÑпользуетÑÑ. ПерезапиÑать Ñто ÑтатуÑное Ñообщение?" + +#: ../src/dialogs.py:512 msgid "AIM Address:" msgstr "ÐÐ´Ñ€ÐµÑ AIM:" -#: ../src/dialogs.py:418 +#: ../src/dialogs.py:513 msgid "GG Number:" msgstr "Ðомер GaduGadu" -#: ../src/dialogs.py:419 +#: ../src/dialogs.py:514 msgid "ICQ Number:" msgstr "Ðомер ICQ:" -#: ../src/dialogs.py:420 +#: ../src/dialogs.py:515 msgid "MSN Address:" msgstr "ÐÐ´Ñ€ÐµÑ Ð² MSN:" -#: ../src/dialogs.py:421 +#: ../src/dialogs.py:516 msgid "Yahoo! Address:" msgstr "ÐÐ´Ñ€ÐµÑ Yahoo:" -#: ../src/dialogs.py:457 +#: ../src/dialogs.py:553 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" "ПожалуйÑта, заполните данные о контакте,\n" "который хотите добавить в роÑтер учетной запиÑи %s" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:555 msgid "Please fill in the data of the contact you want to add" msgstr "ПожалуйÑта, заполните данные о контакте, который вы хотите добавить" -#: ../src/dialogs.py:609 ../src/dialogs.py:615 +#: ../src/dialogs.py:712 ../src/dialogs.py:718 msgid "Invalid User ID" msgstr "Ðеверный ID пользователÑ" -#: ../src/dialogs.py:616 +#: ../src/dialogs.py:719 msgid "The user ID must not contain a resource." msgstr "ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ должен Ñодержать реÑурÑ." -#: ../src/dialogs.py:630 +#: ../src/dialogs.py:733 msgid "Contact already in roster" msgstr "Контакт уже в роÑтере" -#: ../src/dialogs.py:631 +#: ../src/dialogs.py:734 msgid "This contact is already listed in your roster." msgstr "Ðтот контакт уже ÑодержитÑÑ Ð² вашем роÑтере." -#: ../src/dialogs.py:665 +#: ../src/dialogs.py:770 msgid "User ID:" msgstr "ID пользователÑ:" -#: ../src/dialogs.py:728 +#: ../src/dialogs.py:832 msgid "A GTK+ jabber client" msgstr "Jabber-клиент на GTK+" -#: ../src/dialogs.py:729 +#: ../src/dialogs.py:833 msgid "GTK+ Version:" msgstr "ВерÑÐ¸Ñ GTK+:" -#: ../src/dialogs.py:730 +#: ../src/dialogs.py:834 msgid "PyGTK Version:" msgstr "ВерÑÐ¸Ñ PyGTK:" -#: ../src/dialogs.py:744 +#: ../src/dialogs.py:848 msgid "Current Developers:" msgstr "Разработчики:" -#: ../src/dialogs.py:746 +#: ../src/dialogs.py:850 msgid "Past Developers:" msgstr "Разработчики прошлых верÑий:" -#: ../src/dialogs.py:756 +#: ../src/dialogs.py:860 msgid "THANKS:" msgstr "БЛÐГОДÐÐ ÐОСТИ:" #. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:762 +#: ../src/dialogs.py:866 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 <someone@somewhere> -#: ../src/dialogs.py:776 +#: ../src/dialogs.py:879 msgid "translator-credits" msgstr "" "Яков Безруков <nebulam51@gmail.com>\n" -"ÐлекÑандр Мыльцев <avm@altlinux.org>" +"ÐлекÑандр Мыльцев <avm@altlinux.org>\n" +"Олег Стадник <mail@lokee.rv.ua>\n" +"Ð”ÐµÐ½Ð¸Ñ Ð¤Ð¾Ð¼Ð¸Ð½ <fominde@mail.ru>" -#: ../src/dialogs.py:906 +#: ../src/dialogs.py:1011 #, python-format msgid "Unable to bind to port %s." msgstr "Ðе могу привÑзатьÑÑ Ðº порту %s." -#: ../src/dialogs.py:907 +#: ../src/dialogs.py:1012 msgid "" "Maybe you have another running instance of Gajim. File Transfer will be " -"canceled." -msgstr "Возможно, запущен ещё один ÑкземплÑÑ€ Gajim. Передача файлов будет отменена." +"cancelled." +msgstr "" +"Возможно, запущен ещё один ÑкземплÑÑ€ Gajim. Передача файлов будет отменена." + +#: ../src/dialogs.py:1019 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"Чтобы воÑпользоватьÑÑ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¾Ð¹ правопиÑаниÑ, уÑтановите Ñловарь Ð´Ð»Ñ Ñзыка %" +"s или выберите другой Ñзык, иÑправив наÑтройку speller_language." -#: ../src/dialogs.py:1058 +#: ../src/dialogs.py:1293 #, python-format msgid "Subscription request for account %s from %s" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s от %s" -#: ../src/dialogs.py:1061 +#: ../src/dialogs.py:1296 #, python-format msgid "Subscription request from %s" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку от %s" -#: ../src/dialogs.py:1121 ../src/roster_window.py:681 +#: ../src/dialogs.py:1357 ../src/roster_window.py:776 #, python-format msgid "You are already in group chat %s" msgstr "Ð’Ñ‹ уже в комнате %s" -#: ../src/dialogs.py:1129 +#: ../src/dialogs.py:1365 msgid "You can not join a group chat unless you are connected." msgstr "Ð’Ñ‹ не можете зайти в комнату без подключениÑ." -#: ../src/dialogs.py:1144 +#: ../src/dialogs.py:1383 #, python-format msgid "Join Group Chat with account %s" msgstr "Войти в комнату Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/dialogs.py:1212 ../src/dialogs.py:1218 +#: ../src/dialogs.py:1453 ../src/dialogs.py:1459 +#: ../src/groupchat_control.py:1698 msgid "Invalid group chat Jabber ID" msgstr "Ðеверное Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹" -#: ../src/dialogs.py:1213 ../src/dialogs.py:1219 +#: ../src/dialogs.py:1454 ../src/dialogs.py:1460 +#: ../src/groupchat_control.py:1699 msgid "The group chat Jabber ID has not allowed characters." msgstr "Ð’ Jabber ID комнаты или Ñервера ÑодержатÑÑ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑтимые Ñимволы." -#: ../src/dialogs.py:1225 +#: ../src/dialogs.py:1466 msgid "This is not a group chat" msgstr "Ðто не комната" -#: ../src/dialogs.py:1226 +#: ../src/dialogs.py:1467 #, python-format msgid "%s is not the name of a group chat." msgstr "%s не ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ комнаты." -#: ../src/dialogs.py:1248 +#: ../src/dialogs.py:1506 +msgid "Without a connection, you can not synchronise your contacts." +msgstr "Чтобы объединить контакты, необходимо подÑоединитьÑÑ Ðº Ñерверу." + +#: ../src/dialogs.py:1520 +msgid "Server" +msgstr "Сервер" + +#: ../src/dialogs.py:1553 +msgid "This account is not connected to the server" +msgstr "Ðккаунт не подключен к Ñерверу" + +#: ../src/dialogs.py:1554 +#, fuzzy +msgid "You cannot synchronize with an account unless it is connected." +msgstr "Ð’Ñ‹ не можете зайти в комнату без подключениÑ." + +#: ../src/dialogs.py:1578 +msgid "Synchronise" +msgstr "" + +#: ../src/dialogs.py:1636 #, python-format msgid "Start Chat with account %s" -msgstr "Ðачать беÑеду Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью %s" +msgstr "Ðачать чат Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью %s" -#: ../src/dialogs.py:1250 +#: ../src/dialogs.py:1638 msgid "Start Chat" -msgstr "Ðачать беÑеду" +msgstr "Ðачать чат" -#: ../src/dialogs.py:1251 +#: ../src/dialogs.py:1639 msgid "" "Fill in the nickname or the Jabber ID of the contact you would like\n" "to send a chat message to:" -msgstr "Введите ник или ID пользователÑ, которому вы хотите отправить Ñообщение:" +msgstr "" +"Введите ник или ID пользователÑ, которому вы хотите отправить Ñообщение:" #. if offline or connecting -#: ../src/dialogs.py:1276 ../src/dialogs.py:1635 ../src/dialogs.py:1764 +#: ../src/dialogs.py:1664 ../src/dialogs.py:2040 ../src/dialogs.py:2181 msgid "Connection not available" msgstr "Соединение невозможно" -#: ../src/dialogs.py:1277 ../src/dialogs.py:1636 ../src/dialogs.py:1765 +#: ../src/dialogs.py:1665 ../src/dialogs.py:2041 ../src/dialogs.py:2182 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ, что вы подключены к \"%s\"." -#: ../src/dialogs.py:1286 ../src/dialogs.py:1289 +#: ../src/dialogs.py:1674 ../src/dialogs.py:1677 msgid "Invalid JID" msgstr "Ðеверный JID" -#: ../src/dialogs.py:1289 +#: ../src/dialogs.py:1677 #, python-format msgid "Unable to parse \"%s\"." msgstr "Ðе понимаю адреÑа \"%s\"." -#: ../src/dialogs.py:1298 +#: ../src/dialogs.py:1686 msgid "Without a connection, you can not change your password." msgstr "Чтобы изменить пароль, необходимо подÑоединитьÑÑ Ðº Ñерверу." -#: ../src/dialogs.py:1317 +#: ../src/dialogs.py:1704 +msgid "Invalid password" +msgstr "Ðеверный пароль" + +#: ../src/dialogs.py:1705 msgid "You must enter a password." msgstr "Ð’Ñ‹ должны ввеÑти пароль." +#: ../src/dialogs.py:1709 +msgid "Passwords do not match" +msgstr "Пароли не Ñовпадают" + +#: ../src/dialogs.py:1710 +msgid "The passwords typed in both fields must be identical." +msgstr "Пароли, введенные в оба полÑ, должны быть одинаковы." + #. img to display #. default value -#: ../src/dialogs.py:1364 ../src/notify.py:211 ../src/notify.py:411 +#: ../src/dialogs.py:1752 ../src/notify.py:232 ../src/notify.py:447 msgid "Contact Signed In" -msgstr "Контакт в Ñети" +msgstr "Контакт подключилÑÑ" -#: ../src/dialogs.py:1366 ../src/notify.py:219 ../src/notify.py:413 +#: ../src/dialogs.py:1754 ../src/notify.py:240 ../src/notify.py:449 msgid "Contact Signed Out" msgstr "Контакт отключилÑÑ" #. chat message -#: ../src/dialogs.py:1368 ../src/notify.py:238 ../src/notify.py:415 +#: ../src/dialogs.py:1756 ../src/notify.py:263 ../src/notify.py:451 msgid "New Message" msgstr "Ðовое Ñообщение" #. single message -#: ../src/dialogs.py:1368 ../src/notify.py:223 ../src/notify.py:415 +#: ../src/dialogs.py:1756 ../src/notify.py:244 ../src/notify.py:451 msgid "New Single Message" msgstr "Ðовое одиночное Ñообщение" #. private message -#: ../src/dialogs.py:1369 ../src/notify.py:230 ../src/notify.py:416 +#: ../src/dialogs.py:1757 ../src/notify.py:251 ../src/notify.py:452 msgid "New Private Message" msgstr "Ðовое личное Ñообщение" -#: ../src/dialogs.py:1369 ../src/gajim.py:1216 ../src/notify.py:424 +#: ../src/dialogs.py:1757 ../src/gajim.py:1536 ../src/notify.py:460 msgid "New E-mail" msgstr "Ðовое пиÑьмо" -#: ../src/dialogs.py:1371 ../src/gajim.py:1369 ../src/notify.py:418 +#: ../src/dialogs.py:1759 ../src/gajim.py:1711 ../src/notify.py:454 msgid "File Transfer Request" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" -#: ../src/dialogs.py:1373 ../src/gajim.py:1188 ../src/gajim.py:1345 -#: ../src/notify.py:420 +#: ../src/dialogs.py:1761 ../src/gajim.py:1508 ../src/gajim.py:1678 +#: ../src/notify.py:456 msgid "File Transfer Error" msgstr "Ошибка передачи" -#: ../src/dialogs.py:1375 ../src/gajim.py:1408 ../src/gajim.py:1430 -#: ../src/gajim.py:1447 ../src/notify.py:422 +#: ../src/dialogs.py:1763 ../src/gajim.py:1750 ../src/gajim.py:1772 +#: ../src/gajim.py:1789 ../src/notify.py:458 msgid "File Transfer Completed" msgstr "Передача файла завершена" -#: ../src/dialogs.py:1376 ../src/gajim.py:1411 ../src/notify.py:422 +#: ../src/dialogs.py:1764 ../src/gajim.py:1753 ../src/notify.py:458 msgid "File Transfer Stopped" msgstr "Передача оÑтановлена" -#: ../src/dialogs.py:1378 ../src/gajim.py:1086 ../src/notify.py:426 +#: ../src/dialogs.py:1766 ../src/gajim.py:1365 ../src/notify.py:462 msgid "Groupchat Invitation" msgstr "Приглашение в комнату" -#: ../src/dialogs.py:1380 ../src/notify.py:203 ../src/notify.py:428 +#: ../src/dialogs.py:1768 ../src/notify.py:224 ../src/notify.py:464 msgid "Contact Changed Status" -msgstr "Контакт изменил ÑтатуÑ" +msgstr "Контакт изменит ÑтатуÑ" -#: ../src/dialogs.py:1565 +#: ../src/dialogs.py:1959 #, python-format msgid "Single Message using account %s" msgstr "Ðовое Ñообщение Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/dialogs.py:1567 +#: ../src/dialogs.py:1961 #, python-format msgid "Single Message in account %s" msgstr "Ðовое Ñообщение Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:1963 msgid "Single Message" msgstr "Сообщение" #. prepare UI for Sending -#: ../src/dialogs.py:1572 +#: ../src/dialogs.py:1966 #, python-format msgid "Send %s" msgstr "Отправить %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1595 +#: ../src/dialogs.py:1989 #, python-format msgid "Received %s" msgstr "Получено %s" +#. prepare UI for Receiving +#: ../src/dialogs.py:2012 +#, python-format +msgid "Form %s" +msgstr "От %s" + #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1667 +#: ../src/dialogs.py:2082 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1668 +#: ../src/dialogs.py:2083 #, python-format msgid "%s wrote:\n" msgstr "%s напиÑал:\n" -#: ../src/dialogs.py:1712 +#: ../src/dialogs.py:2127 #, python-format msgid "XML Console for %s" msgstr "КонÑоль XML Ð´Ð»Ñ %s" -#: ../src/dialogs.py:1714 +#: ../src/dialogs.py:2129 msgid "XML Console" msgstr "КонÑоль XML" -#: ../src/dialogs.py:1835 +#: ../src/dialogs.py:2252 #, python-format msgid "Privacy List <b><i>%s</i></b>" msgstr "СпиÑок доÑтупа <b><i>%s</i></b>" -#: ../src/dialogs.py:1839 +#: ../src/dialogs.py:2256 #, python-format msgid "Privacy List for %s" msgstr "СпиÑок доÑтупа Ð´Ð»Ñ %s" -#: ../src/dialogs.py:1887 +#: ../src/dialogs.py:2312 #, python-format msgid "Order: %s, action: %s, type: %s, value: %s" msgstr "Ðомер: %s, дейÑтвие: %s, тип: %s, значение: %s" -#: ../src/dialogs.py:1890 +#: ../src/dialogs.py:2315 #, python-format msgid "Order: %s, action: %s" msgstr "Ðомер: %s, дейÑтвие: %s" -#: ../src/dialogs.py:1932 +#: ../src/dialogs.py:2357 msgid "<b>Edit a rule</b>" msgstr "<b>Изменить правило</b>" -#: ../src/dialogs.py:2019 +#: ../src/dialogs.py:2444 msgid "<b>Add a rule</b>" msgstr "<b>Добавить правило</b>" -#: ../src/dialogs.py:2115 +#: ../src/dialogs.py:2540 #, python-format msgid "Privacy Lists for %s" msgstr "СпиÑки доÑтупа Ð´Ð»Ñ %s" -#: ../src/dialogs.py:2117 +#: ../src/dialogs.py:2542 msgid "Privacy Lists" msgstr "СпиÑки доÑтупа" -#: ../src/dialogs.py:2185 +#: ../src/dialogs.py:2612 msgid "Invalid List Name" msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ ÑпиÑка" -#: ../src/dialogs.py:2186 +#: ../src/dialogs.py:2613 msgid "You must enter a name to create a privacy list." msgstr "Ðеобходимо ввеÑти Ð¸Ð¼Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ учетной запиÑи." -#. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:2220 -#, python-format -msgid "%(contact_jid)s has invited you to group chat %(room_jid)s" +#: ../src/dialogs.py:2650 +msgid "$Contact has invited you to join a discussion" msgstr "%(contact_jid)s приглашает Ð²Ð°Ñ Ð² комнату %(room_jid)s." -#. only if not None and not '' -#: ../src/dialogs.py:2226 +#: ../src/dialogs.py:2652 +#, python-format +msgid "$Contact has invited you to group chat %(room_jid)s" +msgstr "$Contact приглашает Ð²Ð°Ñ Ð² комнату %(room_jid)s." + +#: ../src/dialogs.py:2665 #, python-format msgid "Comment: %s" msgstr "Комментарий: %s" -#: ../src/dialogs.py:2288 +#: ../src/dialogs.py:2731 msgid "Choose Sound" msgstr "Выберите звуковой файл" -#: ../src/dialogs.py:2298 ../src/dialogs.py:2343 +#: ../src/dialogs.py:2741 ../src/dialogs.py:2792 msgid "All files" msgstr "Ð’Ñе файлы" -#: ../src/dialogs.py:2303 +#: ../src/dialogs.py:2746 msgid "Wav Sounds" msgstr "Ð’ формате Wav" -#: ../src/dialogs.py:2333 +#: ../src/dialogs.py:2779 msgid "Choose Image" msgstr "Выбрать картинку" -#: ../src/dialogs.py:2348 +#: ../src/dialogs.py:2797 msgid "Images" msgstr "Картинки" -#: ../src/dialogs.py:2405 +#: ../src/dialogs.py:2862 #, python-format msgid "When %s becomes:" msgstr "Когда %s проиÑходит:" -#: ../src/dialogs.py:2407 +#: ../src/dialogs.py:2864 #, python-format msgid "Adding Special Notification for %s" msgstr "Добавление Ñпециального ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s" #. # means number -#: ../src/dialogs.py:2478 +#: ../src/dialogs.py:2935 msgid "#" msgstr "â„–" -#: ../src/dialogs.py:2484 +#: ../src/dialogs.py:2941 msgid "Condition" msgstr "УÑловие" -#: ../src/dialogs.py:2605 +#: ../src/dialogs.py:3059 msgid "when I am " msgstr "когда Ñ " -#: ../src/disco.py:101 +#: ../src/disco.py:111 msgid "Others" msgstr "Другие" -#: ../src/disco.py:102 ../src/disco.py:103 ../src/disco.py:1253 -#: ../src/gajim.py:539 ../src/roster_window.py:267 ../src/roster_window.py:325 -#: ../src/roster_window.py:364 ../src/roster_window.py:445 -#: ../src/roster_window.py:477 ../src/roster_window.py:479 -#: ../src/roster_window.py:3828 ../src/roster_window.py:3830 -#: ../src/common/helpers.py:42 +#: ../src/disco.py:112 ../src/disco.py:113 ../src/disco.py:1321 +#: ../src/gajim.py:660 ../src/roster_window.py:295 ../src/roster_window.py:355 +#: ../src/roster_window.py:395 ../src/roster_window.py:503 +#: ../src/roster_window.py:535 ../src/roster_window.py:537 +#: ../src/roster_window.py:4755 ../src/roster_window.py:4757 +#: ../src/common/contacts.py:295 ../src/common/contacts.py:310 +#: ../src/common/helpers.py:53 msgid "Transports" msgstr "ТранÑпорты" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:105 +#: ../src/disco.py:115 msgid "Conference" msgstr "Комнаты" -#: ../src/disco.py:418 +#: ../src/disco.py:428 msgid "Without a connection, you can not browse available services" msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра ÑервиÑов необходимо Ñначала подÑоединитьÑÑ Ðº Ñерверу" -#: ../src/disco.py:497 +#: ../src/disco.py:502 #, python-format msgid "Service Discovery using account %s" msgstr "Обзор ÑервиÑов Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/disco.py:499 +#: ../src/disco.py:504 msgid "Service Discovery" msgstr "Обзор ÑервиÑов (discovery)" -#: ../src/disco.py:642 +#: ../src/disco.py:644 msgid "The service could not be found" msgstr "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð½Ðµ обнаружен" -#: ../src/disco.py:643 +#: ../src/disco.py:645 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -3552,205 +3977,462 @@ msgstr "" "По Ñтому адреÑу ÑервиÑÑ‹ отÑутÑтвуют или не отвечают. Проверьте Ð°Ð´Ñ€ÐµÑ Ð¸ " "попробуйте еще раз." -#: ../src/disco.py:647 ../src/disco.py:928 +#: ../src/disco.py:649 ../src/disco.py:930 msgid "The service is not browsable" msgstr "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупен Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра" -#: ../src/disco.py:648 +#: ../src/disco.py:650 msgid "This type of service does not contain any items to browse." msgstr "Ðтот ÑÐµÑ€Ð²Ð¸Ñ Ð½Ðµ Ñодержит ничего, что можно было бы проÑмотреть." -#: ../src/disco.py:728 +#: ../src/disco.py:730 #, python-format msgid "Browsing %s using account %s" msgstr "ПроÑмотр %s Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью %s" -#: ../src/disco.py:767 +#: ../src/disco.py:769 msgid "_Browse" msgstr "_Браузер" -#: ../src/disco.py:929 +#: ../src/disco.py:931 msgid "This service does not contain any items to browse." msgstr "Ðтот ÑÐµÑ€Ð²Ð¸Ñ Ð½Ðµ Ñодержит ничего, что можно было бы проÑмотреть." -#: ../src/disco.py:1143 ../src/disco.py:1258 +#: ../src/disco.py:1152 +msgid "_Execute Command" +msgstr "Ð’_ыполнить команду..." + +#: ../src/disco.py:1162 ../src/disco.py:1326 msgid "Re_gister" msgstr "За_региÑтрироватьÑÑ" -#: ../src/disco.py:1295 +#: ../src/disco.py:1363 #, python-format msgid "Scanning %d / %d.." msgstr "Сканирую %d / %d.." #. Users column -#: ../src/disco.py:1476 +#: ../src/disco.py:1545 msgid "Users" msgstr "Пользователи" #. Description column -#: ../src/disco.py:1483 +#: ../src/disco.py:1553 msgid "Description" msgstr "ОпиÑание" #. Id column -#: ../src/disco.py:1490 +#: ../src/disco.py:1561 msgid "Id" msgstr "ID" -#: ../src/disco.py:1713 +#: ../src/disco.py:1790 msgid "Subscribed" msgstr "ПодпиÑка" -#: ../src/disco.py:1739 +#: ../src/disco.py:1798 +msgid "Node" +msgstr "" + +#: ../src/disco.py:1855 msgid "New post" msgstr "Ðовое Ñообщение" -#: ../src/disco.py:1745 +#: ../src/disco.py:1861 msgid "_Subscribe" msgstr "_ПодпиÑатьÑÑ" -#: ../src/disco.py:1751 +#: ../src/disco.py:1867 msgid "_Unsubscribe" msgstr "_ОтпиÑатьÑÑ" -#: ../src/filetransfers_window.py:72 +#: ../src/features_window.py:47 +msgid "PyOpenSSL" +msgstr "PyOpenSSL" + +#: ../src/features_window.py:48 +msgid "" +"A library used to validate server certificates to ensure a secure connection." +msgstr "" +"Библиотека иÑпользуетÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹ÑтвительноÑти Ñертификатов " +"Ñервера Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы удоÑтоверитьÑÑ Ð² защищенноÑти ÑоединениÑ." + +#: ../src/features_window.py:49 ../src/features_window.py:50 +msgid "Requires python-pyopenssl." +msgstr "Требует python-pyopenssl." + +#: ../src/features_window.py:51 +msgid "Bonjour / Zeroconf" +msgstr "Bonjour / Zeroconf" + +#: ../src/features_window.py:52 +msgid "Serverless chatting with autodetected clients in a local network." +msgstr "Чат в локальной Ñети." + +#: ../src/features_window.py:53 +msgid "Requires python-avahi." +msgstr "Требует python-avahi." + +#: ../src/features_window.py:54 +msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." +msgstr "Требует pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)." + +#: ../src/features_window.py:55 +msgid "gajim-remote" +msgstr "gajim-remote" + +#: ../src/features_window.py:56 +msgid "A script to controle gajim via commandline." +msgstr "Скрипт Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Gajim'ом через коммандную Ñтроку." + +#: ../src/features_window.py:57 +msgid "Requires python-dbus." +msgstr "Требует python-dbus." + +#: ../src/features_window.py:58 ../src/features_window.py:62 +#: ../src/features_window.py:66 ../src/features_window.py:70 +#: ../src/features_window.py:74 ../src/features_window.py:82 +#: ../src/features_window.py:86 ../src/features_window.py:98 +msgid "Feature not available under Windows." +msgstr "Ðта возможноÑÑ‚ÑŒ отÑутÑтвует в Windows." + +#: ../src/features_window.py:59 +msgid "OpenGPG" +msgstr "OpenGPG" + +#: ../src/features_window.py:60 +msgid "Encrypting chatmessages with gpg keys." +msgstr "Шифрование Ñообщений при помощи gpg ключей." + +#: ../src/features_window.py:61 +msgid "Requires gpg and python-GnuPGInterface." +msgstr "Требует gpg и python-GnuPGInterface." + +#: ../src/features_window.py:63 +msgid "network-manager" +msgstr "network-manager" + +#: ../src/features_window.py:64 +msgid "Autodetection of network status." +msgstr "Ðвтоопределение ÑоÑтоÑÐ½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñетью." + +#: ../src/features_window.py:65 +msgid "Requires gnome-network-manager and python-dbus." +msgstr "Требует gnome-network-manager и python-dbus." + +#: ../src/features_window.py:67 +msgid "Session Management" +msgstr "Управление ÑеанÑом" + +#: ../src/features_window.py:68 +msgid "Gajim session is stored on logout and restored on login." +msgstr "" +"Ð¡ÐµÐ°Ð½Ñ Gajim ÑохранÑетÑÑ Ð¿Ñ€Ð¸ выходе (logout) и воÑÑтанавливаетÑÑ Ð¿Ñ€Ð¸ входе " +"(login)." + +#: ../src/features_window.py:69 +msgid "Requires python-gnome2." +msgstr "Требует python-gnome2." + +#: ../src/features_window.py:71 +msgid "gnome-keyring" +msgstr "gnome-keyring" + +#: ../src/features_window.py:72 +msgid "Passwords can be stored securely and not just in plaintext." +msgstr "Пароли могут хранитьÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñтно, а не проÑто открытым текÑтом." + +#: ../src/features_window.py:73 +msgid "Requires gnome-keyring and python-gnome2-desktop." +msgstr "Требует gnome-keyring и python-gnome2-desktop." + +#: ../src/features_window.py:75 +msgid "SRV" +msgstr "SRV" + +#: ../src/features_window.py:76 +msgid "Ability to connect to servers which are using SRV records." +msgstr "" + +#: ../src/features_window.py:77 +msgid "Requires dnsutils." +msgstr "Требует dnsutils." + +#: ../src/features_window.py:78 +msgid "Requires nslookup to use SRV records." +msgstr "" + +#: ../src/features_window.py:79 +msgid "Spell Checker" +msgstr "Проверка орфографии" + +#: ../src/features_window.py:80 +msgid "Spellchecking of composed messages." +msgstr "Проверка орфографии набираемых Ñообщений" + +#: ../src/features_window.py:81 +msgid "" +"Requires python-gnome2-extras or compilation of gtkspell module from Gajim " +"sources." +msgstr "" +"Требует python-gnome2-extras или Ñкомпилированного Ð¼Ð¾Ð´ÑƒÐ»Ñ gtkspell из " +"иÑходных кодов Gajim." + +#: ../src/features_window.py:83 +msgid "Notification-daemon" +msgstr "" + +#: ../src/features_window.py:84 +msgid "Passive popups notifying for new events." +msgstr "ПаÑÑивные вÑплывающие окна Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ новых ÑобытиÑÑ…." + +#: ../src/features_window.py:85 +msgid "" +"Requires python-notify or instead python-dbus in conjunction with " +"notification-daemon." +msgstr "" + +#: ../src/features_window.py:87 +msgid "Trayicon" +msgstr "Иконка в ÑиÑтемном трее" + +#: ../src/features_window.py:88 +msgid "A icon in systemtray reflecting the current presence." +msgstr "Иконка в ÑиÑтемном лотке Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÑŽÑ‰Ð°Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ ÑтатуÑ." + +#: ../src/features_window.py:89 +msgid "" +"Requires python-gnome2-extras or compiled trayicon module from Gajim " +"sources." +msgstr "" +"Требует python-gnome2-extras или Ñкомпилированного Ð¼Ð¾Ð´ÑƒÐ»Ñ trayicon из " +"иÑходных кодов Gajim." + +#: ../src/features_window.py:90 +msgid "Requires PyGTK >= 2.10." +msgstr "Требует PyGTK >= 2.10." + +#: ../src/features_window.py:91 +msgid "Idle" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð±ÐµÐ·Ð´ÐµÐ¹ÑтвиÑ" + +#: ../src/features_window.py:92 +msgid "Ability to measure idle time, in order to set auto status." +msgstr "" + +#: ../src/features_window.py:93 ../src/features_window.py:94 +msgid "Requires compilation of the idle module from Gajim sources." +msgstr "" + +#: ../src/features_window.py:95 +msgid "LaTeX" +msgstr "LaTeX" + +#: ../src/features_window.py:96 +msgid "Transform LaTeX espressions between $$ $$." +msgstr "" + +#: ../src/features_window.py:97 +msgid "" +"Requires texlive-latex-base, dvips and imagemagick. You have to set " +"'use_latex' to True in the Advanced Configuration Editor." +msgstr "" + +#: ../src/features_window.py:99 +#, fuzzy +msgid "End to end encryption" +msgstr "Шифрование OpenPGP" + +#: ../src/features_window.py:100 +#, fuzzy +msgid "Encrypting chatmessages." +msgstr "_ВходÑщее Ñообщение:" + +#: ../src/features_window.py:101 ../src/features_window.py:102 +msgid "Requires python-crypto." +msgstr "" + +#: ../src/features_window.py:103 +#, fuzzy +msgid "RST Generator" +msgstr "Общие" + +#: ../src/features_window.py:104 +msgid "" +"Generate XHTML output from RST code (see http://docutils.sourceforge.net/" +"docs/ref/rst/restructuredtext.html)." +msgstr "" + +#: ../src/features_window.py:105 ../src/features_window.py:106 +msgid "Requires python-docutils." +msgstr "Требует python-docutils." + +#: ../src/features_window.py:107 +msgid "libsexy" +msgstr "libsexy" + +#: ../src/features_window.py:108 +#, fuzzy +msgid "Ability to have clickable URLs in chat and groupchat window banners." +msgstr "Кликабельные ÑÑылки в окне чата" + +#: ../src/features_window.py:109 ../src/features_window.py:110 +msgid "Requires python-sexy." +msgstr "Требует python-sexy." + +#: ../src/features_window.py:117 ../src/common/helpers.py:248 +msgid "Available" +msgstr "ДоÑтупен" + +#: ../src/features_window.py:124 +#, fuzzy +msgid "Feature" +msgstr "Параметры Ñервера" + +#: ../src/filetransfers_window.py:77 msgid "File" msgstr "Файл" -#: ../src/filetransfers_window.py:87 +#: ../src/filetransfers_window.py:92 msgid "Time" msgstr "ВремÑ" -#: ../src/filetransfers_window.py:99 +#: ../src/filetransfers_window.py:104 msgid "Progress" msgstr "ПрогреÑÑ" -#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:218 #, python-format msgid "Filename: %s" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: %s" -#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:298 +#: ../src/filetransfers_window.py:165 ../src/filetransfers_window.py:305 #, 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:173 ../src/filetransfers_window.py:183 -#: ../src/history_manager.py:463 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:184 +#: ../src/history_manager.py:468 msgid "You" msgstr "Ð’Ñ‹" -#: ../src/filetransfers_window.py:174 +#: ../src/filetransfers_window.py:175 #, python-format msgid "Sender: %s" msgstr "Отправитель: %s" -#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:572 -#: ../src/tooltips.py:573 +#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:595 +#: ../src/tooltips.py:592 msgid "Recipient: " msgstr "Получатель:" -#: ../src/filetransfers_window.py:186 +#: ../src/filetransfers_window.py:187 #, python-format msgid "Saved in: %s" msgstr "Сохранено в: %s" -#: ../src/filetransfers_window.py:188 +#: ../src/filetransfers_window.py:189 msgid "File transfer completed" msgstr "Передача завершена" -#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 -msgid "File transfer canceled" +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:209 +msgid "File transfer cancelled" msgstr "Передача отменена" -#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 +#: ../src/filetransfers_window.py:203 ../src/filetransfers_window.py:210 msgid "Connection with peer cannot be established." msgstr "Соединение не может быть уÑтановлено." -#: ../src/filetransfers_window.py:224 +#: ../src/filetransfers_window.py:219 #, python-format msgid "Recipient: %s" msgstr "Получатель: %s" -#: ../src/filetransfers_window.py:226 +#: ../src/filetransfers_window.py:221 #, python-format msgid "Error message: %s" msgstr "Сообщение об ошибке: %s" -#: ../src/filetransfers_window.py:227 -msgid "File transfer stopped by the contact of the other side" +#: ../src/filetransfers_window.py:222 +msgid "File transfer stopped by the contact at the other end" msgstr "Передача файла оÑтановлена контактом на той Ñтороне" -#: ../src/filetransfers_window.py:244 +#: ../src/filetransfers_window.py:243 msgid "Choose File to Send..." msgstr "Выбрать файл Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸..." -#: ../src/filetransfers_window.py:263 +#: ../src/filetransfers_window.py:259 ../src/tooltips.py:632 +msgid "Description: " +msgstr "ОпиÑание: " + +#: ../src/filetransfers_window.py:270 msgid "Gajim cannot access this file" msgstr "Ðет доÑтупа к файлу" -#: ../src/filetransfers_window.py:264 +#: ../src/filetransfers_window.py:271 msgid "This file is being used by another process." msgstr "Файл занÑÑ‚ другим процеÑÑом." -#: ../src/filetransfers_window.py:296 +#: ../src/filetransfers_window.py:303 #, python-format msgid "File: %s" msgstr "Файл: %s" -#: ../src/filetransfers_window.py:301 +#: ../src/filetransfers_window.py:308 #, python-format msgid "Type: %s" msgstr "Тип: %s" -#: ../src/filetransfers_window.py:303 +#: ../src/filetransfers_window.py:310 #, python-format msgid "Description: %s" msgstr "ОпиÑание: %s" -#: ../src/filetransfers_window.py:304 +#: ../src/filetransfers_window.py:311 #, python-format msgid "%s wants to send you a file:" msgstr "%s хочет отправить вам файл:" -#: ../src/filetransfers_window.py:318 ../src/gtkgui_helpers.py:683 +#: ../src/filetransfers_window.py:324 ../src/gtkgui_helpers.py:773 #, python-format msgid "Cannot overwrite existing file \"%s\"" msgstr "Ðе могу замеÑтить ÑущеÑтвующий файл \"%s\"" -#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 +#: ../src/filetransfers_window.py:325 ../src/gtkgui_helpers.py:775 msgid "" "A file with this name already exists and you do not have permission to " "overwrite it." msgstr "Ðтот файл уже ÑущеÑтвует, и у Ð²Ð°Ñ Ð½ÐµÑ‚ права его перезапиÑать." -#: ../src/filetransfers_window.py:326 ../src/gtkgui_helpers.py:689 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:779 msgid "This file already exists" msgstr "Файл уже ÑущеÑтвует" -#: ../src/filetransfers_window.py:326 ../src/gtkgui_helpers.py:689 +#: ../src/filetransfers_window.py:332 ../src/gtkgui_helpers.py:779 msgid "What do you want to do?" msgstr "Что вы хотите Ñделать?" -#: ../src/filetransfers_window.py:338 ../src/gtkgui_helpers.py:699 +#. read-only bit is used to mark special folder under windows, +#. not to mark that a folder is read-only. See ticket #3587 +#: ../src/filetransfers_window.py:346 ../src/gtkgui_helpers.py:789 #, python-format msgid "Directory \"%s\" is not writable" msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\" не доÑтупна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи" -#: ../src/filetransfers_window.py:338 ../src/gtkgui_helpers.py:700 +#: ../src/filetransfers_window.py:346 ../src/gtkgui_helpers.py:790 msgid "You do not have permission to create files in this directory." msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ права Ñоздавать файлы в Ñтой директории." -#: ../src/filetransfers_window.py:348 +#: ../src/filetransfers_window.py:356 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:429 +#: ../src/filetransfers_window.py:436 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -3758,60 +4440,65 @@ 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:505 +#: ../src/filetransfers_window.py:525 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:544 ../src/filetransfers_window.py:547 +#: ../src/filetransfers_window.py:565 ../src/filetransfers_window.py:568 msgid "Invalid File" msgstr "Ðеверный файл" -#: ../src/filetransfers_window.py:544 +#: ../src/filetransfers_window.py:565 msgid "File: " msgstr "Файл: " -#: ../src/filetransfers_window.py:548 +#: ../src/filetransfers_window.py:569 msgid "It is not possible to send empty files" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ñылать пуÑтые файлы" -#: ../src/filetransfers_window.py:568 ../src/tooltips.py:563 +#: ../src/filetransfers_window.py:591 ../src/tooltips.py:582 msgid "Name: " msgstr "ИмÑ: " -#: ../src/filetransfers_window.py:570 ../src/tooltips.py:567 +#: ../src/filetransfers_window.py:593 ../src/tooltips.py:586 msgid "Sender: " msgstr "Отправитель:" -#: ../src/filetransfers_window.py:758 +#: ../src/filetransfers_window.py:781 msgid "Pause" msgstr "Пауза" -#: ../src/gajim.py:47 -msgid "Gajim needs Xserver to run. Quiting..." -msgstr "Gajim'у Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ X-Ñервер. Выход..." +#: ../src/gajim.py:56 +#, python-format +msgid "%s is not a valid loglevel" +msgstr "" + +#: ../src/gajim.py:129 +msgid "Gajim needs X server to run. Quiting..." +msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ X-Ñервер. Выход..." -#: ../src/gajim.py:51 -msgid "Gajim needs PyGTK 2.6 or above" -msgstr "Gajim требуетÑÑ PyGTK 2.6 или выше" +#: ../src/gajim.py:156 +msgid "Gajim needs PyGTK 2.8 or above" +msgstr "Gajim требуетÑÑ PyGTK 2.8 или выше" -#: ../src/gajim.py:52 -msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." -msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ PyGTK 2.6 или выше. Выход..." +#: ../src/gajim.py:157 +msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." +msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ PyGTK 2.8 или выше. Выход..." -#: ../src/gajim.py:54 -msgid "Gajim needs GTK 2.6 or above" -msgstr "Gajim требуетÑÑ GTK 2.6 или выше" +#: ../src/gajim.py:159 +msgid "Gajim needs GTK 2.8 or above" +msgstr "Gajim требуетÑÑ GTK 2.8 или выше" -#: ../src/gajim.py:55 -msgid "Gajim needs GTK 2.6 or above to run. Quiting..." -msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ GTK 2.6 или выше. Выход..." +#: ../src/gajim.py:160 +msgid "Gajim needs GTK 2.8 or above to run. Quiting..." +msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ GTK 2.8 или выше. Выход..." -#: ../src/gajim.py:60 +#: ../src/gajim.py:165 msgid "GTK+ runtime is missing libglade support" msgstr "У GTK отÑутÑтвует поддержка libglade." -#: ../src/gajim.py:62 +#: ../src/gajim.py:167 #, python-format msgid "" "Please remove your current GTK+ runtime and install the latest stable " @@ -3820,31 +4507,34 @@ msgstr "" "ПожалуйÑта, удалите вашу текущую верÑию GTK и уÑтановите поÑледнюю " "Ñтабильную верÑию Ñ %s" -#: ../src/gajim.py:64 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." +#: ../src/gajim.py:169 +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ что GTK+ и PyGTK поддерживают libglade." -#: ../src/gajim.py:69 +#: ../src/gajim.py:174 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ PySQLite2" -#: ../src/gajim.py:77 +#: ../src/gajim.py:182 msgid "Gajim needs pywin32 to run" msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ pywin32" -#: ../src/gajim.py:78 +#: ../src/gajim.py:183 #, python-format msgid "" "Please make sure that Pywin32 is installed on your system. You can get it at " "%s" -msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ что в вашей ÑиÑтеме уÑтановлен Pywin32. Ð’Ñ‹ можете получить его на Ñайте: %s" +msgstr "" +"ПожалуйÑта, удоÑтоверьтеÑÑŒ что в вашей ÑиÑтеме уÑтановлен Pywin32. Ð’Ñ‹ можете " +"получить его на Ñайте: %s" #. set the icon to all newly opened wind -#: ../src/gajim.py:238 +#: ../src/gajim.py:328 msgid "Gajim is already running" msgstr "Gajim уже запущен" -#: ../src/gajim.py:239 +#: ../src/gajim.py:329 msgid "" "Another instance of Gajim seems to be running\n" "Run anyway?" @@ -3852,76 +4542,173 @@ msgstr "" "По-видимому, уже запущен другой ÑкземплÑÑ€ Gajim\n" "ЗапуÑтить ещё один?" -#: ../src/gajim.py:346 -#, python-format -msgid "HTTP (%s) Authorization for %s (id: %s)" -msgstr "HTTP (%s) ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ %s (id: %s)" +#: ../src/gajim.py:352 ../src/common/connection_handlers.py:910 +#: ../src/common/connection_handlers.py:1624 +#: ../src/common/connection_handlers.py:1653 +#: ../src/common/connection_handlers.py:1663 +#: ../src/common/connection_handlers.py:1682 +#: ../src/common/connection_handlers.py:1919 +#: ../src/common/connection_handlers.py:2031 ../src/common/connection.py:1016 +msgid "Disk Write Error" +msgstr "Ошибка запиÑи на диÑк" -#: ../src/gajim.py:347 +#: ../src/gajim.py:448 msgid "Do you accept this request?" msgstr "Ð’Ñ‹ принимаете Ñтот запроÑ?" -#: ../src/gajim.py:393 ../src/notify.py:430 +#: ../src/gajim.py:450 +#, python-format +msgid "Do you accept this request on account %s?" +msgstr "Ð’Ñ‹ принимаете Ð·Ð°Ð¿Ñ€Ð¾Ñ %s?" + +#: ../src/gajim.py:453 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "HTTP (%s) ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ %s (id: %s)" + +#: ../src/gajim.py:500 ../src/notify.py:466 msgid "Connection Failed" msgstr "Соединение разорвалоÑÑŒ" -#: ../src/gajim.py:706 +#: ../src/gajim.py:834 #, python-format msgid "Subject: %s" msgstr "Тема: %s" #. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) -#: ../src/gajim.py:751 ../src/gajim.py:764 +#: ../src/gajim.py:881 ../src/gajim.py:894 #, python-format msgid "error while sending %s ( %s )" msgstr "ошибка при отправке %s ( %s )" -#: ../src/gajim.py:797 +#: ../src/gajim.py:927 msgid "Authorization accepted" msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð½Ñта" -#: ../src/gajim.py:798 +#: ../src/gajim.py:928 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Контакт \"%s\" авторизовал ваÑ, теперь вы можете видеть его ÑтатуÑ." -#: ../src/gajim.py:806 +#: ../src/gajim.py:936 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Контакт \"%s\" отозвал подпиÑку Ñ Ð²Ð°Ð¼Ð¸" -#: ../src/gajim.py:807 +#: ../src/gajim.py:937 msgid "You will always see him or her as offline." msgstr "Ð’Ñ‹ вÑегда будете видеть его или её в оффлайне." -#: ../src/gajim.py:850 +#: ../src/gajim.py:981 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "СвÑзь Ñ \"%s\" не может быть уÑтановлена" -#: ../src/gajim.py:851 ../src/common/connection.py:406 +#: ../src/gajim.py:982 ../src/common/connection.py:524 msgid "Check your connection or try again later." msgstr "Проверьте наÑтройки Ñети или попробуйте еще раз позже." -#: ../src/gajim.py:999 ../src/roster_window.py:1197 +#: ../src/gajim.py:1152 ../src/groupchat_control.py:995 +#, python-format +msgid "%s is now known as %s" +msgstr "%s теперь извеÑтен как %s" + +#: ../src/gajim.py:1168 ../src/roster_window.py:1372 #, python-format msgid "%s is now %s (%s)" msgstr "%s %s (%s)" -#: ../src/gajim.py:1096 -msgid "Your passphrase is incorrect" -msgstr "Ваша Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° неверна" +#. No status message +#: ../src/gajim.py:1171 ../src/groupchat_control.py:1146 +#: ../src/roster_window.py:1375 +#, python-format +msgid "%s is now %s" +msgstr "%s %s" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1292 ../src/groupchat_control.py:955 +msgid "Any occupant is allowed to see your full JID" +msgstr "Любой учаÑтник может увидеть ваш наÑтоÑщий JID" + +#: ../src/gajim.py:1295 +msgid "Room now shows unavailable member" +msgstr "" + +#: ../src/gajim.py:1297 +msgid "room now does not show unavailable members" +msgstr "" + +#: ../src/gajim.py:1300 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1303 +msgid "Room logging is now enabled" +msgstr "ЗапиÑÑŒ логов конференции включена" + +#: ../src/gajim.py:1305 +msgid "Room logging is now disabled" +msgstr "ЗапиÑÑŒ логов конференции выключена" + +#: ../src/gajim.py:1307 +msgid "Room is now non-anonymous" +msgstr "ÐšÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ Ð½Ðµ анонимна" -#: ../src/gajim.py:1097 +#: ../src/gajim.py:1310 +msgid "Room is now semi-anonymous" +msgstr "ÐšÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ Ñ‡Ð°Ñтично анонимна" + +#: ../src/gajim.py:1313 +msgid "Room is now fully-anonymous" +msgstr "ÐšÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñтью анонимна" + +#: ../src/gajim.py:1345 +#, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "Чтобы войти в комнату %s, нужен пароль." + +#: ../src/gajim.py:1379 +msgid "" +"You configured Gajim to use GPG agent, but there is no GPG agent running or " +"it returned a wrong passphrase.\n" +msgstr "" +"Gajim наÑтроен на иÑпользование GPG агента,но GPG агент не запущен или он " +"возвратил неверный пароль.\n" + +#: ../src/gajim.py:1381 msgid "You are currently connected without your OpenPGP key." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñоединены без OpenPGP ключа." -#: ../src/gajim.py:1199 +#: ../src/gajim.py:1384 +msgid "Your passphrase is incorrect" +msgstr "Ваша Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° неверна" + +#: ../src/gajim.py:1396 ../src/secrets.py:44 +msgid "Passphrase Required" +msgstr "ТребуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" + +#: ../src/gajim.py:1397 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Введите парольную фразу GPG Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" + +#: ../src/gajim.py:1409 +msgid "Wrong Passphrase" +msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" + +#: ../src/gajim.py:1410 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "" +"ПожалуйÑта, введите парольную фразу Ð´Ð»Ñ GPG еще раз или нажмите Отмена." + +#: ../src/gajim.py:1519 #, python-format msgid "New mail on %(gmail_mail_address)s" msgstr "Ðовое пиÑьмо на %(gmail_mail_address)s" -#: ../src/gajim.py:1201 +#: ../src/gajim.py:1521 #, python-format msgid "You have %d new mail conversation" msgid_plural "You have %d new mail conversations" @@ -3932,7 +4719,7 @@ msgstr[2] "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %d непрочитанных пиÑьма" #. 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 -#: ../src/gajim.py:1210 +#: ../src/gajim.py:1530 #, python-format msgid "" "\n" @@ -3941,124 +4728,215 @@ msgstr "" "\n" "От: %(from_address)s" -#: ../src/gajim.py:1366 +#: ../src/gajim.py:1708 #, python-format msgid "%s wants to send you a file." msgstr "%s хочет отправить вам файл." -#: ../src/gajim.py:1431 +#: ../src/gajim.py:1773 #, python-format msgid "You successfully received %(filename)s from %(name)s." msgstr "УÑпешно получен файл %(filename)s от %(name)s." #. ft stopped -#: ../src/gajim.py:1435 +#: ../src/gajim.py:1777 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." msgstr "Передача файла %(filename)s от %(name)s приоÑтановлена." -#: ../src/gajim.py:1448 +#: ../src/gajim.py:1790 #, python-format msgid "You successfully sent %(filename)s to %(name)s." msgstr "%(name)s уÑпешно получил отправленный вами файл %(filename)s." #. ft stopped -#: ../src/gajim.py:1452 +#: ../src/gajim.py:1794 #, python-format msgid "File transfer of %(filename)s to %(name)s stopped." msgstr "Передача файла %(filename)s к %(name)s приоÑтановлена." -#: ../src/gajim.py:1558 +#: ../src/gajim.py:1889 +msgid "Session negotiation cancelled" +msgstr "" + +#: ../src/gajim.py:1890 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "" + +#: ../src/gajim.py:1922 ../src/gajim.py:1966 +msgid "Confirm these session options" +msgstr "" + +#: ../src/gajim.py:1923 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t\t%s\n" +"\n" +"\t\tAre these options acceptable?" +msgstr "" + +#: ../src/gajim.py:1967 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" + +#: ../src/gajim.py:2092 msgid "Username Conflict" msgstr "Такое Ð¸Ð¼Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ" -#: ../src/gajim.py:1559 +#: ../src/gajim.py:2093 msgid "Please type a new username for your local account" -msgstr "ПожалуйÑта, введите новое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ учетной запиÑи" +msgstr "" +"ПожалуйÑта, введите новое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ учетной запиÑи" + +#: ../src/gajim.py:2110 +msgid "Ping?" +msgstr "" + +#: ../src/gajim.py:2118 +#, python-format +msgid "Pong! (%s s.)" +msgstr "" + +#: ../src/gajim.py:2124 +msgid "Error." +msgstr "" + +#: ../src/gajim.py:2149 +msgid "Resource Conflict" +msgstr "Такое Ð¸Ð¼Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ" + +#: ../src/gajim.py:2150 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" +"Ð’Ñ‹ уже подÑоединены к Ñтой учетной запиÑи Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же реÑурÑом. Введите " +"другой реÑурÑ" + +#: ../src/gajim.py:2179 +msgid "Error verifying SSL certificate" +msgstr "" + +#: ../src/gajim.py:2180 +#, python-format +msgid "" +"There was an error verifying the SSL certificate of your jabber server: %" +"(error)s\n" +"Do you still want to connect to this server?" +msgstr "" + +#: ../src/gajim.py:2196 +msgid "SSL certificate error" +msgstr "" + +#: ../src/gajim.py:2197 +msgid "" +"It seems SSL certificate has changed or your connection is being hacked. Do " +"you still want to connect and update the fingerprintof the certificate?" +msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1898 +#: ../src/gajim.py:2557 msgid "Could not save your settings and preferences" msgstr "Ðе могу Ñохранить ваши уÑтановки и наÑтройки" -#: ../src/gajim.py:2090 +#. sorted alphanum +#: ../src/gajim.py:2693 ../src/common/config.py:102 +#: ../src/common/config.py:414 ../src/common/optparser.py:206 +#: ../src/common/optparser.py:424 ../src/common/optparser.py:458 +msgid "default" +msgstr "По_умолчанию" + +#: ../src/gajim.py:2779 msgid "Network Manager support not available" msgstr "Network Manager не иÑпользуетÑÑ" -#: ../src/gajim.py:2165 +#: ../src/gajim.py:2884 msgid "Session Management support not available (missing gnome.ui module)" -msgstr "ОтÑутÑтвует поддержка ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑеÑÑиÑми (отÑутÑтвует модуль gnome.ui)" +msgstr "" +"ОтÑутÑтвует поддержка ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑеÑÑиÑми (отÑутÑтвует модуль gnome.ui)" -#: ../src/gajim-remote.py:66 +#: ../src/gajim-remote.py:73 msgid "Shows a help on specific command" msgstr "Показывает помощь Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð¹ команды" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:69 +#: ../src/gajim-remote.py:76 msgid "command" msgstr "команда" -#: ../src/gajim-remote.py:70 +#: ../src/gajim-remote.py:77 msgid "show help on command" msgstr "показать помощь по команде" -#: ../src/gajim-remote.py:74 +#: ../src/gajim-remote.py:81 msgid "Shows or hides the roster window" msgstr "Скрывает или показывает окно роÑтера" -#: ../src/gajim-remote.py:78 -msgid "Popups a window with the next pending event" +#: ../src/gajim-remote.py:85 +msgid "Pops up a window with the next pending event" msgstr "Показывать окно Ñо Ñледующим непрочитанным Ñообщением" -#: ../src/gajim-remote.py:82 +#: ../src/gajim-remote.py:89 msgid "" -"Prints a list of all contacts in the roster. Each contact appear on a " +"Prints a list of all contacts in the roster. Each contact appears on a " "separate line" msgstr "" "Выводит ÑпиÑок вÑех контактов в роÑтере. Каждый контакт будет в отдельной " "Ñтроке" -#: ../src/gajim-remote.py:84 ../src/gajim-remote.py:98 -#: ../src/gajim-remote.py:108 ../src/gajim-remote.py:121 -#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:156 -#: ../src/gajim-remote.py:186 ../src/gajim-remote.py:195 -#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:209 -#: ../src/gajim-remote.py:220 +#: ../src/gajim-remote.py:92 ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:117 ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:144 ../src/gajim-remote.py:153 +#: ../src/gajim-remote.py:174 ../src/gajim-remote.py:204 +#: ../src/gajim-remote.py:213 ../src/gajim-remote.py:220 +#: ../src/gajim-remote.py:227 ../src/gajim-remote.py:238 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:263 msgid "account" msgstr "Учетные запиÑи" -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:92 msgid "show only contacts of the given account" msgstr "показывать контакты только Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ учетной запиÑи" -#: ../src/gajim-remote.py:89 +#: ../src/gajim-remote.py:98 msgid "Prints a list of registered accounts" msgstr "Показывает ÑпиÑок зарегиÑтрированных учетных запиÑей" -#: ../src/gajim-remote.py:93 +#: ../src/gajim-remote.py:102 msgid "Changes the status of account or accounts" msgstr "ИзменÑет ÑÑ‚Ð°Ñ‚ÑƒÑ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи или запиÑей" #. offline, online, chat, away, xa, dnd, invisible should not be translated -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:105 msgid "status" msgstr "ÑтатуÑ" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:105 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "один из: отключен, в Ñети, чат, отошел, недоÑтупен, не беÑпокоить, невидимка" +msgstr "" +"один из: отключен, в Ñети, чат, отошел, недоÑтупен, не беÑпокоить, невидимка" -#: ../src/gajim-remote.py:97 ../src/gajim-remote.py:118 -#: ../src/gajim-remote.py:132 +#: ../src/gajim-remote.py:106 ../src/gajim-remote.py:127 +#: ../src/gajim-remote.py:141 ../src/gajim-remote.py:152 msgid "message" msgstr "Ñообщение" -#: ../src/gajim-remote.py:97 +#: ../src/gajim-remote.py:106 msgid "status message" msgstr "Ñообщение Ñервера" -#: ../src/gajim-remote.py:98 +#: ../src/gajim-remote.py:107 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -4067,19 +4945,19 @@ msgstr "" "изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð²Ñех учетных запиÑей, у которых уÑтановлена Ð¾Ð¿Ñ†Ð¸Ñ " "\"Ñинхронизировать Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ ÑтатуÑом\"" -#: ../src/gajim-remote.py:104 +#: ../src/gajim-remote.py:113 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Показывает окно беÑеды, чтобы вы могли отправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ñƒ" -#: ../src/gajim-remote.py:106 +#: ../src/gajim-remote.py:115 msgid "JID of the contact that you want to chat with" msgstr "JID контакта, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ вы хотели бы побеÑедовать" -#: ../src/gajim-remote.py:108 ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:117 ../src/gajim-remote.py:204 msgid "if specified, contact is taken from the contact list of this account" msgstr "еÑли указано, контакт будет взÑÑ‚ из контакт-лиÑта Ñтой учетной запиÑи" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:122 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 " @@ -4089,27 +4967,31 @@ msgstr "" "ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ опциональны. ЕÑли вы хотите наÑтроить лишь 'учетную запиÑÑŒ', " "без 'OpenPGP ключа', проÑто уÑтановите 'OpenPGP ключ' в ''." -#: ../src/gajim-remote.py:117 ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:126 ../src/gajim-remote.py:139 msgid "JID of the contact that will receive the message" msgstr "JID контакта, который получит Ñообщение" -#: ../src/gajim-remote.py:118 ../src/gajim-remote.py:132 +#: ../src/gajim-remote.py:127 ../src/gajim-remote.py:141 +#: ../src/gajim-remote.py:152 msgid "message contents" msgstr "Ñодержимое ÑообщениÑ" -#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:128 ../src/gajim-remote.py:142 msgid "pgp key" msgstr "PGP ключ" -#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:128 ../src/gajim-remote.py:142 msgid "if specified, the message will be encrypted using this public key" -msgstr "еÑли указано, Ñообщение будет зашифровано Ñ Ð¸Ñпользованием открытого ключа" +msgstr "" +"еÑли указано, Ñообщение будет зашифровано Ñ Ð¸Ñпользованием открытого ключа" -#: ../src/gajim-remote.py:121 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:130 ../src/gajim-remote.py:144 +#: ../src/gajim-remote.py:153 msgid "if specified, the message will be sent using this account" -msgstr "еÑли указано, Ñообщение будет отправлено Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" +msgstr "" +"еÑли указано, Ñообщение будет отправлено Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" -#: ../src/gajim-remote.py:126 +#: ../src/gajim-remote.py:135 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 " @@ -4119,138 +5001,173 @@ msgstr "" "ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ опциональны. ЕÑли вы хотите наÑтроить лишь 'учетную запиÑÑŒ', " "без 'OpenPGP ключа', проÑто уÑтановите 'OpenPGP ключ' в ''." -#: ../src/gajim-remote.py:131 +#: ../src/gajim-remote.py:140 msgid "subject" msgstr "тема" -#: ../src/gajim-remote.py:131 +#: ../src/gajim-remote.py:140 msgid "message subject" msgstr "тема ÑообщениÑ" -#: ../src/gajim-remote.py:140 +#: ../src/gajim-remote.py:149 +msgid "Sends new message to a groupchat you've joined." +msgstr "" + +#: ../src/gajim-remote.py:151 +msgid "JID of the room that will receive the message" +msgstr "JID контакта, который получит Ñообщение" + +#: ../src/gajim-remote.py:158 msgid "Gets detailed info on a contact" msgstr "Получает детальную информацию о контакте" -#: ../src/gajim-remote.py:142 ../src/gajim-remote.py:155 -#: ../src/gajim-remote.py:185 ../src/gajim-remote.py:194 +#: ../src/gajim-remote.py:160 ../src/gajim-remote.py:173 +#: ../src/gajim-remote.py:203 ../src/gajim-remote.py:212 msgid "JID of the contact" msgstr "JID контакта" -#: ../src/gajim-remote.py:146 +#: ../src/gajim-remote.py:164 msgid "Gets detailed info on a account" msgstr "Получает детальную информацию о учетной запиÑи" -#: ../src/gajim-remote.py:148 +#: ../src/gajim-remote.py:166 msgid "Name of the account" msgstr "Ð˜Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи" -#: ../src/gajim-remote.py:152 +#: ../src/gajim-remote.py:170 msgid "Sends file to a contact" msgstr "ОтправлÑет контакту файл" -#: ../src/gajim-remote.py:154 +#: ../src/gajim-remote.py:172 msgid "file" msgstr "файл" -#: ../src/gajim-remote.py:154 +#: ../src/gajim-remote.py:172 msgid "File path" msgstr "Путь до файла" -#: ../src/gajim-remote.py:156 +#: ../src/gajim-remote.py:174 msgid "if specified, file will be sent using this account" -msgstr "еÑли указано, файл будет отправлен Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" +msgstr "" +"еÑли указано, файл будет отправлен Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" -#: ../src/gajim-remote.py:161 +#: ../src/gajim-remote.py:179 msgid "Lists all preferences and their values" msgstr "Показывает вÑе параметры Ñ Ð¸Ñ… значениÑми" -#: ../src/gajim-remote.py:165 +#: ../src/gajim-remote.py:183 msgid "Sets value of 'key' to 'value'." msgstr "ПриÑваивает 'ключу' в 'значение'" -#: ../src/gajim-remote.py:167 +#: ../src/gajim-remote.py:185 msgid "key=value" msgstr "ключ=значение" -#: ../src/gajim-remote.py:167 +#: ../src/gajim-remote.py:185 msgid "'key' is the name of the preference, 'value' is the value to set it to" -msgstr "'ключ' Ñто название параметра, а 'значение' Ñто то, что ему приÑваивают" +msgstr "" +"'ключ' Ñто название параметра, а 'значение' Ñто то, что ему приÑваивают" -#: ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:190 msgid "Deletes a preference item" msgstr "УдалÑет параметр" -#: ../src/gajim-remote.py:174 +#: ../src/gajim-remote.py:192 msgid "key" msgstr "ключ" -#: ../src/gajim-remote.py:174 +#: ../src/gajim-remote.py:192 msgid "name of the preference to be deleted" msgstr "Ð¸Ð¼Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°, который нужно удалить" -#: ../src/gajim-remote.py:178 +#: ../src/gajim-remote.py:196 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "СохранÑет текущее ÑоÑтоÑние наÑтроек Gajim в файл .config" -#: ../src/gajim-remote.py:183 +#: ../src/gajim-remote.py:201 msgid "Removes contact from roster" msgstr "УдалÑет контакт из роÑтера" -#: ../src/gajim-remote.py:192 +#: ../src/gajim-remote.py:210 msgid "Adds contact to roster" msgstr "ДобавлÑет контакт в роÑтер" -#: ../src/gajim-remote.py:194 +#: ../src/gajim-remote.py:212 msgid "jid" msgstr "JID" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:213 msgid "Adds new contact to this account" msgstr "ДобавлÑет новый контакт Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ учетной запиÑи" -#: ../src/gajim-remote.py:200 +#: ../src/gajim-remote.py:218 msgid "Returns current status (the global one unless account is specified)" msgstr "" "Возвращает текущий ÑÑ‚Ð°Ñ‚ÑƒÑ (по умолчанию глобальный, еÑли не указана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ " "запиÑÑŒ)" -#: ../src/gajim-remote.py:207 -msgid "Returns current status message(the global one unless account is specified)" +#: ../src/gajim-remote.py:225 +msgid "" +"Returns current status message(the global one unless account is specified)" msgstr "" "Возвращает текущий ÑÑ‚Ð°Ñ‚ÑƒÑ (по умолчанию глобальный, еÑли не указана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ " "запиÑÑŒ)" -#: ../src/gajim-remote.py:214 -msgid "Returns number of unreaded messages" +#: ../src/gajim-remote.py:232 +msgid "Returns number of unread messages" msgstr "Возвращает количеÑтво непрочитанных Ñообщений" -#: ../src/gajim-remote.py:218 +#: ../src/gajim-remote.py:236 msgid "Opens 'Start Chat' dialog" msgstr "Открыть диалог «Ðачать беÑеду»" -#: ../src/gajim-remote.py:220 +#: ../src/gajim-remote.py:238 msgid "Starts chat, using this account" msgstr "Ðачать беÑеду Ñ Ñтой учетной запиÑи" -#: ../src/gajim-remote.py:224 +#: ../src/gajim-remote.py:242 msgid "Sends custom XML" msgstr "ОтправлÑет произвольный XML" -#: ../src/gajim-remote.py:226 +#: ../src/gajim-remote.py:244 msgid "XML to send" msgstr "ОтправлÑемый XML" -#: ../src/gajim-remote.py:227 -msgid "" -"Account in which the xml will be sent; if not specified, xml will be sent to " -"all accounts" -msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, из которой будет отправлен XML." +#: ../src/gajim-remote.py:245 +msgid "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" +msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, из которой будет отправлен XML." + +#: ../src/gajim-remote.py:251 +msgid "Handle a xmpp:/ uri" +msgstr "" + +#: ../src/gajim-remote.py:253 +msgid "uri" +msgstr "" + +#: ../src/gajim-remote.py:258 +msgid "Join a MUC room" +msgstr "" + +#: ../src/gajim-remote.py:260 +msgid "room" +msgstr "комната" + +#: ../src/gajim-remote.py:261 +msgid "nick" +msgstr "Ðик" + +#: ../src/gajim-remote.py:262 +msgid "password" +msgstr "Пароль:" -#: ../src/gajim-remote.py:249 +#: ../src/gajim-remote.py:285 msgid "Missing argument \"contact_jid\"" msgstr "Пропущен аргумент \"JID контакта\"" -#: ../src/gajim-remote.py:268 +#: ../src/gajim-remote.py:304 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -4259,11 +5176,11 @@ msgstr "" "'%s' не в вашем роÑтере\n" "ПожалуйÑта, укажите учетную запиÑÑŒ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ ÑообщениÑ." -#: ../src/gajim-remote.py:271 +#: ../src/gajim-remote.py:307 msgid "You have no active account" msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ активной учетной запиÑи" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:371 #, python-format msgid "" "Usage: %s %s %s \n" @@ -4272,16 +5189,16 @@ msgstr "" "ИÑпользование: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:338 +#: ../src/gajim-remote.py:374 msgid "Arguments:" msgstr "Ðргументы:" -#: ../src/gajim-remote.py:342 +#: ../src/gajim-remote.py:378 #, python-format msgid "%s not found" msgstr "%s не найден" -#: ../src/gajim-remote.py:346 +#: ../src/gajim-remote.py:382 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -4290,7 +5207,16 @@ msgstr "" "ИÑпользование: %s команда [аргумента]\n" "Команда одна из:\n" -#: ../src/gajim-remote.py:420 +#: ../src/gajim-remote.py:455 +#, python-format +msgid "" +"Too many arguments. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Много аргументов. \n" +"Ðаберите \"%s help %s\" Ð´Ð»Ñ Ñправки" + +#: ../src/gajim-remote.py:459 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -4299,135 +5225,152 @@ msgstr "" "Ðргумент \"%s\" не задан. \n" "Ðаберите \"%s\" help \"%s\" Ð´Ð»Ñ Ñправки" -#: ../src/gajim_themes_window.py:60 +#: ../src/gajim-remote.py:477 +msgid "Wrong uri" +msgstr "Ðеверный хоÑÑ‚" + +#: ../src/gajim_themes_window.py:67 msgid "Theme" msgstr "Тема" +#: ../src/gajim_themes_window.py:105 +msgid "You cannot make changes to the default theme" +msgstr "Ð’Ñ‹ не можете удалить вашу текущую тему" + +#: ../src/gajim_themes_window.py:106 +msgid "Please create a clean new theme with your desired name." +msgstr "" + #. don't confuse translators -#: ../src/gajim_themes_window.py:155 +#: ../src/gajim_themes_window.py:180 msgid "theme name" msgstr "Ð¸Ð¼Ñ Ñ‚eмы" -#: ../src/gajim_themes_window.py:172 +#: ../src/gajim_themes_window.py:197 msgid "You cannot delete your current theme" msgstr "Ð’Ñ‹ не можете удалить вашу текущую тему" -#: ../src/gajim_themes_window.py:173 +#: ../src/gajim_themes_window.py:198 msgid "Please first choose another for your current theme." msgstr "ПожалуйÑта, выберите Ñначала другую тему." -#: ../src/groupchat_control.py:106 -msgid "Private Chat" -msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð±ÐµÑеда" - -#: ../src/groupchat_control.py:106 -msgid "Private Chats" -msgstr "Личные беÑеды" - -#: ../src/groupchat_control.py:123 +#: ../src/groupchat_control.py:139 msgid "Sending private message failed" msgstr "Ðе удалоÑÑŒ отправить личное Ñообщение" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:125 +#: ../src/groupchat_control.py:141 #, python-format msgid "You are no longer in group chat \"%s\" or \"%s\" has left." msgstr "Ð’Ñ‹ больше не находитеÑÑŒ в комнате \"%s\" или \"%s\" вышел." -#: ../src/groupchat_control.py:144 -msgid "Group Chat" -msgstr "Комната" - -#: ../src/groupchat_control.py:144 -msgid "Group Chats" -msgstr "Комнаты" - -#: ../src/groupchat_control.py:318 +#: ../src/groupchat_control.py:350 msgid "Insert Nickname" msgstr "Ð’Ñтавить ник" +#: ../src/groupchat_control.py:882 +msgid "Really send file?" +msgstr "Отправить файл?" + +#: ../src/groupchat_control.py:883 +#, python-format +msgid "If you send a file to %s, he/she will know your real Jabber ID." +msgstr "" + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:958 +msgid "Room logging is enabled" +msgstr "ЗапиÑÑŒ логов конференции включена" + +#: ../src/groupchat_control.py:960 +msgid "A new room has been created" +msgstr "ÐÐ¾Ð²Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð° была Ñоздана" + +#: ../src/groupchat_control.py:963 +msgid "The server has assigned or modified your roomnick" +msgstr "" + #. do not print 'kicked by None' -#: ../src/groupchat_control.py:831 +#: ../src/groupchat_control.py:969 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s выгнали из комнаты: %(reason)s" -#: ../src/groupchat_control.py:835 +#: ../src/groupchat_control.py:973 #, 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:842 +#: ../src/groupchat_control.py:980 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s запретили заходить в комнату: %(reason)s" -#: ../src/groupchat_control.py:846 +#: ../src/groupchat_control.py:984 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(who)s запретил %(nick)s заходить в комнату: %(reason)s" -#: ../src/groupchat_control.py:854 +#: ../src/groupchat_control.py:993 #, python-format msgid "You are now known as %s" msgstr "Ð’Ñ‹ теперь извеÑтны как %s" -#: ../src/groupchat_control.py:856 +#: ../src/groupchat_control.py:1029 ../src/groupchat_control.py:1033 +#: ../src/groupchat_control.py:1038 #, python-format -msgid "%s is now known as %s" -msgstr "%s теперь извеÑтен как %s" +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s выгнали из комнаты (%(reason)s)" + +#: ../src/groupchat_control.py:1030 +msgid "affiliation changed" +msgstr "" + +#: ../src/groupchat_control.py:1035 +msgid "room configuration changed to members-only" +msgstr "" + +#: ../src/groupchat_control.py:1040 +msgid "system shutdown" +msgstr "" -#: ../src/groupchat_control.py:936 +#: ../src/groupchat_control.py:1139 #, python-format msgid "%s has left" msgstr "%s ушел" -#: ../src/groupchat_control.py:941 +#: ../src/groupchat_control.py:1144 #, python-format msgid "%s has joined the group chat" msgstr "%s зашёл в комнату" -#. No status message -#: ../src/groupchat_control.py:943 ../src/roster_window.py:1200 -#, python-format -msgid "%s is now %s" -msgstr "%s %s" +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1257 ../src/groupchat_control.py:1536 +msgid "Invalid nickname" +msgstr "Ðеверное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" + +#: ../src/groupchat_control.py:1258 ../src/groupchat_control.py:1537 +msgid "The nickname has not allowed characters." +msgstr "Ð’ Jabber ID комнаты или Ñервера ÑодержатÑÑ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑтимые Ñимволы." -#: ../src/groupchat_control.py:1062 ../src/groupchat_control.py:1080 -#: ../src/groupchat_control.py:1173 ../src/groupchat_control.py:1190 +#: ../src/groupchat_control.py:1281 ../src/groupchat_control.py:1299 +#: ../src/groupchat_control.py:1383 ../src/groupchat_control.py:1400 #, python-format msgid "Nickname not found: %s" msgstr "Ðик не обнаружен: %s" -#: ../src/groupchat_control.py:1096 +#: ../src/groupchat_control.py:1315 msgid "This group chat has no subject" msgstr "У Ñтой комнаты нет темы" -#: ../src/groupchat_control.py:1109 +#: ../src/groupchat_control.py:1326 #, 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:1116 ../src/groupchat_control.py:1144 -#, python-format -msgid "%s does not appear to be a valid JID" -msgstr "%s не ÑвлÑетÑÑ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¼ JID" - -#: ../src/groupchat_control.py:1227 -#, python-format -msgid "No such command: /%s (if you want to send this, prefix it with /say)" -msgstr "" -"Ðет такой команды: /%s (еÑли вы хотите её проÑто передать, то добавьте к ней " -"Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ /say)" - -#: ../src/groupchat_control.py:1250 -#, python-format -msgid "Commands: %s" -msgstr "Команды: %s" - -#: ../src/groupchat_control.py:1252 +#: ../src/groupchat_control.py:1463 #, python-format msgid "" "Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " @@ -4440,29 +5383,24 @@ msgstr "" "данный момент находитÑÑ Ð² комнате, то он/она/оно также будет выгнан. ÐЕ " "поддерживает пробелы в никах." -#: ../src/groupchat_control.py:1259 +#: ../src/groupchat_control.py:1470 #, python-format -msgid "Usage: /%s <nickname>, opens a private chat window to the specified occupant." -msgstr "ИÑпользование: /%s <ник>, открывает окно привата Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ поÑетителем." - -#: ../src/groupchat_control.py:1263 -#, python-format -msgid "Usage: /%s, clears the text window." -msgstr "ИÑпользование: /%s, очищает текÑтовое окно." +msgid "" +"Usage: /%s <nickname>, opens a private chat window with the specified " +"occupant." +msgstr "" +"ИÑпользование: /%s <ник>, открывает окно привата Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ поÑетителем." -#: ../src/groupchat_control.py:1265 +#: ../src/groupchat_control.py:1476 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " "specified." -msgstr "ИÑпользование: /%s [причина], закрывает текущее окно или вкладку, Ð¿Ñ€Ð¸Ð²Ð¾Ð´Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ñƒ, еÑли она указана." - -#: ../src/groupchat_control.py:1268 -#, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "ИÑпользование: /%s, Ñкрывает кнопки беÑеды." +msgstr "" +"ИÑпользование: /%s [причина], закрывает текущее окно или вкладку, Ð¿Ñ€Ð¸Ð²Ð¾Ð´Ñ " +"причину, еÑли она указана." -#: ../src/groupchat_control.py:1271 +#: ../src/groupchat_control.py:1482 #, python-format msgid "" "Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " @@ -4471,7 +5409,7 @@ msgstr "" "ИÑпользование: /%s <JID> [причина], приглашает JID в текущую комнату, Ñ " "возможным указанием причины." -#: ../src/groupchat_control.py:1275 +#: ../src/groupchat_control.py:1486 #, python-format msgid "" "Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " @@ -4480,7 +5418,7 @@ msgstr "" "ИÑпользование: /%s <комната>@<Ñервер>[/ник], предлагает приÑоединитьÑÑ Ðº " "комната@Ñервер, Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ð¼ указанием ника." -#: ../src/groupchat_control.py:1279 +#: ../src/groupchat_control.py:1490 #, python-format msgid "" "Usage: /%s <nickname> [reason], removes the occupant specified by nickname " @@ -4490,118 +5428,126 @@ msgstr "" "ИÑпользование: /%s <ник> [причина], удалÑет поÑÐµÑ‚Ð¸Ñ‚ÐµÐ»Ñ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ ником из " "комнаты Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ð¼ указанием причины. ÐЕ поддерживает пробелы в нике." -#: ../src/groupchat_control.py:1284 -#, python-format -msgid "" -"Usage: /%s <action>, sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"ИÑпользование: /%s <дейÑтвие>, Ñовершает дейÑтвие в текущей комнате. " -"ИÑпользуйте третье лицо (например, «/%s взрываетÑÑ».)" - -#: ../src/groupchat_control.py:1288 +#: ../src/groupchat_control.py:1499 #, python-format msgid "" -"Usage: /%s <nickname> [message], opens a private message windowand sends " +"Usage: /%s <nickname> [message], opens a private message window and sends " "message to the occupant specified by nickname." msgstr "" "ИÑпользование: /%s <ник> [Ñообщение], открывает окно личной беÑеды и " "отÑылает Ñообщение поÑетителю Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ ником." -#: ../src/groupchat_control.py:1293 +#: ../src/groupchat_control.py:1504 #, python-format msgid "Usage: /%s <nickname>, changes your nickname in current group chat." msgstr "ИÑпользование: /%s <ник>, менÑет ваш ник в текущей комнате." -#: ../src/groupchat_control.py:1297 +#: ../src/groupchat_control.py:1508 #, python-format msgid "Usage: /%s , display the names of group chat occupants." msgstr "ИÑпользование: /%s, показывает ÑпиÑок приÑутÑтвующих в комнате." -#: ../src/groupchat_control.py:1301 +#: ../src/groupchat_control.py:1512 #, python-format msgid "Usage: /%s [topic], displays or updates the current group chat topic." -msgstr "ИÑпользование: /%s [тема], показывает или изменÑет текущую тему комнаты." +msgstr "" +"ИÑпользование: /%s [тема], показывает или изменÑет текущую тему комнаты." -#: ../src/groupchat_control.py:1304 +#: ../src/groupchat_control.py:1515 #, python-format -msgid "Usage: /%s <message>, sends a message without looking for other commands." +msgid "" +"Usage: /%s <message>, sends a message without looking for other commands." msgstr "" "ИÑпользование: /%s <Ñообщение>, отÑылает Ñообщение без поиÑка других команд " "в нем." -#: ../src/groupchat_control.py:1307 -#, python-format -msgid "No help info for /%s" -msgstr "Ðет подÑказки Ð´Ð»Ñ /%s" - -#: ../src/groupchat_control.py:1356 +#: ../src/groupchat_control.py:1621 #, python-format msgid "Are you sure you want to leave group chat \"%s\"?" msgstr "Ð’Ñ‹ точно хотите выйти из комнаты \"%s\"?" -#: ../src/groupchat_control.py:1358 -msgid "If you close this window, you will be disconnected from this group chat." +#: ../src/groupchat_control.py:1623 +msgid "" +"If you close this window, you will be disconnected from this group chat." msgstr "ЕÑли вы закроете Ñто окно, то вы выйдете из Ñтой комнаты." -#: ../src/groupchat_control.py:1362 ../src/roster_window.py:3962 +#: ../src/groupchat_control.py:1627 ../src/roster_window.py:4902 msgid "Do _not ask me again" msgstr "Ðе _переÑпрашивать" -#: ../src/groupchat_control.py:1396 +#: ../src/groupchat_control.py:1659 msgid "Changing Subject" msgstr "ИзменÑет тему" -#: ../src/groupchat_control.py:1397 +#: ../src/groupchat_control.py:1660 msgid "Please specify the new subject:" msgstr "ПожалуйÑта, введите новую тему:" -#: ../src/groupchat_control.py:1406 +#: ../src/groupchat_control.py:1669 msgid "Changing Nickname" msgstr "ИзменÑет ник" -#: ../src/groupchat_control.py:1407 +#: ../src/groupchat_control.py:1670 msgid "Please specify the new nickname you want to use:" msgstr "ПожалуйÑта, введите новый ник, который вы хотите иÑпользовать:" -#: ../src/groupchat_control.py:1432 +# ÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð³Ð´Ðµ вылазит меÑедж - нужно приÑмотретьÑÑ +#. Ask for a reason +#: ../src/groupchat_control.py:1685 +#, fuzzy, python-format +msgid "Destroying %s" +msgstr "Удаление: %s" + +#: ../src/groupchat_control.py:1686 +msgid "" +"You are going to definitively destroy this room.\n" +"You may specify a reason below:" +msgstr "" +"Ð’Ñ‹ хотите уничтожить комнату.\n" +"Ð’Ñ‹ можете указать причину:" + +#: ../src/groupchat_control.py:1688 +msgid "You may also enter an alternate venue:" +msgstr "ÐÐ»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°:" + +#: ../src/groupchat_control.py:1720 msgid "Bookmark already set" msgstr "Закладка уже уÑтановлена" -#: ../src/groupchat_control.py:1433 +#: ../src/groupchat_control.py:1721 #, python-format msgid "Group Chat \"%s\" is already in your bookmarks." msgstr "Комната \"%s\" уже еÑÑ‚ÑŒ в ваших закладках." -#: ../src/groupchat_control.py:1442 +#: ../src/groupchat_control.py:1730 msgid "Bookmark has been added successfully" msgstr "Закладка уÑпешно добавлена" -#: ../src/groupchat_control.py:1443 +#: ../src/groupchat_control.py:1731 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Ð’Ñ‹ можете управлÑÑ‚ÑŒ закладками через меню \"ДейÑтвиÑ\" в роÑтере." #. ask for reason -#: ../src/groupchat_control.py:1569 +#: ../src/groupchat_control.py:1883 #, python-format msgid "Kicking %s" msgstr "Кикнуть %s" -#: ../src/groupchat_control.py:1570 ../src/groupchat_control.py:1852 +#: ../src/groupchat_control.py:1884 ../src/groupchat_control.py:2184 msgid "You may specify a reason below:" msgstr "Ð’Ñ‹ можете указать причину ниже:" #. ask for reason -#: ../src/groupchat_control.py:1851 +#: ../src/groupchat_control.py:2183 #, python-format msgid "Banning %s" msgstr "Забанить %s" -#: ../src/gtkexcepthook.py:41 +#: ../src/gtkexcepthook.py:46 msgid "A programming error has been detected" msgstr "Обнаружена ошибка в программе" -#: ../src/gtkexcepthook.py:42 +#: ../src/gtkexcepthook.py:47 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -4609,83 +5555,98 @@ msgstr "" "Возможно Ñто не так Ñтрашно, но вÑе равно Ñтоит Ñообщить об Ñтом " "разработчикам." -#: ../src/gtkexcepthook.py:48 +#: ../src/gtkexcepthook.py:53 msgid "_Report Bug" msgstr "_Сообщить об ошибке" -#: ../src/gtkexcepthook.py:71 +#: ../src/gtkexcepthook.py:76 msgid "Details" msgstr "Детали" #. we talk about file -#: ../src/gtkgui_helpers.py:153 ../src/gtkgui_helpers.py:168 +#: ../src/gtkgui_helpers.py:162 ../src/gtkgui_helpers.py:177 #, python-format msgid "Error: cannot open %s for reading" msgstr "Ошибка: не могу открыть %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: ../src/gtkgui_helpers.py:293 +#: ../src/gtkgui_helpers.py:347 msgid "Error reading file:" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°:" -#: ../src/gtkgui_helpers.py:296 +#: ../src/gtkgui_helpers.py:350 msgid "Error parsing file:" msgstr "Ошибка обработки файла:" #. do not traceback (could be a permission problem) #. we talk about a file here -#: ../src/gtkgui_helpers.py:334 +#: ../src/gtkgui_helpers.py:387 #, python-format msgid "Could not write to %s. Session Management support will not work" msgstr "Ðе могу пиÑать в %s. Управление ÑеÑÑиÑми будет недоÑтупно" -#: ../src/gtkgui_helpers.py:728 +#. xmpp: is currently handled by another program, so ask the user +#: ../src/gtkgui_helpers.py:719 +msgid "Gajim is not the default Jabber client" +msgstr "Gajim не ÑвлÑетÑÑ Ð¾Ñновным jabber-клиентом" + +#: ../src/gtkgui_helpers.py:720 +msgid "Would you like to make Gajim the default Jabber client?" +msgstr "Ð’Ñ‹ хотите Ñделать Gajim оÑновным jabber-клиентом?" + +#: ../src/gtkgui_helpers.py:721 +msgid "Always check to see if Gajim is the default Jabber client on startup" +msgstr "" +"Ð’Ñегда проверÑÑ‚ÑŒ при запуÑке ÑвлÑетÑÑ Ð»Ð¸ Gajim оÑновным jabber-клиентом" + +#: ../src/gtkgui_helpers.py:818 msgid "Extension not supported" msgstr "РаÑширение не поддерживаетÑÑ" -#: ../src/gtkgui_helpers.py:729 +#: ../src/gtkgui_helpers.py:819 #, python-format msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" msgstr "" "Изображение Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить в формате %(type)s. Сохранить как %" "(new_filename)s?" -#: ../src/gtkgui_helpers.py:738 +#: ../src/gtkgui_helpers.py:828 msgid "Save Image as..." msgstr "Сохранить изображение как..." -#: ../src/history_manager.py:64 +#: ../src/history_manager.py:73 msgid "Cannot find history logs database" msgstr "Ðе могу найти базу данных иÑтории" #. holds jid -#: ../src/history_manager.py:107 +#: ../src/history_manager.py:113 msgid "Contacts" msgstr "Контакты" #. holds time -#: ../src/history_manager.py:120 ../src/history_manager.py:160 -#: ../src/history_window.py:86 +#: ../src/history_manager.py:126 ../src/history_manager.py:166 +#: ../src/history_window.py:121 msgid "Date" msgstr "Дата" #. holds nickname -#: ../src/history_manager.py:126 ../src/history_manager.py:178 +#: ../src/history_manager.py:132 ../src/history_manager.py:184 msgid "Nickname" msgstr "Ðик" #. holds message -#: ../src/history_manager.py:134 ../src/history_manager.py:166 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:140 ../src/history_manager.py:172 +#: ../src/history_window.py:129 msgid "Message" msgstr "Сообщение" -#: ../src/history_manager.py:186 +#: ../src/history_manager.py:192 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" -msgstr "Ð’Ñ‹ хотите очиÑтить базу данных? (КРÐЙÐЕ ÐЕ РЕКОМЕÐДУЕТСЯ ЕСЛИ GAJIM ЗÐПУЩЕÐ)" +msgstr "" +"Ð’Ñ‹ хотите очиÑтить базу данных? (КРÐЙÐЕ ÐЕ РЕКОМЕÐДУЕТСЯ ЕСЛИ GAJIM ЗÐПУЩЕÐ)" -#: ../src/history_manager.py:188 +#: ../src/history_manager.py:194 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 " @@ -4699,235 +5660,300 @@ msgstr "" "\n" "ЕÑли вы нажали ДÐ, пожалуйÑта подождите..." -#: ../src/history_manager.py:400 +#: ../src/history_manager.py:406 msgid "Exporting History Logs..." msgstr "ÐкÑпортирую иÑторию..." -#: ../src/history_manager.py:476 +#: ../src/history_manager.py:481 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s в %(time)s Ñказал: %(message)s\n" -#: ../src/history_manager.py:514 +#: ../src/history_manager.py:518 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:518 ../src/history_manager.py:554 +#: ../src/history_manager.py:522 ../src/history_manager.py:557 msgid "This is an irreversible operation." msgstr "Ðто Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ‚Ð¸Ð¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ" -#: ../src/history_manager.py:551 +#: ../src/history_manager.py:554 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:103 ../src/history_window.py:105 +#: ../src/history_window.py:209 ../src/history_window.py:211 #, python-format msgid "Conversation History with %s" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ %s" -#: ../src/history_window.py:261 +#: ../src/history_window.py:342 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s теперь %(status)s: %(status_msg)s" -#: ../src/history_window.py:265 ../src/notify.py:198 +#: ../src/history_window.py:346 ../src/notify.py:219 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s теперь %(status)s" -#: ../src/history_window.py:271 +#: ../src/history_window.py:352 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑƒÑтановлен в: %(status)s: %(status_msg)s" -#: ../src/history_window.py:274 +#: ../src/history_window.py:355 #, python-format msgid "Status is now: %(status)s" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑƒÑтановлен в: %(status)s" -#: ../src/message_window.py:273 +#: ../src/htmltextview.py:586 ../src/htmltextview.py:597 +msgid "Timeout loading image" +msgstr "Ðе могу загрузить изображение" + +#: ../src/htmltextview.py:607 +msgid "Image is too big" +msgstr "Изображение Ñлишком большое" + +#: ../src/message_window.py:350 +msgid "Chats" +msgstr "Чаты" + +#: ../src/message_window.py:352 +msgid "Group Chats" +msgstr "Комнаты" + +#: ../src/message_window.py:354 +msgid "Private Chats" +msgstr "Личные беÑеды" + +#: ../src/message_window.py:356 msgid "Messages" msgstr "СообщениÑ" -#: ../src/message_window.py:274 +#: ../src/message_window.py:357 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/notify.py:196 +#: ../src/negotiation.py:13 +msgid "- messages will be logged" +msgstr "- ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ запиÑаны в лог" + +#: ../src/negotiation.py:15 +msgid "- messages will not be logged" +msgstr "- ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ будут запиÑаны в лог" + +#: ../src/negotiation.py:24 +msgid "OK to continue with negotiation?" +msgstr "" + +#: ../src/negotiation.py:25 +#, python-format +msgid "" +"You've begun an encrypted session with %s, but it can't be guaranteed that " +"you're talking directly to the person you think you are.\n" +"\n" +"You should speak with them directly (in person or on the phone) and confirm " +"that their Short Authentication String is identical to this one: %s\n" +"\n" +"Would you like to continue with the encrypted session?" +msgstr "" + +#: ../src/negotiation.py:31 +msgid "Yes, I verified the Short Authentication String" +msgstr "" + +#: ../src/notify.py:217 #, python-format msgid "%(nick)s Changed Status" msgstr "%(nick)s менÑет ÑтатуÑ" -#: ../src/notify.py:206 +#: ../src/notify.py:227 #, python-format msgid "%(nickname)s Signed In" msgstr "%(nickname)s подключаетÑÑ" -#: ../src/notify.py:214 +#: ../src/notify.py:235 #, python-format msgid "%(nickname)s Signed Out" msgstr "%(nickname)s отключаетÑÑ" -#: ../src/notify.py:226 +#: ../src/notify.py:247 #, python-format msgid "New Single Message from %(nickname)s" msgstr "Ðовое Ñообщение от %(nickname)s" -#: ../src/notify.py:234 +#: ../src/notify.py:255 #, python-format msgid "New Private Message from group chat %s" msgstr "Ðовое личное Ñообщение из комнаты %s" -#: ../src/notify.py:235 +#: ../src/notify.py:257 #, python-format msgid "%(nickname)s: %(message)s" msgstr "%(nickname)s: %(message)s" -#: ../src/notify.py:241 +#: ../src/notify.py:260 +#, python-format +msgid "Messaged by %(nickname)s" +msgstr "Ðовое Ñообщение от %(nickname)s" + +#: ../src/notify.py:266 #, python-format msgid "New Message from %(nickname)s" msgstr "Ðовое Ñообщение от %(nickname)s" -#: ../src/profile_window.py:72 ../src/profile_window.py:376 +#: ../src/profile_window.py:54 msgid "Retrieving profile..." msgstr "Получаю данные..." -#: ../src/profile_window.py:107 ../src/profile_window.py:203 -#: ../src/profile_window.py:212 ../src/profile_window.py:370 -msgid "Click to set your avatar" -msgstr "УÑтановить Ñвою аватару" +#: ../src/profile_window.py:107 ../src/roster_window.py:1914 +msgid "File is empty" +msgstr "ПуÑтой файл" + +#: ../src/profile_window.py:110 ../src/roster_window.py:1917 +msgid "File does not exist" +msgstr "Файл не ÑущеÑтвует" #. keep identation -#: ../src/profile_window.py:136 +#. unknown format +#: ../src/profile_window.py:124 ../src/profile_window.py:140 +#: ../src/roster_window.py:1919 ../src/roster_window.py:1930 msgid "Could not load image" msgstr "Ðе могу загрузить изображение" -#: ../src/profile_window.py:238 +#: ../src/profile_window.py:250 msgid "Information received" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð°" -#: ../src/profile_window.py:308 +#: ../src/profile_window.py:319 msgid "Without a connection you can not publish your contact information." msgstr "Ðеобходимо приÑоединитьÑÑ Ðº Ñерверу Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð»Ð¸Ñ‡Ð½Ð¾Ð¹ информации" -#: ../src/profile_window.py:320 +#: ../src/profile_window.py:331 msgid "Sending profile..." msgstr "ОтправлÑÑŽ данные..." -#: ../src/profile_window.py:328 -msgid "Information published" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ¾Ð²Ð°Ð½Ð°" - -#: ../src/profile_window.py:340 +#: ../src/profile_window.py:346 msgid "Information NOT published" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÐЕ опубликована" -#: ../src/profile_window.py:347 +#: ../src/profile_window.py:353 msgid "vCard publication failed" msgstr "ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ vCard не удалаÑÑŒ" -#: ../src/profile_window.py:348 +#: ../src/profile_window.py:354 msgid "" "There was an error while publishing your personal information, try again " "later." -msgstr "При публикации вашей личной информации произошла ошибка, попробуйте позже." - -#: ../src/profile_window.py:374 -msgid "Without a connection, you can not get your contact information." -msgstr "Ðеобходимо приÑоединитьÑÑ Ðº Ñерверу Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о контакте" +msgstr "" +"При публикации вашей личной информации произошла ошибка, попробуйте позже." -#: ../src/roster_window.py:168 ../src/roster_window.py:223 +#: ../src/roster_window.py:194 ../src/roster_window.py:249 msgid "Merged accounts" msgstr "Объединенные учетные запиÑи" -#: ../src/roster_window.py:340 ../src/common/helpers.py:42 +#: ../src/roster_window.py:370 ../src/roster_window.py:635 +#: ../src/roster_window.py:2145 ../src/common/contacts.py:312 +#: ../src/common/helpers.py:53 msgid "Observers" msgstr "Ðаблюдатели" -#: ../src/roster_window.py:686 ../src/roster_window.py:3133 +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:454 ../src/roster_window.py:459 +#: ../src/roster_window.py:1967 ../src/roster_window.py:1970 +#: ../src/roster_window.py:2640 ../src/roster_window.py:2643 +#: ../src/roster_window.py:2668 ../src/roster_window.py:4763 +#: ../src/roster_window.py:4765 ../src/common/commands.py:199 +#: ../src/common/contacts.py:102 ../src/common/helpers.py:53 +msgid "Groupchats" +msgstr "Комнаты" + +#: ../src/roster_window.py:784 ../src/roster_window.py:4012 msgid "You cannot join a group chat while you are invisible" msgstr "Ð’Ñ‹ не можете зайти в комнату, так как вы в режиме невидимоÑти." #. new chat +#. single message #. for chat_with #. for single message -#: ../src/roster_window.py:878 ../src/systray.py:187 ../src/systray.py:192 +#. join gc +#: ../src/roster_window.py:1005 ../src/roster_window.py:1015 +#: ../src/roster_window.py:1024 ../src/systray.py:212 ../src/systray.py:217 +#: ../src/systray.py:223 #, python-format msgid "using account %s" msgstr "иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÑƒÑ‡ÐµÑ‚Ð½ÑƒÑŽ запиÑÑŒ %s" -#. the 'manage gc bookmarks' item is shown -#. below to avoid duplicate code #. add -#: ../src/roster_window.py:903 +#: ../src/roster_window.py:1031 #, python-format msgid "to %s account" msgstr "Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" #. disco -#: ../src/roster_window.py:908 +#: ../src/roster_window.py:1036 #, python-format msgid "using %s account" msgstr "учетной запиÑи %s" +#: ../src/roster_window.py:1117 +msgid "_Manage Bookmarks..." +msgstr "Управление _закладками..." + #. profile, avatar -#: ../src/roster_window.py:983 +#: ../src/roster_window.py:1136 #, python-format msgid "of account %s" msgstr "Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/roster_window.py:1003 -msgid "_Manage Bookmarks..." -msgstr "Управление _закладками..." - -#: ../src/roster_window.py:1032 +#: ../src/roster_window.py:1176 #, python-format msgid "for account %s" msgstr "Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" #. History manager -#: ../src/roster_window.py:1053 +#: ../src/roster_window.py:1200 msgid "History Manager" msgstr "Менеджер иÑтории" -#: ../src/roster_window.py:1062 +#: ../src/roster_window.py:1209 msgid "_Join New Group Chat" msgstr "Войти в новую комнату" -#: ../src/roster_window.py:1380 ../src/roster_window.py:3326 -#: ../src/roster_window.py:3333 +#: ../src/roster_window.py:1576 ../src/roster_window.py:4217 +#: ../src/roster_window.py:4224 msgid "You have unread messages" msgstr "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ непрочитанные ÑообщениÑ" -#: ../src/roster_window.py:1381 +#: ../src/roster_window.py:1577 msgid "You must read them before removing this transport." msgstr "ПроÑмотрите вÑе ожидающие ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ удалением транÑпорта." -#: ../src/roster_window.py:1384 +#: ../src/roster_window.py:1580 #, python-format msgid "Transport \"%s\" will be removed" msgstr "ТранÑпорт \"%s\" будет удален" -#: ../src/roster_window.py:1385 +#: ../src/roster_window.py:1581 msgid "" -"You will no longer be able to send and receive messages to contacts from " +"You will no longer be able to send and receive messages from contacts using " "this transport." msgstr "" "У Ð²Ð°Ñ Ñ‚ÐµÐ¿ÐµÑ€ÑŒ не будет возможноÑти приема и отправки ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°Ð¼ " "через Ñтот транÑпорт." -#: ../src/roster_window.py:1388 +#: ../src/roster_window.py:1584 msgid "Transports will be removed" msgstr "ТранÑпорты будут удалены" -#: ../src/roster_window.py:1393 +#: ../src/roster_window.py:1589 #, python-format msgid "" "You will no longer be able to send and receive messages to contacts from " @@ -4937,114 +5963,150 @@ msgstr "" "транÑпорты:%s." #. it's jid -#: ../src/roster_window.py:1413 +#: ../src/roster_window.py:1755 msgid "Rename Contact" msgstr "Переименовать контакт" -#: ../src/roster_window.py:1414 +#: ../src/roster_window.py:1756 #, python-format msgid "Enter a new nickname for contact %s" msgstr "Введите новый ник Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð° %s" -#: ../src/roster_window.py:1421 +#: ../src/roster_window.py:1763 msgid "Rename Group" msgstr "Переименовать группу" -#: ../src/roster_window.py:1422 +#: ../src/roster_window.py:1764 #, python-format msgid "Enter a new name for group %s" msgstr "Введите новое название Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ %s" -#: ../src/roster_window.py:1476 +#: ../src/roster_window.py:1839 msgid "Remove Group" msgstr "Удалить группу" -#: ../src/roster_window.py:1477 +#: ../src/roster_window.py:1840 #, python-format msgid "Do you want to remove group %s from the roster?" msgstr "Ð’Ñ‹ точно хотите удалить группу %s из роÑтера?" -#: ../src/roster_window.py:1478 +#: ../src/roster_window.py:1841 msgid "Remove also all contacts in this group from your roster" msgstr "Удалить из роÑтера вÑе контакты в Ñтой группе" -#: ../src/roster_window.py:1502 +#: ../src/roster_window.py:1872 msgid "Assign OpenPGP Key" msgstr "Ðазначить OpenPGP ключ" -#: ../src/roster_window.py:1503 +#: ../src/roster_window.py:1873 msgid "Select a key to apply to the contact" msgstr "Выберите ключ, который будет применен к контакту" -#: ../src/roster_window.py:1784 ../src/roster_window.py:1960 -msgid "_New group chat" -msgstr "_ÐÐ¾Ð²Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð°" +#: ../src/roster_window.py:2191 +msgid "_New Group Chat" +msgstr "Ð’ новую комнату" -#: ../src/roster_window.py:1842 +#: ../src/roster_window.py:2331 msgid "I would like to add you to my roster" msgstr "Ð’Ñ‹ не против, еÑли Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑŽ Ð’Ð°Ñ Ðº Ñебе в роÑтер?" -#: ../src/roster_window.py:2005 ../src/roster_window.py:2052 +#. Send Group Message +#: ../src/roster_window.py:2465 ../src/roster_window.py:2677 msgid "Send Group M_essage" msgstr "_Отправить Ñообщение группе" -#: ../src/roster_window.py:2031 -msgid "Re_name" -msgstr "П_ереименовать" +#: ../src/roster_window.py:2484 +msgid "_New group chat" +msgstr "_ÐÐ¾Ð²Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð°" + +#. Manage Transport submenu +#: ../src/roster_window.py:2522 +msgid "_Manage Contacts" +msgstr "_Управление контактами" + +#: ../src/roster_window.py:2583 +msgid "_Maximize" +msgstr "" + +#: ../src/roster_window.py:2590 +#, fuzzy +msgid "_Disconnect" +msgstr "Контакт отключилÑÑ" -#: ../src/roster_window.py:2058 +#: ../src/roster_window.py:2669 +msgid "_Maximize All" +msgstr "" + +#: ../src/roster_window.py:2685 msgid "To all users" msgstr "Ð’Ñем пользователÑм" -#: ../src/roster_window.py:2061 +#: ../src/roster_window.py:2688 msgid "To all online users" msgstr "Ð’Ñем, кто подключён" -#: ../src/roster_window.py:2097 +#. Log Off +#: ../src/roster_window.py:2805 +msgid "_Log off" +msgstr "_ОтключитьÑÑ" + +#. Log on +#: ../src/roster_window.py:2811 msgid "_Log on" msgstr "_СоединитьÑÑ" -#: ../src/roster_window.py:2107 -msgid "Log _off" -msgstr "_ОтключитьÑÑ" +#. Send single message +#: ../src/roster_window.py:2823 +msgid "Send Single Message" +msgstr "О_тправить одиночное Ñообщение" + +#. Manage Transport submenu +#: ../src/roster_window.py:2870 +msgid "_Manage Transport" +msgstr "_Управление транÑпортом" + +#. Modify Transport +#: ../src/roster_window.py:2878 +msgid "_Modify Transport" +msgstr "_Изменить транÑпорт" -#: ../src/roster_window.py:2229 ../src/roster_window.py:2300 +#: ../src/roster_window.py:2992 ../src/roster_window.py:3066 msgid "_Change Status Message" msgstr "_Изменить Ñообщение о ÑтатуÑе" -#: ../src/roster_window.py:2372 +#: ../src/roster_window.py:3138 msgid "Authorization has been sent" msgstr "Была отправлена авторизациÑ" -#: ../src/roster_window.py:2373 +#: ../src/roster_window.py:3139 #, python-format msgid "Now \"%s\" will know your status." msgstr "Теперь \"%s\" будет знать о вашем ÑтатуÑе." -#: ../src/roster_window.py:2393 +#: ../src/roster_window.py:3159 msgid "Subscription request has been sent" msgstr "Был отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку " -#: ../src/roster_window.py:2394 +#: ../src/roster_window.py:3160 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "ЕÑли \"%s\" примет ваш запроÑ, вы будете знать его или её ÑтатуÑ" -#: ../src/roster_window.py:2406 +#: ../src/roster_window.py:3172 msgid "Authorization has been removed" msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð±Ñ‹Ð»Ð° удалена" -#: ../src/roster_window.py:2407 +#: ../src/roster_window.py:3173 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Теперь \"%s\" вÑегда будет видеть Ð²Ð°Ñ Ð² оффлайне." -#: ../src/roster_window.py:2615 +#: ../src/roster_window.py:3407 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Контакт \"%s\" будет удален из вашего роÑтера" -#: ../src/roster_window.py:2619 +#: ../src/roster_window.py:3411 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -5052,7 +6114,7 @@ msgstr "" "УдалÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚, вы одновременно удалите авторизацию, и Ñтот человек больше " "не Ñможет видеть ваш ÑтатуÑ." -#: ../src/roster_window.py:2624 +#: ../src/roster_window.py:3416 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -5060,16 +6122,16 @@ msgstr "" "ЕÑли вы удалите контакт, вы так же удалите и авторизацию. Ð’Ñ‹ будете видеть " "его или её вÑегда в оффлайне." -#: ../src/roster_window.py:2627 +#: ../src/roster_window.py:3419 msgid "I want this contact to know my status after removal" msgstr "Я хочу, чтобы Ñтот контакт видел мой ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ñле удалениÑ" #. several contact to remove at the same time -#: ../src/roster_window.py:2631 +#: ../src/roster_window.py:3423 msgid "Contacts will be removed from your roster" msgstr "Контакты будут удалены из вашего роÑтера" -#: ../src/roster_window.py:2635 +#: ../src/roster_window.py:3427 #, python-format msgid "" "By removing these contacts:%s\n" @@ -5079,40 +6141,28 @@ msgstr "" "Одновременно вы удалите и авторизацию, то еÑÑ‚ÑŒ они вÑегда будут видеть Ð²Ð°Ñ Ð² " "оффлайне." -#. TODO: make this string translatable +#: ../src/roster_window.py:3454 +msgid "" +"Gnome Keyring is installed but not correctly started (environment variable " +"probably not correctly set)" +msgstr "" + +#: ../src/roster_window.py:3473 +msgid "GPG is not usable" +msgstr "" + #. %s is the account name here -#: ../src/roster_window.py:2693 ../src/common/connection.py:587 -#: ../src/common/zeroconf/connection_zeroconf.py:158 +#: ../src/roster_window.py:3474 ../src/common/connection_handlers.py:2157 +#: ../src/common/zeroconf/connection_zeroconf.py:170 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Ð’Ñ‹ будете подключены к %s без иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ OpenPGP." -#: ../src/roster_window.py:2710 -msgid "Passphrase Required" -msgstr "ТребуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" - -#: ../src/roster_window.py:2711 -#, python-format -msgid "Enter GPG key passphrase for account %s." -msgstr "Введите парольную фразу GPG Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" - -#: ../src/roster_window.py:2716 -msgid "Save passphrase" -msgstr "Сохранить парольную фразу (небезопаÑно)" - -#: ../src/roster_window.py:2724 -msgid "Wrong Passphrase" -msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" - -#: ../src/roster_window.py:2725 -msgid "Please retype your GPG passphrase or press Cancel." -msgstr "ПожалуйÑта, введите парольную фразу Ð´Ð»Ñ GPG еще раз или нажмите Отмена." - -#: ../src/roster_window.py:2782 ../src/roster_window.py:2842 +#: ../src/roster_window.py:3545 ../src/roster_window.py:3623 msgid "You are participating in one or more group chats" msgstr "Ð’Ñ‹ находитеÑÑŒ в одной или более комнатах" -#: ../src/roster_window.py:2783 ../src/roster_window.py:2843 +#: ../src/roster_window.py:3546 ../src/roster_window.py:3624 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -5120,20 +6170,21 @@ msgstr "" "Переход в ÑоÑтоÑние невидимоÑти приведет к выходу из Ñтих комнат. Ð’Ñ‹ точно " "хотите Ñтать невидимым?" -#: ../src/roster_window.py:2800 +#: ../src/roster_window.py:3580 msgid "No account available" msgstr "Ðет доÑтупной учетной запиÑи" -#: ../src/roster_window.py:2801 +#: ../src/roster_window.py:3581 msgid "You must create an account before you can chat with other contacts." -msgstr "Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° беÑеды Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ людьми прежде необходимо Ñоздать учетную запиÑÑŒ." +msgstr "" +"Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° беÑеды Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ людьми прежде необходимо Ñоздать учетную запиÑÑŒ." -#: ../src/roster_window.py:2899 +#: ../src/roster_window.py:3730 #, python-format msgid "\"%(title)s\" by %(artist)s" msgstr "%(artist)s \"%(title)s\"" -#: ../src/roster_window.py:3327 ../src/roster_window.py:3334 +#: ../src/roster_window.py:4218 ../src/roster_window.py:4225 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -5141,133 +6192,193 @@ msgstr "" "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ доÑтупны Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð·Ð¶Ðµ еÑли у Ð²Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ " "иÑтории." -#: ../src/roster_window.py:3912 +#: ../src/roster_window.py:4849 msgid "Metacontacts storage not supported by your server" msgstr "Сервер не умеет хранить метаконтакты" -#: ../src/roster_window.py:3914 +#: ../src/roster_window.py:4851 msgid "" "Your server does not support storing metacontacts information. So those " -"information will not be save on next reconnection." +"information will not be saved on next reconnection." msgstr "" "Ваш Ñервер не умеет хранить данные о метаконтактах. Они будут утерÑны при " "Ñледующем подключении." -#: ../src/roster_window.py:3956 -msgid "You are about to create a metacontact. Are you sure you want to continue?" +#: ../src/roster_window.py:4896 +msgid "" +"You are about to create a metacontact. Are you sure you want to continue?" msgstr "Ð’Ñ‹ хотите Ñоздать метаконтакт?" -#: ../src/roster_window.py:3958 +#: ../src/roster_window.py:4898 msgid "" -"Metacontacts are a way to regroup several contacts in one line. Generaly it " +"Metacontacts are a way to regroup several contacts in one line. Generally it " "is used when the same person has several Jabber accounts or transport " "accounts." -msgstr "Метаконтакты Ñто метод группировки неÑкольких контактов в одну запиÑÑŒ. Обычно Ñто иÑпользуетÑÑ ÐºÐ¾Ð³Ð´Ð° один и тот же человек имеет неÑколько аккаунтов в Jabber или на транÑпортах." +msgstr "" +"Метаконтакты Ñто метод группировки неÑкольких контактов в одну запиÑÑŒ. " +"Обычно Ñто иÑпользуетÑÑ ÐºÐ¾Ð³Ð´Ð° один и тот же человек имеет неÑколько " +"аккаунтов в Jabber или на транÑпортах." + +#: ../src/roster_window.py:4993 +msgid "Invalid file URI:" +msgstr "Ðеверный файл:" + +#: ../src/roster_window.py:5004 +#, fuzzy, python-format +msgid "Do you want to send this file to %s:" +msgid_plural "Do you want to send those files to %s:" +msgstr[0] "%s хочет отправить вам файл:" +msgstr[1] "%s хочет отправить вам файл:" +msgstr[2] "%s хочет отправить вам файл:" + +#: ../src/roster_window.py:5332 +msgid "Change Status Message..." +msgstr "Изменить Ñообщение о ÑтатуÑе..." -#: ../src/roster_window.py:4125 -#, python-format -msgid "Drop %s in group %s" -msgstr "СброÑить %s в группе %s" +#: ../src/search_window.py:91 +msgid "Waiting for results" +msgstr "" -#: ../src/roster_window.py:4132 -#, python-format -msgid "Make %s and %s metacontacts" -msgstr "Сделать %s и %s метаконтактами" +#: ../src/search_window.py:131 ../src/search_window.py:209 +msgid "Error in received dataform" +msgstr "" -#: ../src/roster_window.py:4319 -msgid "Change Status Message..." -msgstr "Изменить Ñообщение о ÑтатуÑе..." +#. No result +#: ../src/search_window.py:165 ../src/search_window.py:201 +msgid "No result" +msgstr "" + +#: ../src/secrets.py:45 +msgid "" +"To continue, Gajim needs to access your stored secrets. Enter your passphrase" +msgstr "" + +#: ../src/secrets.py:89 +msgid "Confirm Passphrase" +msgstr "Подтверждение парольной фразы" + +#: ../src/secrets.py:90 +msgid "Enter your new passphrase again for confirmation" +msgstr "Введите Ñнова Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ" + +#: ../src/secrets.py:95 ../src/secrets.py:107 +msgid "Create Passphrase" +msgstr "Создать парольную фразу" -#: ../src/systray.py:144 +#: ../src/secrets.py:96 +msgid "Passphrases did not match.\n" +msgstr "Пароли не Ñовпадают.\n" + +#: ../src/secrets.py:97 ../src/secrets.py:108 +msgid "Gajim needs you to create a passphrase to encrypt stored secrets" +msgstr "" + +#: ../src/systray.py:169 msgid "_Change Status Message..." msgstr "_Изменить Ñообщение о ÑтатуÑе..." -#: ../src/systray.py:234 +#: ../src/systray.py:254 msgid "Hide this menu" msgstr "Скрыть Ñто меню" -#: ../src/tooltips.py:309 ../src/tooltips.py:492 +#: ../src/tooltips.py:316 ../src/tooltips.py:509 msgid "Jabber ID: " msgstr "Jabber ID: " -#: ../src/tooltips.py:312 ../src/tooltips.py:496 +#: ../src/tooltips.py:319 ../src/tooltips.py:513 msgid "Resource: " msgstr "РеÑурÑ: " -#: ../src/tooltips.py:317 +#: ../src/tooltips.py:324 #, python-format msgid "%(owner_or_admin_or_member)s of this group chat" msgstr "%(owner_or_admin_or_member)s Ñтой комнаты" -#: ../src/tooltips.py:430 ../src/tooltips.py:610 +#: ../src/tooltips.py:422 +msgid " [blocked]" +msgstr "" + +#: ../src/tooltips.py:426 +msgid " [minimized]" +msgstr "" + +#: ../src/tooltips.py:441 ../src/tooltips.py:629 msgid "Status: " msgstr "СтатуÑ: " -#: ../src/tooltips.py:461 +#: ../src/tooltips.py:471 #, python-format msgid "Last status: %s" msgstr "ПоÑледний ÑтатуÑ: %s" -#: ../src/tooltips.py:463 +#: ../src/tooltips.py:473 #, python-format msgid " since %s" msgstr " Ñ %s" +#: ../src/tooltips.py:491 +msgid "Connected" +msgstr "Соединение" + +#: ../src/tooltips.py:493 +msgid "Disconnected" +msgstr "Контакт отключилÑÑ" + #. ('both' is the normal sub so we don't show it) -#: ../src/tooltips.py:502 +#: ../src/tooltips.py:520 msgid "Subscription: " msgstr "ПодпиÑка: " -#: ../src/tooltips.py:512 +#: ../src/tooltips.py:530 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:566 +#: ../src/tooltips.py:585 msgid "Download" msgstr "Загрузить" -#: ../src/tooltips.py:572 +#: ../src/tooltips.py:591 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:579 +#: ../src/tooltips.py:598 msgid "Type: " msgstr "Тип: " -#: ../src/tooltips.py:585 +#: ../src/tooltips.py:604 msgid "Transferred: " msgstr "Передано: " -#: ../src/tooltips.py:588 ../src/tooltips.py:609 +#: ../src/tooltips.py:607 ../src/tooltips.py:628 msgid "Not started" msgstr "Ðе начато" -#: ../src/tooltips.py:592 +#: ../src/tooltips.py:611 msgid "Stopped" msgstr "ОÑтановлено" -#: ../src/tooltips.py:594 ../src/tooltips.py:597 +#: ../src/tooltips.py:613 ../src/tooltips.py:616 msgid "Completed" msgstr "Завершено" -#: ../src/tooltips.py:601 +#: ../src/tooltips.py:620 msgid "?transfer status:Paused" msgstr "ПриоÑтановлено" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:605 +#: ../src/tooltips.py:624 msgid "Stalled" msgstr "Ожидание" -#: ../src/tooltips.py:607 +#: ../src/tooltips.py:626 msgid "Transferring" msgstr "ПередаетÑÑ" -#: ../src/tooltips.py:639 +#: ../src/tooltips.py:662 msgid "This service has not yet responded with detailed information" msgstr "Ðтот ÑÐµÑ€Ð²Ð¸Ñ ÐµÑ‰Ðµ не Ñообщил информацию о Ñебе" -#: ../src/tooltips.py:642 +#: ../src/tooltips.py:665 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -5275,24 +6386,24 @@ msgstr "" "Ðтот ÑÐµÑ€Ð²Ð¸Ñ Ð½Ðµ может предоÑтавить информацию о Ñебе . \n" "Похоже что он или неверно наÑтроен или Ñломан" -#: ../src/vcard.py:217 +#: ../src/vcard.py:245 msgid "?Client:Unknown" msgstr "ÐеизвеÑтен" -#: ../src/vcard.py:219 +#: ../src/vcard.py:247 msgid "?OS:Unknown" msgstr "ÐеизвеÑтна" -#: ../src/vcard.py:247 ../src/vcard.py:449 +#: ../src/vcard.py:272 ../src/vcard.py:282 ../src/vcard.py:472 #, python-format msgid "since %s" msgstr "Ñ %s" -#: ../src/vcard.py:277 +#: ../src/vcard.py:311 msgid "Affiliation:" msgstr "Ранг:" -#: ../src/vcard.py:285 +#: ../src/vcard.py:319 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -5300,7 +6411,7 @@ msgstr "" "Ðтот контакт хочет знать о вашем приÑутÑтвии, но вам Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ его или её " "приÑутÑтвии не интереÑна" -#: ../src/vcard.py:287 +#: ../src/vcard.py:321 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -5308,83 +6419,155 @@ msgstr "" "Вам хочетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÑŒ информацию о приÑутÑтвии контакта, но он или она не " "заинтереÑована в вашей." -#: ../src/vcard.py:289 +#: ../src/vcard.py:323 msgid "You and the contact are interested in each other's presence information" msgstr "Ð’Ñ‹ и контакт оба желаете знать о приÑутÑтвии друг друга" #. None -#: ../src/vcard.py:291 +#: ../src/vcard.py:325 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" msgstr "Ðи вы, ни ваш контакт не желаете знать о приÑутÑтвии друг друга" -#: ../src/vcard.py:299 +#: ../src/vcard.py:333 msgid "You are waiting contact's answer about your subscription request" msgstr "Ð’Ñ‹ ожидаете ответа контакта на Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку" -#: ../src/vcard.py:311 ../src/vcard.py:338 ../src/vcard.py:482 +#: ../src/vcard.py:337 ../src/vcard.py:374 ../src/vcard.py:497 msgid " resource with priority " msgstr " реÑÑƒÑ€Ñ Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ " -#: ../src/common/check_paths.py:33 +#: ../src/common/check_paths.py:38 msgid "creating logs database" msgstr "ÑоздаетÑÑ Ð‘Ð” иÑтории" -#: ../src/common/check_paths.py:89 ../src/common/check_paths.py:100 -#: ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:112 +#: ../src/common/check_paths.py:119 #, python-format -msgid "%s is file but it should be a directory" +msgid "%s is a file but it should be a directory" msgstr "%s должен быть директорией, а не файлом" -#: ../src/common/check_paths.py:90 ../src/common/check_paths.py:101 -#: ../src/common/check_paths.py:108 ../src/common/check_paths.py:116 +#: ../src/common/check_paths.py:102 ../src/common/check_paths.py:113 +#: ../src/common/check_paths.py:120 ../src/common/check_paths.py:128 msgid "Gajim will now exit" msgstr "Закончить работу" -#: ../src/common/check_paths.py:115 +#: ../src/common/check_paths.py:127 #, python-format -msgid "%s is directory but should be file" +msgid "%s is a directory but should be a file" msgstr "%s должен быть файлом, а не директорией" -#: ../src/common/check_paths.py:131 +#: ../src/common/check_paths.py:143 #, python-format msgid "creating %s directory" msgstr "ÑоздаетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s" -#: ../src/common/config.py:55 +#: ../src/common/commands.py:74 +msgid "Change status information" +msgstr "Изменить информацию о ÑтатуÑе" + +#: ../src/common/commands.py:87 +msgid "Change status" +msgstr "Контакт изменит ÑтатуÑ" + +#: ../src/common/commands.py:88 +msgid "Set the presence type and description" +msgstr "УÑтановка ÑтатуÑа и ÑтатуÑного ÑообщениÑ" + +#: ../src/common/commands.py:94 +msgid "Free for chat" +msgstr "Готов поболтать" + +#: ../src/common/commands.py:95 +msgid "Online" +msgstr "Ð’ Ñети" + +#: ../src/common/commands.py:97 +msgid "Extended away" +msgstr "" + +#: ../src/common/commands.py:98 +msgid "Do not disturb" +msgstr "Ðе беÑпокоить." + +#: ../src/common/commands.py:99 +msgid "Offline - disconnect" +msgstr "" + +#: ../src/common/commands.py:104 +#, fuzzy +msgid "Presence description:" +msgstr "ОпиÑание ошибки..." + +#: ../src/common/commands.py:139 +msgid "The status has been changed." +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½." + +#: ../src/common/commands.py:170 ../src/common/commands.py:194 +msgid "Leave Groupchats" +msgstr "Покинуть конференции" + +#: ../src/common/commands.py:184 +#, python-format +msgid "%(nickname)s on %(room_jid)s" +msgstr "%(nickname)s из комнаты %(room_jid)s" + +#: ../src/common/commands.py:188 +msgid "You have not joined a groupchat." +msgstr "Ð’Ñ‹ не вошли в комнату." + +#: ../src/common/commands.py:195 +msgid "Choose the groupchats you want to leave" +msgstr "Выберите конференции которые вы хотите покинуть" + +#: ../src/common/commands.py:235 +msgid "You left the following groupchats:" +msgstr "Ð’Ñ‹ покинули Ñледующие комнаты:" + +#: ../src/common/commands.py:247 +msgid "Forward unread messages" +msgstr "ПереÑлать непрочитанные ÑообщениÑ" + +#: ../src/common/commands.py:267 +msgid "All unread messages have been forwarded." +msgstr "Ð’Ñе непрочитанные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ñ‹." + +#: ../src/common/config.py:74 msgid "Use D-Bus and Notification-Daemon to show notifications" msgstr "ИÑпользовать DBus и Notification Daemon Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° уведомлений" -#: ../src/common/config.py:60 +#: ../src/common/config.py:79 msgid "Time in minutes, after which your status changes to away." msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð² минутах, поÑле которого ваш ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑÑ Ð½Ð° Отошел." -#: ../src/common/config.py:61 +#: ../src/common/config.py:80 msgid "Away as a result of being idle" msgstr "ÐвтоÑÑ‚Ð°Ñ‚ÑƒÑ 'Отошел' из-за бездейÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." -#: ../src/common/config.py:63 +#: ../src/common/config.py:82 msgid "Time in minutes, after which your status changes to not available." msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð² минутах, поÑле которого ваш ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑÑ Ð½Ð° ÐедоÑтупен." -#: ../src/common/config.py:64 +#: ../src/common/config.py:83 msgid "Not available as a result of being idle" msgstr "ÐвтоÑÑ‚Ð°Ñ‚ÑƒÑ 'ÐедоÑтупен' из-за бездейÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." -#: ../src/common/config.py:82 -msgid "List (space separated) of rows (accounts and groups) that are collapsed." -msgstr "СпиÑок (через пробел) Ñтрок (учётных запиÑей и групп), которые Ñвёрнуты." +#: ../src/common/config.py:101 +msgid "" +"List (space separated) of rows (accounts and groups) that are collapsed." +msgstr "" +"СпиÑок (через пробел) Ñтрок (учётных запиÑей и групп), которые Ñвёрнуты." -#: ../src/common/config.py:87 +#: ../src/common/config.py:106 msgid "Enable link-local/zeroconf messaging" msgstr "" -#: ../src/common/config.py:90 +#: ../src/common/config.py:109 msgid "Language used by speller" msgstr "Язык, иÑпользуемый при проверке правопиÑаниÑ" -#: ../src/common/config.py:91 +#: ../src/common/config.py:110 msgid "" "'always' - print time for every message.\n" "'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" @@ -5394,46 +6577,87 @@ msgstr "" "\"иногда\" - печатать Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ð¶Ð´Ñ‹Ðµ неÑколько минут.\n" "\"никогда\" - не печатать времÑ." -#: ../src/common/config.py:92 +#: ../src/common/config.py:111 msgid "" "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. " +"to disable fuzzyclock. 1 is the most precise clock, 4 the least precise one. " "This is used only if print_time is 'sometimes'." -msgstr "Печатать Ð²Ñ€ÐµÐ¼Ñ Ð² беÑеде как в неточных чаÑах. Степень неточноÑти может быть от 1 до 4, 0 отключает Ñту функцию. 1 Ñамые точные чаÑÑ‹, 4 Ñамые неточные. ИÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ еÑли режим печати времени уÑтановлен на \"иногда\"." +msgstr "" +"Печатать Ð²Ñ€ÐµÐ¼Ñ Ð² беÑеде как в неточных чаÑах. Степень неточноÑти может быть " +"от 1 до 4, 0 отключает Ñту функцию. 1 Ñамые точные чаÑÑ‹, 4 Ñамые неточные. " +"ИÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ еÑли режим печати времени уÑтановлен на \"иногда\"." -#: ../src/common/config.py:95 +#: ../src/common/config.py:114 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Обрабатывать пары * / _ как возможные форматирующие Ñимволы." -#: ../src/common/config.py:96 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." +#: ../src/common/config.py:115 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "ЕÑли True, то не будут удалÑÑ‚ÑŒÑÑ */_. Так что *фыва* будет напиÑано " "полужирным шрифтом, но * * удалены не будут" -#: ../src/common/config.py:99 +#: ../src/common/config.py:118 msgid "" -"Uses ReStructured text markup for HTML, plus ascii formatting if selected. " -"(If you want to use this, install docutils)" +"Uses ReStructured text markup to send HTML, plus ascii formatting if " +"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html (If you want to use this, install docutils)" msgstr "" -#: ../src/common/config.py:108 +#: ../src/common/config.py:127 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." +msgstr "" +"Символ, который нужно добавлÑÑ‚ÑŒ к нику, когда иÑпользуетÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ (tab) " +"в комнате." + +#: ../src/common/config.py:128 +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:151 +msgid "" +"This option let you customize timestamp that is printed in conversation. For " +"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " +"strftime for full documentation: http://docs.python.org/lib/module-time.html" +msgstr "" +"Ðта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет наÑтроить отпечаток времени, который печатаетÑÑ Ð² чатах. " +"К примеру \"[%H:%M]\" будет показано как \"[чч:мм]\". Смотрите дополнительно " +"документацию python к strftime (http://docs.python.org/lib/module-time.html)" + +#: ../src/common/config.py:152 +msgid "Characters that are printed before the nickname in conversations" +msgstr "Символы, которые будут отображатьÑÑ Ð¿ÐµÑ€ÐµÐ´ никами в чате" + +#: ../src/common/config.py:153 +msgid "Characters that are printed after the nickname in conversations" +msgstr "Символы, которые будут отображатьÑÑ Ð¿Ð¾Ñле ников в чате" + +#: ../src/common/config.py:156 msgid "" -"Character to add after nickname when using nick completion (tab) in group " -"chat." -msgstr "Символ, который нужно добавлÑÑ‚ÑŒ к нику, когда иÑпользуетÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ (tab) в комнате." +"If checked, Gajim can regularly poll a Last.fm account and adjust the status " +"message to reflect recently played songs. " +"set_status_msg_from_current_music_track option must be False." +msgstr "" +"ЕÑли включено, Gajim будет проверÑÑ‚ÑŒ аккаунт на Last.fm и менÑÑ‚ÑŒ ваш ÑÑ‚Ð°Ñ‚ÑƒÑ " +"на Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ трека. set_status_msg_from_current_music_track Ð¾Ð¿Ñ†Ð¸Ñ " +"должна быть False." -#: ../src/common/config.py:109 -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:157 +msgid "The username used to identify the Last.fm account." +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Last.fm." -#: ../src/common/config.py:142 +#: ../src/common/config.py:161 msgid "Add * and [n] in roster title?" msgstr "ДобавлÑÑ‚ÑŒ * и [n] в окно роÑтера?" -#: ../src/common/config.py:143 +#: ../src/common/config.py:162 msgid "" "How many lines to remember from previous conversation when a chat tab/window " "is reopened." @@ -5441,11 +6665,11 @@ msgstr "" "Сколько Ñтрок из предыдущей беÑеды выводить, когда вкладка/окно открываютÑÑ " "вновь." -#: ../src/common/config.py:144 +#: ../src/common/config.py:163 msgid "How many minutes should last lines from previous conversation last." msgstr "Сколько минут должны оÑтаватьÑÑ Ð¿Ð¾Ñледние Ñтроки из предыдущей беÑеды." -#: ../src/common/config.py:145 +#: ../src/common/config.py:164 msgid "" "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " "Client default behaviour)." @@ -5453,11 +6677,11 @@ msgstr "" "ОправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ctrl+Enter и Enter Ñоздает новую Ñтроку (как в " "Mirabilis ICQ)" -#: ../src/common/config.py:147 +#: ../src/common/config.py:166 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Сколько Ñтрок хранить Ð´Ð»Ñ Ctrl+Стрелка вверх" -#: ../src/common/config.py:150 +#: ../src/common/config.py:169 #, python-format msgid "" "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " @@ -5466,49 +6690,61 @@ msgstr "" "Введите Ñвою ÑÑылку Ñ %s, в которой %s подменÑет Ñлово/фразу или " "'WIKTIONARY', что значит: \"иÑпользовать wiktionary\"." -#: ../src/common/config.py:153 +#: ../src/common/config.py:172 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "" "ЕÑли отмечено, то Gajim'ом можно будет управлÑÑ‚ÑŒ удаленно Ñ Ð¸Ñпользованием " "gajim-remote." -#: ../src/common/config.py:154 +#: ../src/common/config.py:173 msgid "" "If True, listen to D-Bus signals from NetworkManager and change the status " "of accounts (provided they do not have listen_to_network_manager set to " "False and they sync with global status) based upon the status of the network " "connection." msgstr "" +"ЕÑли True, тогда \"Ñлушать\" ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ NetworkManager по D-Bus и изменÑÑ‚ÑŒ " +"ÑÑ‚Ð°Ñ‚ÑƒÑ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð¾Ð² в завиÑимоÑти от ÑоÑтоÑÐ½Ð¸Ñ Ñетевого ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (необходимо " +"чтобы аккаунты не имели уÑтановленной в False опции " +"listen_to_network_manager и они должны Ñинхронизировать Ñвой ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ " +"глобальным)" -#: ../src/common/config.py:155 -msgid "Sent chat state notifications. Can be one of all, composing_only, disabled." -msgstr "ОтÑылать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑоÑтоÑнии беÑеды. Может быть одним из \"вÑе\", \"только напиÑание\", \"отключено\"." +#: ../src/common/config.py:174 +msgid "" +"Sent chat state notifications. Can be one of all, composing_only, disabled." +msgstr "" +"ОтÑылать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑоÑтоÑнии беÑеды. Может быть одним из \"вÑе\", " +"\"только печать\", \"отключено\"." -#: ../src/common/config.py:156 +#: ../src/common/config.py:175 msgid "" "Displayed chat state notifications in chat windows. Can be one of all, " "composing_only, disabled." -msgstr "Отображать ÑоÑтоÑÐ½Ð¸Ñ Ð±ÐµÑеды в окне беÑеды. Может быть одним из \"вÑе\", \"только напиÑание\", \"отключено\"." +msgstr "" +"Отображать ÑоÑтоÑÐ½Ð¸Ñ Ð±ÐµÑеды в окне беÑеды. Может быть одним из \"вÑе\", " +"\"только напиÑание\", \"отключено\"." -#: ../src/common/config.py:158 +#: ../src/common/config.py:177 msgid "" "When not printing time for every message (print_time==sometimes), print it " "every x minutes." -msgstr "ЕÑди отключена печать времени Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑообщениÑ, то печатать его каждые X минут." +msgstr "" +"ЕÑди отключена печать времени Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑообщениÑ, то печатать его каждые " +"X минут." -#: ../src/common/config.py:159 +#: ../src/common/config.py:178 msgid "Ask before closing a group chat tab/window." msgstr "Спрашивать перед закрытием окна/вкладки комнаты." -#: ../src/common/config.py:160 +#: ../src/common/config.py:179 msgid "" "Always ask before closing group chat tab/window in this space separated list " "of group chat jids." msgstr "" -"Ð’Ñегда Ñпрашивать перед закрытием окна/вкладки комнаты из Ñтом ÑпиÑка. " +"Ð’Ñегда Ñпрашивать перед закрытием окна/вкладки комнаты из Ñтого ÑпиÑка. " "Комнаты в ÑпиÑке разделÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð¼." -#: ../src/common/config.py:161 +#: ../src/common/config.py:180 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of group chat jids." @@ -5516,39 +6752,61 @@ msgstr "" "Ðикогда не Ñпрашивать перед закрытием окна/вкладки комнаты из Ñтого ÑпиÑка. " "Комнаты в ÑпиÑке разделÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð¼." -#: ../src/common/config.py:164 +#: ../src/common/config.py:183 msgid "" -"Overrides the host we send for File Transfer in case of address translation/" -"port forwarding." +"Comma separated list of hosts that we send, in addition of local interfaces, " +"for File Transfer in case of address translation/port forwarding." msgstr "" "Указвает Ð¸Ð¼Ñ Ñ…Ð¾Ñта, которое мы отÑылаем при передаче файлов, в Ñлучае еÑли " "мы за NAT или иÑпользуетÑÑ Ð¿Ñ€Ð¾Ð±Ñ€Ð¾Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²." -#: ../src/common/config.py:166 +#: ../src/common/config.py:185 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." -msgstr "IEC утверждает что KiB = 1024 байт, KB = 1000 байт" +msgstr "IEC Ñтандарт утверждает, что KiB = 1024 байт, KB = 1000 байт" -#: ../src/common/config.py:168 +#: ../src/common/config.py:187 msgid "Notify of events in the system trayicon." msgstr "УведомлÑÑ‚ÑŒ о ÑобытиÑÑ… в ÑиÑтемном лотке." -#: ../src/common/config.py:174 +#: ../src/common/config.py:193 msgid "Show tab when only one conversation?" -msgstr "Показывать вкладку при одной беÑеде?" +msgstr "Показывать вкладку при одном чат-окне?" -#: ../src/common/config.py:175 +#: ../src/common/config.py:194 msgid "Show tabbed notebook border in chat windows?" -msgstr "Показывать границу вкладки в окне беÑеды?" +msgstr "Показывать границу вкладки в окне чата?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:195 msgid "Show close button in tab?" msgstr "Показывать кнопку Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð½Ð° вкладке?" -#: ../src/common/config.py:189 -msgid "A semicolon-separated list of words that will be highlighted in group chats." -msgstr "СпиÑок Ñлов (через точку Ñ Ð·Ð°Ð¿Ñтой), которые будут подÑвечиватьÑÑ Ð² комнатах." +#: ../src/common/config.py:196 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "" +"Когда уÑтанавливаетÑÑ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÑеÑÑиÑ, дожен ли Gajim предположить, " +"что Ð’Ñ‹ хотите Ñохранить иÑторию Ñообщений?" + +#: ../src/common/config.py:197 +msgid "" +"When negotiating an encrypted session, should Gajim prefer to use public " +"keys for identification?" +msgstr "" +"Когда уÑтанавливаетÑÑ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÑеÑÑиÑ, дожен ли Gajim предпочитать " +"иÑпользовать открытый ключ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸?" + +#: ../src/common/config.py:206 +msgid "Preview new messages in notification popup?" +msgstr "ПредпроÑмотр новых Ñообщений во вÑплывающем окне?" + +#: ../src/common/config.py:211 +msgid "" +"A semicolon-separated list of words that will be highlighted in group chats." +msgstr "" +"СпиÑок Ñлов (через точку Ñ Ð·Ð°Ð¿Ñтой), которые будут подÑвечиватьÑÑ Ð² комнатах." -#: ../src/common/config.py:190 +#: ../src/common/config.py:212 msgid "" "If True, quits Gajim when X button of Window Manager is clicked. This " "setting is taken into account only if trayicon is used." @@ -5556,11 +6814,14 @@ msgstr "" "ЕÑли True, то Gajim будет завершатьÑÑ Ð¿Ñ€Ð¸ нажатии на кнопку Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¾ÐºÐ½Ð°. " "Ðта Ð¾Ð¿Ñ†Ð¸Ñ ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ еÑли иÑпользуетÑÑ Ð¸ÐºÐ¾Ð½ÐºÐ° Ð´Ð»Ñ Ñ‚Ñ€ÐµÑ." -#: ../src/common/config.py:191 -msgid "If True, Gajim registers for xmpp:// on each startup." -msgstr "ЕÑли True, то Gajim будет региÑтрировать xmpp:// при каждом запуÑке" +#: ../src/common/config.py:213 +msgid "" +"If True, Gajim will check if it's the default jabber client on each startup." +msgstr "" +"ЕÑли True, то Gajim будет проверÑÑ‚ÑŒ при запуÑке,ÑвлÑетÑÑ Ð»Ð¸ он jabber-" +"клиентом по умолчанию." -#: ../src/common/config.py:192 +#: ../src/common/config.py:214 msgid "" "If True, Gajim will display an icon on each tab containing unread messages. " "Depending on the theme, this icon may be animated." @@ -5568,7 +6829,7 @@ msgstr "" "ЕÑли True, то Gajim иконку на каждой вкладке, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñодержит непрочитанные " "ÑообщениÑ. Ð’ завиÑимоÑти от темы, она может быть анимированной." -#: ../src/common/config.py:193 +#: ../src/common/config.py:215 msgid "" "If True, Gajim will display the status message, if not empty, for every " "contact under the contact name in roster window." @@ -5576,7 +6837,7 @@ msgstr "" "ЕÑли True, то Gajim будет отображать Ñообщение о ÑтатуÑе, еÑли оно не " "пуÑтое, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ контакта под именем контакта в окне роÑтера" -#: ../src/common/config.py:195 +#: ../src/common/config.py:217 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." @@ -5584,44 +6845,52 @@ msgstr "" "ЕÑли True, то Gajim будет запрашивать аватару Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ контакта, у " "которого её не было в поÑледний раз или она уже Ñлишком ÑтараÑ." -#: ../src/common/config.py:196 +#: ../src/common/config.py:218 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 "" -"ЕÑли отключено, то Gajim больше не будет показывать ÑтатуÑную Ñтроку в окне беÑеды, " -"когда контакт менÑет его или её ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸/или Ñообщение о ÑтатуÑе." +"ЕÑли отключено, то Gajim больше не будет показывать ÑтатуÑную Ñтроку в окне " +"беÑеды, когда контакт менÑет его или её ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸/или Ñообщение о ÑтатуÑе." -#: ../src/common/config.py:197 +#: ../src/common/config.py:219 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 " +"status messages. If \"in_and_out\", Gajim will only print FOO enters/leaves " "group chat." -msgstr "может быть \"нет\", \"вÑе\" или \"вход и выход\". ЕÑли уÑтановлено \"нет\", то Gajim больше не будет выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе в комнатах когда учаÑтник или учаÑтница менÑет Ñвой ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð»Ð¸ Ñообщение о ÑтатуÑе. ЕÑли уÑтановлено в \"вÑе\", то Gajim будет выводить вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе. ЕÑли уÑтановлено в \"вход и выход\", то Gajim будет выводить Ñообщение только когда кто-то входит или выходит из комнаты." +msgstr "" +"может быть \"none\", \"all\" или \"in_and_out\". ЕÑли уÑтановлено \"none\", " +"то Gajim больше не будет выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе в комнатах когда " +"учаÑтник менÑет Ñвой ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð»Ð¸ Ñообщение о ÑтатуÑе. ЕÑли уÑтановлено в \"all" +"\", то Gajim будет выводить вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе. ЕÑли уÑтановлено в " +"\"in_and_out\", то Gajim будет выводить Ñообщение только когда кто-то входит " +"или выходит из комнаты." -#: ../src/common/config.py:199 +#: ../src/common/config.py:221 msgid "Background color of contacts when they just signed in." msgstr "Фоновый цвет контакта, который только что вошел." -#: ../src/common/config.py:200 +#: ../src/common/config.py:222 msgid "Background color of contacts when they just signed out." msgstr "Фоновый цвет контакта, который только что вышел." -#: ../src/common/config.py:202 -msgid "If True, restored messages will use a smaller font than the default one." -msgstr "ЕÑли уÑтановлено, то воÑÑтановленные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ иметь меньший шрифт." +#: ../src/common/config.py:224 +msgid "" +"If True, restored messages will use a smaller font than the default one." +msgstr "" +"ЕÑли уÑтановлено, то воÑÑтановленные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ иметь меньший шрифт." -#: ../src/common/config.py:203 +#: ../src/common/config.py:225 msgid "Don't show avatar for the transport itself." msgstr "Ðе показывать аватар Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ñпорта." -#: ../src/common/config.py:204 +#: ../src/common/config.py:226 msgid "Don't show roster in the system taskbar." msgstr "Ðе показывать роÑтер в панели задач." -#: ../src/common/config.py:205 +#: ../src/common/config.py:227 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 " @@ -5631,7 +6900,7 @@ msgstr "" "(поведение по умолчанию Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð½Ñтва менеджеров окон) когда приÑутÑтвуют " "не проÑмотренные ÑобытиÑ." -#: ../src/common/config.py:207 +#: ../src/common/config.py:229 msgid "" "Jabberd1.4 does not like sha info when one join a password protected group " "chat. Turn this option to False to stop sending sha info in group chat " @@ -5642,7 +6911,7 @@ msgstr "" "информации Ð´Ð»Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚" #. always, never, peracct, pertype should not be translated -#: ../src/common/config.py:210 +#: ../src/common/config.py:232 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -5660,77 +6929,153 @@ msgstr "" "Ñвое окно. Заметьте, что при изменении Ñтого параметра требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑк " "Gajim, чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñтупили в Ñилу." -#: ../src/common/config.py:211 +#: ../src/common/config.py:233 msgid "If False, you will no longer see the avatar in the chat window." msgstr "ЕÑли False, вы больше не будете видеть аватары в окне беÑеды." -#: ../src/common/config.py:212 +#: ../src/common/config.py:234 msgid "If True, pressing the escape key closes a tab/window." msgstr "ЕÑли True, то нажатие клавиши Escape будет закрывать вкладку/окно." -#: ../src/common/config.py:213 -msgid "Hides the buttons in group chat window." -msgstr "Скрывает кнопки окна комнаты." - -#: ../src/common/config.py:214 -msgid "Hides the buttons in two persons chat window." -msgstr "Скрывает кнопки в окне беÑеды." +#: ../src/common/config.py:235 +msgid "Hides the buttons in chat windows." +msgstr "Скрывает кнопки в окнах чата." -#: ../src/common/config.py:215 +#: ../src/common/config.py:236 msgid "Hides the banner in a group chat window" msgstr "Скрывает баннер в окне комнаты" -#: ../src/common/config.py:216 +#: ../src/common/config.py:237 msgid "Hides the banner in two persons chat window" -msgstr "Скрывает баннер в окне беÑеды" +msgstr "Скрывает баннер в окне чата" -#: ../src/common/config.py:217 +#: ../src/common/config.py:238 msgid "Hides the group chat occupants list in group chat window." msgstr "Скрывает ÑпиÑок поÑетителей в окне комнаты." -#: ../src/common/config.py:218 +#: ../src/common/config.py:239 msgid "" "In a chat, show the nickname at the beginning of a line only when it's not " "the same person talking than in previous message." -msgstr "При беÑеде, показывать ник в начале Ñтроки только тогда, когда его произноÑит учаÑтник отличный от того, кто Ñказал предыдущее." +msgstr "" +"Показывать ник в начале Ñтроки в чате только еÑли предыдущее Ñообщение было " +"напиÑано другим учаÑтником." -#: ../src/common/config.py:219 -msgid "Indentation when using merge consecutive nickame." +#: ../src/common/config.py:240 +msgid "Indentation when using merge consecutive nickname." msgstr "" -#: ../src/common/config.py:220 +#: ../src/common/config.py:241 +msgid "Smooth scroll message in conversation window" +msgstr "Плавно прокручивать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² окне чата" + +#: ../src/common/config.py:242 msgid "List of colors that will be used to color nicknames in group chats." -msgstr "СпиÑок цветов, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ Ñ€Ð°ÑкраÑки ников в комнатах." +msgstr "" +"СпиÑок цветов, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ Ñ€Ð°ÑкраÑки ников в комнатах." -#: ../src/common/config.py:221 +#: ../src/common/config.py:243 msgid "Ctrl-Tab go to next composing tab when none is unread." -msgstr "ИÑпользовать Ctrl-Tab чтобы перейти к Ñледующей вкладке Ñ ÑоÑтавлÑемым Ñообщением, когда нет непрочитанных Ñообщений." +msgstr "" +"ИÑпользовать Ctrl-Tab чтобы перейти к Ñледующей вкладке Ñ ÑоÑтавлÑемым " +"Ñообщением, когда нет непрочитанных Ñообщений." -#: ../src/common/config.py:222 +#: ../src/common/config.py:244 msgid "" "Should we show the confirm metacontacts creation dialog or not? Empty string " "means we never show the dialog." -msgstr "Рнам надо показывать диалог Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¾ Ñоздании метаконтакта? ЕÑли тут пуÑÑ‚Ð°Ñ Ñтрока, то Ñообщение не будет показыватьÑÑ Ð²Ð¾Ð¾Ð±Ñ‰Ðµ." +msgstr "" +"Рнам надо показывать диалог Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¾ Ñоздании метаконтакта? ЕÑли тут " +"пуÑÑ‚Ð°Ñ Ñтрока, то Ñообщение не будет показыватьÑÑ Ð²Ð¾Ð¾Ð±Ñ‰Ðµ." -#: ../src/common/config.py:223 +#: ../src/common/config.py:245 msgid "" "If True, you will be able to set a negative priority to your account in " -"account modification window. BE CAREFULL, when you are logged in with a " +"account modification window. BE CAREFUL, when you are logged in with a " "negative priority, you will NOT receive any message from your server." -msgstr "ЕÑли уÑтановлено, то у Ð²Ð°Ñ Ð¿Ð¾ÑвитÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ÑŒ назначить Ð´Ð»Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð° приоритет меньше Ð½ÑƒÐ»Ñ Ð² окне наÑтройки аккаунта. БУДЬТЕ ОСТОРОЖÐЫ, еÑли вы подключитеÑÑŒ еще раз Ñ Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ приоритетом, то вы ÐЕ получите никаких Ñообщений от Ñервера." +msgstr "" +"ЕÑли уÑтановлено, то у Ð²Ð°Ñ Ð¿Ð¾ÑвитÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ÑŒ назначить Ð´Ð»Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð° " +"приоритет меньше Ð½ÑƒÐ»Ñ Ð² окне наÑтройки аккаунта. БУДЬТЕ ОСТОРОЖÐЫ, еÑли вы " +"подключитеÑÑŒ еще раз Ñ Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ приоритетом, то вы ÐЕ получите никаких " +"Ñообщений от Ñервера." -#: ../src/common/config.py:234 +#: ../src/common/config.py:246 +msgid "" +"If True, Gajim will use Gnome Keyring (if available) to store account " +"passwords." +msgstr "" +"ЕÑли активно, Gajim будет иÑпользовать (еÑли возможно) Gnome Keyring Ð´Ð»Ñ " +"Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¹ учетных запиÑей." + +#: ../src/common/config.py:247 +msgid "" +"If True, Gajim will show number of online and total contacts in account and " +"group rows." +msgstr "" +"ЕÑли активно, Gajim будет показывать количеÑтво контактов онлайн/вÑего в " +"Ñтроках Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ аккаунта и групп." + +#: ../src/common/config.py:248 +msgid "" +"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " +"as if they were of this type" +msgstr "" +"Может быть пуÑто, 'chat' или 'normal'. ЕÑли не пуÑто - обрабатывать вÑе " +"входÑщие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ‚Ð°Ðº, как будто бы они были Ñтого типа." + +#: ../src/common/config.py:249 +msgid "" +"If True, Gajim will scroll and select the contact who sent you the last " +"message, if chat window is not already opened." +msgstr "" +"ЕÑли активно, Gajim прокрутит роÑтер и выделит контакт, который напиÑал Вам " +"Ñообщение поÑледним, еÑли окно чата еще небыло открыто." + +#: ../src/common/config.py:250 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" +"ЕÑли активно, Gajim будет конвертировать Ñтроку между $$ и $$ в изображение, " +"иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ dvips и конвертировать до вÑтавки его в чат-окно." + +#: ../src/common/config.py:251 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ðµ активноÑти прежде чем окно Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑтатуÑа закроетÑÑ." + +#: ../src/common/config.py:252 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "МакÑимальное количеÑтво Ñтрок в окне.Старые Ñтроки будут удалены." + +#: ../src/common/config.py:253 +msgid "" +"If True, notification windows from notification-daemon will be attached to " +"systray icon." +msgstr "" +"ЕÑли активно, окно ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ notification-daemon будет приÑоединено к " +"ÑиÑтемному трею." + +#: ../src/common/config.py:264 msgid "" "Priority will change automatically according to your status. Priorities are " "defined in autopriority_* options." msgstr "" +"Приоритет будет изменÑÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки ÑоглаÑно вашему ÑтатуÑу.Приоритеты " +"Ð´Ð»Ñ ÑтатуÑов задаютÑÑ Ð² пункте autopriority_* ." + +#: ../src/common/config.py:276 +msgid "" +"If disabled, don't sign presences with GPG key, even if GPG is configured." +msgstr "" #. yes, no, ask -#: ../src/common/config.py:263 +#: ../src/common/config.py:294 msgid "Jabberd2 workaround" msgstr "КоÑтыль Ð´Ð»Ñ jabberd2" -#: ../src/common/config.py:267 +#: ../src/common/config.py:298 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -5738,101 +7083,101 @@ msgstr "" "ЕÑли отмечено, Gajim будет иÑпользовать ваш IP и прокÑи, определенные в " "параметре file_transfer_proxies Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ файлов" -#: ../src/common/config.py:326 +#: ../src/common/config.py:357 msgid "Is OpenPGP enabled for this contact?" msgstr "ИÑпользуетÑÑ Ð»Ð¸ Ð´Ð»Ñ Ñтого контакта OpenPGP" -#: ../src/common/config.py:327 ../src/common/config.py:330 +#: ../src/common/config.py:358 ../src/common/config.py:361 msgid "Language for which we want to check misspelled words" msgstr "Язык, который иÑпользуетÑÑ Ð¿Ñ€Ð¸ проверке правопиÑаниÑ" -#: ../src/common/config.py:336 +#: ../src/common/config.py:367 msgid "all or space separated status" msgstr "вÑе или ÑтатуÑÑ‹, разделенные пробелом" -#: ../src/common/config.py:337 +#: ../src/common/config.py:368 msgid "'yes', 'no', or 'both'" msgstr "\"да\", \"нет\" или \"оба\"" -#: ../src/common/config.py:338 ../src/common/config.py:340 -#: ../src/common/config.py:341 ../src/common/config.py:344 -#: ../src/common/config.py:345 +#: ../src/common/config.py:369 ../src/common/config.py:371 +#: ../src/common/config.py:372 ../src/common/config.py:375 +#: ../src/common/config.py:376 msgid "'yes', 'no' or ''" msgstr "\"да\", \"нет\" или \"\"" -#: ../src/common/config.py:351 +#: ../src/common/config.py:382 msgid "Sleeping" msgstr "Сплю" -#: ../src/common/config.py:352 +#: ../src/common/config.py:383 msgid "Back soon" msgstr "Скоро буду" -#: ../src/common/config.py:352 +#: ../src/common/config.py:383 msgid "Back in some minutes." msgstr "ВернуÑÑŒ через неÑколько минут" -#: ../src/common/config.py:353 +#: ../src/common/config.py:384 msgid "Eating" msgstr "Ем" -#: ../src/common/config.py:353 +#: ../src/common/config.py:384 msgid "I'm eating, so leave me a message." msgstr "Кушаю, так что оÑтавьте Ñообщение Ñекретарю." -#: ../src/common/config.py:354 +#: ../src/common/config.py:385 msgid "Movie" msgstr "Ð’ кино" -#: ../src/common/config.py:354 +#: ../src/common/config.py:385 msgid "I'm watching a movie." msgstr "Смотрю кино" -#: ../src/common/config.py:355 +#: ../src/common/config.py:386 msgid "Working" msgstr "Работаю" -#: ../src/common/config.py:355 +#: ../src/common/config.py:386 msgid "I'm working." msgstr "Работаю" -#: ../src/common/config.py:356 +#: ../src/common/config.py:387 msgid "Phone" msgstr "Телефон" -#: ../src/common/config.py:356 +#: ../src/common/config.py:387 msgid "I'm on the phone." msgstr "Говорю по телефону" -#: ../src/common/config.py:357 +#: ../src/common/config.py:388 msgid "Out" msgstr "Вышел" -#: ../src/common/config.py:357 +#: ../src/common/config.py:388 msgid "I'm out enjoying life." msgstr "ÐаÑлаждаюÑÑŒ жизнью, чего и вам желаю." -#: ../src/common/config.py:361 +#: ../src/common/config.py:392 msgid "I'm available." msgstr "Я здеÑÑŒ." -#: ../src/common/config.py:362 +#: ../src/common/config.py:393 msgid "I'm free for chat." msgstr "Я готов поболтать." -#: ../src/common/config.py:364 +#: ../src/common/config.py:395 msgid "I'm not available." msgstr "ÐœÐµÐ½Ñ Ð½ÐµÑ‚." -#: ../src/common/config.py:365 +#: ../src/common/config.py:396 msgid "Do not disturb." msgstr "Ðе беÑпокоить." -#: ../src/common/config.py:366 ../src/common/config.py:367 +#: ../src/common/config.py:397 ../src/common/config.py:398 msgid "Bye!" msgstr "Пока!" -#: ../src/common/config.py:376 +#: ../src/common/config.py:407 msgid "" "Sound to play when a group chat message contains one of the words in " "muc_highlight_words, or when a group chat message contains your nickname." @@ -5841,198 +7186,373 @@ msgstr "" "Ñодержит Ñлово из ÑпиÑка muc_highlight_words, или когда Ñообщение Ñодержит " "ваш ник." -#: ../src/common/config.py:377 +#: ../src/common/config.py:408 msgid "Sound to play when any MUC message arrives." msgstr "Звук, который нужно проигрывать, когда приходит любое Ñообщение MUC." -#: ../src/common/config.py:386 ../src/common/optparser.py:197 +#: ../src/common/config.py:417 ../src/common/optparser.py:220 msgid "green" msgstr "зеленый" -#: ../src/common/config.py:390 ../src/common/optparser.py:183 +#: ../src/common/config.py:421 ../src/common/optparser.py:206 msgid "grocery" msgstr "овощной" -#: ../src/common/config.py:394 +#: ../src/common/config.py:425 msgid "human" msgstr "телеÑный" -#: ../src/common/config.py:398 +#: ../src/common/config.py:429 msgid "marine" msgstr "морÑкой" -#: ../src/common/connection_handlers.py:52 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 +#: ../src/common/connection_handlers.py:61 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:49 msgid "Unable to load idle module" msgstr "Ðе могу загрузить модуль \"idle\"" -#: ../src/common/connection_handlers.py:177 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:233 +#: ../src/common/connection_handlers.py:219 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 msgid "Wrong host" msgstr "Ðеверный хоÑÑ‚" -#: ../src/common/connection_handlers.py:177 -#: ../src/common/zeroconf/connection_handlers_zeroconf.py:233 -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:220 +msgid "Invalid local address? :-O" +msgstr "Ðеправильный локальный адреÑ? :-O" -#: ../src/common/connection_handlers.py:590 +#: ../src/common/connection_handlers.py:618 #, python-format msgid "Registration information for transport %s has not arrived in time" msgstr "Данные о региÑтрации Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ñпорта %s не пришли вовремÑ." -#: ../src/common/connection_handlers.py:1523 +#: ../src/common/connection_handlers.py:1806 #, python-format msgid "Nickname not allowed: %s" msgstr "Ðик недопуÑтим: %s" -#. password required to join #. we are banned #. group chat does not exist -#: ../src/common/connection_handlers.py:1585 -#: ../src/common/connection_handlers.py:1588 -#: ../src/common/connection_handlers.py:1591 -#: ../src/common/connection_handlers.py:1594 -#: ../src/common/connection_handlers.py:1597 -#: ../src/common/connection_handlers.py:1600 -#: ../src/common/connection_handlers.py:1608 +#: ../src/common/connection_handlers.py:1876 +#: ../src/common/connection_handlers.py:1879 +#: ../src/common/connection_handlers.py:1882 +#: ../src/common/connection_handlers.py:1885 +#: ../src/common/connection_handlers.py:1889 +#: ../src/common/connection_handlers.py:1898 msgid "Unable to join group chat" msgstr "Ðе получаетÑÑ Ð²Ð¾Ð¹Ñ‚Ð¸ в комнату" -#: ../src/common/connection_handlers.py:1586 -msgid "A password is required to join this group chat." -msgstr "Чтобы войти в Ñту комнату, нужен пароль." - -#: ../src/common/connection_handlers.py:1589 -msgid "You are banned from this group chat." -msgstr "Вам запрещено входить в Ñту комнату." +#: ../src/common/connection_handlers.py:1877 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Вам запрещено входить в комнату %s." -#: ../src/common/connection_handlers.py:1592 -msgid "Such group chat does not exist." -msgstr "Такой комнаты нет." +#: ../src/common/connection_handlers.py:1880 +#, python-format +msgid "Group chat %s does not exist." +msgstr "Комнаты %s не ÑущеÑтвует." -#: ../src/common/connection_handlers.py:1595 +#: ../src/common/connection_handlers.py:1883 msgid "Group chat creation is restricted." msgstr "Создание комнат запрещено." -#: ../src/common/connection_handlers.py:1598 -msgid "Your registered nickname must be used." -msgstr "ТребуетÑÑ Ð¸Ñпользовать ваш зарегиÑтрированный ник." +#: ../src/common/connection_handlers.py:1886 +#, python-format +msgid "Your registered nickname must be used in group chat %s." +msgstr "Ðеобходимо иÑпользовать Ваш зарегиÑтрированный ник в комнате %s." -#: ../src/common/connection_handlers.py:1601 -msgid "You are not in the members list." -msgstr "Ð’Ð°Ñ Ð½ÐµÑ‚ в ÑпиÑке членов комнаты." +#: ../src/common/connection_handlers.py:1890 +#, python-format +msgid "You are not in the members list in groupchat %s." +msgstr "Ð’Ð°Ñ Ð½ÐµÑ‚ в ÑпиÑке членов комнаты %s." -#: ../src/common/connection_handlers.py:1609 +#: ../src/common/connection_handlers.py:1899 +#, python-format msgid "" -"Your desired nickname is in use or registered by another occupant.\n" +"Your desired nickname in group chat %s is in use or registered by another " +"occupant.\n" "Please specify another nickname below:" msgstr "" -"Тот ник что вы ввели уже иÑпользуетÑÑ Ð¸Ð»Ð¸ зарегиÑтрирован другим пользователем.\n" +"Тот ник что вы ввели в комнате %s уже иÑпользуетÑÑ Ð¸Ð»Ð¸ зарегиÑтрирован " +"другим пользователем.\n" "ПожалуйÑта укажите другой ник ниже:" -#: ../src/common/connection_handlers.py:1659 +#. Room has been destroyed. see +#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom +#: ../src/common/connection_handlers.py:1930 +msgid "Room has been destroyed" +msgstr "Комната была удалена" + +#: ../src/common/connection_handlers.py:1937 +#, python-format +msgid "You can join this room instead: %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1964 msgid "I would like to add you to my roster." msgstr "Ð’Ñ‹ не возражаете, еÑли Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑŽ Ð’Ð°Ñ Ð² Ñвой роÑтер?" #. BE CAREFUL: no con.updateRosterItem() in a callback -#: ../src/common/connection_handlers.py:1680 +#: ../src/common/connection_handlers.py:1985 #, python-format msgid "we are now subscribed to %s" msgstr "теперь мы подпиÑалиÑÑŒ на %s" -#: ../src/common/connection_handlers.py:1682 +#: ../src/common/connection_handlers.py:1987 #, python-format msgid "unsubscribe request from %s" msgstr "%s хочет отменить подпиÑку" -#: ../src/common/connection_handlers.py:1684 +#: ../src/common/connection_handlers.py:1989 #, python-format msgid "we are now unsubscribed from %s" msgstr "теперь мы отпиÑалиÑÑŒ от %s" -#: ../src/common/connection_handlers.py:1854 +#: ../src/common/connection_handlers.py:2116 #, 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/ чтобы удалить его" +msgstr "" +"JID %s не ÑоответÑтвует RFC. Он не будет добавлен в ваш роÑтер. ИÑпользуйте " +"ÑредÑтво ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ€Ð¾Ñтера, например http://jru.jabberstudio.org/ чтобы " +"удалить его" + +#. We didn't set a passphrase +#: ../src/common/connection_handlers.py:2155 +#: ../src/common/zeroconf/connection_zeroconf.py:168 +msgid "OpenPGP passphrase was not given" +msgstr "Ðе задана Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° OpenPGP" + +#: ../src/common/connection.py:62 +msgid "Unable to get issuer certificate" +msgstr "" + +#: ../src/common/connection.py:63 +msgid "Unable to get certificate CRL" +msgstr "" -#: ../src/common/connection.py:175 -#: ../src/common/zeroconf/connection_zeroconf.py:196 +#: ../src/common/connection.py:64 +msgid "Unable to decrypt certificate's signature" +msgstr "" + +#: ../src/common/connection.py:65 +msgid "Unable to decrypt CRL's signature" +msgstr "" + +#: ../src/common/connection.py:66 +#, fuzzy +msgid "Unable to decode issuer public key" +msgstr "Ðе могу загрузить модуль \"idle\"" + +#: ../src/common/connection.py:67 +msgid "Certificate signature failure" +msgstr "" + +#: ../src/common/connection.py:68 +msgid "CRL signature failure" +msgstr "" + +#: ../src/common/connection.py:69 +msgid "Certificate is not yet valid" +msgstr "" + +#: ../src/common/connection.py:70 +msgid "Certificate has expired" +msgstr "" + +#: ../src/common/connection.py:71 +msgid "CRL is not yet valid" +msgstr "" + +#: ../src/common/connection.py:72 +msgid "CRL has expired" +msgstr "" + +#: ../src/common/connection.py:73 +msgid "Format error in certificate's notBefore field" +msgstr "" + +#: ../src/common/connection.py:74 +msgid "Format error in certificate's notAfter field" +msgstr "" + +#: ../src/common/connection.py:75 +msgid "Format error in CRL's lastUpdate field" +msgstr "" + +#: ../src/common/connection.py:76 +msgid "Format error in CRL's nextUpdate field" +msgstr "" + +#: ../src/common/connection.py:77 +msgid "Out of memory" +msgstr "" + +#: ../src/common/connection.py:78 +msgid "Self signed certificate in certificate chain" +msgstr "" + +#: ../src/common/connection.py:79 +msgid "Unable to get local issuer certificate" +msgstr "" + +#: ../src/common/connection.py:80 ../src/common/connection.py:81 +msgid "Unable to verify the first certificate" +msgstr "" + +#: ../src/common/connection.py:82 +msgid "Certificate chain too long" +msgstr "" + +#: ../src/common/connection.py:83 +msgid "Certificate revoked" +msgstr "" + +#: ../src/common/connection.py:84 +#, fuzzy +msgid "Invalid CA certificate" +msgstr "Ðеверное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" + +#: ../src/common/connection.py:85 +msgid "Path length constraint exceeded" +msgstr "" + +#: ../src/common/connection.py:86 +msgid "Unsupported certificate purpose" +msgstr "" + +#: ../src/common/connection.py:87 +msgid "Certificate not trusted" +msgstr "" + +#: ../src/common/connection.py:88 +msgid "Certificate rejected" +msgstr "" + +#: ../src/common/connection.py:89 +msgid "Subject issuer mismatch" +msgstr "" + +#: ../src/common/connection.py:90 +msgid "Authority and subject key identifier mismatch" +msgstr "" + +#: ../src/common/connection.py:91 +msgid "Authority and issuer serial number mismatch" +msgstr "" + +#: ../src/common/connection.py:92 +msgid "Key usage does not include certificate signing" +msgstr "" + +#: ../src/common/connection.py:93 +msgid "Application verification failure" +msgstr "" + +#: ../src/common/connection.py:246 +#: ../src/common/zeroconf/connection_zeroconf.py:208 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "СвÑзь Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью \"%s\" была потерÑна" -#: ../src/common/connection.py:176 +#: ../src/common/connection.py:247 msgid "Reconnect manually." msgstr "ПереподключатьÑÑ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ." -#: ../src/common/connection.py:187 ../src/common/connection.py:214 +#: ../src/common/connection.py:258 #, python-format -msgid "Transport %s answered wrongly to register request: %s" -msgstr "ТранÑпорт %s неверно ответил на Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾ региÑтрации: %s" +msgid "Server %s answered wrongly to register request: %s" +msgstr "Сервер %s неверно ответил на Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾ региÑтрации: %s" + +#: ../src/common/connection.py:291 +#, python-format +msgid "Server %s provided a different registration form" +msgstr "" + +#: ../src/common/connection.py:307 +#, python-format +msgid "Unknown SSL error: %d" +msgstr "" #. wrong answer -#: ../src/common/connection.py:213 +#: ../src/common/connection.py:322 msgid "Invalid answer" msgstr "Ðеверный ответ" -#: ../src/common/connection.py:405 ../src/common/connection.py:440 -#: ../src/common/connection.py:889 -#: ../src/common/zeroconf/connection_zeroconf.py:217 +#: ../src/common/connection.py:323 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "ТранÑпорт %s неверно ответил на Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾ региÑтрации: %s" + +#: ../src/common/connection.py:469 +msgid "Connection to proxy failed" +msgstr "Соединение Ñ Ð¿Ñ€Ð¾ÐºÑи разорвалоÑÑŒ" + +#: ../src/common/connection.py:523 ../src/common/connection.py:585 +#: ../src/common/connection.py:1140 +#: ../src/common/zeroconf/connection_zeroconf.py:242 #, python-format msgid "Could not connect to \"%s\"" msgstr "Ðе могу ÑоединитьÑÑ Ñ \"%s\"" -#: ../src/common/connection.py:419 +#: ../src/common/connection.py:537 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Подключен к Ñерверу %s: %s Ñ %s" -#: ../src/common/connection.py:441 +#: ../src/common/connection.py:548 +#, python-format +msgid "The authenticity of the %s certificate could be invalid." +msgstr "" + +#: ../src/common/connection.py:551 +#, python-format +msgid "" +"\n" +"SSL Error: %s" +msgstr "" + +#: ../src/common/connection.py:553 +#, python-format +msgid "" +"\n" +"Unknown SSL error: %d" +msgstr "" + +#: ../src/common/connection.py:586 msgid "Check your connection or try again later" msgstr "Проверьте наÑтройки Ñети или попробуйте еще раз позже" -#: ../src/common/connection.py:467 +#: ../src/common/connection.py:611 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Ошибка аутентификации Ñ \"%s\"" -#: ../src/common/connection.py:468 +#: ../src/common/connection.py:613 msgid "Please check your login and password for correctness." msgstr "ПожалуйÑта, проверьте правильноÑÑ‚ÑŒ логина и паролÑ." -#. We didn't set a passphrase -#: ../src/common/connection.py:585 -#: ../src/common/zeroconf/connection_zeroconf.py:156 -msgid "OpenPGP passphrase was not given" -msgstr "Ðе задана Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° OpenPGP" - -#. do not show I'm invisible! -#: ../src/common/connection.py:627 -msgid "invisible" -msgstr "невидимка" +#: ../src/common/connection.py:656 +msgid "Error while removing privacy list" +msgstr "Ошибка при удалении ÑпиÑка приватноÑти" -#: ../src/common/connection.py:628 -msgid "offline" -msgstr "отключен" - -#: ../src/common/connection.py:629 +#: ../src/common/connection.py:657 #, python-format -msgid "I'm %s" -msgstr "%s" +msgid "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." +msgstr "" +"СпиÑок приватноÑти %s не может быть удален.Возможно он иÑпользуетÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из " +"ваших активных реÑурÑов.Отключите реÑÑƒÑ€Ñ Ð¸ попробуйте Ñнова." #. we're not english #. one in locale and one en -#: ../src/common/connection.py:720 +#: ../src/common/connection.py:933 msgid "[This message is *encrypted* (See :JEP:`27`]" msgstr "[Ðто Ñообщение *зашифровано*, Ñм. :JEP:`27`]" -#: ../src/common/connection.py:776 -#: ../src/common/zeroconf/connection_zeroconf.py:397 +#: ../src/common/connection.py:1007 +#: ../src/common/zeroconf/connection_zeroconf.py:436 #, python-format msgid "" "Subject: %s\n" @@ -6041,34 +7561,38 @@ msgstr "" "Тема: %s\n" "%s" -#: ../src/common/connection.py:915 +#: ../src/common/connection.py:1172 msgid "Not fetched because of invisible status" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ из-за невидимоÑти" +#: ../src/common/contacts.py:299 +msgid "Not in roster" +msgstr "Ðе в роÑтере" + #. only say that to non Windows users -#: ../src/common/dbus_support.py:33 +#: ../src/common/dbus_support.py:41 msgid "D-Bus python bindings are missing in this computer" msgstr "Ðа компьютере не уÑтановлена библиотека D-Bus Ð´Ð»Ñ Python" -#: ../src/common/dbus_support.py:34 +#: ../src/common/dbus_support.py:42 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "ВозможноÑти работы Gajim Ñ D-Bus не могут быть иÑпользованы" -#: ../src/common/exceptions.py:22 +#: ../src/common/exceptions.py:27 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "отÑутÑтвует библиотека pysqlite2 (или python-pysqlite2). Выход..." -#: ../src/common/exceptions.py:30 +#: ../src/common/exceptions.py:44 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупен: Gajim не запущен или отключена Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ " "управлениÑ" -#: ../src/common/exceptions.py:38 +#: ../src/common/exceptions.py:52 msgid "D-Bus is not present on this machine or python module is missing" msgstr "Ðа машине отÑутÑтвует D-Bus или модуль питона Ð´Ð»Ñ Ð½ÐµÐµ" -#: ../src/common/exceptions.py:46 +#: ../src/common/exceptions.py:60 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -6076,483 +7600,490 @@ msgstr "" "Шина D-Bus не доÑтупна.\n" "Попробуйте прочитать http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "one" msgstr "один" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "two" msgstr "два" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "three" msgstr "три" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "four" msgstr "четыре" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "five" msgstr "пÑÑ‚ÑŒ" -#: ../src/common/fuzzyclock.py:42 +#: ../src/common/fuzzyclock.py:47 msgid "six" msgstr "шеÑÑ‚ÑŒ" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "seven" msgstr "Ñемь" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eight" msgstr "воÑемь" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "nine" msgstr "девÑÑ‚ÑŒ" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "ten" msgstr "деÑÑÑ‚ÑŒ" -#: ../src/common/fuzzyclock.py:43 +#: ../src/common/fuzzyclock.py:48 msgid "eleven" msgstr "одиннадцать" -#: ../src/common/fuzzyclock.py:44 +#: ../src/common/fuzzyclock.py:49 msgid "twelve" msgstr "двенадцать" #. 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). ''' #. A "singular-form". It is used when talking about hour 0 -#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 -msgid "%0 o'clock" +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "$0 o'clock" msgstr "%0" -#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 -msgid "five past %0" +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "five past $0" msgstr "пÑÑ‚ÑŒ минут %1" -#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:56 -msgid "ten past %0" +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 +msgid "ten past $0" msgstr "деÑÑÑ‚ÑŒ минут %1" -#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 -msgid "quarter past %0" +#: ../src/common/fuzzyclock.py:53 ../src/common/fuzzyclock.py:61 +msgid "quarter past $0" msgstr "четверть %1" -#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:57 -msgid "twenty past %0" +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 +msgid "twenty past $0" msgstr "двадцать минут %1" -#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 -msgid "twenty five past %0" +#: ../src/common/fuzzyclock.py:54 ../src/common/fuzzyclock.py:62 +msgid "twenty five past $0" msgstr "двадцать пÑÑ‚ÑŒ минут %1" -#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:58 -msgid "half past %0" +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 +msgid "half past $0" msgstr "половина %1" -#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 -msgid "twenty five to %1" +#: ../src/common/fuzzyclock.py:55 ../src/common/fuzzyclock.py:63 +msgid "twenty five to $1" msgstr "без двадцати пÑти %1" -#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:59 -msgid "twenty to %1" +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 +msgid "twenty to $1" msgstr "без двадцати %1" -#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 -msgid "quarter to %1" +#: ../src/common/fuzzyclock.py:56 ../src/common/fuzzyclock.py:64 +msgid "quarter to $1" msgstr "без четверти %1" -#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:60 -msgid "ten to %1" +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 +msgid "ten to $1" msgstr "без деÑÑти %1" -#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:60 -msgid "five to %1" +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:65 +msgid "five to $1" msgstr "без пÑти %1" -#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 -msgid "%1 o'clock" +#: ../src/common/fuzzyclock.py:57 ../src/common/fuzzyclock.py:66 +msgid "$1 o'clock" msgstr "%1" -#: ../src/common/fuzzyclock.py:62 +#: ../src/common/fuzzyclock.py:69 msgid "Night" msgstr "Ðочь" -#: ../src/common/fuzzyclock.py:62 +#: ../src/common/fuzzyclock.py:69 msgid "Early morning" msgstr "Раннее утро" -#: ../src/common/fuzzyclock.py:62 +#: ../src/common/fuzzyclock.py:69 msgid "Morning" msgstr "Утро" -#: ../src/common/fuzzyclock.py:62 +#: ../src/common/fuzzyclock.py:69 msgid "Almost noon" msgstr "День" -#: ../src/common/fuzzyclock.py:63 +#: ../src/common/fuzzyclock.py:70 msgid "Noon" msgstr "Полдень" -#: ../src/common/fuzzyclock.py:63 +#: ../src/common/fuzzyclock.py:70 msgid "Afternoon" msgstr "День" -#: ../src/common/fuzzyclock.py:63 +#: ../src/common/fuzzyclock.py:70 msgid "Evening" msgstr "Вечер" -#: ../src/common/fuzzyclock.py:63 +#: ../src/common/fuzzyclock.py:70 msgid "Late evening" msgstr "Поздний вечер" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:72 msgid "Start of week" msgstr "Ðачало недели" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:72 msgid "Middle of week" msgstr "Середина недели" -#: ../src/common/fuzzyclock.py:65 +#: ../src/common/fuzzyclock.py:72 msgid "End of week" msgstr "Конец недели" -#: ../src/common/fuzzyclock.py:66 +#: ../src/common/fuzzyclock.py:73 msgid "Weekend!" msgstr "Выходные!" -#: ../src/common/helpers.py:105 +#: ../src/common/helpers.py:124 msgid "Invalid character in username." msgstr "Ðеверный Ñимвол в имени пользователÑ." -#: ../src/common/helpers.py:110 +#: ../src/common/helpers.py:129 msgid "Server address required." msgstr "ТребуетÑÑ Ð°Ð´Ñ€ÐµÑ Ñервера." -#: ../src/common/helpers.py:115 +#: ../src/common/helpers.py:134 msgid "Invalid character in hostname." msgstr "Ðеверный Ñимвол в имени Ñервера" -#: ../src/common/helpers.py:121 +#: ../src/common/helpers.py:140 msgid "Invalid character in resource." msgstr "Ðеверный Ñимвол в реÑурÑе" #. GiB means gibibyte -#: ../src/common/helpers.py:161 +#: ../src/common/helpers.py:180 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:164 +#: ../src/common/helpers.py:183 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:168 +#: ../src/common/helpers.py:187 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:171 +#: ../src/common/helpers.py:190 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:175 +#: ../src/common/helpers.py:194 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:178 +#: ../src/common/helpers.py:197 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:181 +#: ../src/common/helpers.py:200 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:210 +#: ../src/common/helpers.py:231 msgid "_Busy" msgstr "_ЗанÑÑ‚" -#: ../src/common/helpers.py:212 +#: ../src/common/helpers.py:233 msgid "Busy" msgstr "ЗанÑÑ‚" -#: ../src/common/helpers.py:215 +#: ../src/common/helpers.py:236 msgid "_Not Available" msgstr "_ÐедоÑтупен" -#: ../src/common/helpers.py:220 +#: ../src/common/helpers.py:241 msgid "_Free for Chat" msgstr "_Готов поболтать" -#: ../src/common/helpers.py:222 +#: ../src/common/helpers.py:243 msgid "Free for Chat" msgstr "Готов поболтать" -#: ../src/common/helpers.py:225 +#: ../src/common/helpers.py:246 msgid "_Available" msgstr "_ДоÑтупен" -#: ../src/common/helpers.py:227 -msgid "Available" -msgstr "ДоÑтупен" - -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:250 msgid "Connecting" msgstr "СоединÑÑŽÑÑŒ" -#: ../src/common/helpers.py:232 +#: ../src/common/helpers.py:253 msgid "A_way" msgstr "_Ушел" -#: ../src/common/helpers.py:237 +#: ../src/common/helpers.py:258 msgid "_Offline" msgstr "_Отключен" -#: ../src/common/helpers.py:239 +#: ../src/common/helpers.py:260 msgid "Offline" msgstr "Отключен" -#: ../src/common/helpers.py:242 +#: ../src/common/helpers.py:263 msgid "_Invisible" msgstr "_Ðевидимка" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:269 msgid "?contact has status:Unknown" msgstr "ÐеизвеÑтен" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:271 msgid "?contact has status:Has errors" msgstr "Ошибка" -#: ../src/common/helpers.py:255 +#: ../src/common/helpers.py:276 msgid "?Subscription we already have:None" msgstr "Ðет" -#: ../src/common/helpers.py:257 +#: ../src/common/helpers.py:278 msgid "To" msgstr "К" -#: ../src/common/helpers.py:261 +#: ../src/common/helpers.py:282 msgid "Both" msgstr "Оба" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:290 msgid "?Ask (for Subscription):None" msgstr "Ðет" -#: ../src/common/helpers.py:271 +#: ../src/common/helpers.py:292 msgid "Subscribe" msgstr "ПодпиÑатьÑÑ" -#: ../src/common/helpers.py:280 +#: ../src/common/helpers.py:301 msgid "?Group Chat Contact Role:None" msgstr "ОтÑутÑтвует" -#: ../src/common/helpers.py:283 +#: ../src/common/helpers.py:304 msgid "Moderators" msgstr "Модераторы" -#: ../src/common/helpers.py:285 +#: ../src/common/helpers.py:306 msgid "Moderator" msgstr "Модератор" -#: ../src/common/helpers.py:288 +#: ../src/common/helpers.py:309 msgid "Participants" msgstr "УчаÑтники" -#: ../src/common/helpers.py:290 +#: ../src/common/helpers.py:311 msgid "Participant" msgstr "УчаÑтник" -#: ../src/common/helpers.py:293 +#: ../src/common/helpers.py:314 msgid "Visitors" msgstr "ПоÑетители" -#: ../src/common/helpers.py:295 +#: ../src/common/helpers.py:316 msgid "Visitor" msgstr "ПоÑетитель" -#: ../src/common/helpers.py:301 +#: ../src/common/helpers.py:322 msgid "?Group Chat Contact Affiliation:None" msgstr "ОтÑутÑтвует" -#: ../src/common/helpers.py:303 +#: ../src/common/helpers.py:324 msgid "Owner" msgstr "Владелец" -#: ../src/common/helpers.py:305 +#: ../src/common/helpers.py:326 msgid "Administrator" msgstr "ÐдминиÑтратор" -#: ../src/common/helpers.py:307 +#: ../src/common/helpers.py:328 msgid "Member" msgstr "УчаÑтник" -#: ../src/common/helpers.py:346 +#: ../src/common/helpers.py:367 msgid "is paying attention to the conversation" msgstr "читает Ñообщение" -#: ../src/common/helpers.py:348 +#: ../src/common/helpers.py:369 msgid "is doing something else" msgstr "занÑÑ‚ чем-то еще" -#: ../src/common/helpers.py:350 +#: ../src/common/helpers.py:371 msgid "is composing a message..." msgstr "печатает Ñообщение..." -#. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:353 +#. paused means he or she was composing but has stopped for a while +#: ../src/common/helpers.py:374 msgid "paused composing a message" msgstr "переÑтал печатать Ñообщение" -#: ../src/common/helpers.py:355 +#: ../src/common/helpers.py:376 msgid "has closed the chat window or tab" msgstr "закрыл окно чата или вкладку" -#: ../src/common/helpers.py:881 +#: ../src/common/helpers.py:947 ../src/common/helpers.py:954 +#, python-format +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "%d пропущенное Ñообщение" +msgstr[1] "%d пропущенных ÑообщениÑ" +msgstr[2] "%d пропущенных Ñообщений" + +#: ../src/common/helpers.py:960 #, python-format -msgid " %d unread message" -msgid_plural " %d unread messages" -msgstr[0] " %d непрочитанное Ñообщение" -msgstr[1] " %d непрочитанных ÑообщениÑ" -msgstr[2] " %d непрочитанных Ñообщений" +msgid " from room %s" +msgstr " в комнате %s" -#: ../src/common/helpers.py:887 +#: ../src/common/helpers.py:963 ../src/common/helpers.py:982 #, python-format -msgid " %d unread single message" -msgid_plural " %d unread single messages" -msgstr[0] " %d непрочитанное одиночное Ñообщение" -msgstr[1] " %d непрочитанных одиночных ÑообщениÑ" -msgstr[2] " %d непрочитанных одиночных Ñообщений" +msgid " from user %s" +msgstr "" -#: ../src/common/helpers.py:893 +#: ../src/common/helpers.py:965 #, python-format -msgid " %d unread group chat message" -msgid_plural " %d unread group chat messages" -msgstr[0] " %d непрочитанное Ñообщение в комнате" -msgstr[1] " %d непрочитанных ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² комнате" -msgstr[2] " %d непрочитанных Ñообщений в комнате" +msgid " from %s" +msgstr " от %s" -#: ../src/common/helpers.py:899 +#: ../src/common/helpers.py:972 ../src/common/helpers.py:979 #, python-format -msgid " %d unread private message" -msgid_plural " %d unread private messages" -msgstr[0] " %d непрочитанное личное Ñообщение" -msgstr[1] " %d непрочитанных личных ÑообщениÑ" -msgstr[2] " %d непрочитанных личных ÑообщениÑ" +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "%d Ñобытие пропущено" +msgstr[1] "%d ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾" +msgstr[2] "%d Ñобытий пропущено" -#: ../src/common/helpers.py:909 ../src/common/helpers.py:911 +#: ../src/common/helpers.py:1012 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" #. we talk about a file -#: ../src/common/optparser.py:60 +#: ../src/common/optparser.py:65 #, python-format msgid "error: cannot open %s for reading" msgstr "ошибка: не могу открыть %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: ../src/common/optparser.py:183 -msgid "gtk+" -msgstr "gtk+" - -#: ../src/common/optparser.py:192 ../src/common/optparser.py:193 +#: ../src/common/optparser.py:215 ../src/common/optparser.py:216 msgid "cyan" msgstr "Ñиний" -#: ../src/common/optparser.py:302 -msgid "migrating logs database to indeces" +#: ../src/common/optparser.py:332 +msgid "migrating logs database to indices" msgstr "переноÑим журнал на индекÑÑ‹" -#: ../src/common/passwords.py:86 +#: ../src/common/passwords.py:88 #, python-format msgid "Gajim account %s" msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Gajim %s" -#: ../src/common/zeroconf/client_zeroconf.py:189 -msgid "Connection to host could not be established: Incorrect answer from server." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту: Ðеверный ответ от Ñервера." - -#: ../src/common/zeroconf/client_zeroconf.py:205 +#: ../src/common/zeroconf/client_zeroconf.py:149 +#: ../src/common/zeroconf/client_zeroconf.py:232 msgid "Connection to host could not be established" msgstr "Ðе удалоÑÑŒ ÑоединитьÑÑ Ñ Ñ…Ð¾Ñтом" -#: ../src/common/zeroconf/client_zeroconf.py:334 -msgid "Connection to host could not be established: Timeout while sending data." +#: ../src/common/zeroconf/client_zeroconf.py:206 +msgid "" +"Connection to host could not be established: Incorrect answer from server." +msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту: Ðеверный ответ от Ñервера." + +#: ../src/common/zeroconf/client_zeroconf.py:366 +msgid "" +"Connection to host could not be established: Timeout while sending data." msgstr "Ðе удалоÑÑŒ ÑоединитьÑÑ Ñ Ñ…Ð¾Ñтом: иÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ." -#: ../src/common/zeroconf/client_zeroconf.py:629 +#: ../src/common/zeroconf/client_zeroconf.py:652 msgid "Contact is offline. Your message could not be sent." msgstr "Контакт не в Ñети. Отправить Ñообщение не удалоÑÑŒ." -#: ../src/common/zeroconf/connection_zeroconf.py:197 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:243 +#, fuzzy, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"ХоÑÑ‚ %s, который наÑтроен как раÑÑˆÐ¸Ñ€ÐµÐ½Ð°Ñ Ð½Ð°Ñтройка ft_add_hosts_to_send не " +"дейÑтвителен (не правилен?), поÑтому игнорируетÑÑ." + +#: ../src/common/zeroconf/connection_zeroconf.py:209 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "ТребуетÑÑ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð° и отправки Ñообщений." -#: ../src/common/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:232 msgid "Avahi error" msgstr "Ошибка Avahi" -#: ../src/common/zeroconf/connection_zeroconf.py:207 +#: ../src/common/zeroconf/connection_zeroconf.py:232 #, python-format msgid "" "%s\n" "Link-local messaging might not work properly." msgstr "" -#: ../src/common/zeroconf/connection_zeroconf.py:218 +#: ../src/common/zeroconf/connection_zeroconf.py:243 msgid "Please check if Avahi is installed." msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ что Avahi уÑтановлен." -#: ../src/common/zeroconf/connection_zeroconf.py:227 -#: ../src/common/zeroconf/connection_zeroconf.py:231 +#: ../src/common/zeroconf/connection_zeroconf.py:252 +#: ../src/common/zeroconf/connection_zeroconf.py:256 msgid "Could not start local service" msgstr "Ðе могу запуÑтить локальный ÑервиÑ" -#: ../src/common/zeroconf/connection_zeroconf.py:228 +#: ../src/common/zeroconf/connection_zeroconf.py:253 #, python-format msgid "Unable to bind to port %d." msgstr "Ðе могу иÑпользовать порт %d." -#: ../src/common/zeroconf/connection_zeroconf.py:232 -#: ../src/common/zeroconf/connection_zeroconf.py:325 +#: ../src/common/zeroconf/connection_zeroconf.py:257 +#: ../src/common/zeroconf/connection_zeroconf.py:352 msgid "Please check if avahi-daemon is running." msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ что демон avahi запущен." -#: ../src/common/zeroconf/connection_zeroconf.py:324 +#: ../src/common/zeroconf/connection_zeroconf.py:351 #, python-format msgid "Could not change status of account \"%s\"" msgstr "Ðе могу изменить ÑÑ‚Ð°Ñ‚ÑƒÑ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи \"%s\"" -#: ../src/common/zeroconf/connection_zeroconf.py:341 +#: ../src/common/zeroconf/connection_zeroconf.py:368 msgid "" "You are not connected or not visible to others. Your message could not be " "sent." -msgstr "Ð’Ñ‹ не подключены или невидимы Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ…. Ваше Ñообщение нельзы отправить." +msgstr "" +"Ð’Ñ‹ не подключены или невидимы Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ…. Ваше Ñообщение нельзы отправить." #. we're not english -#: ../src/common/zeroconf/connection_zeroconf.py:353 +#: ../src/common/zeroconf/connection_zeroconf.py:380 msgid "[This message is encrypted]" msgstr "[Ðто Ñообщение зашифровано]" -#: ../src/common/zeroconf/zeroconf.py:180 +#: ../src/common/zeroconf/zeroconf_avahi.py:183 +#: ../src/common/zeroconf/zeroconf_bonjour.py:194 #, python-format msgid "Error while adding service. %s" msgstr "Ошибка при добавлении Ñлужбы. %s" +#~ msgid "Save passphrase" +#~ msgstr "Сохранить парольную фразу (небезопаÑно)" diff --git a/po/sr@Latn.po b/po/sr@Latn.po new file mode 100644 index 0000000000..45007246e0 --- /dev/null +++ b/po/sr@Latn.po @@ -0,0 +1,7637 @@ +# translation of sr.po to +# Serbian translations for gajim. +# Copyright (C) 2006 RiLinux +# This file is distributed under the same license as the gajim package. +# B. Kokanovic <branko.kokanovic@gmail.com>, 2007. +# Branko Kokanovic <baki@sr22.no-ip.info>, 2007. +# +#: ../src/gajim-remote.py:212 ../src/gajim-remote.py:219 +#: ../src/gajim-remote.py:245 ../src/gajim-remote.py:246 +#: ../src/gajim-remote.py:252 ../src/gajim-remote.py:253 +#: ../src/gajim-remote.py:254 ../src/gajim-remote.py:255 +msgid "" +msgstr "" +"Project-Id-Version: sr\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-09-12 09:53+0200\n" +"PO-Revision-Date: 2007-09-09 21:30+0200\n" +"Last-Translator: Branko Kokanovic\n" +"Language-Team: <sr@li.org>\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" +"X-Generator: KBabel 1.11.4\n" + +#: ../data/gajim.desktop.in.in.h:1 +msgid "A GTK+ Jabber client" +msgstr "GTK+ Džaber klijent" + +#: ../data/gajim.desktop.in.in.h:2 +msgid "Gajim Instant Messenger" +msgstr "Gajim Brze Poruke" + +#: ../data/gajim.desktop.in.in.h:3 +msgid "Jabber IM Client" +msgstr "Džaber IM Klijent" + +#: ../data/glade/account_context_menu.glade.h:1 +#: ../data/glade/roster_window.glade.h:8 +#, fuzzy +msgid "Join _Group Chat..." +msgstr "PrikljuÄi se _grupnom razgovoru" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Dodaj kontakt..." + +#: ../data/glade/account_context_menu.glade.h:3 +#: ../data/glade/roster_window.glade.h:15 +msgid "_Discover Services" +msgstr "_Otkrivanje servisa" + +#: ../data/glade/account_context_menu.glade.h:4 +msgid "_Execute Command..." +msgstr "_IzvrÅ¡i naredbu..." + +#: ../data/glade/account_context_menu.glade.h:5 +#, fuzzy +msgid "_Modify Account" +msgstr "Izmeni nalog" + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Open Gmail Inbox" +msgstr "_Otvori Gmail dolaznu poÅ¡tu" + +#: ../data/glade/account_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:22 +#, fuzzy +msgid "_Start Chat..." +msgstr "_ZapoÄni razgovor" + +#: ../data/glade/account_context_menu.glade.h:8 +#: ../data/glade/zeroconf_context_menu.glade.h:2 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +#, fuzzy +msgid "" +"<b>Connecting to server</b>\n" +"\n" +"Please wait..." +msgstr "" +"<b>KorisniÄki nalog je u procesu stvaranja</b>\n" +"\n" +"Molimo priÄekajte..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "<b>Please choose one of the options below:</b>" +msgstr "<b>Molimo odaberite jednu od opcija ispod:</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "<b>Please fill in the data for your new account</b>" +msgstr "<b>Molimo popunimo podatke za VaÅ¡ novi korisniÄki nalog</b>" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "<b>Please select a server</b>" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Kliknite da vidite mogućnosti (kao Å¡to su MSN, ICQ transporti) džaber " +"servera " + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Connect when I press Finish" +msgstr "Poveži se kada pritisnem ZavrÅ¡i" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Äarobnjak za kreiranje naloga" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +#, fuzzy +msgid "I already have an account I want to _use" +msgstr "Već imam nalog koji želim da koristim" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +msgid "I want to _register for a new account" +msgstr "Želim da registrujem novi nalog" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/account_modification_window.glade.h:20 +#: ../data/glade/accounts_window.glade.h:22 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Ako je oznaÄeno, Gajim će pamtiti lozinku za ovaj nalog" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:26 +#: ../data/glade/accounts_window.glade.h:32 +msgid "Manage..." +msgstr "Podesi..." + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +#, fuzzy +msgid "Prox_y:" +msgstr "Proksi:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#: ../data/glade/account_modification_window.glade.h:40 +#: ../data/glade/accounts_window.glade.h:48 +msgid "Save pass_word" +msgstr "Snimi lozinku" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "Servers Features" +msgstr "Mogućnosti servera" + +#: ../data/glade/account_creation_wizard_window.glade.h:17 +msgid "Set my profile when I connect" +msgstr "Postavi moj profil pri povezivanju" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +#: ../data/glade/account_modification_window.glade.h:45 +#: ../data/glade/accounts_window.glade.h:53 +msgid "Use custom hostname/port" +msgstr "Koristi VaÅ¡e odreÄ‘eno ime hosta/port " + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Morate posedovati raÄun da biste se mogli povezati\n" +"na džaber mrežu." + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +msgid "Your JID:" +msgstr "VaÅ¡ džaber ID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/roster_window.glade.h:13 +msgid "_Advanced" +msgstr "_Napredno" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +msgid "_Finish" +msgstr "_ZavrÅ¡i" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +#, fuzzy +msgid "_Hostname:" +msgstr "Ime hosta" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +#: ../data/glade/account_modification_window.glade.h:50 +#: ../data/glade/accounts_window.glade.h:58 +msgid "_Password:" +msgstr "_Lozinka:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:28 +#: ../data/glade/manage_proxies_window.glade.h:12 +msgid "_Username:" +msgstr "_KorisniÄko ime:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/accounts_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "<b>Miscellaneous</b>" +msgstr "<b>Ostalo</b>" + +#: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:1 +msgid "<b>OpenPGP</b>" +msgstr "<b>OpenPGP</b>" + +#: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:2 +msgid "<b>Personal Information</b>" +msgstr "<b>LiÄne informacije</b>" + +#: ../data/glade/account_modification_window.glade.h:4 +#: ../data/glade/accounts_window.glade.h:4 +msgid "Account" +msgstr "Nalog" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Izmena naloga" + +#: ../data/glade/account_modification_window.glade.h:6 +#: ../data/glade/accounts_window.glade.h:5 +#, fuzzy +msgid "Administration operations" +msgstr "Lista administratora" + +#: ../data/glade/account_modification_window.glade.h:7 +#: ../data/glade/accounts_window.glade.h:6 +msgid "Auto-reconnect when connection is lost" +msgstr "Automatsko povezivanje kada se veza izgubi" + +#: ../data/glade/account_modification_window.glade.h:8 +#: ../data/glade/accounts_window.glade.h:7 +#: ../data/glade/zeroconf_properties_window.glade.h:3 +msgid "C_onnect on Gajim startup" +msgstr "Po_veži se prilikom pokretanja Gajima" + +#: ../data/glade/account_modification_window.glade.h:9 +#: ../data/glade/accounts_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "I_zmeni lozinku" + +#: ../data/glade/account_modification_window.glade.h:10 +#: ../data/glade/accounts_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 da biste se povezali na port 5223 gde se predpostavlja da " +"stariji serveri imaju SSL mogućnosti. Primetite da Gajim koristi " +"podrazumevano TLS enkripciju akoje server traži, a sa ovo opcijom " +"omogućenom, TLS će biti iskljuÄen" + +#: ../data/glade/account_modification_window.glade.h:11 +#: ../data/glade/accounts_window.glade.h:10 +#: ../data/glade/zeroconf_properties_window.glade.h:4 +msgid "Choose _Key..." +msgstr "Odaberite _KljuÄ" + +#: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Kliknite za izmenu lozinke VaÅ¡eg naloga" + +#: ../data/glade/account_modification_window.glade.h:13 +#: ../data/glade/accounts_window.glade.h:12 +msgid "Click to request authorization to all contacts of another account" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/accounts_window.glade.h:13 +msgid "Connection" +msgstr "Veza" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/accounts_window.glade.h:15 +msgid "Edit Personal Information..." +msgstr "Izmeni liÄne informacije" + +#. No configured account +#: ../data/glade/account_modification_window.glade.h:16 +#: ../data/glade/accounts_window.glade.h:18 +#: ../data/glade/roster_window.glade.h:6 ../src/notify.py:471 +#: ../src/notify.py:493 ../src/notify.py:505 ../src/common/helpers.py:964 +#: ../src/common/helpers.py:976 +msgid "Gajim" +msgstr "Gajim" + +#. General group cannot be changed +#: ../data/glade/account_modification_window.glade.h:17 +#: ../data/glade/accounts_window.glade.h:19 +#: ../data/glade/preferences_window.glade.h:45 +#: ../data/glade/zeroconf_properties_window.glade.h:7 +#: ../src/roster_window.py:359 ../src/roster_window.py:624 +#: ../src/roster_window.py:1360 ../src/roster_window.py:1728 +#: ../src/roster_window.py:2112 ../src/roster_window.py:2628 +#: ../src/roster_window.py:2746 ../src/common/contacts.py:309 +msgid "General" +msgstr "OpÅ¡te" + +#: ../data/glade/account_modification_window.glade.h:18 +#: ../data/glade/accounts_window.glade.h:20 +msgid "Hostname: " +msgstr "Ime hosta" + +#: ../data/glade/account_modification_window.glade.h:19 +#: ../data/glade/accounts_window.glade.h:21 +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 ovo oznaÄeno, Gajim će odaÅ¡iljati joÅ¡ neke IP adrese pored VaÅ¡e,tako " +"da prenos datoteka ima veće Å¡anse da će raditi." + +#: ../data/glade/account_modification_window.glade.h:21 +#: ../data/glade/accounts_window.glade.h:23 +msgid "" +"If checked, Gajim will send keep-alive packets to prevent connection timeout " +"which results in disconnection" +msgstr "" +"Ako je ovo oznaÄeno, Gajim će slati poruke da je prisutan kako bi spreÄio " +"prekid veze zbog duge neaktivnosti" + +#: ../data/glade/account_modification_window.glade.h:22 +#: ../data/glade/accounts_window.glade.h:24 +#: ../data/glade/zeroconf_properties_window.glade.h:8 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Ako je ovo oznaÄeno, Gajim će Äuvati lozinke u ~/.gajim/config sa 'Äitaj' " +"privilegijom samo za Vas" + +#: ../data/glade/account_modification_window.glade.h:23 +#: ../data/glade/accounts_window.glade.h:25 +#: ../data/glade/zeroconf_properties_window.glade.h:9 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Ako je ovo oznaÄeno, Gajim će se pri svakom pokretanju automatski povezati " +"na džaber koristeći ovaj nalog" + +#: ../data/glade/account_modification_window.glade.h:24 +#: ../data/glade/accounts_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:10 +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 ovo oznaÄeno, svaka promena globalnog statusa (koji se menja iz " +"padajućeg menija na dnu prozora kontakt liste) će promeniti i status ovog " +"naloga " + +#: ../data/glade/account_modification_window.glade.h:25 +#: ../data/glade/accounts_window.glade.h:29 +msgid "Information about you, as stored in the server" +msgstr "Informacije o Vama, kako su uskladiÅ¡tene na serveru" + +#: ../data/glade/account_modification_window.glade.h:27 +#: ../data/glade/accounts_window.glade.h:34 +#: ../data/glade/zeroconf_properties_window.glade.h:16 ../src/config.py:1524 +#: ../src/config.py:2010 +msgid "No key selected" +msgstr "Nije odabran nijedan kljuÄ" + +#. None means no proxy profile selected +#. GPG Key +#: ../data/glade/account_modification_window.glade.h:29 +#: ../data/glade/accounts_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:32 ../src/config.py:1110 +#: ../src/config.py:1181 ../src/config.py:1430 ../src/config.py:1435 +#: ../src/config.py:1906 ../src/config.py:1993 ../src/config.py:2009 +#: ../src/config.py:3109 ../src/config.py:3155 ../src/dialogs.py:286 +#: ../src/dialogs.py:288 ../src/roster_window.py:1832 +#: ../src/roster_window.py:1839 ../src/roster_window.py:1846 +msgid "None" +msgstr "NiÅ¡ta" + +#: ../data/glade/account_modification_window.glade.h:30 +#: ../data/glade/accounts_window.glade.h:37 +#: ../data/glade/profile_window.glade.h:26 +#: ../data/glade/zeroconf_properties_window.glade.h:17 +msgid "Personal Information" +msgstr "LiÄne Informacije" + +#: ../data/glade/account_modification_window.glade.h:31 +#: ../data/glade/accounts_window.glade.h:38 +msgid "Port: " +msgstr "Port:" + +#: ../data/glade/account_modification_window.glade.h:32 +#: ../data/glade/accounts_window.glade.h:39 +msgid "Priori_ty:" +msgstr "Priori_tet" + +#: ../data/glade/account_modification_window.glade.h:33 +#: ../data/glade/accounts_window.glade.h:40 +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 džaberu koristi da odredi ko dobija dogaÄ‘aje sa servera u " +"sluÄaju da su dva ili viÅ¡e klijenata povezana na njega; klijent sa najvećim " +"prioritetomdobija dogaÄ‘aje" + +#: ../data/glade/account_modification_window.glade.h:34 +#: ../data/glade/accounts_window.glade.h:41 +msgid "Priority will change automatically according to your status." +msgstr "Prioritet će biti automatski promenjen prema VaÅ¡em statusu." + +#: ../data/glade/account_modification_window.glade.h:35 +#: ../data/glade/accounts_window.glade.h:42 +msgid "Proxy:" +msgstr "Proksi:" + +#: ../data/glade/account_modification_window.glade.h:36 +#: ../data/glade/accounts_window.glade.h:44 +msgid "Resour_ce:" +msgstr "Resur_s" + +#: ../data/glade/account_modification_window.glade.h:37 +#: ../data/glade/accounts_window.glade.h:45 +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 Džaber serveru kako bi se razlikovao isti džaber ID kod 2 " +"ili viÅ¡e klijenata spojena u isto vreme na isti server sa istim raÄunom. " +"Dakle, možete biti spojeni sa resursom 'Posao' ili 'Kuća', klijent sa " +"najviÅ¡im prioritetom će dobijati obaveÅ¡tenja o dogaÄ‘ajima" + +#: ../data/glade/account_modification_window.glade.h:38 +#: ../data/glade/accounts_window.glade.h:46 +#: ../data/glade/zeroconf_properties_window.glade.h:18 +msgid "Save _passphrase (insecure)" +msgstr "Snimi _lozinku (nesigurno)" + +#: ../data/glade/account_modification_window.glade.h:39 +#: ../data/glade/accounts_window.glade.h:47 +#: ../data/glade/zeroconf_properties_window.glade.h:19 +msgid "Save conversation _logs for all contacts" +msgstr "Sni_mi dnevnik razgovora za sve kontakte" + +#: ../data/glade/account_modification_window.glade.h:41 +#: ../data/glade/accounts_window.glade.h:49 +msgid "Send keep-alive packets" +msgstr "Å alji podatke o živosti" + +#: ../data/glade/account_modification_window.glade.h:42 +#: ../data/glade/accounts_window.glade.h:50 +#: ../data/glade/zeroconf_properties_window.glade.h:20 +msgid "Synch_ronize account status with global status" +msgstr "Sinhroniziraj status naloga sa globalnim statusom" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/accounts_window.glade.h:51 +#, fuzzy +msgid "Synchronise contacts" +msgstr "Prikaži kontakte koji nisu na vezi" + +#: ../data/glade/account_modification_window.glade.h:44 +#: ../data/glade/accounts_window.glade.h:52 +msgid "Use _SSL (legacy)" +msgstr "Koristi _SSL (zastarelo)" + +#: ../data/glade/account_modification_window.glade.h:46 +#: ../data/glade/accounts_window.glade.h:55 +msgid "Use file transfer proxies" +msgstr "Koristi proksi za prenos datoteka" + +#: ../data/glade/account_modification_window.glade.h:47 +#: ../data/glade/accounts_window.glade.h:56 +msgid "_Adjust to status" +msgstr "_Podesi prema statusu" + +#: ../data/glade/account_modification_window.glade.h:48 +#: ../data/glade/accounts_window.glade.h:57 +msgid "_Jabber ID:" +msgstr "_Džaber ID:" + +#: ../data/glade/account_modification_window.glade.h:49 +msgid "_Name:" +msgstr "_Ime:" + +#: ../data/glade/accounts_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:11 +#: ../data/glade/vcard_information_window.glade.h:16 +#: ../data/glade/zeroconf_information_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:5 +msgid "E-Mail:" +msgstr "E-mejl:" + +#. XML Console enable checkbutton +#: ../data/glade/accounts_window.glade.h:16 +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Omogući" + +#: ../data/glade/accounts_window.glade.h:17 +#: ../data/glade/zeroconf_information_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:6 +msgid "First Name:" +msgstr "Ime:" + +#: ../data/glade/accounts_window.glade.h:27 +#: ../data/glade/zeroconf_properties_window.glade.h:11 +msgid "" +"If the default port that is used for incoming messages is unfitting for your " +"setup you can select another one here.\n" +"You might consider to change possible firewall settings." +msgstr "" +"Ako je podrazumevani port koji se koristi za dolazne poruke neodgovarajući " +"za VaÅ¡a podeÅ¡avanja, ovde možete odabrati neki drugi.\n" +"Mogli biste uzeti u obzir i mogućnost izmene podeÅ¡avanja firewall-a." + +#: ../data/glade/accounts_window.glade.h:30 +#: ../data/glade/vcard_information_window.glade.h:26 +#: ../data/glade/zeroconf_information_window.glade.h:4 +#: ../data/glade/zeroconf_properties_window.glade.h:13 ../src/dialogs.py:453 +msgid "Jabber ID:" +msgstr "Džaber ID:" + +#: ../data/glade/accounts_window.glade.h:31 +#: ../data/glade/zeroconf_information_window.glade.h:5 +#: ../data/glade/zeroconf_properties_window.glade.h:14 +msgid "Last Name:" +msgstr "Prezime:" + +#: ../data/glade/accounts_window.glade.h:33 +msgid "Mer_ge accounts" +msgstr "_Spoji naloge" + +#. Rename +#: ../data/glade/accounts_window.glade.h:43 ../src/roster_window.py:2698 +msgid "Re_name" +msgstr "Prei_menuj" + +#: ../data/glade/accounts_window.glade.h:54 +#: ../data/glade/zeroconf_properties_window.glade.h:21 +msgid "Use custom port:" +msgstr "Koristi svoj port:" + +#: ../data/glade/accounts_window.glade.h:59 +msgid "gtk-add" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:60 +msgid "gtk-close" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:61 +msgid "gtk-remove" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_ccount:" +msgstr "_Nalog:" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "A_llow this contact to view my status" +msgstr "Dozvo_li ovom kontaktu da vidi moj status" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "Add New Contact" +msgstr "Dodaj novi kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "I would like to add you to my contact list." +msgstr "Želio bih da Vas dodam na listu mojih kontakata." + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "" +"You have to register with this transport\n" +"to be able to add a contact from this\n" +"protocol. Click on register button to\n" +"proceed." +msgstr "" +"Morate se registrovati na ovaj transport\n" +"kako biste mogli dodati kontakte sa ovog\n" +"protokola. Kliknite na dugme za registraciju\n" +"za nastavak" + +#: ../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 "" +"Morate biti povezani na transport da biste mogli\n" +"dodavati kontakte sa ovog protokola." + +#: ../data/glade/add_new_contact_window.glade.h:11 +msgid "_Group:" +msgstr "_Grupa:" + +#: ../data/glade/add_new_contact_window.glade.h:12 +msgid "_Nickname:" +msgstr "_Nadimak:" + +#: ../data/glade/add_new_contact_window.glade.h:13 +msgid "_Protocol:" +msgstr "_Protokol:" + +#: ../data/glade/add_new_contact_window.glade.h:14 +msgid "_Register" +msgstr "_Registracija" + +#: ../data/glade/add_new_contact_window.glade.h:15 +msgid "_User ID:" +msgstr "_ID korisnika:" + +#: ../data/glade/adhoc_commands_window.glade.h:1 +msgid "<b>An error has occurred:</b>" +msgstr "<b>Dogodila se greÅ¡ka:</b>" + +#: ../data/glade/adhoc_commands_window.glade.h:2 +msgid "<b>Choose command to execute:</b>" +msgstr "<b>Odaberite komandu za izvrÅ¡enje:</b>" + +#: ../data/glade/adhoc_commands_window.glade.h:3 +msgid "Ad-hoc Commands - Gajim" +msgstr "Ad-hok komande - Gajim" + +#: ../data/glade/adhoc_commands_window.glade.h:4 +msgid "Check once more" +msgstr "OznaÄite joÅ¡ jednom" + +#: ../data/glade/adhoc_commands_window.glade.h:5 +msgid "Error description..." +msgstr "Opis greÅ¡ke" + +#: ../data/glade/adhoc_commands_window.glade.h:6 +msgid "Please wait while retrieving command list..." +msgstr "Molimo saÄekajte dok se dobavlja lista komandi..." + +#: ../data/glade/adhoc_commands_window.glade.h:7 +msgid "Please wait while the command is sending..." +msgstr "Molimo saÄekajte dok se komanda Å¡alje..." + +#: ../data/glade/adhoc_commands_window.glade.h:8 +msgid "Please wait..." +msgstr "Molimo saÄekajte..." + +#: ../data/glade/adhoc_commands_window.glade.h:9 +msgid "This jabber entity does not expose any commands." +msgstr "Ovaj džaber izvor ne izlaže nijednu komandu." + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "<b>Description</b>" +msgstr "<b>Opis</b>" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "<b>NOTE:</b> You should restart Gajim for some settings to take effect" +msgstr "" +"<b>NAPOMENA:</b> Trebalo bi da ponovo pokrenete Gajim da bi neke izmene " +"podeÅ¡avanja postale primenjene" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Napredna izmena konfiguracije" + +#: ../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 poruku dana" + +#: ../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 +#, fuzzy +msgid "Edit _Privacy Lists..." +msgstr "Liste _privatnosti" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Sends a message to users currently connected to this server" +msgstr "Å alje poruku trenutno povezanim korisnicima ovog servera" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +#, fuzzy +msgid "Set MOTD..." +msgstr "Postavi poruku dana" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Sets Message of the Day" +msgstr "Postavlja poruku dana" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Show _XML Console" +msgstr "Prikaži _XML Konzolu" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +#, fuzzy +msgid "Update MOTD..." +msgstr "Osveži poruku dana" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "Updates Message of the Day" +msgstr "Osvežava poruku dana" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +#, fuzzy +msgid "_Send Server Message..." +msgstr "_PoÅ¡alji serversku poruku" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr " otvaranje prozora/jeziÄka sa tim kontaktom " + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "<b>Actions</b>" +msgstr "<b>Akcije</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "<b>Conditions</b>" +msgstr "<b>Uslovi</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:12 +msgid "<b>Sounds</b>" +msgstr "<b>Zvukovi</b>" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Advanced Actions" +msgstr "Napredne Akcije" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Notifications Control" +msgstr "Napredna kontrola obaveÅ¡tavanja" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "All statuses" +msgstr "Svi statusi" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#: ../src/common/commands.py:91 ../src/common/helpers.py:246 +msgid "Away" +msgstr "Odsutan" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "Busy " +msgstr "Zaposlen" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Don't have " +msgstr "Nemam " + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Have " +msgstr "Imam " + +#: ../data/glade/advanced_notifications_window.glade.h:12 +#: ../src/common/helpers.py:256 +msgid "Invisible" +msgstr "Nevidljiv" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Launch a command" +msgstr "Pokrenite komandu" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +#: ../src/common/helpers.py:229 +msgid "Not Available" +msgstr "Nedostupan" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +msgid "One or more special statuses..." +msgstr "Jedan ili viÅ¡e posebnih statusa..." + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Online / Free For Chat" +msgstr "Na vezi / Slobodan za razgovor" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "Play a sound" +msgstr "PuÅ¡tanje zvukove" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "" +"Receive a Message\n" +"Contact Disconnected \n" +"Contact Change Status \n" +"Group Chat Message Highlight \n" +"Group Chat Message Received \n" +"File Transfer Request \n" +"File Transfer Started \n" +"File Transfer Finished" +msgstr "" +"Primljena poruka\n" +"Kontakt na vezi\n" +"Kontakt otiÅ¡ao sa veze\n" +"Kontakt promenio status\n" +"Obojena poruka na grupnom razgovoru\n" +"Primljena poruka sa grupnog razgovora\n" +"Zahtev za prenos datoteke\n" +"PoÄeo prenos datoteke\n" +"ZavrÅ¡en prenos datoteke" + +#: ../data/glade/advanced_notifications_window.glade.h:26 +msgid "When " +msgstr "Kada " + +#: ../data/glade/advanced_notifications_window.glade.h:27 +msgid "" +"_Activate window manager's UrgencyHint to make chat window in taskbar flash" +msgstr "" +"_Aktiviranje upravnika prozora za bljeskanje prozora razgovora u panelu" + +#: ../data/glade/advanced_notifications_window.glade.h:28 +msgid "_Disable auto opening chat window" +msgstr "_Onemogući automatsko otvaranje prozora za razgovor" + +#: ../data/glade/advanced_notifications_window.glade.h:29 +msgid "_Disable existing popup window" +msgstr "_Onemogući postojeći iskaÄući prozor" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "_Disable existing sound for this event" +msgstr "_Onemogući postojeći zvuk za ovaj dogaÄ‘aj" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "_Disable showing event in roster" +msgstr "_Onemogući prikazivanje dogaÄ‘aja u listi kontakata" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "_Disable showing event in systray" +msgstr "_Onemogući prikazivanje dogaÄ‘aja u sistemskoj kaseti" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Inform me with a popup window" +msgstr "_Obavesti me iskaÄućim prozorom" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Open chat window with user" +msgstr "_Otvori prozor za razgovor sa korisnikom" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Show event in roster" +msgstr "Prikaži dogaÄ‘aj u listi kontakata" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Show event in systray" +msgstr "Prikaži dogaÄ‘aj u sistemskoj kaseti" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "and I " +msgstr "i ja " + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"kontakt(i)\n" +"grupa/e\n" +"svi" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "for " +msgstr "za" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "when I'm in" +msgstr "kada sam u" + +#: ../data/glade/atom_entry_window.glade.h:1 +msgid "Entry:" +msgstr "Unos:" + +#: ../data/glade/atom_entry_window.glade.h:2 +msgid "Feed name:" +msgstr "Ime teme:" + +#: ../data/glade/atom_entry_window.glade.h:3 +msgid "Last modified:" +msgstr "Zadnji put izmenjeno:" + +#: ../data/glade/atom_entry_window.glade.h:4 +msgid "New entry received" +msgstr "Nov dogaÄ‘aj primljen" + +#: ../data/glade/atom_entry_window.glade.h:5 +msgid "You have received new entry:" +msgstr "Primili ste novi unos:" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Izmeni lozinku" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Unesite ponovo kao 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 "<b>Type your new status message</b>" +msgstr "<b>UpiÅ¡ite VaÅ¡u novu statusnu poruku</b>" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Već postavljene poruke:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Snimi kao već postavljenu..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "PrikljuÄi se _grupnom razgovoru" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#, fuzzy +msgid "_Add to Roster..." +msgstr "_Dodaj na listu kontakata" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopiraj džaber ID/e-mejl adresu" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopiraj lokaciju veze" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Otvori sastavljaÄ e-mejla" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Otvori vezu u internet pregledaÄu" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/subscription_request_popup_menu.glade.h:1 +#: ../data/glade/systray_context_menu.glade.h:7 +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 "Kliknite za pregled proÅ¡lih razgovora sa ovim kontaktom" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +msgid "Invite _Friends" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +#: ../data/glade/gc_occupants_menu.glade.h:3 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:4 +msgid "Send _File" +msgstr "PoÅ¡alji _datoteku" + +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#, fuzzy +msgid "Toggle End to End Encryption" +msgstr "UkljuÄi/iskljuÄi Open_PGP enkripciju" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +msgid "Toggle Open_PGP Encryption" +msgstr "UkljuÄi/iskljuÄi Open_PGP enkripciju" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Add to Roster" +msgstr "_Dodaj na listu kontakata" + +#: ../data/glade/chat_control_popup_menu.glade.h:7 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:7 +#: ../data/glade/roster_contact_context_menu.glade.h:16 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2567 +msgid "_History" +msgstr "_Istorijat" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Fill in the form." +msgstr "Popunite formular." + +#: ../data/glade/data_form_window.glade.h:2 +msgid "Room Configuration" +msgstr "Konfiguracija sobe" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Izmeni grupe" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Lista prenosa aktivnih, zavrÅ¡enih i zaustavljenih datoteka" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Prekini prenos datoteke" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Prekini prenos oznaÄene datoteke" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Prekini prenos oznaÄene datoteke i izbriÅ¡i nedovrÅ¡enu datoteku" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_PoÄisti" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Prenosi datoteka" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Sakriva prozor" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Ukloni prenos datoteka sa liste" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, cancelled and failed file transfers from the list" +msgstr "Ukloni zavrÅ¡ene, prekinute i neuspele prenose datoteka iz liste" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and others" +msgstr "Prikazuje listu prenosa 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 prenos datoteke sa liste. Ako je prenos aktivan, prvo se " +"zaustavlja, pa onda uklanja" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Prikaži iskaÄuće obaveÅ¡tenje kada se zavrÅ¡i prenos datoteke" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:774 +msgid "_Continue" +msgstr "_Nastavi" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Obavesti me kada se zavrÅ¡i prenos datoteke" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:186 +msgid "_Open Containing Folder" +msgstr "_Otvori sadržavajuću fasciklu" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pauziraj" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "lista prenosa datoteka" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "<b>Chatstate Tab Colors</b>" +msgstr "<b>Boje jeziÄaka statusa razgovora</b>" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account row\n" +"Group row\n" +"Contact row\n" +"Chat Banner" +msgstr "" +"Red naloga\n" +"Red grupa\n" +"Red kontakata\n" +"Baner razgovora" + +#: ../data/glade/gajim_themes_window.glade.h:6 +msgid "Bold" +msgstr "Podebljano" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Composing" +msgstr "Sastavljanje" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Font style:" +msgstr "Izgled fonta:" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Gajim Themes Customization" +msgstr "Personalizacija Gajim tema" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gone" +msgstr "OtiÅ¡ao" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Inactive" +msgstr "Neaktivno" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Italic" +msgstr "Kurziv" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"Poruke\n" +"viÅ¡ekorisniÄkog razgovora" + +#: ../data/glade/gajim_themes_window.glade.h:15 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"Usmerene poruke\n" +"viÅ¡ekorisniÄkog razgovora" + +#: ../data/glade/gajim_themes_window.glade.h:17 +msgid "Paused" +msgstr "Pauzirano" + +#: ../data/glade/gajim_themes_window.glade.h:18 +msgid "Text _color:" +msgstr "Boja tekst_a:" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _font:" +msgstr "_Font teksta:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "_Background:" +msgstr "_Pozadina:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +#, fuzzy +msgid "Change _Nickname..." +msgstr "Promeni _nadimak" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +#, fuzzy +msgid "Change _Subject..." +msgstr "Promeni _temu" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Kliknite da pogledate prethodni razgovor u ovoj sobi" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +#, fuzzy +msgid "Configure _Room..." +msgstr "PodeÅ¡avanja _sobe" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +#, fuzzy +msgid "_Bookmark" +msgstr "_Markiraj ovu so_bu" + +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Destroy Room" +msgstr "" + +#: ../data/glade/gc_control_popup_menu.glade.h:8 +#, fuzzy +msgid "_Manage Room" +msgstr "PodeÅ¡avanje markera" + +#: ../data/glade/gc_control_popup_menu.glade.h:9 +msgid "_Minimize on close" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derator" + +#: ../data/glade/gc_occupants_menu.glade.h:2 +#, fuzzy +msgid "Occupant Actions" +msgstr "_Akcije prisutnih" + +#: ../data/glade/gc_occupants_menu.glade.h:5 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Ban" +msgstr "_Zabrani" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Kick" +msgstr "_Izbaci" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Member" +msgstr "_ÄŒlan" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Owner" +msgstr "_Vlasnik" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Send Private Message" +msgstr "_PoÅ¡alji privatnu poruku" + +#: ../data/glade/gc_occupants_menu.glade.h:12 +msgid "_Voice" +msgstr "_Glas" + +#: ../data/glade/groups_post_window.glade.h:1 +msgid "Create new post" +msgstr "Napravi novu objavu" + +#: ../data/glade/groups_post_window.glade.h:2 ../src/common/helpers.py:271 +msgid "From" +msgstr "Od" + +#. holds subject +#: ../data/glade/groups_post_window.glade.h:3 ../src/history_manager.py:142 +#: ../src/history_manager.py:173 +msgid "Subject" +msgstr "Tema" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"<big><b>Welcome to Gajim History Logs Manager</b></big>\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"<b>WARNING:</b>\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 "" +"<big><b>DobrodoÅ¡li u Gajimov menadžer dnevnika istorijata</b></big>\n" +"\n" +"Sa leve strane možete odabrati dnevnike i/ili niže pretražiti bazu " +"podataka.\n" +"\n" +"<b>UPOZORENJE:</b>\n" +"Ako planirate da radite veća uklanjanja, potrudite se da Gajim nije " +"pokrenut. UopÅ¡te, izbegavakte uklanjanja vezana za kontakte sa kojima " +"trenutno razgovorate." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "ObriÅ¡i" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Izvezi" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim menadžer dnevnika istorijata" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Pretraži bazu podataka" + +#: ../data/glade/history_window.glade.h:1 +#, fuzzy +msgid "<b>History Viewer</b>" +msgstr "<b>Lista pravila</b>" + +#: ../data/glade/history_window.glade.h:2 +#, fuzzy +msgid "<b>JID Selection</b>" +msgstr "<b>Opis</b>" + +#: ../data/glade/history_window.glade.h:3 +msgid "Build custom query" +msgstr "Izgradi prilagoÄ‘en upit" + +#: ../data/glade/history_window.glade.h:4 ../src/history_window.py:199 +msgid "Conversation History" +msgstr "Istorijat razgovora" + +#: ../data/glade/history_window.glade.h:5 +msgid "" +"Enter a contact jid or MUC jid here to view its history.\n" +"If a contact is connected you can even enter his nick name.\n" +msgstr "" + +#: ../data/glade/history_window.glade.h:8 +msgid "Query Builder..." +msgstr "Graditelj upita..." + +#: ../data/glade/history_window.glade.h:9 +msgid "Search" +msgstr "Pretraga" + +#: ../data/glade/history_window.glade.h:10 +#: ../data/glade/zeroconf_information_window.glade.h:10 +msgid "_Log conversation history" +msgstr "_Pamti u dnevniku istorijat razgovora" + +#: ../data/glade/history_window.glade.h:11 ../src/disco.py:1172 +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_window.glade.h:8 +msgid "Deny" +msgstr "Odbij" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Primljena pozivnica" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1265 +msgid "Join Group Chat" +msgstr "Pridruži se grupnom razgovoru" + +#: ../data/glade/join_groupchat_window.glade.h:2 +msgid "Join this room automatically when I connect" +msgstr "Pristupi ovoj sobi automatski kada se povežem" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +#: ../data/glade/profile_window.glade.h:24 +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Nickname:" +msgstr "Nadimak:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Password:" +msgstr "Lozinka:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +msgid "Recently:" +msgstr "Nedavno:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Room:" +msgstr "Soba:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1160 +#: ../src/disco.py:1615 +msgid "_Join" +msgstr "_Pridruži se" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "PodeÅ¡avanje naloga" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automatsko povezivanje" + +#: ../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 markera" + +#: ../data/glade/manage_bookmarks_window.glade.h:4 +msgid "Minimize on Auto Join" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Print status:" +msgstr "Ispis statusa:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/manage_bookmarks_window.glade.h:10 +msgid "Title:" +msgstr "Naslov:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "<b>Properties</b>" +msgstr "<b>Karakteristike</b>" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "<b>Settings</b>" +msgstr "<b>PodeÅ¡avanja</b>" + +#: ../data/glade/manage_proxies_window.glade.h:3 +#, fuzzy +msgid "" +"HTTP Connect\n" +"SOCKS5" +msgstr "HTTP spoj" + +#: ../data/glade/manage_proxies_window.glade.h:5 +msgid "Manage Proxy Profiles" +msgstr "PodeÅ¡avanje proksi profila" + +#: ../data/glade/manage_proxies_window.glade.h:6 +#: ../data/glade/profile_window.glade.h:23 +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Name:" +msgstr "Ime:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Pass_word:" +msgstr "Lozinka:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Type:" +msgstr "Vrsta:" + +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "Use authentication" +msgstr "Koristi autentikaciju" + +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Host:" +msgstr "_Host:" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Kliknite da ubacite smajli (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1213 +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:12 +#: ../data/glade/subscription_request_window.glade.h:6 +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:243 +msgid "_Send" +msgstr "_PoÅ¡alji" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Lozinka" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "<b>Advanced Configuration Editor</b>" +msgstr "<b>Napredna izmena konfiguracije</b>" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "<b>Applications</b>" +msgstr "<b>Aplikacije</b>" + +#: ../data/glade/preferences_window.glade.h:3 +#, fuzzy +msgid "<b>Chat Appearance</b>" +msgstr "<b>Izmeni pravilo</b>" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:5 +msgid "<b>Custom</b>" +msgstr "<b>Personalni</b>" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "<b>Format of a line</b>" +msgstr "<b>Format linije</b>" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "<b>GMail Options</b>" +msgstr "<b>Gmail Opcije</b>" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "<b>Preset Status Messages</b>" +msgstr "<b>Već postavljene statusne poruke</b>" + +#: ../data/glade/preferences_window.glade.h:10 +#, fuzzy +msgid "<b>Privacy</b>" +msgstr "<i>Lista privatnosti</i>" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "<b>Roster Appearance</b>" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:13 +#, fuzzy +msgid "<b>Themes</b>" +msgstr "<b>Karakteristike</b>" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "<b>Visual Notifications</b>" +msgstr "<b>Vizualna obaveÅ¡tenja</b>" + +#: ../data/glade/preferences_window.glade.h:15 +msgid "Advanced" +msgstr "Napredno" + +#: ../data/glade/preferences_window.glade.h:16 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Stanja svih razgovora\n" +"Samo sastavljanje\n" +"Onemogućeno" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Allow _OS information to be sent" +msgstr "Dozvoli slanje podataka o OS-u" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Omogući iskaÄuće prozore/obaveÅ¡tenja kada sam _odsutan/nedostupan/zaposlen/" +"nevidljiv" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Always check to see if Gajim is the _default Jabber client on startup" +msgstr "Proveri pri startu _da li je Gajim podrazumevani Džaber klijent" + +#: ../data/glade/preferences_window.glade.h:22 +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 "" +"Primer: Ako ste omogućili statusnu poruku za odsutnost, Gajim Vas neće viÅ¡e " +"pitati za statusnu poruku kada promenite VaÅ¡ status u odsutnost, već će " +"korisiti onu postavljenu ovde" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "Ask status message when I:" +msgstr "Pitaj za statusnu poruku pri:" + +#: ../data/glade/preferences_window.glade.h:24 +msgid "Auto _away after:" +msgstr "Autom_atski odsutan nakon:" + +#: ../data/glade/preferences_window.glade.h:25 +msgid "Auto _not available after:" +msgstr "Automatski _nedostupan nakon:" + +#: ../data/glade/preferences_window.glade.h:26 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Always use XFCE4 default applications\n" +"Custom" +msgstr "" +"Automatski prepoznaj pri svakom pokretanju Gajima\n" +"Uvek koristi predefinisane GNOM aplikacije\n" +"Uvek koristi predefinisane KDE aplikacije\n" +"Uvek koristi predefinisane HFCE4 aplikacije\n" +"PrilagoÄ‘eno" + +#: ../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, because it blocks all messages from any contact that " +"is not in the roster" +msgstr "" +"OznaÄite ovu opciju samo ako Vas neko van VaÅ¡e liste spamuje/uznemirava. " +"Koristite sa oprezom, blokiraće sve poruke koje dolaze od ljudi van VaÅ¡e " +"liste kontakata" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Configure color and font of the interface" +msgstr "Konfigurisanje boje i fonta interfejsa" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Default Status Messages" +msgstr "Podrazumevane statusne poruke" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "" +"Determined by sender\n" +"Chat message\n" +"Single message" +msgstr "" +"OdreÄ‘uje poÅ¡aljilac\n" +"Poruka iz razgovora\n" +"Samostalna poruka" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Display _extra email details" +msgstr "Prikaži dodatne e-mejl detalje" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Display a_vatars of contacts in roster" +msgstr "Prikaži avatare kontakata na listi" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "Display status _messages of contacts in roster" +msgstr "Prikaži statusne poruke kontakata na listi" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "Emoticons:" +msgstr "Smajliji:" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "Events" +msgstr "DogaÄ‘aji" + +#: ../data/glade/preferences_window.glade.h:42 +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 " +"display in chat windows." +msgstr "" +"Gajim može primati i slati meta-informacije vezane za razgovor koji vodite " +"sa kontaktom. Ovde možete odrediti koja stanja razgovora će se prikazivati u " +"prozorima razgovora." + +#: ../data/glade/preferences_window.glade.h:43 +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. Ovde možete odrediti koja stanja razgovora će se slati drugoj " +"osobi." + +#: ../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 će Vas obavestiti o kontaktima koji su se upravo odjavili sa iskaÄućim " +"prozorom u donjem desnom uglu ekrana" + +#: ../data/glade/preferences_window.glade.h:46 +#, fuzzy +msgid "Hides buttons in chatwindows to " +msgstr "Sakriva dugmad u prozoru grupnog razgovora." + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will also include information about the sender of the new " +"emails" +msgstr "" +"Ako je oznaÄeno, Gajim će ujedno ukljuÄiti i informacije o poÅ¡iljaocu novih " +"e-mejlova" + +#: ../data/glade/preferences_window.glade.h:48 +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:49 +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:50 +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 svoje statuse)" + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Ako nije onemogućeno, Gajim će zameniti ascii smajlije kao npr. ':)' sa " +"ekvivalentnim animiranim ili statiÄnim grafiÄkim smajlijima" + +#: ../data/glade/preferences_window.glade.h:52 +msgid "Ignore rich content in incoming messages" +msgstr "IgnoriÅ¡i bogato formatirani sadržaj u pristiglim porukama" + +#: ../data/glade/preferences_window.glade.h:53 +msgid "Ma_nage..." +msgstr "Pode_si..." + +#: ../data/glade/preferences_window.glade.h:54 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Nikad\n" +"Uvek\n" +"U zavisnosti od naloga\n" +"U zavisnosti od tipa" + +#: ../data/glade/preferences_window.glade.h:58 +#, fuzzy +msgid "Notify me about contacts that sign _in" +msgstr "Obavesti me o kontaktima koji:" + +#: ../data/glade/preferences_window.glade.h:59 +#, fuzzy +msgid "Notify me about contacts that sign _out" +msgstr "Obavesti me o kontaktima koji:" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Notify on new _GMail email" +msgstr "Obavesti me o novopristigloj Gmail e-mejl poÅ¡ti" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Play _sounds" +msgstr "PuÅ¡taj zvukove" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "" +"Pop it up\n" +"Notify me about it\n" +"Show only in roster" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Preferences" +msgstr "PodeÅ¡avanja" + +#: ../data/glade/preferences_window.glade.h:66 +#, fuzzy +msgid "Privacy" +msgstr "Lista privatnosti" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "Set status message to reflect currently playing _music track" +msgstr "" +"Postavi statusnu poruku da odražava ime trenutno puÅ¡tene muziÄke numere" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "Sign _in" +msgstr "Prijavljivanju" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "Sign _out" +msgstr "Odjavljivanju" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "" +"Some messages may include rich content (formatting, colors etc). If checked, " +"Gajim will just display the raw message text." +msgstr "" +"Neke poruke mogu ukljuÄivati bogati sadržaj (formatiranje, boje itd.). Ako " +"je oznaÄeno, Gajim će samo prikazivati sirovi tekst poruke." + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:72 +#, fuzzy +msgid "Status _iconset:" +msgstr "Podrazumevani skup statusnih ikona" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "T_heme:" +msgstr "T_ema:" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "The auto away status message" +msgstr "Automatska statusna poruka odsutnosti" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "The auto not available status message" +msgstr "Automatska statusna poruka nedostupnosti" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "Treat all incoming messages as:" +msgstr "Tretiraj sve dolazne poruke kao:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "Use _transports iconsets" +msgstr "Koristi skup ikona za transportne kontakte" + +#: ../data/glade/preferences_window.glade.h:78 +#, fuzzy +msgid "Use only one message _window:" +msgstr "Prozor jedne _poruke:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "Use system _default" +msgstr "Koristi sistemski podrazumevano" + +#: ../data/glade/preferences_window.glade.h:80 +#, fuzzy +msgid "When new event is received:" +msgstr "Kada se primi novi dogaÄ‘aj" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "" +"Works for Rhythmbox and Muine players. For more players, please visit http://" +"trac.gajim.org/wiki/GajimAndMusicPlayer" +msgstr "" +"Radi sa Rhytmbox i Muine puÅ¡taÄima muzike. Za ostale, molimo posetite http://" +"trac.gajim.org/wiki/GajimAndMusicPlayer" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Advanced Notifications Control..." +msgstr "_Napredno upravljanje obaveÅ¡tenjima..." + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Browser:" +msgstr "_Internet pregledaÄ:" + +#: ../data/glade/preferences_window.glade.h:84 +#, fuzzy +msgid "_Display chat state notifications:" +msgstr "Prikazana obaveÅ¡tenja o stanju razgovora" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_File manager:" +msgstr "_PregledaÄ datoteka:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Font:" +msgstr "_Font:" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Highlight misspelled words" +msgstr "_Oboji pogreÅ¡no napisane reÄi" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Ignore events from contacts not in the roster" +msgstr "_IgnoriÅ¡i dogaÄ‘aje od kontakata koji nisu na listi" + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Incoming message:" +msgstr "_Dolazna poruka:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Log status changes of contacts" +msgstr "_Zapisuj u dnevnik statusne promene kontakata" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Mail client:" +msgstr "_E-mejl klijent:" + +#: ../data/glade/preferences_window.glade.h:92 +#, fuzzy +msgid "_Make message windows compact" +msgstr "Prozor jedne _poruke:" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Open..." +msgstr "_Otvori..." + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Outgoing message:" +msgstr "_Odlazna poruka:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_Player:" +msgstr "_PuÅ¡taÄ muzike:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "_Reset to Default Colors" +msgstr "_Ponovo uÄitaj podrazumevane boje" + +#: ../data/glade/preferences_window.glade.h:97 +#, fuzzy +msgid "_Send chat state notifications:" +msgstr "Prikazana obaveÅ¡tenja o stanju razgovora" + +#: ../data/glade/preferences_window.glade.h:98 +msgid "_Sort contacts by status" +msgstr "_Sortiraj kontakte po statusu" + +#: ../data/glade/preferences_window.glade.h:99 +msgid "_Status message:" +msgstr "_Statusna poruka:" + +#: ../data/glade/preferences_window.glade.h:100 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:101 +msgid "minutes" +msgstr "minuta" + +#: ../data/glade/privacy_lists_window.glade.h:1 +msgid "Privacy Lists:" +msgstr "Liste privatnosti:" + +#: ../data/glade/privacy_list_window.glade.h:1 +msgid "<b>Add / Edit a rule</b>" +msgstr "<b>Dodaj / Izmeni pravilo</b>" + +#: ../data/glade/privacy_list_window.glade.h:2 +msgid "<b>List of rules</b>" +msgstr "<b>Lista pravila</b>" + +#: ../data/glade/privacy_list_window.glade.h:3 +msgid "<i>Privacy List</i>" +msgstr "<i>Lista privatnosti</i>" + +#: ../data/glade/privacy_list_window.glade.h:4 +msgid "Active for this session" +msgstr "Aktivno za ovu sesiju" + +#: ../data/glade/privacy_list_window.glade.h:5 +msgid "Active on each startup" +msgstr "Aktovno po svakom pokretanju" + +#: ../data/glade/privacy_list_window.glade.h:6 +msgid "All" +msgstr "Svi" + +#: ../data/glade/privacy_list_window.glade.h:7 +msgid "Allow" +msgstr "Dozvoli" + +#: ../data/glade/privacy_list_window.glade.h:9 +msgid "JabberID" +msgstr "Džaber ID" + +#: ../data/glade/privacy_list_window.glade.h:10 +msgid "Order:" +msgstr "Poredak:" + +#: ../data/glade/privacy_list_window.glade.h:11 ../src/dialogs.py:2104 +msgid "Privacy List" +msgstr "Lista privatnosti" + +#: ../data/glade/privacy_list_window.glade.h:12 +msgid "all by subscription" +msgstr "sve prema pretplati" + +#: ../data/glade/privacy_list_window.glade.h:13 +msgid "all in the group" +msgstr "sve u grupi" + +#: ../data/glade/privacy_list_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" +"nijedna\n" +"oboje\n" +"od\n" +"za" + +#: ../data/glade/privacy_list_window.glade.h:18 +msgid "to send me messages" +msgstr "da mi Å¡alje poruke" + +#: ../data/glade/privacy_list_window.glade.h:19 +msgid "to send me queries" +msgstr "da mi Å¡alje upite" + +#: ../data/glade/privacy_list_window.glade.h:20 +msgid "to send me status" +msgstr "da mi poÅ¡alje status" + +#: ../data/glade/privacy_list_window.glade.h:21 +msgid "to view my status" +msgstr "da vidi moj status" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/profile_window.glade.h:2 +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "O" + +#: ../data/glade/profile_window.glade.h:3 +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresa:" + +#: ../data/glade/profile_window.glade.h:4 +msgid "Avatar:" +msgstr "Avatar:" + +#: ../data/glade/profile_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "Birthday:" +msgstr "RoÄ‘endan:" + +#: ../data/glade/profile_window.glade.h:6 +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "City:" +msgstr "Mesto:" + +#: ../data/glade/profile_window.glade.h:7 +msgid "Click to set your avatar" +msgstr "Kliknite da biste postavili VaÅ¡ avatar" + +#: ../data/glade/profile_window.glade.h:8 +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Company:" +msgstr "Preduzeće:" + +#: ../data/glade/profile_window.glade.h:9 +#: ../data/glade/vcard_information_window.glade.h:14 +msgid "Country:" +msgstr "Država:" + +#: ../data/glade/profile_window.glade.h:10 +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Department:" +msgstr "Odsek:" + +#: ../data/glade/profile_window.glade.h:12 +#: ../data/glade/vcard_information_window.glade.h:17 +msgid "Extra Address:" +msgstr "Dodatna adresa:" + +#. Family Name +#: ../data/glade/profile_window.glade.h:14 +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Family:" +msgstr "Familija:" + +#. Do NOT change sequence. Just translate YYYY and MM and DD (from Year, Month, Day accordingly) +#: ../data/glade/profile_window.glade.h:16 +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Format: YYYY-MM-DD" +msgstr "Format: GGGG-MM-DD" + +#: ../data/glade/profile_window.glade.h:17 +#: ../data/glade/vcard_information_window.glade.h:22 +#, fuzzy +msgid "Full Name" +msgstr "Ime" + +#. Given Name +#: ../data/glade/profile_window.glade.h:19 +#: ../data/glade/vcard_information_window.glade.h:24 +msgid "Given:" +msgstr "Dato:" + +#: ../data/glade/profile_window.glade.h:20 +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Homepage:" +msgstr "LiÄna strana:" + +#. Middle Name +#: ../data/glade/profile_window.glade.h:22 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Middle:" +msgstr "Srednje:" + +#: ../data/glade/profile_window.glade.h:25 +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Personal Info" +msgstr "LiÄne informacije" + +#: ../data/glade/profile_window.glade.h:27 +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Phone No.:" +msgstr "Broj telefona:" + +#: ../data/glade/profile_window.glade.h:28 +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Position:" +msgstr "Pozicija:" + +#: ../data/glade/profile_window.glade.h:29 +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Postal Code:" +msgstr "PoÅ¡tanski broj:" + +#. Prefix in Name +#: ../data/glade/profile_window.glade.h:31 +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Prefix:" +msgstr "Prefiks:" + +#: ../data/glade/profile_window.glade.h:32 +#: ../data/glade/vcard_information_window.glade.h:41 ../src/vcard.py:302 +msgid "Role:" +msgstr "Uloga:" + +#: ../data/glade/profile_window.glade.h:33 +#: ../data/glade/vcard_information_window.glade.h:42 +msgid "State:" +msgstr "Država:" + +#: ../data/glade/profile_window.glade.h:34 +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Street:" +msgstr "Ulica:" + +#. Suffix in Name +#: ../data/glade/profile_window.glade.h:36 +#: ../data/glade/vcard_information_window.glade.h:48 +msgid "Suffix:" +msgstr "Sufiks:" + +#: ../data/glade/profile_window.glade.h:37 +#: ../data/glade/vcard_information_window.glade.h:50 +msgid "Work" +msgstr "Posao" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "<b>What do you want to do?</b>" +msgstr "<b>Å ta želite da uradite?</b>" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Ukloni nalog samo iz Gajima" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Ukloni nalog i iz Gajima i sa servera" + +#. Remove +#. Remove group +#. Remove +#: ../data/glade/remove_account_window.glade.h:4 +#: ../data/glade/roster_contact_context_menu.glade.h:18 +#: ../src/roster_window.py:2524 ../src/roster_window.py:2734 +#: ../src/roster_window.py:2870 +msgid "_Remove" +msgstr "_Ukloni" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "Traži njegov/njen status" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +#, fuzzy +msgid "Add Special _Notification..." +msgstr "Dodaj poseb_no obaveÅ¡tenje" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +#, fuzzy +msgid "Assign Open_PGP Key..." +msgstr "Pridruži Open_PGP KljuÄ" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +#, fuzzy +msgid "Edit _Groups..." +msgstr "Izmeni _grupe" + +#. Execute Command +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../src/roster_window.py:2827 +msgid "Execute Command..." +msgstr "IzvrÅ¡i naredbu..." + +#. Invite to Groupchat +#: ../data/glade/roster_contact_context_menu.glade.h:6 +#: ../src/roster_window.py:2440 +msgid "In_vite to" +msgstr "Pozo_vi u" + +#. Send Custom Status +#: ../data/glade/roster_contact_context_menu.glade.h:7 +#: ../src/roster_window.py:2664 ../src/roster_window.py:2798 +#, fuzzy +msgid "Send Cus_tom Status" +msgstr "Å alje korisniÄki definisan XML" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Send Single _Message..." +msgstr "PoÅ¡alji jednu _poruku..." + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "Send _File..." +msgstr "PoÅ¡alji _datoteku" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "Set Custom _Avatar..." +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:11 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:5 +msgid "Start _Chat" +msgstr "ZapoÄni ra_zgovor" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +msgid "_Allow him/her to see my status" +msgstr "_Dozvoli mu/joj da vidi moj status" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../src/roster_window.py:2514 ../src/roster_window.py:2725 +msgid "_Block" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Forbid him/her to see my status" +msgstr "_Zabrani mu/joj da vidi moj status" + +#: ../data/glade/roster_contact_context_menu.glade.h:17 +#: ../data/glade/zeroconf_contact_context_menu.glade.h:7 +#, fuzzy +msgid "_Manage Contact" +msgstr "Preimenuj kontakt" + +#: ../data/glade/roster_contact_context_menu.glade.h:19 +#, fuzzy +msgid "_Rename..." +msgstr "_Preimenuj" + +#: ../data/glade/roster_contact_context_menu.glade.h:20 +msgid "_Subscription" +msgstr "_Pretplata" + +#: ../data/glade/roster_contact_context_menu.glade.h:21 +#: ../src/roster_window.py:2508 ../src/roster_window.py:2719 +msgid "_Unblock" +msgstr "" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "Nalo_zi" + +#: ../data/glade/roster_window.glade.h:2 +#, fuzzy +msgid "Add _Contact..." +msgstr "_Dodaj kontakt..." + +#: ../data/glade/roster_window.glade.h:3 +#, fuzzy +msgid "Fea_tures" +msgstr "Mogućnosti servera" + +#: ../data/glade/roster_window.glade.h:4 +msgid "File _Transfers" +msgstr "Prenosi da_toteka" + +#: ../data/glade/roster_window.glade.h:5 +msgid "Frequently Asked Questions (online)" +msgstr "ÄŒesto postavljana pitanja (internet)" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Help online" +msgstr "Pomoć sa interneta" + +#: ../data/glade/roster_window.glade.h:9 +msgid "Profile, A_vatar" +msgstr "Profil, A_vatar" + +#: ../data/glade/roster_window.glade.h:10 +msgid "Show Trans_ports" +msgstr "Prikaži trans_porte" + +#: ../data/glade/roster_window.glade.h:11 +msgid "Show _Offline Contacts" +msgstr "Prikaži kontakte koji nisu na vezi" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_Contents" +msgstr "_Sadržaj" + +#: ../data/glade/roster_window.glade.h:16 ../src/disco.py:1348 +msgid "_Edit" +msgstr "_Izmeni" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_FAQ" +msgstr "_ÄŒPP" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Help" +msgstr "_Pomoć" + +#: ../data/glade/roster_window.glade.h:19 +msgid "_Preferences" +msgstr "_PodeÅ¡avanja" + +#: ../data/glade/roster_window.glade.h:20 +msgid "_Quit" +msgstr "_Izlaz" + +#: ../data/glade/roster_window.glade.h:21 +#, fuzzy +msgid "_Send Single Message..." +msgstr "PoÅ¡alji jednu _poruku..." + +#: ../data/glade/roster_window.glade.h:23 +msgid "_View" +msgstr "_Prikaz" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "Kre_ni" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresa:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registruj se na" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Odustani" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_U redu" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "O" + +#: ../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 "Au_thorize" +msgstr "_Odobri autorizaciju" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Authorize contact so he or she can know when you're connected" +msgstr "Autorizuj kontakt tako da on/ona može da vidi kada ste na vezi" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "" +"Deny authorization from contact so he or she cannot know when you're " +"connected" +msgstr "" +"Odbij autorizaciju od kontakta tako da on/ona ne može da vidi kada ste na " +"vezi" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Zahtev za pretplatom" + +#: ../data/glade/subscription_request_window.glade.h:7 +msgid "_Deny" +msgstr "_Odbij" + +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Mute Sounds" +msgstr "Ugasi zvukove" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Send Single _Message" +msgstr "PoÅ¡alji _jednu poruku" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show All Pending _Events" +msgstr "Prikaži sv_e dogaÄ‘aje na Äekanju" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Show _Roster" +msgstr "_Prikaži listu kontakata" + +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "Sta_tus" +msgstr "Sta_tus" + +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Group Chat" +msgstr "_Grupni razgovor" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Ask:" +msgstr "Pitaj:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Client:" +msgstr "Klijent:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Comments" +msgstr "Komentari" + +#: ../data/glade/vcard_information_window.glade.h:11 +#, fuzzy +msgid "Configured avatar:" +msgstr "PodeÅ¡avanja _sobe" + +#: ../data/glade/vcard_information_window.glade.h:12 +#: ../data/glade/zeroconf_information_window.glade.h:1 +msgid "Contact" +msgstr "Kontakt" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Contact Information" +msgstr "Informacije kontakta" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "More" +msgstr "JoÅ¡" + +#: ../data/glade/vcard_information_window.glade.h:33 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:40 +#: ../data/glade/zeroconf_information_window.glade.h:8 +msgid "Resource:" +msgstr "Resurs:" + +#: ../data/glade/vcard_information_window.glade.h:43 +#: ../data/glade/zeroconf_information_window.glade.h:9 +msgid "Status:" +msgstr "Status:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "Subscription:" +msgstr "Pretplata:" + +#: ../data/glade/vcard_information_window.glade.h:49 +#, fuzzy +msgid "User avatar:" +msgstr "Avatar:" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "<b>Jabber Traffic</b>" +msgstr "<b>Džaber saobraćaj</b>" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "<b>XML Input</b>" +msgstr "<b>XML Unos</b>" + +#. 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 <iq Leaving it _IQ is not a bad idea unless you are sure your lang has this somehow else translated (NOTE: xml still will still say <iq in your language (of course)) +#: ../data/glade/xml_console_window.glade.h:8 +msgid "_IQ" +msgstr "_IU" + +#: ../data/glade/xml_console_window.glade.h:9 +msgid "_Message" +msgstr "_Poruka" + +#: ../data/glade/xml_console_window.glade.h:10 +msgid "_Presence" +msgstr "_Prisutnost" + +#: ../data/glade/zeroconf_contact_context_menu.glade.h:1 +msgid "Add Special _Notification" +msgstr "Dodaj poseb_no obaveÅ¡tenje" + +#: ../data/glade/zeroconf_contact_context_menu.glade.h:2 +msgid "Assign Open_PGP Key" +msgstr "Pridruži Open_PGP KljuÄ" + +#. Edit Groups +#: ../data/glade/zeroconf_contact_context_menu.glade.h:3 +#: ../src/roster_window.py:2497 +msgid "Edit _Groups" +msgstr "Izmeni _grupe" + +#. Rename +#: ../data/glade/zeroconf_contact_context_menu.glade.h:8 +#: ../src/roster_window.py:2854 +msgid "_Rename" +msgstr "_Preimenuj" + +#: ../data/glade/zeroconf_context_menu.glade.h:1 +msgid "_Modify Account..." +msgstr "_Izmeni nalog..." + +#: ../data/glade/zeroconf_information_window.glade.h:6 +msgid "Local jid:" +msgstr "Lokalni džaber ID:" + +#: ../data/glade/zeroconf_information_window.glade.h:7 +msgid "Personal" +msgstr "LiÄno" + +#: ../data/glade/zeroconf_properties_window.glade.h:15 +msgid "Modify Account" +msgstr "Izmeni nalog" + +#. For i18n +#: ../src/advanced.py:51 +msgid "Activated" +msgstr "Aktivirano" + +#: ../src/advanced.py:51 +msgid "Deactivated" +msgstr "Deaktivirano" + +#: ../src/advanced.py:53 +msgid "Boolean" +msgstr "Bulova vrednost" + +#: ../src/advanced.py:54 +msgid "Integer" +msgstr "Ceo broj" + +#: ../src/advanced.py:55 +msgid "Text" +msgstr "Tekst" + +#: ../src/advanced.py:56 +msgid "Color" +msgstr "Boja" + +#: ../src/advanced.py:65 +msgid "Preference Name" +msgstr "Ime postavke" + +#: ../src/advanced.py:71 +msgid "Value" +msgstr "Vrednost" + +#: ../src/advanced.py:79 +msgid "Type" +msgstr "Tip" + +#. we talk about option description in advanced configuration editor +#: ../src/advanced.py:136 +msgid "(None)" +msgstr "(niÅ¡ta)" + +#. we talk about password +#: ../src/advanced.py:239 +msgid "Hidden" +msgstr "Skriven" + +#. 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"}" +#: ../src/chat_control.py:55 +msgid "English" +msgstr "Engleski" + +#: ../src/chat_control.py:55 +msgid "Belarusian" +msgstr "Beloruski" + +#: ../src/chat_control.py:55 +msgid "Bulgarian" +msgstr "Bugarski" + +#: ../src/chat_control.py:55 +#, fuzzy +msgid "Breton" +msgstr "Britanski" + +#: ../src/chat_control.py:55 +msgid "Czech" +msgstr "ÄŒeÅ¡ki" + +#: ../src/chat_control.py:55 +msgid "German" +msgstr "NemaÄki" + +#: ../src/chat_control.py:55 +msgid "Greek" +msgstr "GrÄki" + +#: ../src/chat_control.py:55 +msgid "British" +msgstr "Britanski" + +#: ../src/chat_control.py:55 +msgid "Esperanto" +msgstr "Esperanto" + +#: ../src/chat_control.py:55 +msgid "Spanish" +msgstr "Å panski" + +#: ../src/chat_control.py:55 +#, fuzzy +msgid "Basque" +msgstr "Baskijski" + +#: ../src/chat_control.py:55 +msgid "French" +msgstr "Francuski" + +#: ../src/chat_control.py:55 +msgid "Croatian" +msgstr "Hrvatski" + +#: ../src/chat_control.py:55 +msgid "Italian" +msgstr "Italijanski" + +#: ../src/chat_control.py:55 +msgid "Norwegian (b)" +msgstr "NorveÅ¡ki (b)" + +#: ../src/chat_control.py:55 +msgid "Dutch" +msgstr "Holandski" + +#: ../src/chat_control.py:55 +msgid "Norwegian" +msgstr "NorveÅ¡ki" + +#: ../src/chat_control.py:55 +msgid "Polish" +msgstr "Poljski" + +#: ../src/chat_control.py:55 +msgid "Portuguese" +msgstr "Portugalski" + +#: ../src/chat_control.py:55 +msgid "Brazilian Portuguese" +msgstr "Brazilski portugalski" + +#: ../src/chat_control.py:55 +msgid "Russian" +msgstr "Ruski" + +#: ../src/chat_control.py:55 +msgid "Serbian" +msgstr "Srpski" + +#: ../src/chat_control.py:55 +msgid "Slovak" +msgstr "SlovaÄki" + +#: ../src/chat_control.py:55 +msgid "Swedish" +msgstr "Å vedski" + +#: ../src/chat_control.py:55 +msgid "Chinese (Ch)" +msgstr "Kineski (Ch)" + +#: ../src/chat_control.py:283 +msgid "Spelling language" +msgstr "Jezik za pravopis" + +#. we are not connected +#: ../src/chat_control.py:306 ../src/chat_control.py:512 +msgid "A connection is not available" +msgstr "Veza nije dostupna" + +#: ../src/chat_control.py:307 ../src/chat_control.py:513 +msgid "Your message can not be sent until you are connected." +msgstr "VaÅ¡a poruka ne može biti poslata ako niste povezani." + +#: ../src/chat_control.py:1139 +#, python-format +msgid "%(nickname)s from group chat %(room_name)s" +msgstr "%(nickname)s sa grupnog razgovora u sobi %(room_name)s" + +#. we talk about a contact here +#: ../src/chat_control.py:1227 +#, python-format +msgid "%s has not broadcast an OpenPGP key, nor has one been assigned" +msgstr "%s nije emitovao OpenPGP kljuÄ, niti mu je ijedan dodeljen" + +#: ../src/chat_control.py:1266 ../src/groupchat_control.py:1392 +#, python-format +msgid "No such command: /%s (if you want to send this, prefix it with /say)" +msgstr "" +"Ne postoji komanda: /%s (ako želite da poÅ¡aljete to kao poruku, " +"prefiksirajte je sa /say)" + +#: ../src/chat_control.py:1273 ../src/groupchat_control.py:1415 +#, python-format +msgid "Commands: %s" +msgstr "Komanda: %s" + +#: ../src/chat_control.py:1276 ../src/groupchat_control.py:1429 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "NaÄin korišćenja: /%s, prazni tekstualni prozor" + +#: ../src/chat_control.py:1279 ../src/groupchat_control.py:1434 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "NaÄin korišćenja: /%s, sakriva dugmad." + +#: ../src/chat_control.py:1282 ../src/groupchat_control.py:1450 +#, python-format +msgid "" +"Usage: /%s <action>, sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"NaÄin korišćenja: /%s <akcija>, Å¡alje akciju trenutnom grupnom razgovoru. " +"Koristite treću osobu (npr. /%s eksplodira)." + +#: ../src/chat_control.py:1286 +#, python-format +msgid "Usage: /%s, sends a ping to the contact" +msgstr "" + +#: ../src/chat_control.py:1289 +#, fuzzy, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "NaÄin korišćenja: /%s, sakriva dugmad." + +#: ../src/chat_control.py:1292 ../src/groupchat_control.py:1473 +#, python-format +msgid "No help info for /%s" +msgstr "Nema informacija ni pomoći za /%s" + +#: ../src/chat_control.py:1430 ../src/chat_control.py:1456 +msgid "Encryption enabled" +msgstr "Enkripcija omogućena" + +#: ../src/chat_control.py:1435 +msgid "Session WILL be logged" +msgstr "" + +#: ../src/chat_control.py:1437 +msgid "Session WILL NOT be logged" +msgstr "" + +#: ../src/chat_control.py:1444 +#, fuzzy +msgid "The following message was NOT encrypted" +msgstr "[Ova poruka je Å¡ifrovana]" + +#: ../src/chat_control.py:1448 ../src/chat_control.py:1461 +#: ../src/chat_control.py:2090 +msgid "Encryption disabled" +msgstr "Enkripcija onemogućena" + +#. add_to_roster_menuitem +#: ../src/chat_control.py:1618 ../src/conversation_textview.py:562 +#: ../src/dialogs.py:674 ../src/gajim.py:894 ../src/gajim.py:895 +#: ../src/gajim.py:1364 ../src/roster_window.py:345 +#: ../src/roster_window.py:429 ../src/roster_window.py:1790 +#: ../src/roster_window.py:1800 ../src/roster_window.py:2039 +#: ../src/roster_window.py:2277 ../src/roster_window.py:3125 +#: ../src/roster_window.py:3332 ../src/roster_window.py:4692 +#: ../src/roster_window.py:4694 ../src/common/contacts.py:84 +#: ../src/common/helpers.py:44 ../src/common/helpers.py:258 +msgid "Not in Roster" +msgstr "Nije na listi kontakata" + +#. %s is being replaced in the code with JID +#: ../src/chat_control.py:1762 +#, python-format +msgid "You just received a new message from \"%s\"" +msgstr "\"%s\" Vam je upravo poslao poruku" + +#: ../src/chat_control.py:1763 +msgid "" +"If you close this tab and you have history disabled, this message will be " +"lost." +msgstr "" +"Ako zatvorite ovaj jeziÄak, a istorijat razgovora nije omogućen, ova poruka " +"će biti izgubljena." + +#: ../src/config.py:122 ../src/config.py:544 +msgid "Disabled" +msgstr "Onemogućeno" + +#: ../src/config.py:288 +msgid "Active" +msgstr "Aktivno" + +#: ../src/config.py:296 +msgid "Event" +msgstr "dogaÄ‘aj" + +#: ../src/config.py:617 ../src/dialogs.py:958 +#, python-format +msgid "Dictionary for lang %s not available" +msgstr "ReÄnik za jezik %s nije dostupan" + +#: ../src/config.py:618 +#, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option." +msgstr "" +"Morate instalirati %s reÄnik kako biste mogli koristiti proveru pravopisa, " +"ili odaberite drugi jezik postavkom speller_language opcije." + +#: ../src/config.py:969 +msgid "status message title" +msgstr "naslov statusne poruke" + +#: ../src/config.py:969 +msgid "status message text" +msgstr "tekst statusne poruke" + +#: ../src/config.py:1005 +msgid "First Message Received" +msgstr "Primljena Prva Poruka" + +#: ../src/config.py:1006 +msgid "Next Message Received" +msgstr "Sledeća Primljena Poruka" + +#: ../src/config.py:1007 +msgid "Contact Connected" +msgstr "Kontakt Na Vezi" + +#: ../src/config.py:1008 +msgid "Contact Disconnected" +msgstr "Kontakt OtiÅ¡ao Sa Veze" + +#: ../src/config.py:1009 +msgid "Message Sent" +msgstr "Poruka Poslata" + +#: ../src/config.py:1010 +msgid "Group Chat Message Highlight" +msgstr "Bojenje Poruka Sa Grupnog Razgovora" + +#: ../src/config.py:1011 +msgid "Group Chat Message Received" +msgstr "Primljena Poruka Sa Grupnog Razgovora" + +#: ../src/config.py:1018 +msgid "GMail Email Received" +msgstr "Primljen Gmail e-mejl" + +#. Name column +#: ../src/config.py:1287 ../src/dialogs.py:1397 ../src/dialogs.py:1461 +#: ../src/disco.py:736 ../src/disco.py:1559 ../src/disco.py:1805 +#: ../src/history_window.py:108 +msgid "Name" +msgstr "Ime" + +#: ../src/config.py:1395 ../src/common/config.py:375 +msgid "Be right back." +msgstr "Odmah se vraćam." + +#: ../src/config.py:1399 +msgid "Relogin now?" +msgstr "Otići sa veze i povezati se odmah?" + +#: ../src/config.py:1400 +msgid "If you want all the changes to apply instantly, you must relogin." +msgstr "" +"Ako želite da se sve promene trenutno primene, morate da se ponovo povežete." + +#: ../src/config.py:1495 ../src/config.py:1594 +msgid "OpenPGP is not usable in this computer" +msgstr "OpenPGP nije moguće koristiti na ovom raÄunaru" + +#: ../src/config.py:1630 ../src/config.py:1674 +msgid "Unread events" +msgstr "NeproÄitani dogaÄ‘aji" + +#: ../src/config.py:1631 +msgid "Read all pending events before removing this account." +msgstr "ProÄitajte sve dogaÄ‘aje na Äekanju pre uklanjanja naloga." + +#: ../src/config.py:1660 +#, python-format +msgid "You have opened chat in account %s" +msgstr "Otvorili ste razgovor u raÄunu %s" + +#: ../src/config.py:1661 +msgid "All chat and groupchat windows will be closed. Do you want to continue?" +msgstr "" +"Prozori svih razgovora i grupnih razgovora će biti zatvoreni. Želite li da " +"nastavite?" + +#: ../src/config.py:1670 +msgid "You are currently connected to the server" +msgstr "Trenutno ste spojeni na server" + +#: ../src/config.py:1671 +msgid "To change the account name, you must be disconnected." +msgstr "Za promenu imena naloga, morate otići sa veze." + +#: ../src/config.py:1675 +msgid "To change the account name, you must read all pending events." +msgstr "" +"Da biste promenili ime naloga, morate prvo proÄitati sve dogaÄ‘aje na Äekanju." + +#: ../src/config.py:1681 +msgid "Account Name Already Used" +msgstr "Ime Naloga Već U Upotrebi" + +#: ../src/config.py:1682 +msgid "" +"This name is already used by another of your accounts. Please choose another " +"name." +msgstr "" +"Ovo ime već koristi jedan od VaÅ¡ih naloga. Molimo Vas, odaberite drugo ime." + +#: ../src/config.py:1686 ../src/config.py:1690 +msgid "Invalid account name" +msgstr "Neispravno ime naloga" + +#: ../src/config.py:1687 +msgid "Account name cannot be empty." +msgstr "Ime naloga ne može biti prazno." + +#: ../src/config.py:1691 +msgid "Account name cannot contain spaces." +msgstr "Ime naloga ne može da sadrži beline." + +#: ../src/config.py:1755 +#, fuzzy +msgid "Rename Account" +msgstr "PodeÅ¡avanje naloga" + +#: ../src/config.py:1756 +#, fuzzy, python-format +msgid "Enter a new name for account %s" +msgstr "Unesite novo ime za grupu %s" + +#: ../src/config.py:1774 ../src/config.py:1782 ../src/config.py:1822 +#: ../src/config.py:3048 +msgid "Invalid Jabber ID" +msgstr "Neispravan džaber ID" + +#: ../src/config.py:1783 +msgid "A Jabber ID must be in the form \"user@servername\"." +msgstr "Džaber ID mora biti oblika \"korisnik@server\"." + +#: ../src/config.py:1968 ../src/config.py:3119 +msgid "Invalid entry" +msgstr "Neispravan unos" + +#: ../src/config.py:1969 ../src/config.py:3120 +msgid "Custom port must be a port number." +msgstr "VaÅ¡ port mora biti broj porta." + +#: ../src/config.py:1990 +msgid "Failed to get secret keys" +msgstr "Neuspelo uzimanje tajnih kljuÄeva" + +#: ../src/config.py:1991 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "DoÅ¡lo je do problema u uzimanju VaÅ¡ih OpenPGP tajnih kljuÄeva." + +#: ../src/config.py:1994 +msgid "OpenPGP Key Selection" +msgstr "Odabir OpenPGP KljuÄeva" + +#: ../src/config.py:1995 +msgid "Choose your OpenPGP key" +msgstr "Odaberite VaÅ¡ OpenPGP kljuÄ" + +#: ../src/config.py:2052 +msgid "No such account available" +msgstr "Nije dostupan takav nalog" + +#: ../src/config.py:2053 +msgid "You must create your account before editing your personal information." +msgstr "Morate napraviti VaÅ¡ nalog pre izmena liÄnih informacija." + +#: ../src/config.py:2060 ../src/dialogs.py:1244 ../src/dialogs.py:1385 +#: ../src/dialogs.py:1565 ../src/disco.py:420 ../src/profile_window.py:325 +msgid "You are not connected to the server" +msgstr "Niste povezani na server" + +#: ../src/config.py:2061 +msgid "Without a connection, you can not edit your personal information." +msgstr "Bez veze sa serverom, nije moguća izmena liÄnih informacija." + +#: ../src/config.py:2065 +msgid "Your server doesn't support Vcard" +msgstr "VaÅ¡ server ne podržava Vcard" + +#: ../src/config.py:2066 +msgid "Your server can't save your personal information." +msgstr "VaÅ¡ server ne može da saÄuva VaÅ¡e liÄne informacije." + +#: ../src/config.py:2097 +msgid "Account Local already exists." +msgstr "RaÄun lokal već postoji." + +#: ../src/config.py:2098 +msgid "Please rename or remove it before enabling link-local messaging." +msgstr "Molimo Vas, preimenujte ili uklonite pre omogućavanja lokalnih poruka." + +#: ../src/config.py:2274 +#, python-format +msgid "Edit %s" +msgstr "Izmeni %s" + +#: ../src/config.py:2276 +#, python-format +msgid "Register to %s" +msgstr "Registruj se na %s" + +#. list at the beginning +#: ../src/config.py:2312 +msgid "Ban List" +msgstr "Lista zabrana" + +#: ../src/config.py:2313 +msgid "Member List" +msgstr "Lista Älanova" + +#: ../src/config.py:2314 +msgid "Owner List" +msgstr "Lista vlasnika" + +#: ../src/config.py:2315 +msgid "Administrator List" +msgstr "Lista administratora" + +#. Address column +#. holds JID (who said this) +#: ../src/config.py:2364 ../src/disco.py:743 ../src/history_manager.py:155 +msgid "JID" +msgstr "DŽID" + +#: ../src/config.py:2372 +msgid "Reason" +msgstr "Razlog" + +#: ../src/config.py:2377 +msgid "Nick" +msgstr "Nadimak" + +#: ../src/config.py:2381 +msgid "Role" +msgstr "Uloga" + +#: ../src/config.py:2406 +msgid "Banning..." +msgstr "Zabrana..." + +#. You can move '\n' before user@domain if that line is TOO BIG +#: ../src/config.py:2408 +msgid "" +"<b>Whom do you want to ban?</b>\n" +"\n" +msgstr "" +"<b>Koga želite zabraniti?</b>\n" +"\n" + +#: ../src/config.py:2410 +msgid "Adding Member..." +msgstr "Dodavanje Älana..." + +#: ../src/config.py:2411 +msgid "" +"<b>Whom do you want to make a member?</b>\n" +"\n" +msgstr "" +"<b>Koga želite da postavite Älanom?</b>\n" +"\n" + +#: ../src/config.py:2413 +msgid "Adding Owner..." +msgstr "Dodavanje vlasnika..." + +#: ../src/config.py:2414 +msgid "" +"<b>Whom do you want to make an owner?</b>\n" +"\n" +msgstr "" +"<b>Koga želite da postavite za vlasnika?</b>\n" +"\n" + +#: ../src/config.py:2416 +msgid "Adding Administrator..." +msgstr "Dodavanje administratora..." + +#: ../src/config.py:2417 +msgid "" +"<b>Whom do you want to make an administrator?</b>\n" +"\n" +msgstr "" +"<b>Koga želite da postavite za administratora?</b>\n" +"\n" + +#: ../src/config.py:2418 +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 sledećeg:\n" +"1. korisnik@domen/resurs (poklapa se samo sa tim resursom).\n" +"2. korisnik@domen (poklapa se sa bilo kojim resursom).\n" +"3. domen/resurs (poklapa se samo sa tim resursom).\n" +"4. domen (samo se domen poklapa, kao i bilo koji korisnik@domen,\n" +"domen/resurs, ili adresa koja sadrži poddomen." + +#: ../src/config.py:2522 +#, python-format +msgid "Removing %s account" +msgstr "Uklanjanje raÄuna %s" + +#: ../src/config.py:2539 ../src/gajim.py:1307 ../src/roster_window.py:3391 +msgid "Password Required" +msgstr "Lozinka zahtevana" + +#: ../src/config.py:2540 ../src/roster_window.py:3387 +#, python-format +msgid "Enter your password for account %s" +msgstr "Unesite VaÅ¡u lozinku za raÄun %s" + +#: ../src/config.py:2541 ../src/roster_window.py:3392 +msgid "Save password" +msgstr "SaÄuvaj lozinku" + +#: ../src/config.py:2555 +#, python-format +msgid "Account \"%s\" is connected to the server" +msgstr "RaÄun \"%s\" je povezan na server" + +#: ../src/config.py:2556 +msgid "If you remove it, the connection will be lost." +msgstr "Ukoliko ga uklonite, veza će biti izgubljena." + +#: ../src/config.py:2649 +msgid "Default" +msgstr "Podrazumevano" + +#: ../src/config.py:2649 +msgid "?print_status:All" +msgstr "?ispis statusa:Sve" + +#: ../src/config.py:2650 +msgid "Enter and leave only" +msgstr "Samo ući i napustiti" + +#: ../src/config.py:2651 +msgid "?print_status:None" +msgstr "?ispis statusa:NiÅ¡ta" + +#: ../src/config.py:2720 +msgid "New Group Chat" +msgstr "Novi grupni razgovor" + +#: ../src/config.py:2753 +msgid "This bookmark has invalid data" +msgstr "Ovaj marker ima neispravne podatke" + +#: ../src/config.py:2754 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Molimo obavezno ispunite polja servera i sobe ili uklonite ovaj marker." + +#: ../src/config.py:3031 +msgid "Invalid username" +msgstr "Neispravno korisniÄko ime" + +#: ../src/config.py:3033 +msgid "You must provide a username to configure this account." +msgstr "Morate upisati korisniÄko ime da biste konfigurisali ovaj nalog." + +#: ../src/config.py:3059 +msgid "Duplicate Jabber ID" +msgstr "Dupliraj Džaber ID" + +#: ../src/config.py:3060 +msgid "This account is already configured in Gajim." +msgstr "Ovaj nalog je već konfigurisan u Gajimu." + +#: ../src/config.py:3077 +msgid "Account has been added successfully" +msgstr "Nalog je uspeÅ¡no dodat" + +#: ../src/config.py:3078 ../src/config.py:3223 +msgid "" +"You can set advanced account options by pressing the Advanced button, or " +"later by choosing the Accounts menuitem under the Edit menu from the main " +"window." +msgstr "" +"Napredna podeÅ¡avanja naloga možete podesiti pritiskom na dugme Napredno, ili " +"kasnije klikom na stavku menija Nalozi pod menijem Uredi iz glavnog prozora." + +#: ../src/config.py:3095 +#, fuzzy +msgid "Invalid server" +msgstr "Neispravno korisniÄko ime" + +#: ../src/config.py:3096 +#, fuzzy +msgid "Please provide a server on which you want to register." +msgstr "Molimo odredite novi nadimak koji želite da koristite:" + +#: ../src/config.py:3202 ../src/config.py:3241 +msgid "An error occurred during account creation" +msgstr "Pojavila se greÅ¡ka pri kreiranju naloga" + +#: ../src/config.py:3222 +msgid "Your new account has been created successfully" +msgstr "VaÅ¡ novi nalog je uspeÅ¡no napravljen" + +#: ../src/config.py:3327 +msgid "Account name is in use" +msgstr "Ime naloga je već upotrebljeno" + +#: ../src/config.py:3328 +msgid "You already have an account using this name." +msgstr "Već imate nalog sa tim imenom." + +#: ../src/conversation_textview.py:337 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Tekst ispod ove linije je ono Å¡to je reÄeno od kada ste poslednji put " +"obratili pažnju na ovaj grupni razgovor" + +#: ../src/conversation_textview.py:409 +#, python-format +msgid "_Actions for \"%s\"" +msgstr "_Akcije za nalog \"%s\"" + +#: ../src/conversation_textview.py:421 +msgid "Read _Wikipedia Article" +msgstr "ProÄitajte Älanak na _Vikipediji" + +#: ../src/conversation_textview.py:426 +msgid "Look it up in _Dictionary" +msgstr "Potraži u ReÄniku" + +#. we must have %s in the url if not WIKTIONARY +#: ../src/conversation_textview.py:442 +#, python-format +msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" +msgstr "URL-u ReÄnika nedostaje \"%s\" i nije Viki reÄnik" + +#. we must have %s in the url +#: ../src/conversation_textview.py:455 +#, python-format +msgid "Web Search URL is missing an \"%s\"" +msgstr "URL-u Veb pretrage nedostaje \"%s\"" + +#: ../src/conversation_textview.py:458 +msgid "Web _Search for it" +msgstr "_Pretraži Veb" + +#: ../src/conversation_textview.py:464 +msgid "Open as _Link" +msgstr "Otvori kao _Vezu" + +#: ../src/conversation_textview.py:929 +msgid "Yesterday" +msgstr "JuÄe" + +#. the number is >= 2 +#. %i is day in year (1-365), %d (1-31) we want %i +#: ../src/conversation_textview.py:933 +#, python-format +msgid "%i days ago" +msgstr "Pre %i dana" + +#. if we have subject, show it too! +#: ../src/conversation_textview.py:967 +#, python-format +msgid "Subject: %s\n" +msgstr "Tema: %s\n" + +#: ../src/dialogs.py:64 +#, python-format +msgid "Contact name: <i>%s</i>" +msgstr "Ime kontakta: <i>%s</i>" + +#: ../src/dialogs.py:66 +#, python-format +msgid "Jabber ID: <i>%s</i>" +msgstr "Džaber ID: <i>%s</i>" + +#: ../src/dialogs.py:216 +msgid "Group" +msgstr "Grupa" + +#: ../src/dialogs.py:223 +msgid "In the group" +msgstr "U grupi" + +#: ../src/dialogs.py:274 +msgid "KeyID" +msgstr "ID KljuÄa" + +#: ../src/dialogs.py:277 +msgid "Contact name" +msgstr "Ime kontakta" + +#: ../src/dialogs.py:323 +#, python-format +msgid "%s Status Message" +msgstr "%s Statusna poruka" + +#: ../src/dialogs.py:325 +msgid "Status Message" +msgstr "Statusna poruka" + +#: ../src/dialogs.py:425 +msgid "Save as Preset Status Message" +msgstr "Snimi kao već postavljenu statusnu poruku" + +#: ../src/dialogs.py:426 +msgid "Please type a name for this status message" +msgstr "Molimo unesite ime za ovu statusnu poruku" + +#: ../src/dialogs.py:437 +msgid "Overwrite Status Message?" +msgstr "PrebriÅ¡i statusnu poruku?" + +#: ../src/dialogs.py:438 +msgid "" +"This name is already used. Do you want to overwrite this status message?" +msgstr "" +"Ovo ime se već koristi. Da li želite da prebriÅ¡ete ovu statusnu poruku?" + +#: ../src/dialogs.py:454 +msgid "AIM Address:" +msgstr "AIM adresa:" + +#: ../src/dialogs.py:455 +msgid "GG Number:" +msgstr "GG Broj:" + +#: ../src/dialogs.py:456 +msgid "ICQ Number:" +msgstr "ICQ Broj:" + +#: ../src/dialogs.py:457 +msgid "MSN Address:" +msgstr "MSN adresa:" + +#: ../src/dialogs.py:458 +msgid "Yahoo! Address:" +msgstr "Yahoo! adresa:" + +#: ../src/dialogs.py:495 +#, python-format +msgid "Please fill in the data of the contact you want to add in account %s" +msgstr "Molimo Vas ispunite podatke za kontakt koga želite dodati na nalog %s" + +#: ../src/dialogs.py:497 +msgid "Please fill in the data of the contact you want to add" +msgstr "Molimo Vas ispunite podatke za kontakt koga želite dodati" + +#: ../src/dialogs.py:654 ../src/dialogs.py:660 +msgid "Invalid User ID" +msgstr "Neispravan korisniÄki ID" + +#: ../src/dialogs.py:661 +msgid "The user ID must not contain a resource." +msgstr "ID korisnika ne sme sadržavati resurs." + +#: ../src/dialogs.py:675 +msgid "Contact already in roster" +msgstr "Kontakt je već u listi" + +#: ../src/dialogs.py:676 +msgid "This contact is already listed in your roster." +msgstr "Kontakt je već u listi kontakata." + +#: ../src/dialogs.py:712 +msgid "User ID:" +msgstr "ID korisnika:" + +#: ../src/dialogs.py:774 +msgid "A GTK+ jabber client" +msgstr "GTK+ džaber klijent" + +#: ../src/dialogs.py:775 +msgid "GTK+ Version:" +msgstr "GTK+ verzija:" + +#: ../src/dialogs.py:776 +msgid "PyGTK Version:" +msgstr "PyGTK verzija:" + +#: ../src/dialogs.py:790 +msgid "Current Developers:" +msgstr "Trenutni programeri:" + +#: ../src/dialogs.py:792 +msgid "Past Developers:" +msgstr "ProÅ¡li programeri:" + +#: ../src/dialogs.py:802 +msgid "THANKS:" +msgstr "ZAHVALNICE:" + +#. remove one english sentence +#. and add it manually as translatable +#: ../src/dialogs.py:808 +msgid "Last but not least, we would like to thank all the package maintainers." +msgstr "" +"Poslednje, ali ne i najmanje važno, želeli bismo zahvaliti svim " +"održavateljima paketa" + +#. here you write your name in the form Name FamilyName <someone@somewhere> +#: ../src/dialogs.py:821 +msgid "translator-credits" +msgstr "B. Kokanović. <branko.kokanovic@gmail.com>" + +#: ../src/dialogs.py:951 +#, python-format +msgid "Unable to bind to port %s." +msgstr "Ne mogu da se povežem na port %s." + +#: ../src/dialogs.py:952 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"cancelled." +msgstr "" +"Možda već imate pokrenutu instancu Gajima. Prenos datoteka će biti prekinut." + +#: ../src/dialogs.py:959 +#, fuzzy, python-format +msgid "" +"You have to install %s dictionary to use spellchecking, or choose another " +"language by setting the speller_language option.\n" +"\n" +"Highlighting misspelled words feature will not be used" +msgstr "" +"Morate instalirati %s reÄnik kako biste mogli koristiti proveru pravopisa, " +"ili odaberite drugi jezik postavkom speller_language opcije." + +#: ../src/dialogs.py:1173 +#, python-format +msgid "Subscription request for account %s from %s" +msgstr "Zahtev pretplate na raÄun %s od %s" + +#: ../src/dialogs.py:1176 +#, python-format +msgid "Subscription request from %s" +msgstr "Zahtev pretplate od %s" + +#: ../src/dialogs.py:1237 ../src/roster_window.py:763 +#, python-format +msgid "You are already in group chat %s" +msgstr "Već ste u grupnom razgovoru %s" + +#: ../src/dialogs.py:1245 +msgid "You can not join a group chat unless you are connected." +msgstr "Ne možete se prikljuÄiti grupnom razgovoru ako niste povezani." + +#: ../src/dialogs.py:1263 +#, python-format +msgid "Join Group Chat with account %s" +msgstr "Pridružite se grupnom razgovoru preko naloga %s" + +#: ../src/dialogs.py:1333 ../src/dialogs.py:1339 +#: ../src/groupchat_control.py:1643 +msgid "Invalid group chat Jabber ID" +msgstr "Neispravan Džaber ID grupnog razgovora" + +#: ../src/dialogs.py:1334 ../src/dialogs.py:1340 +#: ../src/groupchat_control.py:1644 +msgid "The group chat Jabber ID has not allowed characters." +msgstr "Džaber ID grupnog razgovora ima nedozvoljene znake." + +#: ../src/dialogs.py:1346 +msgid "This is not a group chat" +msgstr "Ovo nije grupni razgovor" + +#: ../src/dialogs.py:1347 +#, python-format +msgid "%s is not the name of a group chat." +msgstr "%s nije ime grupnog razgovora." + +#: ../src/dialogs.py:1386 +#, fuzzy +msgid "Without a connection, you can not synchronise your contacts." +msgstr "Bez veze nije moguća promena lozinke." + +#: ../src/dialogs.py:1400 +msgid "Server" +msgstr "Server" + +#: ../src/dialogs.py:1433 +#, fuzzy +msgid "This account is not connected to the server" +msgstr "RaÄun \"%s\" je povezan na server" + +#: ../src/dialogs.py:1434 +#, fuzzy +msgid "You cannot synchronize with an account unless it is connected." +msgstr "Ne možete se prikljuÄiti grupnom razgovoru ako niste povezani." + +#: ../src/dialogs.py:1458 +msgid "Synchronise" +msgstr "" + +#: ../src/dialogs.py:1516 +#, python-format +msgid "Start Chat with account %s" +msgstr "ZapoÄni razgovor sa razunom %s" + +#: ../src/dialogs.py:1518 +msgid "Start Chat" +msgstr "ZapoÄni razgovor" + +#: ../src/dialogs.py:1519 +msgid "" +"Fill in the nickname or the Jabber ID of the contact you would like\n" +"to send a chat message to:" +msgstr "" +"Ispunite džaber ID kontakta kome želite\n" +"poslati poruku:" + +#. if offline or connecting +#: ../src/dialogs.py:1544 ../src/dialogs.py:1891 ../src/dialogs.py:2027 +msgid "Connection not available" +msgstr "Veza nije dostupna" + +#: ../src/dialogs.py:1545 ../src/dialogs.py:1892 ../src/dialogs.py:2028 +#, python-format +msgid "Please make sure you are connected with \"%s\"." +msgstr "Molimo potvrdite da ste spojeni na \"%s\"." + +#: ../src/dialogs.py:1554 ../src/dialogs.py:1557 +msgid "Invalid JID" +msgstr "Neispravan džaber ID" + +#: ../src/dialogs.py:1557 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "Nije moguće razložiti \"%s\"." + +#: ../src/dialogs.py:1566 +msgid "Without a connection, you can not change your password." +msgstr "Bez veze nije moguća promena lozinke." + +#: ../src/dialogs.py:1584 +msgid "Invalid password" +msgstr "Neispravna lozinka" + +#: ../src/dialogs.py:1585 +msgid "You must enter a password." +msgstr "Morate da unesete lozinku" + +#: ../src/dialogs.py:1589 +msgid "Passwords do not match" +msgstr "Lozinke se ne poklapaju" + +#: ../src/dialogs.py:1590 +msgid "The passwords typed in both fields must be identical." +msgstr "Lozinke upisane u oba polja moraju biti identiÄne." + +#. img to display +#. default value +#: ../src/dialogs.py:1632 ../src/notify.py:219 ../src/notify.py:429 +msgid "Contact Signed In" +msgstr "Kontakt je na vezi" + +#: ../src/dialogs.py:1634 ../src/notify.py:227 ../src/notify.py:431 +msgid "Contact Signed Out" +msgstr "Kontakt je otiÅ¡ao sa veze" + +#. chat message +#: ../src/dialogs.py:1636 ../src/notify.py:250 ../src/notify.py:433 +msgid "New Message" +msgstr "Nova Poruka" + +#. single message +#: ../src/dialogs.py:1636 ../src/notify.py:231 ../src/notify.py:433 +msgid "New Single Message" +msgstr "Nova Samostalna Poruka" + +#. private message +#: ../src/dialogs.py:1637 ../src/notify.py:238 ../src/notify.py:434 +msgid "New Private Message" +msgstr "Nova Privatna Poruka" + +#: ../src/dialogs.py:1637 ../src/gajim.py:1460 ../src/notify.py:442 +msgid "New E-mail" +msgstr "Novi E-mejl" + +#: ../src/dialogs.py:1639 ../src/gajim.py:1668 ../src/notify.py:436 +msgid "File Transfer Request" +msgstr "Zahtev za prenosom datoteke" + +#: ../src/dialogs.py:1641 ../src/gajim.py:1432 ../src/gajim.py:1644 +#: ../src/notify.py:438 +msgid "File Transfer Error" +msgstr "GreÅ¡ka pri prenosu datoteke" + +#: ../src/dialogs.py:1643 ../src/gajim.py:1707 ../src/gajim.py:1729 +#: ../src/gajim.py:1746 ../src/notify.py:440 +msgid "File Transfer Completed" +msgstr "Prenos datoteke zavrÅ¡en" + +#: ../src/dialogs.py:1644 ../src/gajim.py:1710 ../src/notify.py:440 +msgid "File Transfer Stopped" +msgstr "Prenos datoteke zaustavljen" + +#: ../src/dialogs.py:1646 ../src/gajim.py:1328 ../src/notify.py:444 +msgid "Groupchat Invitation" +msgstr "Poziv na grupni razgovor" + +#: ../src/dialogs.py:1648 ../src/notify.py:211 ../src/notify.py:446 +msgid "Contact Changed Status" +msgstr "Kontakt promenio status" + +#: ../src/dialogs.py:1821 +#, python-format +msgid "Single Message using account %s" +msgstr "Samostalna poruka koristeći nalog %s" + +#: ../src/dialogs.py:1823 +#, python-format +msgid "Single Message in account %s" +msgstr "Samostalna poruka na nalogu %s" + +#: ../src/dialogs.py:1825 +msgid "Single Message" +msgstr "Samostalna Poruka" + +#. prepare UI for Sending +#: ../src/dialogs.py:1828 +#, python-format +msgid "Send %s" +msgstr "Poslate %s" + +#. prepare UI for Receiving +#: ../src/dialogs.py:1851 +#, 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:1928 +#, python-format +msgid "RE: %s" +msgstr "RE: %s" + +#: ../src/dialogs.py:1929 +#, python-format +msgid "%s wrote:\n" +msgstr "%s piÅ¡e:\n" + +#: ../src/dialogs.py:1973 +#, python-format +msgid "XML Console for %s" +msgstr "XML Konzola za %s" + +#: ../src/dialogs.py:1975 +msgid "XML Console" +msgstr "XML Konzola" + +#: ../src/dialogs.py:2098 +#, python-format +msgid "Privacy List <b><i>%s</i></b>" +msgstr "Lista privatnosti <b><i>%s</i></b>" + +#: ../src/dialogs.py:2102 +#, python-format +msgid "Privacy List for %s" +msgstr "Lista privatnosti za %s" + +#: ../src/dialogs.py:2158 +#, python-format +msgid "Order: %s, action: %s, type: %s, value: %s" +msgstr "Redosled: %s, akcija: %s, tip: %s, vrednost: %s" + +#: ../src/dialogs.py:2161 +#, python-format +msgid "Order: %s, action: %s" +msgstr "Redosled: %s, akcija: %s" + +#: ../src/dialogs.py:2203 +msgid "<b>Edit a rule</b>" +msgstr "<b>Izmeni pravilo</b>" + +#: ../src/dialogs.py:2290 +msgid "<b>Add a rule</b>" +msgstr "<b>Dodaj pravilo</b>" + +#: ../src/dialogs.py:2386 +#, python-format +msgid "Privacy Lists for %s" +msgstr "Lista privatnosti za %s" + +#: ../src/dialogs.py:2388 +msgid "Privacy Lists" +msgstr "Lista privatnosti" + +#: ../src/dialogs.py:2458 +msgid "Invalid List Name" +msgstr "Neispravno ime liste" + +#: ../src/dialogs.py:2459 +msgid "You must enter a name to create a privacy list." +msgstr "Morate uneti ime za kreiranje liste privatnosti" + +#: ../src/dialogs.py:2496 +#, fuzzy +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact Vas je pozvao na grupni razgovor u sobu %(room_jid)s" + +#: ../src/dialogs.py:2498 +#, python-format +msgid "$Contact has invited you to group chat %(room_jid)s" +msgstr "$Contact Vas je pozvao na grupni razgovor u sobu %(room_jid)s" + +#. only if not None and not '' +#: ../src/dialogs.py:2510 +#, python-format +msgid "Comment: %s" +msgstr "Komentar: %s" + +#: ../src/dialogs.py:2576 +msgid "Choose Sound" +msgstr "Odaberite zvuk" + +#: ../src/dialogs.py:2586 ../src/dialogs.py:2634 +msgid "All files" +msgstr "Sve datoteke" + +#: ../src/dialogs.py:2591 +msgid "Wav Sounds" +msgstr "Wav Zvukovi" + +#: ../src/dialogs.py:2624 +msgid "Choose Image" +msgstr "Odaberite sliku" + +#: ../src/dialogs.py:2639 +msgid "Images" +msgstr "Slike" + +#: ../src/dialogs.py:2703 +#, python-format +msgid "When %s becomes:" +msgstr "Kad %s postane:" + +#: ../src/dialogs.py:2705 +#, python-format +msgid "Adding Special Notification for %s" +msgstr "Dodavanje posebnog obaveÅ¡tenja za %s" + +#. # means number +#: ../src/dialogs.py:2776 +msgid "#" +msgstr "#" + +#: ../src/dialogs.py:2782 +msgid "Condition" +msgstr "Uslov" + +#: ../src/dialogs.py:2900 +msgid "when I am " +msgstr "kada sam " + +#: ../src/disco.py:104 +msgid "Others" +msgstr "Ostali" + +#: ../src/disco.py:105 ../src/disco.py:106 ../src/disco.py:1345 +#: ../src/gajim.py:644 ../src/roster_window.py:282 ../src/roster_window.py:342 +#: ../src/roster_window.py:382 ../src/roster_window.py:490 +#: ../src/roster_window.py:522 ../src/roster_window.py:524 +#: ../src/roster_window.py:4688 ../src/roster_window.py:4690 +#: ../src/common/contacts.py:290 ../src/common/contacts.py:305 +#: ../src/common/helpers.py:44 +msgid "Transports" +msgstr "Prenosi" + +#. conference is a category for listing mostly groupchats in service discovery +#: ../src/disco.py:108 +msgid "Conference" +msgstr "Konferencija" + +#: ../src/disco.py:421 +msgid "Without a connection, you can not browse available services" +msgstr "Bez uspostavljene veze, ne možete razgledati dostupne usluge" + +#: ../src/disco.py:495 +#, python-format +msgid "Service Discovery using account %s" +msgstr "Otkrivanje usluga sa naloga %s" + +#: ../src/disco.py:497 +msgid "Service Discovery" +msgstr "Otkrivanje Usluga" + +#: ../src/disco.py:637 +msgid "The service could not be found" +msgstr "Usluga ne može biti naÄ‘ena" + +#: ../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 "" +"Na navedenoj adresi nema usuga, ili nema odgovora. Proverite adresu i " +"pokuÅ¡ajte ponovo." + +#: ../src/disco.py:642 ../src/disco.py:923 +msgid "The service is not browsable" +msgstr "Usluge nisu pretražive" + +#: ../src/disco.py:643 +msgid "This type of service does not contain any items to browse." +msgstr "Ovaj tip usluge ne sadrži elemente za pretragu" + +#: ../src/disco.py:723 +#, python-format +msgid "Browsing %s using account %s" +msgstr "Pretraga %s koristeći raÄun %s" + +#: ../src/disco.py:762 +msgid "_Browse" +msgstr "_Pregled" + +#: ../src/disco.py:924 +msgid "This service does not contain any items to browse." +msgstr "Ova usluga ne sadrži elemente za pretragu" + +#: ../src/disco.py:1142 +#, fuzzy +msgid "_Execute Command" +msgstr "_IzvrÅ¡i naredbu..." + +#: ../src/disco.py:1152 ../src/disco.py:1350 +msgid "Re_gister" +msgstr "Re_gistracija" + +#: ../src/disco.py:1387 +#, python-format +msgid "Scanning %d / %d.." +msgstr "Skeniranje %d / %d.." + +#. Users column +#: ../src/disco.py:1569 +msgid "Users" +msgstr "Korisnici" + +#. Description column +#: ../src/disco.py:1577 +msgid "Description" +msgstr "Opis" + +#. Id column +#: ../src/disco.py:1585 +msgid "Id" +msgstr "Identifikacija" + +#: ../src/disco.py:1814 +msgid "Subscribed" +msgstr "Pretplaćen" + +#: ../src/disco.py:1822 +#, fuzzy +msgid "Node" +msgstr "NiÅ¡ta" + +#: ../src/disco.py:1879 +msgid "New post" +msgstr "Nova objava" + +#: ../src/disco.py:1885 +msgid "_Subscribe" +msgstr "_Pretplati se" + +#: ../src/disco.py:1891 +msgid "_Unsubscribe" +msgstr "_Ukini pretplatu" + +#: ../src/filetransfers_window.py:72 +msgid "File" +msgstr "Datoteka" + +#: ../src/filetransfers_window.py:87 +msgid "Time" +msgstr "Vreme" + +#: ../src/filetransfers_window.py:99 +msgid "Progress" +msgstr "Napredak" + +#: ../src/filetransfers_window.py:159 ../src/filetransfers_window.py:213 +#, python-format +msgid "Filename: %s" +msgstr "Ime datoteke: %s" + +#: ../src/filetransfers_window.py:160 ../src/filetransfers_window.py:288 +#, 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:169 ../src/filetransfers_window.py:179 +#: ../src/history_manager.py:463 +msgid "You" +msgstr "Vi" + +#: ../src/filetransfers_window.py:170 +#, python-format +msgid "Sender: %s" +msgstr "PoÅ¡aljilac: %s" + +#: ../src/filetransfers_window.py:171 ../src/filetransfers_window.py:577 +#: ../src/tooltips.py:586 +msgid "Recipient: " +msgstr "Primaoc: " + +#: ../src/filetransfers_window.py:182 +#, python-format +msgid "Saved in: %s" +msgstr "SaÄuvano u: %s" + +#: ../src/filetransfers_window.py:184 +msgid "File transfer completed" +msgstr "Prenos datoteke zavrÅ¡en" + +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:204 +msgid "File transfer cancelled" +msgstr "Prenos datoteke prekinut" + +#: ../src/filetransfers_window.py:198 ../src/filetransfers_window.py:205 +msgid "Connection with peer cannot be established." +msgstr "Nije moguće uspostaviti vezu sa drugom stranom." + +#: ../src/filetransfers_window.py:214 +#, python-format +msgid "Recipient: %s" +msgstr "Primaoc: %s" + +#: ../src/filetransfers_window.py:216 +#, python-format +msgid "Error message: %s" +msgstr "Poruka greÅ¡ke: %s" + +#: ../src/filetransfers_window.py:217 +msgid "File transfer stopped by the contact at the other end" +msgstr "Prenos datoteke je zaustavljen od kontakta sa druge strane" + +#: ../src/filetransfers_window.py:234 +msgid "Choose File to Send..." +msgstr "Odaberite datoteku za slanje..." + +#: ../src/filetransfers_window.py:253 +msgid "Gajim cannot access this file" +msgstr "Gajim ne može pristupiti ovoj datoteci" + +#: ../src/filetransfers_window.py:254 +msgid "This file is being used by another process." +msgstr "Ovu datoteku koristi neki drugi proces." + +#: ../src/filetransfers_window.py:286 +#, python-format +msgid "File: %s" +msgstr "Datoteka: %s" + +#: ../src/filetransfers_window.py:291 +#, python-format +msgid "Type: %s" +msgstr "Tip: %s" + +#: ../src/filetransfers_window.py:293 +#, python-format +msgid "Description: %s" +msgstr "Opis: %s" + +#: ../src/filetransfers_window.py:294 +#, python-format +msgid "%s wants to send you a file:" +msgstr "%s Vam želi poslati datoteku:" + +#: ../src/filetransfers_window.py:308 ../src/gtkgui_helpers.py:767 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Nije moguće prepisati postojeću datoteku \"%s\"" + +#: ../src/filetransfers_window.py:309 ../src/gtkgui_helpers.py:769 +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 privilegijaprepisati je." + +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 +msgid "This file already exists" +msgstr "Ova datoteka već postoji" + +#: ../src/filetransfers_window.py:316 ../src/gtkgui_helpers.py:773 +msgid "What do you want to do?" +msgstr "Å ta želite da uradite?" + +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:783 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "U fasciklu \"%s\" nije moguće pisanje" + +#: ../src/filetransfers_window.py:328 ../src/gtkgui_helpers.py:784 +msgid "You do not have permission to create files in this directory." +msgstr "Nemate privilegija za pisanje u ovoj fascikli" + +#: ../src/filetransfers_window.py:338 +msgid "Save File as..." +msgstr "Snimi 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:419 +#, 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:508 +#, python-format +msgid "(%(filesize_unit)s/s)" +msgstr "(%(filesize_unit)s/sek)" + +#: ../src/filetransfers_window.py:547 ../src/filetransfers_window.py:550 +msgid "Invalid File" +msgstr "Neispravna datoteka" + +#: ../src/filetransfers_window.py:547 +msgid "File: " +msgstr "Datoteka: " + +#: ../src/filetransfers_window.py:551 +msgid "It is not possible to send empty files" +msgstr "Nije moguće poslati praznu datoteku" + +#: ../src/filetransfers_window.py:573 ../src/tooltips.py:576 +msgid "Name: " +msgstr "Ime: " + +#: ../src/filetransfers_window.py:575 ../src/tooltips.py:580 +msgid "Sender: " +msgstr "PoÅ¡aljilac: " + +#: ../src/filetransfers_window.py:763 +msgid "Pause" +msgstr "Pauza" + +#: ../src/gajim.py:50 +#, python-format +msgid "%s is not a valid loglevel" +msgstr "" + +#: ../src/gajim.py:143 +msgid "Gajim needs X server to run. Quiting..." +msgstr "Gajimu treba X server da bi se pokrenuo. ZavrÅ¡avam..." + +#: ../src/gajim.py:147 +#, fuzzy +msgid "Gajim needs PyGTK 2.8 or above" +msgstr "Gajimu treba pyGTK 2.6 ili veća verzija" + +#: ../src/gajim.py:148 +#, fuzzy +msgid "Gajim needs PyGTK 2.8 or above to run. Quiting..." +msgstr "Gajimu treba pyGTK 2.6 ili veća verzija. ZavrÅ¡avam..." + +#: ../src/gajim.py:150 +#, fuzzy +msgid "Gajim needs GTK 2.8 or above" +msgstr "Gajimu treba pyGTK 2.6 ili veća verzija" + +#: ../src/gajim.py:151 +#, fuzzy +msgid "Gajim needs GTK 2.8 or above to run. Quiting..." +msgstr "Gajimu treba pyGTK 2.6 ili veća verzija. ZavrÅ¡avam..." + +#: ../src/gajim.py:156 +msgid "GTK+ runtime is missing libglade support" +msgstr "GTK+ nema podrÅ¡ku za libglade" + +#: ../src/gajim.py:158 +#, python-format +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Molimo uklonite VaÅ¡ trenutni GTK+ i instalirajte poslednju stabilnu verziju " +"sa %s" + +#: ../src/gajim.py:160 +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Molimo proverite da GTK+ i PyGTK imaju podrÅ¡ku za libglade na VaÅ¡em sistemu" + +#: ../src/gajim.py:165 +msgid "Gajim needs PySQLite2 to run" +msgstr "Gajimu treba PySQLite2 za pokretanje" + +#: ../src/gajim.py:173 +msgid "Gajim needs pywin32 to run" +msgstr "Gajimu treba pywin32 za pokretanje" + +#: ../src/gajim.py:174 +#, python-format +msgid "" +"Please make sure that Pywin32 is installed on your system. You can get it at " +"%s" +msgstr "" +"Molimo osigurajte se da je Pywin32 instaliran na VaÅ¡em sistemu. Možete ga " +"naći na %s" + +#. set the icon to all newly opened wind +#: ../src/gajim.py:317 +msgid "Gajim is already running" +msgstr "Gajim je već pokrenut" + +#: ../src/gajim.py:318 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" +"Jedna instanca Gajima izgleda već radi\n" +"Svejedno želite pokrenuti?" + +#: ../src/gajim.py:341 ../src/common/connection_handlers.py:900 +#: ../src/common/connection_handlers.py:1601 +#: ../src/common/connection_handlers.py:1629 +#: ../src/common/connection_handlers.py:1639 +#: ../src/common/connection_handlers.py:1658 +#: ../src/common/connection_handlers.py:1889 +#: ../src/common/connection_handlers.py:2001 ../src/common/connection.py:925 +msgid "Disk Write Error" +msgstr "GreÅ¡ka pri pisanju na disk" + +#: ../src/gajim.py:434 +msgid "Do you accept this request?" +msgstr "Prihvatate li ovaj zahtev?" + +#: ../src/gajim.py:437 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "HTTP (%s) Autorizacija za %s (id: %s)" + +#: ../src/gajim.py:484 ../src/notify.py:448 +msgid "Connection Failed" +msgstr "Veza prekinuta" + +#: ../src/gajim.py:817 +#, python-format +msgid "Subject: %s" +msgstr "Tema: %s" + +#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) +#: ../src/gajim.py:864 ../src/gajim.py:877 +#, python-format +msgid "error while sending %s ( %s )" +msgstr "greÅ¡ka prilikom slanja %s ( %s )" + +#: ../src/gajim.py:910 +msgid "Authorization accepted" +msgstr "Autorizacija prihvaćena" + +#: ../src/gajim.py:911 +#, python-format +msgid "The contact \"%s\" has authorized you to see his or her status." +msgstr "Kontakt \"%s\" je prihvatio da vidite njegov/njen status." + +#: ../src/gajim.py:919 +#, python-format +msgid "Contact \"%s\" removed subscription from you" +msgstr "Kontakt \"%s\" je ukinuo pretplatu na njega" + +#: ../src/gajim.py:920 +msgid "You will always see him or her as offline." +msgstr "Uvek ćete njega/nju videti kao da nije na vezi." + +#: ../src/gajim.py:964 +#, python-format +msgid "Contact with \"%s\" cannot be established" +msgstr "Kontakt sa \"%s\" se ne može uspostaviti" + +#: ../src/gajim.py:965 ../src/common/connection.py:466 +msgid "Check your connection or try again later." +msgstr "Proverite VaÅ¡u konekciju ili pokuÅ¡ajte kasnije." + +#: ../src/gajim.py:1136 ../src/roster_window.py:1348 +#, python-format +msgid "%s is now %s (%s)" +msgstr "%s je sada %s (%s)" + +#. No status message +#: ../src/gajim.py:1139 ../src/groupchat_control.py:1101 +#: ../src/roster_window.py:1351 +#, python-format +msgid "%s is now %s" +msgstr "%s je sada %s" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/gajim.py:1259 ../src/groupchat_control.py:913 +msgid "Any occupant is allowed to see your full JID" +msgstr "" + +#: ../src/gajim.py:1261 +msgid "Room now shows unavailable member" +msgstr "" + +#: ../src/gajim.py:1263 +msgid "room now does not show unavailable members" +msgstr "" + +#: ../src/gajim.py:1266 +msgid "A non-privacy-related room configuration change has occurred" +msgstr "" + +#. Can be a presence (see chg_contact_status in groupchat_contol.py) +#: ../src/gajim.py:1269 +msgid "Room logging is now enabled" +msgstr "" + +#: ../src/gajim.py:1271 +msgid "Room logging is now disabled" +msgstr "" + +#: ../src/gajim.py:1273 +msgid "Room is now non-anonymous" +msgstr "" + +#: ../src/gajim.py:1275 +msgid "Room is now semi-anonymous" +msgstr "" + +#: ../src/gajim.py:1277 +msgid "Room is now fully-anonymous" +msgstr "" + +#: ../src/gajim.py:1308 +#, fuzzy, python-format +msgid "A Password is required to join the room %s. Please type it" +msgstr "Lozinka potrebna za pridruživanje ovom grupnom razgovoru." + +#: ../src/gajim.py:1338 +msgid "Your passphrase is incorrect" +msgstr "VaÅ¡a lozinka nije taÄna" + +#: ../src/gajim.py:1339 +msgid "You are currently connected without your OpenPGP key." +msgstr "Trenutno ste povezani bez OpenPGP kljuÄa." + +#: ../src/gajim.py:1443 +#, python-format +msgid "New mail on %(gmail_mail_address)s" +msgstr "Novi e-mejl za %(gmail_mail_address)s" + +#: ../src/gajim.py:1445 +#, python-format +msgid "You have %d new mail conversation" +msgid_plural "You have %d new mail conversations" +msgstr[0] "Imate %d novi e-mejl razgovor" +msgstr[1] "Imate %d nova e-mejl razgovora" +msgstr[2] "Imate %d novih e-mejl razgovora" + +#. 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 +#: ../src/gajim.py:1454 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" +"\n" +"Od: %(from_address)s" + +#: ../src/gajim.py:1665 +#, python-format +msgid "%s wants to send you a file." +msgstr "%s Vam želi poslati datoteku." + +#: ../src/gajim.py:1730 +#, python-format +msgid "You successfully received %(filename)s from %(name)s." +msgstr "UspeÅ¡no ste primili datoteku %(filename)s od kontakta %(name)s." + +#. ft stopped +#: ../src/gajim.py:1734 +#, python-format +msgid "File transfer of %(filename)s from %(name)s stopped." +msgstr "Prenos datoteke %(filename)s od kontakta %(name)s je zaustavljen." + +#: ../src/gajim.py:1747 +#, python-format +msgid "You successfully sent %(filename)s to %(name)s." +msgstr "UspeÅ¡no ste poslali datoteku %(filename)s za kontakt %(name)s" + +#. ft stopped +#: ../src/gajim.py:1751 +#, python-format +msgid "File transfer of %(filename)s to %(name)s stopped." +msgstr "Prenos %(filename)s za kontakt %(name)s je zaustavljen. " + +#: ../src/gajim.py:1846 +msgid "Session negotiation cancelled" +msgstr "" + +#: ../src/gajim.py:1847 +#, python-format +msgid "The client at %s cancelled the session negotiation." +msgstr "" + +#: ../src/gajim.py:1887 ../src/gajim.py:1928 +msgid "Confirm these session options" +msgstr "" + +#: ../src/gajim.py:1888 +#, python-format +msgid "" +"The remote client wants to negotiate an session with these features:\n" +"\n" +"\t%s\n" +"\n" +"\tAre these options acceptable?" +msgstr "" + +#: ../src/gajim.py:1929 +#, python-format +msgid "" +"The remote client selected these options:\n" +"\n" +"%s\n" +"\n" +"Continue with the session?" +msgstr "" + +#: ../src/gajim.py:2041 +msgid "Username Conflict" +msgstr "Konflikt korisniÄkog imena" + +#: ../src/gajim.py:2042 +msgid "Please type a new username for your local account" +msgstr "Molimo Vas unesite novo korisniÄko ime za VaÅ¡ lokalni nalog" + +#: ../src/gajim.py:2059 +msgid "Ping?" +msgstr "" + +#: ../src/gajim.py:2067 +#, python-format +msgid "Pong! (%s s.)" +msgstr "" + +#: ../src/gajim.py:2073 +msgid "Error." +msgstr "" + +#: ../src/gajim.py:2098 +#, fuzzy +msgid "Resource Conflict" +msgstr "Konflikt korisniÄkog imena" + +#: ../src/gajim.py:2099 +msgid "" +"You are already connected to this account with the same resource. Please " +"type a new one" +msgstr "" + +#. it is good to notify the user +#. in case he or she cannot see the output of the console +#: ../src/gajim.py:2461 +msgid "Could not save your settings and preferences" +msgstr "Nije moguće Äuvanje VaÅ¡ih podeÅ¡avanja" + +#. sorted alphanum +#: ../src/gajim.py:2596 ../src/common/config.py:86 ../src/common/config.py:395 +#: ../src/common/optparser.py:194 ../src/common/optparser.py:412 +#: ../src/common/optparser.py:446 +msgid "default" +msgstr "podrazumevano" + +#: ../src/gajim.py:2683 +msgid "Network Manager support not available" +msgstr "PodrÅ¡ka za upravitelja mreže nije dostupna" + +#: ../src/gajim.py:2784 +msgid "Session Management support not available (missing gnome.ui module)" +msgstr "" +"PodrÅ¡ka za upravljanje sesijama nije dostupna (nedostaje gnome.ui modul)" + +#: ../src/gajim-remote.py:65 +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:68 +msgid "command" +msgstr "naredba" + +#: ../src/gajim-remote.py:69 +msgid "show help on command" +msgstr "prikaži pomoć za komandu" + +#: ../src/gajim-remote.py:73 +msgid "Shows or hides the roster window" +msgstr "Prikazuje ili skriva prozor liste kontakata " + +#: ../src/gajim-remote.py:77 +msgid "Pops up a window with the next pending event" +msgstr "IskaÄe prozor sa sledećim dogaÄ‘ajem na Äekanju" + +#: ../src/gajim-remote.py:81 +msgid "" +"Prints a list of all contacts in the roster. Each contact appears on a " +"separate line" +msgstr "" +"Ispisuje listu svih kontakata sa liste kontakata. Svaki kontakt se " +"pojavljuje u posebnoj liniji" + +#: ../src/gajim-remote.py:84 ../src/gajim-remote.py:99 +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:122 +#: ../src/gajim-remote.py:136 ../src/gajim-remote.py:145 +#: ../src/gajim-remote.py:166 ../src/gajim-remote.py:196 +#: ../src/gajim-remote.py:205 ../src/gajim-remote.py:212 +#: ../src/gajim-remote.py:219 ../src/gajim-remote.py:230 +#: ../src/gajim-remote.py:246 ../src/gajim-remote.py:255 +msgid "account" +msgstr "nalog" + +#: ../src/gajim-remote.py:84 +msgid "show only contacts of the given account" +msgstr "prikazuje samo kontakte sa ovog naloga" + +#: ../src/gajim-remote.py:90 +msgid "Prints a list of registered accounts" +msgstr "Ispisuje listu registrovanih naloga" + +#: ../src/gajim-remote.py:94 +msgid "Changes the status of account or accounts" +msgstr "Menja status jednog ili viÅ¡e naloga" + +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:97 +msgid "status" +msgstr "status" + +#: ../src/gajim-remote.py:97 +msgid "one of: offline, online, chat, away, xa, dnd, invisible " +msgstr "" +"jedno od: nije na vezi, na vezi, priÄa, odsutan, produženo odsutan, ne " +"uznemiravaj, nevidljiv" + +#: ../src/gajim-remote.py:98 ../src/gajim-remote.py:119 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:144 +msgid "message" +msgstr "poruka" + +#: ../src/gajim-remote.py:98 +msgid "status message" +msgstr "statusna poruka" + +#: ../src/gajim-remote.py:99 +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 "" +"izmena statusa naloga \"nalog\". Ako nije odreÄ‘en, pokuÅ¡aj promene statusa " +"svih naloga koji imaju ukljuÄenu opciju \"sinhronizacija sa globalnim " +"statusom\"" + +#: ../src/gajim-remote.py:105 +msgid "Shows the chat dialog so that you can send messages to a contact" +msgstr "Prikazuje dijalog razgovora kako biste mogli razgovarati sa kontaktom" + +#: ../src/gajim-remote.py:107 +msgid "JID of the contact that you want to chat with" +msgstr "Džaber ID kontakta sa kojim želite razgovarati" + +#: ../src/gajim-remote.py:109 ../src/gajim-remote.py:196 +msgid "if specified, contact is taken from the contact list of this account" +msgstr "ako je naznaÄeno, kontakt se uzima sa liste kontakata ovog naloga" + +#: ../src/gajim-remote.py:114 +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 nalog su opcioni. Ako " +"želite postaviti samo 'nalog', bez 'OpenPGP kljuÄ', samo postavite 'OpenPGP " +"kljuÄ' na ''." + +#: ../src/gajim-remote.py:118 ../src/gajim-remote.py:131 +msgid "JID of the contact that will receive the message" +msgstr "Džaber ID kontakta koji će primiti poruku" + +#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:144 +msgid "message contents" +msgstr "sadržaj poruke" + +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +msgid "pgp key" +msgstr "pgp kljuÄ" + +#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 +msgid "if specified, the message will be encrypted using this public key" +msgstr "ako je naznaÄeno, poruka će biti Å¡ifrovana koristeći ovaj javni kljuÄ" + +#: ../src/gajim-remote.py:122 ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:145 +msgid "if specified, the message will be sent using this account" +msgstr "ako je naznaÄeno, poruka će biti poslata koristeći ovaj nalog" + +#: ../src/gajim-remote.py:127 +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 kljuÄ i nalog su opcioni. Ako " +"želite postaviti samo 'nalog', bez 'OpenPGP kljuÄ', samo postavite 'OpenPGP " +"kljuÄ' na ''." + +#: ../src/gajim-remote.py:132 +msgid "subject" +msgstr "tema" + +#: ../src/gajim-remote.py:132 +msgid "message subject" +msgstr "tema poruke" + +#: ../src/gajim-remote.py:141 +msgid "Sends new message to a groupchat you've joined." +msgstr "" + +#: ../src/gajim-remote.py:143 +#, fuzzy +msgid "JID of the room that will receive the message" +msgstr "Džaber ID kontakta koji će primiti poruku" + +#: ../src/gajim-remote.py:150 +msgid "Gets detailed info on a contact" +msgstr "Daje detaljne informacije o kontaktu" + +#: ../src/gajim-remote.py:152 ../src/gajim-remote.py:165 +#: ../src/gajim-remote.py:195 ../src/gajim-remote.py:204 +msgid "JID of the contact" +msgstr "Džaber ID kontakta" + +#: ../src/gajim-remote.py:156 +msgid "Gets detailed info on a account" +msgstr "Daje detaljne informacije o nalogu" + +#: ../src/gajim-remote.py:158 +msgid "Name of the account" +msgstr "Ime naloga" + +#: ../src/gajim-remote.py:162 +msgid "Sends file to a contact" +msgstr "Å alje datoteku kontaktu" + +#: ../src/gajim-remote.py:164 +msgid "file" +msgstr "datoteka" + +#: ../src/gajim-remote.py:164 +msgid "File path" +msgstr "Putanja do datoteke" + +#: ../src/gajim-remote.py:166 +msgid "if specified, file will be sent using this account" +msgstr "ako je naznaÄeno, datoteka će biti poslata koriteći ovaj nalog" + +#: ../src/gajim-remote.py:171 +msgid "Lists all preferences and their values" +msgstr "Prikazuje sva podeÅ¡avanja i njihove vrednosti" + +#: ../src/gajim-remote.py:175 +msgid "Sets value of 'key' to 'value'." +msgstr "Postavlja vrednost 'kljuÄa' na 'vrednost'." + +#: ../src/gajim-remote.py:177 +msgid "key=value" +msgstr "kljuÄ=vrednost" + +#: ../src/gajim-remote.py:177 +msgid "'key' is the name of the preference, 'value' is the value to set it to" +msgstr "" +"'kljuÄ' je ime stavke podeÅ¡avanja, 'vrednost' je vrednost na koju će se " +"stavka postaviti" + +#: ../src/gajim-remote.py:182 +msgid "Deletes a preference item" +msgstr "BriÅ¡e stavku podeÅ¡avanja" + +#: ../src/gajim-remote.py:184 +msgid "key" +msgstr "kljuÄ" + +#: ../src/gajim-remote.py:184 +msgid "name of the preference to be deleted" +msgstr "ime stavke podeÅ¡avanja koje će se brisati" + +#: ../src/gajim-remote.py:188 +msgid "Writes the current state of Gajim preferences to the .config file" +msgstr "Zapisuje trenutno stanje Gajim podeÅ¡avanja u .config datoteku" + +#: ../src/gajim-remote.py:193 +msgid "Removes contact from roster" +msgstr "Uklanja kontakt sa liste" + +#: ../src/gajim-remote.py:202 +msgid "Adds contact to roster" +msgstr "Dodaje kontakt na listu" + +#: ../src/gajim-remote.py:204 +msgid "jid" +msgstr "džid" + +#: ../src/gajim-remote.py:205 +msgid "Adds new contact to this account" +msgstr "Dodaje novi kontakt ovom raÄunu" + +#: ../src/gajim-remote.py:210 +msgid "Returns current status (the global one unless account is specified)" +msgstr "Vraća trenutni status (globalni ako nije naznaÄen nalog)" + +#: ../src/gajim-remote.py:217 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "Vraća trenutnu statusnu poruku (globalnu ako nije naznaÄen nalog)" + +#: ../src/gajim-remote.py:224 +msgid "Returns number of unread messages" +msgstr "Vraća broj neproÄitanih poruka" + +#: ../src/gajim-remote.py:228 +msgid "Opens 'Start Chat' dialog" +msgstr "Otvara dijalog za zapoÄinjanje razgovora" + +#: ../src/gajim-remote.py:230 +msgid "Starts chat, using this account" +msgstr "ZapoÄinje razgovor, koristeći ovaj nalog" + +#: ../src/gajim-remote.py:234 +msgid "Sends custom XML" +msgstr "Å alje korisniÄki definisan XML" + +#: ../src/gajim-remote.py:236 +msgid "XML to send" +msgstr "XML za slanje" + +#: ../src/gajim-remote.py:237 +msgid "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" +msgstr "" +"Nalog za koji će biti poslan xml ; ako nije odreÄ‘en, xml će biti poslat za " +"sve naloge" + +#: ../src/gajim-remote.py:243 +msgid "Handle a xmpp:/ uri" +msgstr "Rukuj sa xmpp:/ uri-jem" + +#: ../src/gajim-remote.py:245 +msgid "uri" +msgstr "uri" + +#: ../src/gajim-remote.py:250 +msgid "Join a MUC room" +msgstr "_Pridruži se novoj MUC sobi" + +#: ../src/gajim-remote.py:252 +msgid "room" +msgstr "soba" + +#: ../src/gajim-remote.py:253 +msgid "nick" +msgstr "nadimak" + +#: ../src/gajim-remote.py:254 +msgid "password" +msgstr "Lozinka" + +#: ../src/gajim-remote.py:277 +msgid "Missing argument \"contact_jid\"" +msgstr "Nedostaje argument \"contact_jid\"" + +#: ../src/gajim-remote.py:296 +#, python-format +msgid "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." +msgstr "" +"'%s' nije na VaÅ¡j listi.\n" +"Molimo odredite nalog za slanje poruke." + +#: ../src/gajim-remote.py:299 +msgid "You have no active account" +msgstr "nemate aktivnih raÄuna" + +#: ../src/gajim-remote.py:363 +#, python-format +msgid "" +"Usage: %s %s %s \n" +"\t %s" +msgstr "" +"Korišćenje: %s %s %s \n" +"\t %s" + +#: ../src/gajim-remote.py:366 +msgid "Arguments:" +msgstr "Argumenti:" + +#: ../src/gajim-remote.py:370 +#, python-format +msgid "%s not found" +msgstr "%s nije pronaÄ‘en" + +#: ../src/gajim-remote.py:374 +#, python-format +msgid "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" +msgstr "" +"Korišćenje: %s naredba [argumenti]\n" +"Naredba je jedna od:\n" + +#: ../src/gajim-remote.py:447 +#, python-format +msgid "" +"Too many arguments. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"PreviÅ¡e argumenata. \n" +"Ukucajte \"%s help %s\" za viÅ¡e informacija" + +#: ../src/gajim-remote.py:451 +#, python-format +msgid "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Argument \"%s\" nije naveden. \n" +"Ukucajte \"%s help %s\" za viÅ¡e informacija" + +#: ../src/gajim-remote.py:469 +msgid "Wrong uri" +msgstr "LoÅ¡ uri" + +#: ../src/gajim_themes_window.py:62 +msgid "Theme" +msgstr "Tema" + +#: ../src/gajim_themes_window.py:100 +#, fuzzy +msgid "You cannot make changes to the default theme" +msgstr "Ne možete izbrisati VaÅ¡u trenutnu temu" + +#: ../src/gajim_themes_window.py:101 +msgid "Please create a clean new theme with your desired name." +msgstr "" + +#. don't confuse translators +#: ../src/gajim_themes_window.py:175 +msgid "theme name" +msgstr "ime teme" + +#: ../src/gajim_themes_window.py:192 +msgid "You cannot delete your current theme" +msgstr "Ne možete izbrisati VaÅ¡u trenutnu temu" + +#: ../src/gajim_themes_window.py:193 +msgid "Please first choose another for your current theme." +msgstr "Molimo Vas da prvo odaberete neku drugu temu." + +#: ../src/groupchat_control.py:134 +msgid "Sending private message failed" +msgstr "NeuspeÅ¡no slanje privatne poruke" + +#. in second %s code replaces with nickname +#: ../src/groupchat_control.py:136 +#, python-format +msgid "You are no longer in group chat \"%s\" or \"%s\" has left." +msgstr "ViÅ¡e niste u grupnom razgovoru \"%s\" ili je \"%s\" otiÅ¡ao." + +#: ../src/groupchat_control.py:342 +msgid "Insert Nickname" +msgstr "Ubaci nadimak" + +#. Can be a message (see handle_event_gc_config_change in gajim.py) +#: ../src/groupchat_control.py:916 +msgid "Room logging is enabled" +msgstr "" + +#: ../src/groupchat_control.py:918 +#, fuzzy +msgid "A new room has been created" +msgstr "VaÅ¡ novi nalog je uspeÅ¡no napravljen" + +#: ../src/groupchat_control.py:921 +msgid "The server has assigned or modified your roomnick" +msgstr "" + +#. do not print 'kicked by None' +#: ../src/groupchat_control.py:927 +#, python-format +msgid "%(nick)s has been kicked: %(reason)s" +msgstr "%(nick)s je izbaÄen: %(reason)s" + +#: ../src/groupchat_control.py:931 +#, 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:938 +#, python-format +msgid "%(nick)s has been banned: %(reason)s" +msgstr "%(nick)s ima zabranu: %(reason)s" + +#: ../src/groupchat_control.py:942 +#, python-format +msgid "%(nick)s has been banned by %(who)s: %(reason)s" +msgstr "%(nick)s ima zabranu od Älana %(who)s: %(reason)s" + +#. Someone changed his or her nick +#. We changed our nick +#: ../src/groupchat_control.py:949 +#, python-format +msgid "You are now known as %s" +msgstr "Od sada ste poznati kao %s" + +#: ../src/groupchat_control.py:951 +#, python-format +msgid "%s is now known as %s" +msgstr "%s je od sada poznat kao %s" + +#: ../src/groupchat_control.py:984 ../src/groupchat_control.py:988 +#: ../src/groupchat_control.py:993 +#, fuzzy, python-format +msgid "%(nick)s has been removed from the room (%(reason)s)" +msgstr "%(nick)s je izbaÄen od strane %(who)s: %(reason)s" + +#: ../src/groupchat_control.py:985 +#, fuzzy +msgid "affiliation changed" +msgstr "Pripadnost:" + +#: ../src/groupchat_control.py:990 +msgid "room configuration changed to members-only" +msgstr "" + +#: ../src/groupchat_control.py:995 +msgid "system shutdown" +msgstr "" + +#: ../src/groupchat_control.py:1094 +#, python-format +msgid "%s has left" +msgstr "%s je otiÅ¡ao" + +#: ../src/groupchat_control.py:1099 +#, python-format +msgid "%s has joined the group chat" +msgstr "%s se pridružio grupnom razgovoru" + +#. Invalid Nickname +#. invalid char +#: ../src/groupchat_control.py:1212 ../src/groupchat_control.py:1491 +msgid "Invalid nickname" +msgstr "Neispravan nadimak" + +#: ../src/groupchat_control.py:1213 ../src/groupchat_control.py:1492 +msgid "The nickname has not allowed characters." +msgstr "Nadimak ima nedozvoljene znake." + +#: ../src/groupchat_control.py:1236 ../src/groupchat_control.py:1254 +#: ../src/groupchat_control.py:1338 ../src/groupchat_control.py:1355 +#, python-format +msgid "Nickname not found: %s" +msgstr "Nadimak nije pronaÄ‘en: %s " + +#: ../src/groupchat_control.py:1270 +msgid "This group chat has no subject" +msgstr "Ovaj grupni razgovor nema temu" + +#: ../src/groupchat_control.py:1281 +#, python-format +msgid "Invited %(contact_jid)s to %(room_jid)s." +msgstr "Pozvali ste %(contact_jid)s u sobu %(room_jid)s" + +#: ../src/groupchat_control.py:1418 +#, python-format +msgid "" +"Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The " +"nickname of an occupant may be substituted, but not if it contains \"@\". If " +"the JID is currently in the group chat, he/she/it will also be kicked. Does " +"NOT support spaces in nickname." +msgstr "" +"Korišćenje: /%s <nadimak|džid> [razlog], zabranjuje pristup DŽID-u u sobu. " +"Nadimak uÄesnika može biti zamenjen, ali ne i ako sadrži \"@\". Ako je " +"Džaber ID trenutno u sobi, on/ona će biti izbaÄen(a). Razmaci u imenima NISU " +"podržani." + +#: ../src/groupchat_control.py:1425 +#, python-format +msgid "" +"Usage: /%s <nickname>, opens a private chat window with the specified " +"occupant." +msgstr "" +"NaÄin korišćenja: /%s <nadimak>, otvara prozor privatnog razgovor sa " +"navedenim uÄesnikom" + +#: ../src/groupchat_control.py:1431 +#, python-format +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"NaÄin korišćenja: /%s [razlog], zatvara trenutni prozor ili jeziÄak, i " +"prikazuje razlog ako je naznaÄen." + +#: ../src/groupchat_control.py:1437 +#, python-format +msgid "" +"Usage: /%s <JID> [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "" +"NaÄin korišćenja: /%s DŽID> [razlog], poziva Džaber ID u trenutni grupni " +"razgovor, opciono dajući razlog." + +#: ../src/groupchat_control.py:1441 +#, python-format +msgid "" +"Usage: /%s <room>@<server>[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"NaÄin korišćenja: /%s <soba>@<server>[/nadimak], nudi mogućnost spajanja na " +"soba@server koristeći navedeni nadimak." + +#: ../src/groupchat_control.py:1445 +#, python-format +msgid "" +"Usage: /%s <nickname> [reason], removes the occupant specified by nickname " +"from the group chat and optionally displays a reason. Does NOT support " +"spaces in nickname." +msgstr "" +"NaÄin korišćenja: /%s <nadimak> [razlog], uklanja uÄesnika sa zadatim " +"nadimkom iz grupnog razgovora i opciono prikazuje razlog. NE podržava blanko " +"znakove u nadimku." + +#: ../src/groupchat_control.py:1454 +#, python-format +msgid "" +"Usage: /%s <nickname> [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"NaÄin korišćenja: /%s <nadimak> [poruka], otvara prozor privatne poruke i " +"Å¡alje poruku uÄesniku zadatim sa nadimkom." + +#: ../src/groupchat_control.py:1459 +#, python-format +msgid "Usage: /%s <nickname>, changes your nickname in current group chat." +msgstr "" +"NaÄin korišćenja: /%s <nadimak>, menja VaÅ¡ nadimak u trenutnom grupnom " +"razgovoru." + +#: ../src/groupchat_control.py:1463 +#, python-format +msgid "Usage: /%s , display the names of group chat occupants." +msgstr "NaÄin korišćenja: /%s , prikazuje imena uÄesnika u grupnom razgovoru." + +#: ../src/groupchat_control.py:1467 +#, python-format +msgid "Usage: /%s [topic], displays or updates the current group chat topic." +msgstr "" +"NaÄin korišćenja: /%s [tema], prikazuje ili ažurira temu grupnog razgovora." + +#: ../src/groupchat_control.py:1470 +#, python-format +msgid "" +"Usage: /%s <message>, sends a message without looking for other commands." +msgstr "" +"NaÄin korišćenja: /%s <poruka>, Å¡alje poruku ne gledajući ostale komande." + +#: ../src/groupchat_control.py:1565 +#, python-format +msgid "Are you sure you want to leave group chat \"%s\"?" +msgstr "Jeste li sigurni da želite napustiti grupni razgovor \"%s\"?" + +#: ../src/groupchat_control.py:1567 +msgid "" +"If you close this window, you will be disconnected from this group chat." +msgstr "" +"Ako zatvorite ovaj prozor, bićete iskljuÄeni sa ovoh grupnog razgovora." + +#: ../src/groupchat_control.py:1571 ../src/roster_window.py:4836 +msgid "Do _not ask me again" +msgstr "_Ne pitaj me viÅ¡e" + +#: ../src/groupchat_control.py:1605 +msgid "Changing Subject" +msgstr "Promena Teme" + +#: ../src/groupchat_control.py:1606 +msgid "Please specify the new subject:" +msgstr "Molimo odredite novu temu:" + +#: ../src/groupchat_control.py:1615 +msgid "Changing Nickname" +msgstr "Promena nadimka" + +#: ../src/groupchat_control.py:1616 +msgid "Please specify the new nickname you want to use:" +msgstr "Molimo odredite novi nadimak koji želite da koristite:" + +#. Ask for a reason +#: ../src/groupchat_control.py:1631 +#, fuzzy, python-format +msgid "Destroying %s" +msgstr "Opis: %s" + +#: ../src/groupchat_control.py:1632 +msgid "" +"You are going to definitively destroy this room.\n" +"You may specify a reason below:" +msgstr "" + +#: ../src/groupchat_control.py:1634 +msgid "You may also enter an alternate venue:" +msgstr "" + +#: ../src/groupchat_control.py:1665 +msgid "Bookmark already set" +msgstr "Marker je već postavljen" + +#: ../src/groupchat_control.py:1666 +#, python-format +msgid "Group Chat \"%s\" is already in your bookmarks." +msgstr "Grupni razgovor \"%s\" je već markiran." + +#: ../src/groupchat_control.py:1675 +msgid "Bookmark has been added successfully" +msgstr "Marker uspeÅ¡no dodat" + +#: ../src/groupchat_control.py:1676 +msgid "You can manage your bookmarks via Actions menu in your roster." +msgstr "" +"Možete upravljati VaÅ¡im markerima pomoću menija Akcije iz VaÅ¡e liste " +"kontakata." + +#. ask for reason +#: ../src/groupchat_control.py:1828 +#, python-format +msgid "Kicking %s" +msgstr "Izbacujem %s" + +#: ../src/groupchat_control.py:1829 ../src/groupchat_control.py:2129 +msgid "You may specify a reason below:" +msgstr "Možete navesti razlog ispod:" + +#. ask for reason +#: ../src/groupchat_control.py:2128 +#, python-format +msgid "Banning %s" +msgstr "Zabranjujem %s" + +#: ../src/gtkexcepthook.py:41 +msgid "A programming error has been detected" +msgstr "Programska greÅ¡ka je otkrivena" + +#: ../src/gtkexcepthook.py:42 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "Najverovatnije nije niÅ¡ta straÅ¡no, ali je ipak javite programerima." + +#: ../src/gtkexcepthook.py:48 +msgid "_Report Bug" +msgstr "_Prijavi greÅ¡ku" + +#: ../src/gtkexcepthook.py:71 +msgid "Details" +msgstr "Detalji" + +#. we talk about file +#: ../src/gtkgui_helpers.py:157 ../src/gtkgui_helpers.py:172 +#, python-format +msgid "Error: cannot open %s for reading" +msgstr "GreÅ¡ka: nije moguće otvoriti %s za Äitanje" + +#: ../src/gtkgui_helpers.py:337 +msgid "Error reading file:" +msgstr "GreÅ¡ka pri Äitanju datoteke:" + +#: ../src/gtkgui_helpers.py:340 +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:377 +#, python-format +msgid "Could not write to %s. Session Management support will not work" +msgstr "Nije moguće pisati u %s. Upravljanje sesijama neće biti moguće" + +#. xmpp: is currently handled by another program, so ask the user +#: ../src/gtkgui_helpers.py:711 +msgid "Gajim is not the default Jabber client" +msgstr "Gajim nije podrazumevani Džaber klijent" + +#: ../src/gtkgui_helpers.py:712 +msgid "Would you like to make Gajim the default Jabber client?" +msgstr "Da li biste želeli da Gajim bude podrazumevani Gajim klijent?" + +#: ../src/gtkgui_helpers.py:713 +msgid "Always check to see if Gajim is the default Jabber client on startup" +msgstr "" +"Uvek proveravaj da li je Gajim podrazumevani Džaber klijent po pokretanju" + +#: ../src/gtkgui_helpers.py:812 +msgid "Extension not supported" +msgstr "Ekstenzija nije podržana" + +#: ../src/gtkgui_helpers.py:813 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" +"Sliku nije moguće saÄuvati u %(type)s formatu. SaÄuvati kao %(new_filename)s?" + +#: ../src/gtkgui_helpers.py:822 +msgid "Save Image as..." +msgstr "Snimi sliku kao..." + +#: ../src/history_manager.py:68 +msgid "Cannot find history logs database" +msgstr "Nije moguće pronaći dnevnik istorijata baze podataka" + +#. holds jid +#: ../src/history_manager.py:108 +msgid "Contacts" +msgstr "Kontakti" + +#. holds time +#: ../src/history_manager.py:121 ../src/history_manager.py:161 +#: ../src/history_window.py:116 +msgid "Date" +msgstr "Datum" + +#. holds nickname +#: ../src/history_manager.py:127 ../src/history_manager.py:179 +msgid "Nickname" +msgstr "Nadimak" + +#. holds message +#: ../src/history_manager.py:135 ../src/history_manager.py:167 +#: ../src/history_window.py:124 +msgid "Message" +msgstr "Poruka" + +#: ../src/history_manager.py:187 +msgid "" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Želite li poÄistiti bazu podataka? (NE PREPORUÄŒUJE SE AKO JE GAJIM POKRENUT)" + +#: ../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 "" +"Normalno, veliÄina alociranog prostora 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, molimo saÄekajte..." + +#: ../src/history_manager.py:401 +msgid "Exporting History Logs..." +msgstr "Izvoženje dnevnika istorijata..." + +#: ../src/history_manager.py:476 +#, python-format +msgid "%(who)s on %(time)s said: %(message)s\n" +msgstr "%(who)s u %(time)s kaže: %(message)s\n" + +#: ../src/history_manager.py:514 +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 izbrisati dnevnik razgovora oznaÄenog kontakta?" +msgstr[1] "" +"Da li zaista želite izbrisati dnevnike razgovora oznaÄenih kontakata?" +msgstr[2] "" +"Da li zaista želite izbrisati dnevnike razgovora oznaÄenih kontakata?" + +#: ../src/history_manager.py:518 ../src/history_manager.py:554 +msgid "This is an irreversible operation." +msgstr "Ova operacija je nepovratna." + +#: ../src/history_manager.py:551 +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 da izbriÅ¡ete oznaÄenu poruku?" +msgstr[1] "Da li zaista želite da izbriÅ¡ete oznaÄene poruke?" +msgstr[2] "Da li zaista želite da izbriÅ¡ete oznaÄene poruke?" + +#: ../src/history_window.py:185 ../src/history_window.py:187 +#, python-format +msgid "Conversation History with %s" +msgstr "Istorijat razgovora sa %s" + +#: ../src/history_window.py:332 +#, 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:336 ../src/notify.py:206 +#, python-format +msgid "%(nick)s is now %(status)s" +msgstr "%(nick)s je trenutno %(status)s" + +#: ../src/history_window.py:342 +#, python-format +msgid "Status is now: %(status)s: %(status_msg)s" +msgstr "Status je trenutno: %(status)s: %(status_msg)s" + +#: ../src/history_window.py:345 +#, python-format +msgid "Status is now: %(status)s" +msgstr "Status je trenutno: %(status)s" + +#: ../src/htmltextview.py:583 ../src/htmltextview.py:594 +msgid "Timeout loading image" +msgstr "Isteklo vreme za uÄitavanje slike" + +#: ../src/htmltextview.py:604 +msgid "Image is too big" +msgstr "Slika je prevelika" + +#: ../src/message_window.py:288 +msgid "Chats" +msgstr "Razgovori" + +#: ../src/message_window.py:290 +msgid "Group Chats" +msgstr "Grupni razgovori" + +#: ../src/message_window.py:292 +msgid "Private Chats" +msgstr "Privatni Razgovori" + +#: ../src/message_window.py:294 +msgid "Messages" +msgstr "Poruke" + +#: ../src/message_window.py:295 +#, python-format +msgid "%s - Gajim" +msgstr "%s - Gajim" + +#: ../src/notify.py:204 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s je promenio status" + +#: ../src/notify.py:214 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s je na vezi" + +#: ../src/notify.py:222 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s je otiÅ¡ao" + +#: ../src/notify.py:234 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nova samostalna poruka od kontakta %(nickname)s" + +#: ../src/notify.py:242 +#, python-format +msgid "New Private Message from group chat %s" +msgstr "Nova privatna poruka sa grupnog razgovora %s" + +#: ../src/notify.py:244 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:247 +#, fuzzy, python-format +msgid "Messaged by %(nickname)s" +msgstr "Nova poruka od %(nickname)s" + +#: ../src/notify.py:253 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nova poruka od %(nickname)s" + +#: ../src/profile_window.py:72 +msgid "Retrieving profile..." +msgstr "Dohvatanje profila..." + +#: ../src/profile_window.py:123 ../src/roster_window.py:1882 +#, fuzzy +msgid "File is empty" +msgstr "Putanja do datoteke" + +#: ../src/profile_window.py:126 ../src/roster_window.py:1885 +#, fuzzy +msgid "File does not exist" +msgstr "Ne postoji ovakav grupni razgovor." + +#. keep identation +#. unknown format +#: ../src/profile_window.py:140 ../src/profile_window.py:156 +#: ../src/roster_window.py:1887 ../src/roster_window.py:1898 +msgid "Could not load image" +msgstr "Ne mogu uÄitati sliku" + +#: ../src/profile_window.py:257 +msgid "Information received" +msgstr "Informacije primljene" + +#: ../src/profile_window.py:326 +msgid "Without a connection you can not publish your contact information." +msgstr "Ako niste na vezi, ne možete objaviti BaÅ¡e informacije" + +#: ../src/profile_window.py:338 +msgid "Sending profile..." +msgstr "Slanje profila..." + +#: ../src/profile_window.py:353 +msgid "Information NOT published" +msgstr "Informacije NISU objavljene" + +#: ../src/profile_window.py:360 +msgid "vCard publication failed" +msgstr "Publikacija vCard neuspela" + +#: ../src/profile_window.py:361 +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Nastala je greÅ¡ka prilikom objavljivanja VaÅ¡ih liÄnih informacija, pokuÅ¡ajte " +"ponovo kasnije." + +#: ../src/roster_window.py:182 ../src/roster_window.py:237 +msgid "Merged accounts" +msgstr "Spojeni nalozi" + +#: ../src/roster_window.py:357 ../src/roster_window.py:622 +#: ../src/roster_window.py:2110 ../src/common/contacts.py:307 +#: ../src/common/helpers.py:44 +msgid "Observers" +msgstr "PosmatraÄi" + +#. Make special context menu if group is Groupchats +#: ../src/roster_window.py:441 ../src/roster_window.py:446 +#: ../src/roster_window.py:1935 ../src/roster_window.py:1938 +#: ../src/roster_window.py:2607 ../src/roster_window.py:2610 +#: ../src/roster_window.py:2635 ../src/roster_window.py:4696 +#: ../src/roster_window.py:4698 ../src/common/commands.py:194 +#: ../src/common/contacts.py:97 ../src/common/helpers.py:44 +msgid "Groupchats" +msgstr "Grupni razgovori" + +#: ../src/roster_window.py:771 ../src/roster_window.py:3952 +msgid "You cannot join a group chat while you are invisible" +msgstr "Nemoguće je pristupiti grupnom razgovoru ako ste nevidljivi" + +#. new chat +#. single message +#. for chat_with +#. for single message +#. join gc +#: ../src/roster_window.py:984 ../src/roster_window.py:994 +#: ../src/roster_window.py:1003 ../src/systray.py:207 ../src/systray.py:212 +#: ../src/systray.py:218 +#, python-format +msgid "using account %s" +msgstr "koristeći raÄun %s" + +#. add +#: ../src/roster_window.py:1010 +#, python-format +msgid "to %s account" +msgstr "na %s nalog" + +#. disco +#: ../src/roster_window.py:1015 +#, python-format +msgid "using %s account" +msgstr "koristeći %s raÄun" + +#: ../src/roster_window.py:1096 +msgid "_Manage Bookmarks..." +msgstr "Upravljanje _markerima..." + +#. profile, avatar +#: ../src/roster_window.py:1115 +#, python-format +msgid "of account %s" +msgstr "naloga %s" + +#: ../src/roster_window.py:1155 +#, python-format +msgid "for account %s" +msgstr "za nalog %s" + +#. History manager +#: ../src/roster_window.py:1176 +msgid "History Manager" +msgstr "Upravnik istorijatom" + +#: ../src/roster_window.py:1185 +msgid "_Join New Group Chat" +msgstr "_Pridruživanje novom grupnom razgovoru" + +#: ../src/roster_window.py:1544 ../src/roster_window.py:4150 +#: ../src/roster_window.py:4157 +msgid "You have unread messages" +msgstr "Imate neproÄitanih poruka" + +#: ../src/roster_window.py:1545 +msgid "You must read them before removing this transport." +msgstr "Morate ih proÄitati pre uklanjanja ovog transporta." + +#: ../src/roster_window.py:1548 +#, python-format +msgid "Transport \"%s\" will be removed" +msgstr "Transport \"%s\" će biti uklonjen" + +#: ../src/roster_window.py:1549 +msgid "" +"You will no longer be able to send and receive messages from contacts using " +"this transport." +msgstr "" +"Nećete viÅ¡e biti u mogućnosti da razmenjujete poruke od kontakata sa ovog " +"transporta." + +#: ../src/roster_window.py:1552 +msgid "Transports will be removed" +msgstr "Transport će biti uklonjen" + +#: ../src/roster_window.py:1557 +#, python-format +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"these transports:%s" +msgstr "" +"Nećete viÅ¡e biti u mogućnosti da razmenjujete poruke sa kontkatima sa ovog " +"transporta:%s" + +#. it's jid +#: ../src/roster_window.py:1723 +msgid "Rename Contact" +msgstr "Preimenuj kontakt" + +#: ../src/roster_window.py:1724 +#, python-format +msgid "Enter a new nickname for contact %s" +msgstr "Unesite novi nadimak za kontakt %s" + +#: ../src/roster_window.py:1731 +msgid "Rename Group" +msgstr "Preimenuj grupu" + +#: ../src/roster_window.py:1732 +#, python-format +msgid "Enter a new name for group %s" +msgstr "Unesite novo ime za grupu %s" + +#: ../src/roster_window.py:1807 +msgid "Remove Group" +msgstr "Ukloni grupu" + +#: ../src/roster_window.py:1808 +#, python-format +msgid "Do you want to remove group %s from the roster?" +msgstr "Želite li ukloniti grupu %s sa liste kontakata?" + +#: ../src/roster_window.py:1809 +msgid "Remove also all contacts in this group from your roster" +msgstr "Ujedno ukloni i sve kontakte iz ove grupe iz liste kontakata" + +#: ../src/roster_window.py:1840 +msgid "Assign OpenPGP Key" +msgstr "Pridruži OpenPGP KljuÄ" + +#: ../src/roster_window.py:1841 +msgid "Select a key to apply to the contact" +msgstr "Odaberite kljuÄ za pridruživanje kontaktu" + +#: ../src/roster_window.py:2156 +#, fuzzy +msgid "_New Group Chat" +msgstr "Novi grupni razgovor" + +#: ../src/roster_window.py:2298 +msgid "I would like to add you to my roster" +msgstr "Želeo bih Vas dodati na moju listu kontakata" + +#. Send Group Message +#: ../src/roster_window.py:2432 ../src/roster_window.py:2644 +msgid "Send Group M_essage" +msgstr "P_oÅ¡alji grupnu poruku" + +#: ../src/roster_window.py:2451 +msgid "_New group chat" +msgstr "_Novi grupni razgovor" + +#. Manage Transport submenu +#: ../src/roster_window.py:2489 +#, fuzzy +msgid "_Manage Contacts" +msgstr "Preimenuj kontakt" + +#: ../src/roster_window.py:2550 +msgid "_Maximize" +msgstr "" + +#: ../src/roster_window.py:2557 +#, fuzzy +msgid "_Disconnect" +msgstr "Kontakt OtiÅ¡ao Sa Veze" + +#: ../src/roster_window.py:2636 +msgid "_Maximize All" +msgstr "" + +#: ../src/roster_window.py:2652 +msgid "To all users" +msgstr "Svim korisnicima" + +#: ../src/roster_window.py:2655 +msgid "To all online users" +msgstr "Svim korisnicima na vezi" + +#. Log Off +#: ../src/roster_window.py:2772 +#, fuzzy +msgid "_Log off" +msgstr "_Odjava" + +#. Log on +#: ../src/roster_window.py:2778 +msgid "_Log on" +msgstr "_Prijava" + +#. Send single message +#: ../src/roster_window.py:2790 +#, fuzzy +msgid "Send Single Message" +msgstr "_PoÅ¡alji jednu poruku" + +#. Manage Transport submenu +#: ../src/roster_window.py:2837 +#, fuzzy +msgid "_Manage Transport" +msgstr "Prenosi" + +#. Modify Transport +#: ../src/roster_window.py:2845 +#, fuzzy +msgid "_Modify Transport" +msgstr "Prikaži trans_porte" + +#. Information +#: ../src/roster_window.py:2882 +#, fuzzy +msgid "_Information" +msgstr "Informacije kontakta" + +#: ../src/roster_window.py:2959 ../src/roster_window.py:3033 +msgid "_Change Status Message" +msgstr "_Izmeni statusnu poruku" + +#: ../src/roster_window.py:3105 +msgid "Authorization has been sent" +msgstr "Autorizacija poslata" + +#: ../src/roster_window.py:3106 +#, python-format +msgid "Now \"%s\" will know your status." +msgstr "Sada će kontakt \"%s\" znati VaÅ¡ status." + +#: ../src/roster_window.py:3126 +msgid "Subscription request has been sent" +msgstr "Zahtev za pretplatom poslat" + +#: ../src/roster_window.py:3127 +#, python-format +msgid "If \"%s\" accepts this request you will know his or her status." +msgstr "Ako kontakt \"%s\" prihvati ovaj zahtev, znaćete njegov/njen status." + +#: ../src/roster_window.py:3139 +msgid "Authorization has been removed" +msgstr "Autorizacija uklonjena" + +#: ../src/roster_window.py:3140 +#, python-format +msgid "Now \"%s\" will always see you as offline." +msgstr "Sada će Vas kontakt \"%s\" uvek videti kao da niste na vezi." + +#: ../src/roster_window.py:3338 +#, python-format +msgid "Contact \"%s\" will be removed from your roster" +msgstr "Kontakt \"%s\" će biti uklonjen sa VaÅ¡e liste kontakata" + +#: ../src/roster_window.py:3342 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Uklanjanjem ovog kontakta ujedno uklanjate i odobrenje Å¡to znaÄi da će Vas " +"ta osoba uvek videti kao da niste na vezi." + +#: ../src/roster_window.py:3347 +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 podrazumevano uklanjate i odobrenje Å¡to " +"znaÄi da će Vas ta osoba uvek videti kao da niste na vezi." + +#: ../src/roster_window.py:3350 +msgid "I want this contact to know my status after removal" +msgstr "Želim da ovaj kontakt zna moj status i nakon uklanjanja" + +#. several contact to remove at the same time +#: ../src/roster_window.py:3354 +msgid "Contacts will be removed from your roster" +msgstr "Kontakti će biti uklonjeni sa VaÅ¡e liste kontakata" + +#: ../src/roster_window.py:3358 +#, python-format +msgid "" +"By removing these contacts:%s\n" +"you also remove authorization resulting in them always seeing you as offline." +msgstr "" +"Uklanjanjem ovih kontakata:%s\n" +"ujedno uklanjate i odobrenje pto znaÄi da će Vas te osobe uvek videti kao da " +"niste na vezi." + +#: ../src/roster_window.py:3390 +#, fuzzy +msgid "" +"Gnome Keyring is installed but not correctly started (environment variable " +"probably not correctly set)" +msgstr "" +"Gnomov Keyring je instaliran, ali nije korektno pokrenut (promenljive " +"okruženja verovatno nisu dobro podeÅ¡ene)" + +#: ../src/roster_window.py:3417 +msgid "GPG is not usable" +msgstr "" + +#. %s is the account name here +#: ../src/roster_window.py:3417 ../src/common/connection.py:684 +#: ../src/common/zeroconf/connection_zeroconf.py:165 +#, python-format +msgid "You will be connected to %s without OpenPGP." +msgstr "Povezaćete se na %s bez OpenPGP kljuÄa." + +#: ../src/roster_window.py:3434 +msgid "Passphrase Required" +msgstr "Lozinka neophodna" + +#: ../src/roster_window.py:3435 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Unesite lozinku GPG kljuÄa za nalog %s." + +#: ../src/roster_window.py:3440 +msgid "Save passphrase" +msgstr "SaÄuvati lozinku" + +#: ../src/roster_window.py:3448 +msgid "Wrong Passphrase" +msgstr "Neispravna lozinka" + +#: ../src/roster_window.py:3449 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "Molimo ponovo ukucajte VaÅ¡u GPG lozinku ili pritisnite Odustani" + +#: ../src/roster_window.py:3532 ../src/roster_window.py:3609 +msgid "You are participating in one or more group chats" +msgstr "UÄestvujete u jednom ili viÅ¡e grupnih razgovora" + +#: ../src/roster_window.py:3533 ../src/roster_window.py:3610 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Promena VaÅ¡eg statusa u Nevidljiv će rezultovati odvezivanjem sa tih " +"grupnih razgovora. Jeste li sigurni da želite ići na nevidljivo?" + +#: ../src/roster_window.py:3567 +msgid "No account available" +msgstr "Nema dostupnih naloga" + +#: ../src/roster_window.py:3568 +msgid "You must create an account before you can chat with other contacts." +msgstr "" +"Morate kreirati nalog pre nego Å¡to možete da razgovarate sa ostalim " +"kontaktima." + +#: ../src/roster_window.py:3696 +#, python-format +msgid "\"%(title)s\" by %(artist)s" +msgstr "\"%(title)s\" od %(artist)s" + +#: ../src/roster_window.py:4151 ../src/roster_window.py:4158 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Poruke će biti dostupne za Äitanje i kasnije ako imate omogućen istorijat." + +#: ../src/roster_window.py:4782 +msgid "Metacontacts storage not supported by your server" +msgstr "ÄŒuvanje pseudokontakata nije podržano od strane VaÅ¡eg servera" + +#: ../src/roster_window.py:4784 +#, fuzzy +msgid "" +"Your server does not support storing metacontacts information. So those " +"information will not be saved on next reconnection." +msgstr "" +"VaÅ¡ server ne podržava Äuvanje informacija pseudokontakata. Te informacije " +"neće biti saÄuvane pri sledećem povezivanju." + +#: ../src/roster_window.py:4830 +msgid "" +"You are about to create a metacontact. Are you sure you want to continue?" +msgstr "" +"Upravo ćete napraviti pseudokontkat. Jeste li sigurni da želite nastaviti?" + +#: ../src/roster_window.py:4832 +msgid "" +"Metacontacts are a way to regroup several contacts in one line. Generally it " +"is used when the same person has several Jabber accounts or transport " +"accounts." +msgstr "" +"Pseudokontakti su naÄin grupisanja nekoliko kontakata u jednu liniju. " +"Generalno, oni se koriste kada ista osoba ima nekoliko Džaber naloga ili " +"transportnih naloga." + +#: ../src/roster_window.py:4930 +#, fuzzy, python-format +msgid "Do you want to send that file to %s:" +msgid_plural "Do you want to send those files to %s:" +msgstr[0] "%s Vam želi poslati datoteku:" +msgstr[1] "%s Vam želi poslati datoteku:" +msgstr[2] "%s Vam želi poslati datoteku:" + +#: ../src/roster_window.py:5212 +msgid "Change Status Message..." +msgstr "Promeni statusnu poruku..." + +#: ../src/systray.py:164 +msgid "_Change Status Message..." +msgstr "_Promeni statusnu poruku..." + +#: ../src/systray.py:249 +msgid "Hide this menu" +msgstr "Sakrij ovaj meni" + +#: ../src/tooltips.py:310 ../src/tooltips.py:503 +msgid "Jabber ID: " +msgstr "Džaber ID: " + +#: ../src/tooltips.py:313 ../src/tooltips.py:507 +msgid "Resource: " +msgstr "Resurs: " + +#: ../src/tooltips.py:318 +#, python-format +msgid "%(owner_or_admin_or_member)s of this group chat" +msgstr "%(owner_or_admin_or_member)s ovog grupnog razgovora" + +#: ../src/tooltips.py:416 +msgid " [blocked]" +msgstr "" + +#: ../src/tooltips.py:420 +msgid " [minimized]" +msgstr "" + +#: ../src/tooltips.py:435 ../src/tooltips.py:623 +msgid "Status: " +msgstr "Status: " + +#: ../src/tooltips.py:465 +#, python-format +msgid "Last status: %s" +msgstr "Poslednji status: %s" + +#: ../src/tooltips.py:467 +#, python-format +msgid " since %s" +msgstr " od %s" + +#: ../src/tooltips.py:485 +#, fuzzy +msgid "Connected" +msgstr "Veza" + +#: ../src/tooltips.py:487 +#, fuzzy +msgid "Disconnected" +msgstr "Kontakt OtiÅ¡ao Sa Veze" + +#. ('both' is the normal sub so we don't show it) +#: ../src/tooltips.py:514 +msgid "Subscription: " +msgstr "Pretplata: " + +#: ../src/tooltips.py:524 +msgid "OpenPGP: " +msgstr "OpenPGP: " + +#: ../src/tooltips.py:579 +msgid "Download" +msgstr "Skidanje" + +#: ../src/tooltips.py:585 +msgid "Upload" +msgstr "Slanje" + +#: ../src/tooltips.py:592 +msgid "Type: " +msgstr "Tip: " + +#: ../src/tooltips.py:598 +msgid "Transferred: " +msgstr "PreneÅ¡eno: " + +#: ../src/tooltips.py:601 ../src/tooltips.py:622 +msgid "Not started" +msgstr "Nije poÄeo" + +#: ../src/tooltips.py:605 +msgid "Stopped" +msgstr "Zaustavljen" + +#: ../src/tooltips.py:607 ../src/tooltips.py:610 +msgid "Completed" +msgstr "ZavrÅ¡en" + +#: ../src/tooltips.py:614 +msgid "?transfer status:Paused" +msgstr "?status prenosa:Pauziran" + +#. stalled is not paused. it is like 'frozen' it stopped alone +#: ../src/tooltips.py:618 +msgid "Stalled" +msgstr "Zastoj" + +#: ../src/tooltips.py:620 +msgid "Transferring" +msgstr "Prenos u toku" + +#: ../src/tooltips.py:652 +msgid "This service has not yet responded with detailed information" +msgstr "Ovaj servis joÅ¡ nije pružio detaljne informacije" + +#: ../src/tooltips.py:655 +msgid "" +"This service could not respond with detailed information.\n" +"It is most likely legacy or broken" +msgstr "" +"Ovaj servis nije mogao odgovoriti sa detaljnim informacijama.\n" +"Najverovatnije je zastareo ili u kvaru" + +#: ../src/vcard.py:240 +msgid "?Client:Unknown" +msgstr "?Klijent:Nepoznat" + +#: ../src/vcard.py:242 +msgid "?OS:Unknown" +msgstr "?OS:Nepoznat" + +#: ../src/vcard.py:267 ../src/vcard.py:277 ../src/vcard.py:467 +#, python-format +msgid "since %s" +msgstr "od %s" + +#: ../src/vcard.py:306 +msgid "Affiliation:" +msgstr "Pripadnost:" + +#: ../src/vcard.py:314 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Ovaj kontakt je zainteresovan za informacije o VaÅ¡em prisustvu, ali Vas ne " +"zanimaju informacije o njegovom/njenom prisustvu." + +#: ../src/vcard.py:316 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Vi ste zainteresovani za informacije o prisustvu nekog kontakta, ali njega/" +"nju ne zanima VaÅ¡e prisustvo" + +#: ../src/vcard.py:318 +msgid "You and the contact are interested in each other's presence information" +msgstr "" +"I Vi i VaÅ¡ kontakt ste zainteresovani za informacije o prisustvu jedan drugog" + +#. None +#: ../src/vcard.py:320 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Ne interesuje Vas prisutnost kontakta, niti VaÅ¡a prisutnost interesuje njega/" +"nju" + +#: ../src/vcard.py:328 +msgid "You are waiting contact's answer about your subscription request" +msgstr "ÄŒekate odgovor kontakta o VaÅ¡em zahtevu za pretplatom" + +#: ../src/vcard.py:332 ../src/vcard.py:369 ../src/vcard.py:492 +msgid " resource with priority " +msgstr " resurs sa prioritetom " + +#: ../src/common/check_paths.py:33 +msgid "creating logs database" +msgstr "kreiram bazu dnevnika" + +#: ../src/common/check_paths.py:96 ../src/common/check_paths.py:107 +#: ../src/common/check_paths.py:114 +#, python-format +msgid "%s is a file but it should be a directory" +msgstr "%s je datoteka, ali bi trebala biti fascikla" + +#: ../src/common/check_paths.py:97 ../src/common/check_paths.py:108 +#: ../src/common/check_paths.py:115 ../src/common/check_paths.py:123 +msgid "Gajim will now exit" +msgstr "Gajim će se sada zavrÅ¡iti" + +#: ../src/common/check_paths.py:122 +#, python-format +msgid "%s is a directory but should be a file" +msgstr "%s je fascikla, ali bi trebala biti datoteka" + +#: ../src/common/check_paths.py:138 +#, python-format +msgid "creating %s directory" +msgstr "kreiram fasciklu %s" + +#: ../src/common/commands.py:69 +msgid "Change status information" +msgstr "Promena statusnih informacija" + +#: ../src/common/commands.py:82 +msgid "Change status" +msgstr "Promena statusa" + +#: ../src/common/commands.py:83 +msgid "Set the presence type and description" +msgstr "Postavite tip prisutnosti i opis" + +#: ../src/common/commands.py:89 +msgid "Free for chat" +msgstr "Slobodan za razgovor" + +#: ../src/common/commands.py:90 +msgid "Online" +msgstr "Na vezi" + +#: ../src/common/commands.py:92 +msgid "Extended away" +msgstr "Produženo odsutan" + +#: ../src/common/commands.py:93 +msgid "Do not disturb" +msgstr "Ne uznemiravaj." + +#: ../src/common/commands.py:94 +msgid "Offline - disconnect" +msgstr "Nije na vezi - nepovezan" + +#: ../src/common/commands.py:99 +msgid "Presence description:" +msgstr "opis prisutnosti:" + +#: ../src/common/commands.py:134 +msgid "The status has been changed." +msgstr "Status je promenjen." + +#: ../src/common/commands.py:179 +#, python-format +msgid "%(nickname)s on %(room_jid)s" +msgstr "%(nickname)s u sobi %(room_jid)s" + +#: ../src/common/commands.py:183 +msgid "You have not joined a groupchat." +msgstr "Pridružili ste se grupnom razgovoru" + +#: ../src/common/commands.py:189 +msgid "Leave Groupchats" +msgstr "Napusti grupne razgovore" + +#: ../src/common/commands.py:190 +msgid "Choose the groupchats you want to leave" +msgstr "Odaberite grupne razgovore koje želite napustiti" + +#: ../src/common/commands.py:230 +#, fuzzy +msgid "You left the following groupchats:" +msgstr "Napustili ste sledeće grupne razgovore:" + +#: ../src/common/commands.py:242 +#, fuzzy +msgid "Forward unread messages" +msgstr "%d neproÄitana poruka" + +#: ../src/common/commands.py:262 +msgid "All unread messages have been forwarded." +msgstr "" + +#: ../src/common/config.py:58 +msgid "Use D-Bus and Notification-Daemon to show notifications" +msgstr "Koristi DBus i demon obaveÅ¡tenja za prikazivanje obaveÅ¡tenja" + +#: ../src/common/config.py:63 +msgid "Time in minutes, after which your status changes to away." +msgstr "Vreme u minutama, nakom koga će se VaÅ¡ status promeiti u Odsutan." + +#: ../src/common/config.py:64 +msgid "Away as a result of being idle" +msgstr "Odsutan, kao posledica mirovanja" + +#: ../src/common/config.py:66 +msgid "Time in minutes, after which your status changes to not available." +msgstr "" +"Vreme u minutama, nakom koga će se VaÅ¡ status promeiti u Nije dostupan." + +#: ../src/common/config.py:67 +msgid "Not available as a result of being idle" +msgstr "Nije dostupan, kao posledica mirovanja." + +#: ../src/common/config.py:85 +msgid "" +"List (space separated) of rows (accounts and groups) that are collapsed." +msgstr "" +"Lista (odvojena blanko znakovima) redova (naloga i grupa) koji su otvoreni." + +#: ../src/common/config.py:90 +msgid "Enable link-local/zeroconf messaging" +msgstr "Omogući lokalnu vezu/zeroconf poruke" + +#: ../src/common/config.py:93 +msgid "Language used by speller" +msgstr "Jezik koji koristi pravopis" + +#: ../src/common/config.py:94 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" +"'uvek' - ispisuj vreme za svaku poruku.\n" +"'ponekad' - ispisuj vreme svakih print_ichat_every_foo_minutes minuta.\n" +"'nikad' - nikad ne ispisuj vreme." + +#: ../src/common/config.py:95 +msgid "" +"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 least precise one. " +"This is used only if print_time is 'sometimes'." +msgstr "" +"Ispisuj vreme u razgovorima koristeći Rasplinuti Sat. Vrednost rasplinutosti " +"od 1 do 4 ili 0 za onemogućivanje nejasnog sata. 1 je najprecizniji sat, 4 " +"najneprecizniji. Ovo se koristi samo ukoliko je print_time postavnjeno na " +"'sometimes'." + +#: ../src/common/config.py:98 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "Smatraj * / _ parove kao znakove za formatiranje." + +#: ../src/common/config.py:99 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Ako je istinito, ne uklanjaj */_ . Tako će *abv* biti podebljano, ali " +"iokruženo sa * *." + +#: ../src/common/config.py:102 +msgid "" +"Uses ReStructured text markup to send HTML, plus ascii formatting if " +"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/" +"restructuredtext.html (If you want to use this, install docutils)" +msgstr "" +"Koristi ReStructured tekst markup za slanje HTML-a i ascii formatiranje ako " +"je odabrano. Za sintaksu, pogledajte http://docutils.sourceforge.net/docs/" +"ref/rst/restructuredtext.html (Ako želite da koristite ovo, instalirajte " +"docutils)" + +#: ../src/common/config.py:111 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." +msgstr "" +"Karakter za dodavanje posle nadimka kada se koristi dovrÅ¡avanje nadimka " +"(tasterom tab) u grupnom razgovoru" + +#: ../src/common/config.py:112 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat." +msgstr "" +"Karakter koji želite dodati posle željenog nadimka ukoliko je željeni " +"nadimak u grupnom razgovoru već upotrebljen" + +#: ../src/common/config.py:135 +msgid "" +"This option let you customize timestamp that is printed in conversation. For " +"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on " +"strftime for full documentation: http://docs.python.org/lib/module-time.html" +msgstr "" +"Ova opcija Vam omogućava prilagoÄ‘avanje ispisa vremena u razgovoru. Na " +"primer \"[%H:%M] \" će prikazati \"[sat:minut] \". Pogledajte python " +"dokumentaciju za strftime funkciju za puno razumevanje: http://docs.python." +"org/lib/module-time.html" + +#: ../src/common/config.py:136 +msgid "Characters that are printed before the nickname in conversations" +msgstr "Karakteri odÅ¡tampani pre nadimka u razgovoru" + +#: ../src/common/config.py:137 +msgid "Characters that are printed after the nickname in conversations" +msgstr "Karakteri odÅ¡tampani posle nadimka u razgovoru" + +#: ../src/common/config.py:144 +msgid "Add * and [n] in roster title?" +msgstr "Dodaj * i [n] u naslov liste kontakata?" + +#: ../src/common/config.py:145 +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Koliko linija prethodnog razgovora pamtiti kada se prozor/jeziÄak za " +"razgovor ponovo otvori." + +#: ../src/common/config.py:146 +msgid "How many minutes should last lines from previous conversation last." +msgstr "Koliko minuta da traju linije prethodnog razgovora." + +#: ../src/common/config.py:147 +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"PoÅ¡alji poruku sa Ctrl+Enter, a sa Enter pravi novu liniju. (Podrazumevano " +"ponaÅ¡anje Miralabisovog ICQ klijenta)" + +#: ../src/common/config.py:149 +msgid "How many lines to store for Ctrl+KeyUP." +msgstr "Koliko linija saÄuvati sa Ctrl+KeyUP" + +#: ../src/common/config.py:152 +#, python-format +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Ili VaÅ¡ specificirani URL sa %s u njemu gde je %s reÄ ili fraza ili 'VIKI-" +"REÄŒNIK' Å¡to znaÄi korišćenje viki-reÄnika." + +#: ../src/common/config.py:155 +msgid "If checked, Gajim can be controlled remotely using gajim-remote." +msgstr "Ako je oznaÄeno, Gajim se može kontrolisati korišćenjem gajim-remote." + +#: ../src/common/config.py:156 +msgid "" +"If True, listen to D-Bus signals from NetworkManager and change the status " +"of accounts (provided they do not have listen_to_network_manager set to " +"False and they sync with global status) based upon the status of the network " +"connection." +msgstr "" +"Ako je istinit, osluÅ¡kuj D-Bus signale iz Menadžera Mreže i promeni status " +"raÄuna (ako nemaju listen_to_network_manager postavljen na neistinito i " +"sinhronizuj sa globalnim statusom) u zavisnosti od statusa mrežne konekcije." + +#: ../src/common/config.py:157 +msgid "" +"Sent chat state notifications. Can be one of all, composing_only, disabled." +msgstr "" +"Poslata obaveÅ¡tenja o stanju razgovora. Može biti jedno od " +"'svi','samo_sastavljanje', 'onemogućeno'." + +#: ../src/common/config.py:158 +msgid "" +"Displayed chat state notifications in chat windows. Can be one of all, " +"composing_only, disabled." +msgstr "" +"Prikazana obaveÅ¡tenja o stanju razgovora u prozoru za razgovor. Može biti " +"jedno od 'svi', 'samo_sastavljanje', 'onemogućeno'." + +#: ../src/common/config.py:160 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes." +msgstr "" +"Ako se ne ispisuje vreme za svaku poruku (print_time==ponekad), ispisati ga " +"svakih x minuta" + +#: ../src/common/config.py:161 +msgid "Ask before closing a group chat tab/window." +msgstr "Pitaj pre zatvaranja prozora/jeziÄka grupnog razgovora." + +#: ../src/common/config.py:162 +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Uvek pitaj pre zatvaranja jeziÄka/prozora kada je u pitanju ova lista " +"odvojena blanko karakterima džaber ID-ova grupnih razgovora." + +#: ../src/common/config.py:163 +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of group chat jids." +msgstr "" +"Nikad ne pitaj pre zatvaranja jeziÄka/prozora grupnog razgovora kada je u " +"pitanju ova listaodovojena blanko znacima džaber ID-ova grupnih razgovora." + +#: ../src/common/config.py:166 +#, fuzzy +msgid "" +"Comma separated list of hosts that we send, in addition of local interfaces, " +"for File Transfer in case of address translation/port forwarding." +msgstr "" +"Prepisuje ime hosta koji Å¡aljem za prenos datoteka u sluÄaju prosleÄ‘ivanja " +"porta/NATovanja." + +#: ../src/common/config.py:168 +msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." +msgstr "IEC standard definiÅ¡e KiB = 1024 bajtova, KB = 1000 bajtova" + +#: ../src/common/config.py:170 +msgid "Notify of events in the system trayicon." +msgstr "Obavesti me o svim dogaÄ‘ajima u ikoni sistemske kasete." + +#: ../src/common/config.py:176 +msgid "Show tab when only one conversation?" +msgstr "Prikaži jeziÄak iako je samo jedan razgovor?" + +#: ../src/common/config.py:177 +msgid "Show tabbed notebook border in chat windows?" +msgstr "PrikaÅ¡i granicu sveske u prozorima razgovora?" + +#: ../src/common/config.py:178 +msgid "Show close button in tab?" +msgstr "PrikaÅ¡i dugme za zatvaranje u jeziÄku?" + +#: ../src/common/config.py:179 +msgid "" +"When negotiating an encrypted session, should Gajim assume you want your " +"messages to be logged?" +msgstr "" + +#: ../src/common/config.py:188 +msgid "Preview new messages in notification popup?" +msgstr "" + +#: ../src/common/config.py:193 +msgid "" +"A semicolon-separated list of words that will be highlighted in group chats." +msgstr "" +"Lista reÄi odvojena blanko karakterima koje će biti obojene u grupnim " +"razgovorima" + +#: ../src/common/config.py:194 +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 kada se pritisne X dugme. Ovo podeÅ¡avanje " +"se koristi samo ako je ikona sistemske kasete u upotrebi." + +#: ../src/common/config.py:195 +msgid "" +"If True, Gajim will check if it's the default jabber client on each startup." +msgstr "" +"Ako je istinito, Gajim će provaravati da li je podrazumevani Džaber klijent " +"pri svakom pokretanju." + +#: ../src/common/config.py:196 +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 prikazivati ikonu na svakom jeziÄku koji sadrži " +"neproÄitane poruke. U zavisnosti od teme, ikona može biti i animirana." + +#: ../src/common/config.py:197 +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 u listi kontakata" + +#: ../src/common/config.py:199 +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, Gajim će poslati upit za avatar za svaki kontakt koji " +"proÅ¡log puta nije imao avatar ili je onaj u memoriji prestar" + +#: ../src/common/config.py:200 +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 videti statusnu porukuu razgovorima kada " +"kontakt promeni svoj status i/ili statusnu poruku." + +#: ../src/common/config.py:201 +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 " +"group chat." +msgstr "" +"može biti \"none\", \"all\" ili \"in_and_out\". Ako je \"none\", Gajim viÅ¡e " +"neće ispisivati statusnu liniju u grupnim razgovorima kada Älan promeni svoj " +"status i/ili izmeni statusnu poruku. Ako je \"all\", Gajim će prikazivati " +"sve statusne poruke. Ako je \"in_and_out\" Gajim će prikazivati samo poruke " +"tipa taj i taj je uÅ¡ao/izaÅ¡ao u/iz sobe." + +#: ../src/common/config.py:203 +msgid "Background color of contacts when they just signed in." +msgstr "Boja pozadine kontakta kada tek doÄ‘u na vezu." + +#: ../src/common/config.py:204 +msgid "Background color of contacts when they just signed out." +msgstr "Boja pozadine kontakta kada tek odu sa veze." + +#: ../src/common/config.py:206 +msgid "" +"If True, restored messages will use a smaller font than the default one." +msgstr "" +"Ako je istinito, vraćene poruke iz istorijata će biti manjeg fonta od " +"podrazumevanog." + +#: ../src/common/config.py:207 +msgid "Don't show avatar for the transport itself." +msgstr "Ne prikazuj avatar za sam transport." + +#: ../src/common/config.py:208 +msgid "Don't show roster in the system taskbar." +msgstr "Ne prikazuj listu kontakata u sistemskoj kaseti." + +#: ../src/common/config.py:209 +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 (podrazumevano ponaÅ¡anje u većini menadžera prozora) pri " +"novim dogaÄ‘ajima." + +#: ../src/common/config.py:211 +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected group " +"chat. Turn this option to False to stop sending sha info in group chat " +"presences." +msgstr "" +"Jabberd1.4 ne voli sha informacije kada neko uÄ‘e u grupni razgovor koji je " +"zaÅ¡tićen lozinkom. IskljuÄite ovu opciju da prestanete slati sha informacije " +"u grupnim razgovorima" + +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:214 +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 "" +"KontroliÅ¡e prozor gde se smeÅ¡taju nove poruke.\n" +"'uvek' - Sve poruke se Å¡alju u isti prozor.\n" +"'nikad' - Svaka poruka dobija svoj prozor.\n" +"'ponalogu' - Poruke za isti nalog se Å¡alju i isti prozor.\n" +"'potipu' - Poruke istog tipa (npr., razgovori i grupni razgovori) se Å¡alju u " +"isti prozor. Promena ove opcije zahteva da ponovo pokrenete Gajim kako bi " +"promene stupile na snagu." + +#: ../src/common/config.py:215 +msgid "If False, you will no longer see the avatar in the chat window." +msgstr "Ako nije istinito, nećete viÅ¡e videti avatar u prozoru razgovora." + +#: ../src/common/config.py:216 +msgid "If True, pressing the escape key closes a tab/window." +msgstr "Ako je istinito, pritisak na taster 'esc' zatvara jeziÄak/prozor." + +#: ../src/common/config.py:217 +#, fuzzy +msgid "Hides the buttons in chat windows." +msgstr "Sakriva dugmad u prozoru grupnog razgovora." + +#: ../src/common/config.py:218 +msgid "Hides the banner in a group chat window" +msgstr "Sakriva baner u prozoru grupnog razgovora." + +#: ../src/common/config.py:219 +msgid "Hides the banner in two persons chat window" +msgstr "Sakriva baner u prozoru razgovora dve osobe" + +#: ../src/common/config.py:220 +msgid "Hides the group chat occupants list in group chat window." +msgstr "Sakriva listu uÄesnika u prozoru grupnog razgovora" + +#: ../src/common/config.py:221 +msgid "" +"In a chat, show the nickname at the beginning of a line only when it's not " +"the same person talking than in previous message." +msgstr "" +"U razgovoru, prikaži nadimak na poÄetku novog reda samo kada se ne radi o " +"istoj osobi koja je priÄala i u proÅ¡loj poruci." + +#: ../src/common/config.py:222 +msgid "Indentation when using merge consecutive nickname." +msgstr "UvlaÄenje pri korišćenju spajanja toka po nadimcima." + +#: ../src/common/config.py:223 +#, fuzzy +msgid "Smooth scroll message in conversation window" +msgstr "PoÅ¡alji poruku i zatvori prozor" + +#: ../src/common/config.py:224 +msgid "List of colors that will be used to color nicknames in group chats." +msgstr "" +"Lista boja koje će biti korišćene za bojenje nadimaka u grupnim razgovorima." + +#: ../src/common/config.py:225 +msgid "Ctrl-Tab go to next composing tab when none is unread." +msgstr "Ctrl-Tab ide na sledeći jeziÄak kada nema neproÄitanih jeziÄaka" + +#: ../src/common/config.py:226 +msgid "" +"Should we show the confirm metacontacts creation dialog or not? Empty string " +"means we never show the dialog." +msgstr "" +"Treba li pitati za potvrdu stvaranja pseudokontakta ili ne? Prazan niz znaÄi " +"da nikada ne prikazujemo upit." + +#: ../src/common/config.py:227 +msgid "" +"If True, you will be able to set a negative priority to your account in " +"account modification window. BE CAREFUL, when you are logged in with a " +"negative priority, you will NOT receive any message from your server." +msgstr "" +"Ako je istinito, bićete u mogućnosti postaviti negativan prioritet na VaÅ¡ " +"nalog u prozoru za izmenu podeÅ¡avanja naloga. BUDITE OPREZNI, kada ste " +"povezani sa negativnim prioritetom NEĆETE primati nikakve poruke od servera." + +#: ../src/common/config.py:228 +msgid "" +"If True, Gajim will use Gnome Keyring (if available) to store account " +"passwords." +msgstr "" +"Ako je istinito, Gajim će koristiti Gnomov Keyring (ako je dostupan) za " +"skladiÅ¡tenje lozinki naloga." + +#: ../src/common/config.py:229 +msgid "" +"If True, Gajim will show number of online and total contacts in account and " +"group rows." +msgstr "" +"Ako je istinito, Gajim će prikazivati ukupan i broj kontakata na vezi u " +"nalogu i u grupnim redovima." + +#: ../src/common/config.py:230 +msgid "" +"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages " +"as if they were of this type" +msgstr "" +"Može biti prazno, 'chat' ili 'normal'. Ako je prazno, tretiraj sve dolazne " +"poruke kao da su ovog tipa" + +#: ../src/common/config.py:231 +msgid "" +"If True, Gajim will scroll and select the contact who sent you the last " +"message, if chat window is not already opened." +msgstr "" + +#: ../src/common/config.py:232 +msgid "" +"If True, Gajim will convert string between $$ and $$ to an image using dvips " +"and convert before insterting it in chat window." +msgstr "" + +#: ../src/common/config.py:233 +msgid "Time of inactivity needed before the change status window closes down." +msgstr "" + +#: ../src/common/config.py:234 +msgid "" +"Maximum number of lines that are printed in conversations. Oldest lines are " +"cleared." +msgstr "" + +#: ../src/common/config.py:245 +msgid "" +"Priority will change automatically according to your status. Priorities are " +"defined in autopriority_* options." +msgstr "" +"Prioritet će se automatski promeniti u zavisnosti od VaÅ¡eg statusa. " +"Prioriteti su definsani u autopriority_* podeÅ¡avanjima." + +#. yes, no, ask +#: ../src/common/config.py:275 +msgid "Jabberd2 workaround" +msgstr "Jabberd2 privremeno reÅ¡enje" + +#: ../src/common/config.py:279 +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 u proksi koji je " +"difinisan u file_transfer_proxies podeÅ¡avanjima za prenos." + +#: ../src/common/config.py:338 +msgid "Is OpenPGP enabled for this contact?" +msgstr "Da li je OpenPGP omogućen za ovaj kontakt?" + +#: ../src/common/config.py:339 ../src/common/config.py:342 +msgid "Language for which we want to check misspelled words" +msgstr "Jezik u kome želite proveravati neispravno napisane reÄi" + +#: ../src/common/config.py:348 +msgid "all or space separated status" +msgstr "sve ili razmakom odvojen status" + +#: ../src/common/config.py:349 +msgid "'yes', 'no', or 'both'" +msgstr "'da', 'ne', ili 'oboje'" + +#: ../src/common/config.py:350 ../src/common/config.py:352 +#: ../src/common/config.py:353 ../src/common/config.py:356 +#: ../src/common/config.py:357 +msgid "'yes', 'no' or ''" +msgstr "'da', 'ne' ili ''" + +#: ../src/common/config.py:363 +msgid "Sleeping" +msgstr "Spavam" + +#: ../src/common/config.py:364 +msgid "Back soon" +msgstr "Vraćam se brzo" + +#: ../src/common/config.py:364 +msgid "Back in some minutes." +msgstr "Vraćam se za par minuta." + +#: ../src/common/config.py:365 +msgid "Eating" +msgstr "Jedem" + +#: ../src/common/config.py:365 +msgid "I'm eating, so leave me a message." +msgstr "Jedem, ostavite poruku." + +#: ../src/common/config.py:366 +msgid "Movie" +msgstr "Film" + +#: ../src/common/config.py:366 +msgid "I'm watching a movie." +msgstr "Gledam film." + +#: ../src/common/config.py:367 +msgid "Working" +msgstr "Radim." + +#: ../src/common/config.py:367 +msgid "I'm working." +msgstr "Radim." + +#: ../src/common/config.py:368 +msgid "Phone" +msgstr "Telefon" + +#: ../src/common/config.py:368 +msgid "I'm on the phone." +msgstr "Telefoniram." + +#: ../src/common/config.py:369 +msgid "Out" +msgstr "Napolju" + +#: ../src/common/config.py:369 +msgid "I'm out enjoying life." +msgstr "Napolju sam, uživam u životu." + +#: ../src/common/config.py:373 +msgid "I'm available." +msgstr "Dostupan sam." + +#: ../src/common/config.py:374 +msgid "I'm free for chat." +msgstr "Slobodan sam za razgovor." + +#: ../src/common/config.py:376 +msgid "I'm not available." +msgstr "Nedostupan sam." + +#: ../src/common/config.py:377 +msgid "Do not disturb." +msgstr "Ne smetaj." + +#: ../src/common/config.py:378 ../src/common/config.py:379 +msgid "Bye!" +msgstr "Pozdrav!" + +#: ../src/common/config.py:388 +msgid "" +"Sound to play when a group chat message contains one of the words in " +"muc_highlight_words, or when a group chat message contains your nickname." +msgstr "" +"Zvuk koji će se pustiti kada poruka grupnog razgovora sadrži neku reÄ iz " +"muc_highlight_words, ili kada neka poruka grupnog razgovora sadrži VaÅ¡ " +"nadimak." + +#: ../src/common/config.py:389 +msgid "Sound to play when any MUC message arrives." +msgstr "Zvuk koji će se pustiti kada stigne neka MUC poruka." + +#: ../src/common/config.py:398 ../src/common/optparser.py:208 +msgid "green" +msgstr "zelena" + +#: ../src/common/config.py:402 ../src/common/optparser.py:194 +msgid "grocery" +msgstr "namirnice" + +#: ../src/common/config.py:406 +msgid "human" +msgstr "ljudska" + +#: ../src/common/config.py:410 +msgid "marine" +msgstr "morska" + +#: ../src/common/connection_handlers.py:56 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:44 +msgid "Unable to load idle module" +msgstr "Nije moguće uÄitavanje modula idle" + +#: ../src/common/connection_handlers.py:184 +#: ../src/common/connection_handlers.py:219 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +msgid "Wrong host" +msgstr "LoÅ¡ host" + +#: ../src/common/connection_handlers.py:184 +#: ../src/common/zeroconf/connection_handlers_zeroconf.py:236 +#, fuzzy, python-format +msgid "" +"The host %s you configured as the ft_add_hosts_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"Host koji ste postavili kao ft_override_host_to_send napredno podeÅ¡avanje " +"nije ispravan. pa je ignorisan." + +#: ../src/common/connection_handlers.py:220 +msgid "Invalid local address? :-O" +msgstr "" + +#: ../src/common/connection_handlers.py:612 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Informacije o registraciji za transport %s nisu doÅ¡le na vreme" + +#: ../src/common/connection_handlers.py:1776 +#, python-format +msgid "Nickname not allowed: %s" +msgstr "Nedozvoljen nadimak: %s " + +#. we are banned +#. group chat does not exist +#: ../src/common/connection_handlers.py:1846 +#: ../src/common/connection_handlers.py:1849 +#: ../src/common/connection_handlers.py:1852 +#: ../src/common/connection_handlers.py:1855 +#: ../src/common/connection_handlers.py:1859 +#: ../src/common/connection_handlers.py:1868 +msgid "Unable to join group chat" +msgstr "Nije moguće pridružiti se grupnom razgovoru" + +#: ../src/common/connection_handlers.py:1847 +#, fuzzy, python-format +msgid "You are banned from group chat %s." +msgstr "Zabranjen Vam je pristup ovom grupnom razgovoru." + +#: ../src/common/connection_handlers.py:1850 +#, fuzzy, python-format +msgid "Group chat %s does not exist." +msgstr "Ne postoji ovakav grupni razgovor." + +#: ../src/common/connection_handlers.py:1853 +msgid "Group chat creation is restricted." +msgstr "Stvaranje grupnih razgovora Vam nije dozvoljeno." + +#: ../src/common/connection_handlers.py:1856 +#, fuzzy, python-format +msgid "Your registered nickname must be used in group chat %s." +msgstr "Morate koristiti VaÅ¡ registrovani nadimak." + +#: ../src/common/connection_handlers.py:1860 +#, fuzzy, python-format +msgid "You are not in the members list in groupchat %s." +msgstr "Niste u listi Älanova." + +#: ../src/common/connection_handlers.py:1869 +#, fuzzy, python-format +msgid "" +"Your desired nickname in group chat %s is in use or registered by another " +"occupant.\n" +"Please specify another nickname below:" +msgstr "" +"VaÅ¡ željeni nadimak je trenutno u upotrebi ili je registrovan od strane " +"nekog od uÄesnika.\n" +"Molimo odredite drugi nadimak ispod:" + +#. Room has been destroyed. see +#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom +#: ../src/common/connection_handlers.py:1900 +#, fuzzy +msgid "Room has been destroyed" +msgstr "Autorizacija uklonjena" + +#: ../src/common/connection_handlers.py:1907 +#, python-format +msgid "You can join this room instead: %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1934 +msgid "I would like to add you to my roster." +msgstr "Želeo bih da te dodam na moju listu kontakata." + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1955 +#, python-format +msgid "we are now subscribed to %s" +msgstr "sada ste pretplaćeni na %s" + +#: ../src/common/connection_handlers.py:1957 +#, python-format +msgid "unsubscribe request from %s" +msgstr "zahtev za ukidanje pretplate od kontakta %s" + +#: ../src/common/connection_handlers.py:1959 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "sada Vam je ukinuta pretplata od kontakta %s" + +#: ../src/common/connection_handlers.py:2081 +#, 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 "" +"Džaber ID %s ne poÅ¡tuje RFC pravila. Neće biti dodat na VaÅ¡u listu " +"kontakata. Upotrebite alate kao Å¡to je http://jru.jabberstudio.org/ da biste " +"ga uklonili" + +#: ../src/common/connection.py:244 +#: ../src/common/zeroconf/connection_zeroconf.py:203 +#, python-format +msgid "Connection with account \"%s\" has been lost" +msgstr "Izgubljena veza sa raÄunom \"%s\"" + +#: ../src/common/connection.py:245 +msgid "Reconnect manually." +msgstr "Ponovo se povežite ruÄno." + +#: ../src/common/connection.py:256 +#, fuzzy, python-format +msgid "Server %s answered wrongly to register request: %s" +msgstr "Transport %s je loÅ¡e odgovorio na registraciju: %s" + +#. wrong answer +#: ../src/common/connection.py:264 +msgid "Invalid answer" +msgstr "Neispravan odgovor" + +#: ../src/common/connection.py:265 +#, python-format +msgid "Transport %s answered wrongly to register request: %s" +msgstr "Transport %s je loÅ¡e odgovorio na registraciju: %s" + +#: ../src/common/connection.py:411 +#, fuzzy +msgid "Connection to proxy failed" +msgstr "Veza prekinuta" + +#: ../src/common/connection.py:465 ../src/common/connection.py:511 +#: ../src/common/connection.py:1067 +#: ../src/common/zeroconf/connection_zeroconf.py:237 +#, python-format +msgid "Could not connect to \"%s\"" +msgstr "Veza sa \"%s\" nije moguća" + +#: ../src/common/connection.py:479 +#, python-format +msgid "Connected to server %s:%s with %s" +msgstr "Povezan na server %s:%s sa %s" + +#: ../src/common/connection.py:512 +msgid "Check your connection or try again later" +msgstr "Proverite VaÅ¡u konekciju ili pokuÅ¡ajte kasnije" + +#: ../src/common/connection.py:537 +#, python-format +msgid "Authentication failed with \"%s\"" +msgstr "Autentikacija sa \"%s\" neuspeÅ¡na" + +#: ../src/common/connection.py:538 +msgid "Please check your login and password for correctness." +msgstr "Molimo Vas da proverite VaÅ¡e korisniÄko ime i lozinku od greÅ¡aka." + +#: ../src/common/connection.py:581 +msgid "Error while removing privacy list" +msgstr "GreÅ¡ka prilikom uklanjanja liste privatnosti" + +#: ../src/common/connection.py:582 +#, python-format +msgid "" +"Privacy list %s has not been removed. It is maybe active in one of your " +"connected resources. Deactivate it and try again." +msgstr "" +"Lista privatnosti %s je uklonjena. Možda je aktivna u nekom od VaÅ¡ih " +"povezanih resursa. Deaktivirajte je i pokuÅ¡ajte ponovo." + +#. We didn't set a passphrase +#: ../src/common/connection.py:682 +#: ../src/common/zeroconf/connection_zeroconf.py:163 +msgid "OpenPGP passphrase was not given" +msgstr "Lozinka za OpenPGP nije uneta" + +#. we're not english +#. one in locale and one en +#: ../src/common/connection.py:845 +msgid "[This message is *encrypted* (See :JEP:`27`]" +msgstr "[Ova poruka je *Å¡ifrovana* (Pogledajte :JEP:`27`]" + +#: ../src/common/connection.py:916 +#: ../src/common/zeroconf/connection_zeroconf.py:423 +#, python-format +msgid "" +"Subject: %s\n" +"%s" +msgstr "" +"Tema: %s\n" +"%s" + +#: ../src/common/connection.py:1099 +msgid "Not fetched because of invisible status" +msgstr "Nije dohvaćeno zbog statusa nevidljivosti" + +#: ../src/common/contacts.py:294 +msgid "Not in roster" +msgstr "Nije na listi kontakata" + +#. only say that to non Windows users +#: ../src/common/dbus_support.py:33 +msgid "D-Bus python bindings are missing in this computer" +msgstr "Na ovom raÄunaru nedostaju python vezivanja za D-Bus" + +#: ../src/common/dbus_support.py:34 +msgid "D-Bus capabilities of Gajim cannot be used" +msgstr "D-Bus mogućnosti Gajima se ne mogu koristiti" + +#: ../src/common/exceptions.py:22 +msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." +msgstr "pysqlite2 (poznat kao python-pysqlite2) nedostaje. Izlazim..." + +#: ../src/common/exceptions.py:39 +msgid "Service not available: Gajim is not running, or remote_control is False" +msgstr "" +"Servis nije dostupan: Gajim nije pokrenut ili je stavka podeÅ¡avanja " +"remote_control neistinita" + +#: ../src/common/exceptions.py:47 +msgid "D-Bus is not present on this machine or python module is missing" +msgstr "D-Bus ne postoji na ovom raÄunaru ili nema python modula." + +#: ../src/common/exceptions.py:55 +msgid "" +"Session bus is not available.\n" +"Try reading http://trac.gajim.org/wiki/GajimDBus" +msgstr "" +"Linija sesije nije dostupna.\n" +"ProÄitajte http:/trac.gajim.org/wiki/GajimDBus" + +#: ../src/common/fuzzyclock.py:42 +msgid "one" +msgstr "jedan" + +#: ../src/common/fuzzyclock.py:42 +msgid "two" +msgstr "dva" + +#: ../src/common/fuzzyclock.py:42 +msgid "three" +msgstr "tri" + +#: ../src/common/fuzzyclock.py:42 +msgid "four" +msgstr "Äetiri" + +#: ../src/common/fuzzyclock.py:42 +msgid "five" +msgstr "pet" + +#: ../src/common/fuzzyclock.py:42 +msgid "six" +msgstr "Å¡est" + +#: ../src/common/fuzzyclock.py:43 +msgid "seven" +msgstr "sedam" + +#: ../src/common/fuzzyclock.py:43 +msgid "eight" +msgstr "osam" + +#: ../src/common/fuzzyclock.py:43 +msgid "nine" +msgstr "devet" + +#: ../src/common/fuzzyclock.py:43 +msgid "ten" +msgstr "deset" + +#: ../src/common/fuzzyclock.py:43 +msgid "eleven" +msgstr "jedanaest" + +#: ../src/common/fuzzyclock.py:44 +msgid "twelve" +msgstr "dvanaest" + +#. 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). ''' +#. A "singular-form". It is used when talking about hour 0 +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +msgid "$0 o'clock" +msgstr "$0 sati" + +#: ../src/common/fuzzyclock.py:47 ../src/common/fuzzyclock.py:55 +msgid "five past $0" +msgstr "$0 i pet" + +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +msgid "ten past $0" +msgstr "$0 i deset" + +#: ../src/common/fuzzyclock.py:48 ../src/common/fuzzyclock.py:56 +msgid "quarter past $0" +msgstr "$0 i petnaest" + +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +msgid "twenty past $0" +msgstr "$0 i dvadeset" + +#: ../src/common/fuzzyclock.py:49 ../src/common/fuzzyclock.py:57 +msgid "twenty five past $0" +msgstr "$0 i dvadeset i pet" + +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +msgid "half past $0" +msgstr "$0 i trideset minuta" + +#: ../src/common/fuzzyclock.py:50 ../src/common/fuzzyclock.py:58 +msgid "twenty five to $1" +msgstr "dvadeset i pet do $1" + +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +msgid "twenty to $1" +msgstr "dvadeset do $1" + +#: ../src/common/fuzzyclock.py:51 ../src/common/fuzzyclock.py:59 +msgid "quarter to $1" +msgstr "petnaest minuta do $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "ten to $1" +msgstr "deset do $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:60 +msgid "five to $1" +msgstr "pet do $1" + +#: ../src/common/fuzzyclock.py:52 ../src/common/fuzzyclock.py:61 +msgid "$1 o'clock" +msgstr "$1 sati" + +#: ../src/common/fuzzyclock.py:64 +msgid "Night" +msgstr "Noć" + +#: ../src/common/fuzzyclock.py:64 +msgid "Early morning" +msgstr "Rano jutro" + +#: ../src/common/fuzzyclock.py:64 +msgid "Morning" +msgstr "Jutro" + +#: ../src/common/fuzzyclock.py:64 +msgid "Almost noon" +msgstr "Skoro podne" + +#: ../src/common/fuzzyclock.py:65 +msgid "Noon" +msgstr "Podne" + +#: ../src/common/fuzzyclock.py:65 +msgid "Afternoon" +msgstr "Poslepodne" + +#: ../src/common/fuzzyclock.py:65 +msgid "Evening" +msgstr "VeÄe" + +#: ../src/common/fuzzyclock.py:65 +msgid "Late evening" +msgstr "Kasno veÄe" + +#: ../src/common/fuzzyclock.py:67 +msgid "Start of week" +msgstr "PoÄetak nedelje" + +#: ../src/common/fuzzyclock.py:67 +msgid "Middle of week" +msgstr "Sredina nedelje" + +#: ../src/common/fuzzyclock.py:67 +msgid "End of week" +msgstr "Kraj nedelje" + +#: ../src/common/fuzzyclock.py:68 +msgid "Weekend!" +msgstr "Vikend!" + +#: ../src/common/helpers.py:115 +msgid "Invalid character in username." +msgstr "Neispravan karakter u korisniÄkom imenu." + +#: ../src/common/helpers.py:120 +msgid "Server address required." +msgstr "Potrebna je adresa servera." + +#: ../src/common/helpers.py:125 +msgid "Invalid character in hostname." +msgstr "Neispravan karakter u imenu hosta." + +#: ../src/common/helpers.py:131 +msgid "Invalid character in resource." +msgstr "Neispravan karakter u resursu." + +#. GiB means gibibyte +#: ../src/common/helpers.py:171 +#, python-format +msgid "%s GiB" +msgstr "%s GiB" + +#. GB means gigabyte +#: ../src/common/helpers.py:174 +#, python-format +msgid "%s GB" +msgstr "%s GB" + +#. MiB means mibibyte +#: ../src/common/helpers.py:178 +#, python-format +msgid "%s MiB" +msgstr "%s MiB" + +#. MB means megabyte +#: ../src/common/helpers.py:181 +#, python-format +msgid "%s MB" +msgstr "%s MB" + +#. KiB means kibibyte +#: ../src/common/helpers.py:185 +#, python-format +msgid "%s KiB" +msgstr "%s KiB" + +#. KB means kilo bytes +#: ../src/common/helpers.py:188 +#, python-format +msgid "%s KB" +msgstr "%s KB" + +#. B means bytes +#: ../src/common/helpers.py:191 +#, python-format +msgid "%s B" +msgstr "%s B" + +#: ../src/common/helpers.py:222 +msgid "_Busy" +msgstr "_Zauzet" + +#: ../src/common/helpers.py:224 +msgid "Busy" +msgstr "Zauzet" + +#: ../src/common/helpers.py:227 +msgid "_Not Available" +msgstr "_Nedostupan" + +#: ../src/common/helpers.py:232 +msgid "_Free for Chat" +msgstr "_Slobodan za razgovor" + +#: ../src/common/helpers.py:234 +msgid "Free for Chat" +msgstr "Slobodan za razgovor" + +#: ../src/common/helpers.py:237 +msgid "_Available" +msgstr "_Dostupan" + +#: ../src/common/helpers.py:239 +msgid "Available" +msgstr "Dostupan" + +#: ../src/common/helpers.py:241 +msgid "Connecting" +msgstr "Povezivanje" + +#: ../src/common/helpers.py:244 +msgid "A_way" +msgstr "O_dsutan" + +#: ../src/common/helpers.py:249 +msgid "_Offline" +msgstr "_Nije na vezi" + +#: ../src/common/helpers.py:251 +msgid "Offline" +msgstr "Nije na vezi" + +#: ../src/common/helpers.py:254 +msgid "_Invisible" +msgstr "_Nevidljiv" + +#: ../src/common/helpers.py:260 +msgid "?contact has status:Unknown" +msgstr "?kontakt ima status:Nepoznat" + +#: ../src/common/helpers.py:262 +msgid "?contact has status:Has errors" +msgstr "?kontakt ima status:Postoje greÅ¡ke" + +#: ../src/common/helpers.py:267 +msgid "?Subscription we already have:None" +msgstr "?Trenutna pretplata:Nijedna" + +#: ../src/common/helpers.py:269 +msgid "To" +msgstr "Za" + +#: ../src/common/helpers.py:273 +msgid "Both" +msgstr "Oboje" + +#: ../src/common/helpers.py:281 +msgid "?Ask (for Subscription):None" +msgstr "?Pitaj (za pretplatu):Nijedna" + +#: ../src/common/helpers.py:283 +msgid "Subscribe" +msgstr "Pretplatite se" + +#: ../src/common/helpers.py:292 +msgid "?Group Chat Contact Role:None" +msgstr "?Uloga kontakta u grupnom razgovoru:Nikakva" + +#: ../src/common/helpers.py:295 +msgid "Moderators" +msgstr "Moderatori" + +#: ../src/common/helpers.py:297 +msgid "Moderator" +msgstr "Moderator" + +#: ../src/common/helpers.py:300 +msgid "Participants" +msgstr "UÄesnici" + +#: ../src/common/helpers.py:302 +msgid "Participant" +msgstr "UÄesnik" + +#: ../src/common/helpers.py:305 +msgid "Visitors" +msgstr "Posjetitelji" + +#: ../src/common/helpers.py:307 +msgid "Visitor" +msgstr "Posetilac" + +#: ../src/common/helpers.py:313 +msgid "?Group Chat Contact Affiliation:None" +msgstr "?Vezanost kontakta u grupnom razogovru:Nikakva" + +#: ../src/common/helpers.py:315 +msgid "Owner" +msgstr "Vlasnik" + +#: ../src/common/helpers.py:317 +msgid "Administrator" +msgstr "Administrator" + +#: ../src/common/helpers.py:319 +msgid "Member" +msgstr "ÄŒlan" + +#: ../src/common/helpers.py:358 +msgid "is paying attention to the conversation" +msgstr "sluÅ¡a konverzaciju" + +#: ../src/common/helpers.py:360 +msgid "is doing something else" +msgstr "radi neÅ¡to drugo" + +#: ../src/common/helpers.py:362 +msgid "is composing a message..." +msgstr "piÅ¡e poruku..." + +#. paused means he or she was composing but has stopped for a while +#: ../src/common/helpers.py:365 +msgid "paused composing a message" +msgstr "pauza pri pisanju poruke" + +#: ../src/common/helpers.py:367 +msgid "has closed the chat window or tab" +msgstr "je zatvorio/zatvorila prozor ili jeziÄak razgovora" + +#: ../src/common/helpers.py:913 ../src/common/helpers.py:920 +#, fuzzy, python-format +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "PoÅ¡alji poruku" +msgstr[1] "PoÅ¡alji poruku" +msgstr[2] "PoÅ¡alji poruku" + +#: ../src/common/helpers.py:926 +#, python-format +msgid " from room %s" +msgstr "" + +#: ../src/common/helpers.py:929 ../src/common/helpers.py:948 +#, python-format +msgid " from user %s" +msgstr "" + +#: ../src/common/helpers.py:931 +#, python-format +msgid " from %s" +msgstr "" + +#: ../src/common/helpers.py:938 ../src/common/helpers.py:945 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: ../src/common/helpers.py:978 +#, python-format +msgid "Gajim - %s" +msgstr "Gajim - %s" + +#. we talk about a file +#: ../src/common/optparser.py:60 +#, python-format +msgid "error: cannot open %s for reading" +msgstr "greÅ¡ka: ne mogu otvoriti %s za Äitanje" + +#: ../src/common/optparser.py:203 ../src/common/optparser.py:204 +msgid "cyan" +msgstr "cijan" + +#: ../src/common/optparser.py:320 +msgid "migrating logs database to indices" +msgstr "prebacujem bazu dnevnika u indekse" + +#: ../src/common/passwords.py:82 +#, python-format +msgid "Gajim account %s" +msgstr "Gajim nalog %s" + +#: ../src/common/zeroconf/client_zeroconf.py:135 +#: ../src/common/zeroconf/client_zeroconf.py:218 +msgid "Connection to host could not be established" +msgstr "Nije moguće ostvariti vezu sa hostom" + +#: ../src/common/zeroconf/client_zeroconf.py:192 +msgid "" +"Connection to host could not be established: Incorrect answer from server." +msgstr "Nije moguće ostvariti vezu sa hostom: Neispravan odgovor servera." + +#: ../src/common/zeroconf/client_zeroconf.py:352 +msgid "" +"Connection to host could not be established: Timeout while sending data." +msgstr "" +"Nije moguće ostvariti vezu sa hostom: Vreme za slanje podataka je isteklo." + +#: ../src/common/zeroconf/client_zeroconf.py:638 +msgid "Contact is offline. Your message could not be sent." +msgstr "Kontakt nije na vezi. VaÅ¡u poruku nije moguće poslati." + +#: ../src/common/zeroconf/connection_zeroconf.py:204 +msgid "To continue sending and receiving messages, you will need to reconnect." +msgstr "" +"Ako želite nastaviti sa slanjem i primanjem poruka, morate se iskljuÄiti i " +"ponovo doći na vezu." + +#: ../src/common/zeroconf/connection_zeroconf.py:227 +msgid "Avahi error" +msgstr "Avahi greÅ¡ka" + +#: ../src/common/zeroconf/connection_zeroconf.py:227 +#, python-format +msgid "" +"%s\n" +"Link-local messaging might not work properly." +msgstr "" +"%s\n" +"Poruke lokalne mreže možda neće raditi kako treba." + +#: ../src/common/zeroconf/connection_zeroconf.py:238 +msgid "Please check if Avahi is installed." +msgstr "Proverite da li je Avahi instaliran." + +#: ../src/common/zeroconf/connection_zeroconf.py:247 +#: ../src/common/zeroconf/connection_zeroconf.py:251 +msgid "Could not start local service" +msgstr "Nije moguće pokrenuti lokalni servis" + +#: ../src/common/zeroconf/connection_zeroconf.py:248 +#, python-format +msgid "Unable to bind to port %d." +msgstr "Ne mogu se povezati na port %d." + +#: ../src/common/zeroconf/connection_zeroconf.py:252 +#: ../src/common/zeroconf/connection_zeroconf.py:347 +msgid "Please check if avahi-daemon is running." +msgstr "Molimo proverite da li je avahi-demon pokrenut." + +#: ../src/common/zeroconf/connection_zeroconf.py:346 +#, python-format +msgid "Could not change status of account \"%s\"" +msgstr "Nije moguće promeniti status raÄuna \"%s\"" + +#: ../src/common/zeroconf/connection_zeroconf.py:363 +msgid "" +"You are not connected or not visible to others. Your message could not be " +"sent." +msgstr "" +"Niste spojeni ili ste nevidljivi za druge. VaÅ¡a poruka ne može biti poslata." + +#. we're not english +#: ../src/common/zeroconf/connection_zeroconf.py:375 +msgid "[This message is encrypted]" +msgstr "[Ova poruka je Å¡ifrovana]" + +#~ msgid "_Discover Services..." +#~ msgstr "_Otkrivanje usluga..." + +#~ msgid "_Retype Password:" +#~ msgstr "_Ponovo ukucajte lozinku:" + +#~ msgid "_Use proxy" +#~ msgstr "_Koristi proksi" + +#~ msgid "Accounts" +#~ msgstr "Nalozi" + +#~ msgid "" +#~ "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.\n" +#~ "This is only available if python-avahi is installed and avahi-daemon is " +#~ "running." +#~ msgstr "" +#~ "Ako je oznaÄeno, svi lokalni kontakti koji koriste Bonjour kompatibilni " +#~ "klijent za razgovor (kao iChat, Trillian ili Gaim) će biti prikazani na " +#~ "listi kontakata. Ne morate biti spojeni na džaber server kako bi ovo " +#~ "radilo.\n" +#~ "Ovo je dostupno samo ako je instaliran python-avahi i avahi-demon je " +#~ "pokrenut." + +#~ msgid "" +#~ "If you have 2 or more accounts and this is checked, Gajim will list all " +#~ "contacts as if you had one account" +#~ msgstr "" +#~ "Ako imate 2 ili viÅ¡e naloga i ovo je oznaÄeno, Gajim će prikazivati sve " +#~ "kontakte kao da imate jedan nalog" + +#~ msgid "_Enable link-local messaging" +#~ msgstr "_Omogući poruke preko lokalne veze" + +#~ msgid "_Modify" +#~ msgstr "_Izmeni" + +#~ msgid "_Compact View Alt+C" +#~ msgstr "_Kompaktan pregled Alt+K" + +#~ msgid "<b>Interface Customization</b>" +#~ msgstr "<b>PrilagoÄ‘avanje interfejsa</b>" + +#~ msgid "Also known as iChat style" +#~ msgstr "TakoÄ‘e znan i kao iChat stil" + +#~ msgid "Chat" +#~ msgstr "Razgovor" + +#~ msgid "E_very 5 minutes" +#~ msgstr "Na svakih 5 minuta" + +#~ msgid "" +#~ "Gajim will automatically show new events by popping up the relative window" +#~ msgstr "" +#~ "Gajim će automatski prikazati nove dogaÄ‘aje sa odogovarajućim iskaÄućim " +#~ "prozorom" + +#~ msgid "" +#~ "Gajim will notify you for new events via a popup in the bottom right of " +#~ "the screen" +#~ msgstr "" +#~ "Gajim će Vas obavestiti o novim dogaÄ‘ajima preko iskaÄućeg obaveÅ¡tenja u " +#~ "donjem desnom uglu ekrana" + +#~ 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 obavestiti o kontaktima koji su se upravo pojavili sa " +#~ "iskaÄućim prozorom u donjem desnom uglu ekrana" + +#~ msgid "" +#~ "Gajim will only change the icon of the contact that triggered the new " +#~ "event" +#~ msgstr "Gajim će samo izmeniti ikonu kontakta koji je izazvao novi dogaÄ‘aj" + +#~ 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 pamtiti veliÄinu i poziciju prozora liste " +#~ "kontakata i prozora razgovora sledeći put kada se pokrene" + +#~ msgid "On every _message" +#~ msgstr "Na svaku poruku" + +#~ msgid "Outgoing Chat state noti_fications:" +#~ msgstr "ObaveÅ¡tenja o stanju odlaznog razgovora" + +#~ msgid "Print time:" +#~ msgstr "Ispis vremena:" + +#~ msgid "Save _position and size for roster and chat windows" +#~ msgstr "ÄŒuvaj pozicije i veliÄine prozora za kontakte i za razgovor" + +#~ msgid "Show only in _roster" +#~ msgstr "Prikaži samo u listi kontakata" + +#~ msgid "Use t_rayicon (aka. notification area icon)" +#~ msgstr "Koristi ikonu panel (tzv. ikonu obaveÅ¡tenja)" + +#~ 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, zahtev za prenos datoteke i sl.), " +#~ "mogu se korisititi sledeće metode obaveÅ¡tavanja. Imajte na umu da se " +#~ "obaveÅ¡tavanja o novim porukama prikazuju samo za kontakte sa kojima " +#~ "trenutno ne razgovarate" + +#~ msgid "_Never" +#~ msgstr "_Nikada" + +#~ msgid "_Notify me about it" +#~ msgstr "_Obavesti me o tome" + +#~ msgid "_Pop it up" +#~ msgstr "_IskoÄi ga" + +#~ msgid "_Remove from Roster" +#~ msgstr "_IzbriÅ¡i sa liste kontakata" + +#~ msgid "Add _Contact" +#~ msgstr "Dodaj _kontakt" + +#~ msgid "_Filter:" +#~ msgstr "_Filter:" + +#~ msgid "" +#~ "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" +#~ "\n" +#~ "Highlighting misspelled words feature will not be used" +#~ msgstr "" +#~ "Ako ovo nije VaÅ¡ jezik za koji želite da obojite loÅ¡e napisane reÄi, " +#~ "molimo podesite $LANG promenljivu okruženja na odgovarajuću vrednost. " +#~ "Npr. za francuski, uradite export LANG=fr_FR ili export LANG=fr_FR.UTF-8 " +#~ "u ~/.bash_profile ili, kako bi bilo globalno u /etc/profile.\n" +#~ "\n" +#~ "Mogućnost bojenja loÅ¡e napisanih reÄi neće biti korišćena" + +#~ msgid "Every %s _minutes" +#~ msgstr "Svaka %s _minuta" + +#~ msgid "You must enter a password for the new account." +#~ msgstr "Morate uneti lozinku za novi nalog" + +#~ msgid "%s does not appear to be a valid JID" +#~ msgstr "%s ne liÄi da je validan Džaber ID" + +#~ msgid "Drop %s in group %s" +#~ msgstr "Spusti %s u grupu %s" + +#~ msgid "Make %s and %s metacontacts" +#~ msgstr "Napravi od %s i %s pseudokontakte" + +#~ msgid "Hides the buttons in two persons chat window." +#~ msgstr "Sakriva dugmad u prozoru razgovora dve osobe." + +#~ msgid " %d unread single message" +#~ msgid_plural " %d unread single messages" +#~ msgstr[0] "%d neproÄitana samostalna poruka" +#~ msgstr[1] "%d neproÄitane samostalne poruke" +#~ msgstr[2] "%d neproÄitanih samostalnih poruka" + +#~ msgid " %d unread group chat message" +#~ msgid_plural " %d unread group chat messages" +#~ msgstr[0] "%d neproÄitana poruka grupnog razgovora" +#~ msgstr[1] "%d neproÄitane poruke grupnog razgovora" +#~ msgstr[2] "%d neproÄitanih poruka grupnog razgovora" + +#~ msgid " %d unread private message" +#~ msgid_plural " %d unread private messages" +#~ msgstr[0] "%d neproÄitana privatna poruka" +#~ msgstr[1] "%d neproÄitane privatne poruke" +#~ msgstr[2] "%d neproÄitanih privatnih poruka" + +#~ msgid "Error while adding service. %s" +#~ msgstr "GreÅ¡ka prilikom dodavanja servisa. %s" diff --git a/setup_osx.py b/setup_osx.py new file mode 100644 index 0000000000..748c07ffbb --- /dev/null +++ b/setup_osx.py @@ -0,0 +1,200 @@ +""" +Usage: + python setup_osx.py [build | dist] +""" + +from setuptools import setup +import sys, glob, os, commands, types +from os import system, unlink, symlink, getcwd, mkdir, utime +from shutil import move, copy, copytree, rmtree + +### +### Globals +### + +GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current" +NAME = 'Gajim' +VERSION = '0.11' +DESCRIPTION = 'A full featured Jabber client' +AUTHOR = 'Gajim Development Team' +URL = 'http://www.gajim.org/' +DOWNLOAD_URL = 'http://www.gajim.org/downloads.php' +LICENSE = 'GPL' +PWD = getcwd() +APP_RS = "dist/Gajim.app/Contents/Resources" + +GAJIM_SCRIPT = \ +'#!/bin/bash \n\ +export DYLD_LIBRARY_PATH=%s/lib \n\ +export PATH=%s/bin:$PATH \n\ +export PYTHONPATH=%s/lib/python2.5/site-packages:%s/lib/python2.5/site-packages/gtk-2.0 \n\ +exec ${0}.bin \n\ +' % (GTK_DIR, GTK_DIR, GTK_DIR, GTK_DIR) + +GAJIM_REMOTE_SCRIPT = \ +'#!/bin/bash \n\ +export DYLD_LIBRARY_PATH=%s/lib \n\ +TOPDIR=${0%%/MacOS/gajim-remote} \n\ +echo "${TOPDIR}" | grep -e "^/" \n\ +[ $? -ne 0 ] && TOPDIR=`pwd`/${TOPDIR} \n\ +export RESOURCEPATH=${TOPDIR}/Resources \n\ +export PYTHONHOME=${RESOURCEPATH}/lib/python2.5 \n\ +export PYTHONPATH=${RESOURCEPATH}/lib/python2.5/lib-dynload:${RESOURCEPATH}/lib/python2.5/site-packages.zip:${PYTHONPATH} \n\ +cd ${RESOURCEPATH} \n\ +exec ${TOPDIR}/MacOS/Python ${RESOURCEPATH}/gajim-remote.py $* \n\ +' % GTK_DIR + +### +### Functions +### + +def check(ret): + if type(ret) == types.ListType: + if ret[0] != 0: + raise Exception("Command failed: " + ret[1]) + elif type(ret) == types.IntType: + if ret != 0: + raise Exception("Command failed") + return + + +def force(func): + try: + func() + except: + pass + return + + +def writeScript(filename, contents): + script = file(filename, "w+") + script.write(contents) + script.close() + system("chmod +x %s" % filename) + return + + +def cleanup(): + force(lambda:rmtree("build")) + force(lambda:rmtree("dist")) + +def stageInstall(): + check(system("make DATADIR=%s/build/inst LIBDIR=%s/build/inst prefix=%s/build/inst DOCDIR=%s/build/inst/share/doc install" % (PWD, PWD, PWD, PWD))) + force(lambda:unlink("src/osx/growl/_growl.so")) + force(lambda:unlink("src/osx/growl/_growlImage.so")) + force(lambda:unlink("src/osx/idle.so")) + force(lambda:unlink("src/osx/nsapp.so")) + force(lambda:unlink("src/osx/syncmenu.so")) + force(lambda:unlink("src/gtkspell.so")) + symlink("%s/build/inst/lib/gajim/_growl.so" % PWD, "src/osx/growl/_growl.so") + symlink("%s/build/inst/lib/gajim/_growlImage.so" % PWD, + "src/osx/growl/_growlImage.so") + symlink("%s/build/inst/lib/gajim/idle.so" % PWD, "src/osx/idle.so") + symlink("%s/build/inst/lib/gajim/nsapp.so" % PWD, "src/osx/nsapp.so") + symlink("%s/build/inst/lib/gajim/syncmenu.so" % PWD, "src/osx/syncmenu.so") + if os.path.isfile("build/inst/lib/gajim/gtkspell.so"): + symlink("%s/build/inst/lib/gajim/gtkspell.so" % PWD, "src/gtkspell.so") + return + + +def buildApp(): + sys.path.append('src') + sys.path.append(GTK_DIR + "/lib/python2.5/site-packages") + sys.path.append(GTK_DIR + "/lib/python2.5/site-packages/gtk-2.0") + OPTIONS = {'argv_emulation':True, + 'excludes':'docutils,Crypto,dbus,OpenSSL,cairo,gtk,gobject,atk,pangocairo', + 'iconfile':'data/pixmaps/gajim.icns', + 'includes':'osx,ConfigParser,compiler,UserString,history_manager', + 'plist':{'LSMinimumSystemVersion':'10.4.0', + 'NSHumanReadableCopyright':'GNU General Public License', + 'CFBundleIdentifier':'org.gajim', + 'NSMainNibFile':'Gajim', + }, + } + setup( + name = NAME, version = VERSION, description = DESCRIPTION, + author = AUTHOR, url = URL, download_url = DOWNLOAD_URL, + license = LICENSE, + app=['src/gajim.py'], + data_files=['data/nibs/Gajim.nib'], + options={'py2app': OPTIONS}, + setup_requires=['py2app'], + ) + return + + +def setupPrep(): + copy("src/osx/prep_py2app.py", APP_RS) + move("dist/Gajim.app/Contents/Resources/__boot__.py", + "dist/Gajim.app/Contents/Resources/__boot__.py.org") + new = file("dist/Gajim.app/Contents/Resources/__boot__.py", "w+") + org = file("dist/Gajim.app/Contents/Resources/__boot__.py.org") + for line in org: + new.write(line) + if (('site.addsitedir' in line) and ('Python' in line)): + new.write(" import prep_py2app\n") + new.close() + org.close() + unlink("dist/Gajim.app/Contents/Resources/__boot__.py.org") + return + + +def finishApp(): + # setup gajim dirs + copytree("build/inst/share/gajim/data", APP_RS + "/data") + copy("data/pixmaps/gajim.icns", APP_RS + "/data/pixmaps") + copytree("build/inst/locale", APP_RS + "/locale") + copytree("build/inst/share/man", APP_RS + "/man") + force(lambda:unlink("dist/Gajim.app/Contents/data")) + symlink("Resources/data", "dist/Gajim.app/Contents/data") + copy("src/gajim-remote.py", "dist/Gajim.app/Contents/Resources") + # Nuke libs that are in the framework + move("dist/Gajim.app/Contents/Frameworks/Python.framework", + "dist/Gajim.app/Contents/Python.framework") + rmtree("dist/Gajim.app/Contents/Frameworks") + mkdir("dist/Gajim.app/Contents/Frameworks") + move("dist/Gajim.app/Contents/Python.framework", + "dist/Gajim.app/Contents/Frameworks/Python.framework") + # Adjust the running of the app + move("dist/Gajim.app/Contents/MacOS/Gajim", + "dist/Gajim.app/Contents/MacOS/Gajim.bin") + writeScript("dist/Gajim.app/Contents/MacOS/Gajim", GAJIM_SCRIPT) + setupPrep() + # Setup the gajim-remote script + writeScript("dist/Gajim.app/Contents/MacOS/gajim-remote", + GAJIM_REMOTE_SCRIPT) + # Touch the top dir so Finder knows to update its idea of this bundle + utime("dist/Gajim.app", None) + return + + +def distApp(): + force(lambda:rmtree("dist/Gajim")) + force(lambda:rmtree("dist/Gajim.tar.bz2")) + mkdir("dist/Gajim") + check(system("tar -cf - -C dist Gajim.app | tar -xf - -C dist/Gajim")) + copy("README.osx", "dist/Gajim/README") + copy("TODO.osx", "dist/Gajim/TODO") + check(system("tar -C dist -jcf dist/Gajim-OSX-`date | awk '{printf(\"%s-%s-%s\", $6, $2, $3);}'`.tar.bz2 Gajim")) + rmtree("dist/Gajim") + return + + + +### +### Start +### +if ((len(sys.argv) != 2) or ((sys.argv[1] != "build") and + (sys.argv[1] != "dist"))): + print "usage: python setup_osx.py [build]" + print " or: python setup_osx.py [dist]" + sys.exit(1) +elif sys.argv[1] == "build": + sys.argv[1] = "py2app" + sys.argv.append('--use-pythonpath') + cleanup() + stageInstall() + buildApp() + finishApp() +elif sys.argv[1] == "dist": + distApp() diff --git a/setup_win32.py b/setup_win32.py index 5deffb08db..92cc7fd815 100644 --- a/setup_win32.py +++ b/setup_win32.py @@ -1,17 +1,21 @@ ## setup_win32.py (run me as python setup_win32.py py2exe -O2) ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. from distutils.core import setup import py2exe @@ -23,14 +27,14 @@ includes = ['encodings', 'encodings.utf-8',] opts = { 'py2exe': { - 'includes': 'pango,atk,gobject,cairo,pangocairo,gtk.keysyms,encodings,encodings.*', + 'includes': 'pango,atk,gobject,cairo,pangocairo,gtk.keysyms,encodings,encodings.*,docutils.readers.*,docutils.writers.html4css1', 'dll_excludes': [ 'iconv.dll','intl.dll','libatk-1.0-0.dll', 'libgdk_pixbuf-2.0-0.dll','libgdk-win32-2.0-0.dll', 'libglib-2.0-0.dll','libgmodule-2.0-0.dll', 'libgobject-2.0-0.dll','libgthread-2.0-0.dll', 'libgtk-win32-2.0-0.dll','libpango-1.0-0.dll', - 'libpangowin32-1.0-0.dll','libcairo-2.dll', + 'libpangowin32-1.0-0.dll','libcairo-2.dll', 'libpangocairo-1.0-0.dll','libpangoft2-1.0-0.dll', ], } @@ -38,7 +42,7 @@ opts = { setup( name = 'Gajim', - version = '0.11', + version = '0.11.4', description = 'A full featured Jabber client', author = 'Gajim Development Team', url = 'http://www.gajim.org/', diff --git a/src/Makefile.am b/src/Makefile.am index 30eb995a95..27a7341968 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,9 +1,10 @@ -SUBDIRS = common +SUBDIRS = common osx CLEANFILES = \ trayicon.c INCLUDES = \ $(PYTHON_INCLUDES) +export MACOSX_DEPLOYMENT_TARGET=10.4 if BUILD_GTKSPELL gtkspelllib_LTLIBRARIES = gtkspell.la diff --git a/src/adhoc_commands.py b/src/adhoc_commands.py index ecee225219..687a09bd58 100644 --- a/src/adhoc_commands.py +++ b/src/adhoc_commands.py @@ -1,17 +1,22 @@ # -*- coding: utf-8 -*- ## adhoc_commands.py ## -## Copyright (C) 2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2006 Yann Leboulanger <asterix@lagaule.org> ## Nikos Kouremenos <nkour@jabber.org> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. # FIXME: think if we need caching command list. it may be wrong if there will # be entities that often change the list, it may be slow to fetch it every time @@ -286,8 +291,7 @@ class CommandWindow: self.remove_pulsing() self.sending_form_progressbar.hide() - if not self.sessionid: - self.sessionid = command.getAttr('sessionid') + self.sessionid = command.getAttr('sessionid') self.form_status = command.getAttr('status') @@ -446,7 +450,7 @@ class CommandWindow: # no commands => no commands stage # commands => command selection stage query = response.getTag('query') - if query: + if query and query.getAttr('node') == xmpp.NS_COMMANDS: items = query.getTags('item') else: items = [] diff --git a/src/advanced.py b/src/advanced.py index 54ff572754..e7d9647ff9 100644 --- a/src/advanced.py +++ b/src/advanced.py @@ -1,18 +1,23 @@ ## advanced.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 Vincent Hanquez <tab@snarc.org> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gtkgui_helpers @@ -98,8 +103,7 @@ class AdvancedConfigurationWindow(object): make the cellrenderertext not editable else it's editable''' optname = model[iter][C_PREFNAME] opttype = model[iter][C_TYPE] - if opttype == self.types['boolean'] or optname in ('password', - 'gpgpassword'): + if opttype == self.types['boolean'] or optname == 'password': cell.set_property('editable', False) else: cell.set_property('editable', True) @@ -234,7 +238,7 @@ class AdvancedConfigurationWindow(object): type = val[OPT_TYPE][0] type = self.types[type] # i18n value = val[OPT_VAL] - if name in ('password', 'gpgpassword'): + if name == 'password': #we talk about password value = _('Hidden') # override passwords with this string if value in self.right_true_dict: diff --git a/src/atom_window.py b/src/atom_window.py index 3bab31fdf4..25836c6dcf 100644 --- a/src/atom_window.py +++ b/src/atom_window.py @@ -3,19 +3,24 @@ ## For now greatly simplified, supports only simple feeds like the ## one from pubsub.com. ## -## Copyright (C) 2006-2007 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2006-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2006-2007 Liori (I think) put ur self here please ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk diff --git a/src/cell_renderer_image.py b/src/cell_renderer_image.py index aaf1f8cd17..a4e8386d05 100644 --- a/src/cell_renderer_image.py +++ b/src/cell_renderer_image.py @@ -1,27 +1,32 @@ ## cell_renderer_image.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject @@ -89,6 +94,8 @@ class CellRendererImage(gtk.GenericCellRenderer): if self.image.get_storage_type() == gtk.IMAGE_ANIMATION: if self.image not in self.iters: + if not isinstance(widget, gtk.TreeView): + return animation = self.image.get_animation() iter = animation.get_iter() self.iters[self.image] = iter diff --git a/src/chat_control.py b/src/chat_control.py index 9bf90ced91..3474895a4a 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -1,21 +1,27 @@ ## chat_control.py ## -## Copyright (C) 2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2006-2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2006 Travis Shirk <travis@pobox.com> -## Copyright (C) 2006 Dimitur Kirov <dkirov@gmail.com> +## Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> -## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> +## Julien Pivotto <roidelapluie@gmail.com> +## Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import time @@ -27,6 +33,7 @@ import message_control import dialogs import history_window import notify +import re from common import gajim from common import helpers @@ -45,21 +52,24 @@ try: except: HAS_GTK_SPELL = False - # 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) +#LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done) #echo "{_('en'):'en'",$LANG"}" langs = {_('English'): 'en', _('Belarusian'): 'be', _('Bulgarian'): 'bg', _('Breton'): 'br', _('Czech'): 'cs', _('German'): 'de', _('Greek'): 'el', _('British'): 'en_GB', _('Esperanto'): 'eo', _('Spanish'): 'es', _('Basque'): 'eu', _('French'): 'fr', _('Croatian'): 'hr', _('Italian'): 'it', _('Norwegian (b)'): 'nb', _('Dutch'): 'nl', _('Norwegian'): 'no', _('Polish'): 'pl', _('Portuguese'): 'pt', _('Brazilian Portuguese'): 'pt_BR', _('Russian'): 'ru', _('Serbian'): 'sr', _('Slovak'): 'sk', _('Swedish'): 'sv', _('Chinese (Ch)'): 'zh_CN'} - ################################################################################ class ChatControlBase(MessageControl): '''A base class containing a banner, ConversationTextview, MessageTextView ''' + def make_href(self, match): + url_color = gajim.config.get('urlmsgcolor') + return '<a href="%s"><span color="%s">%s</span></a>' % (match.group(), + url_color, match.group()) + def get_font_attrs(self): - ''' get pango font attributes for banner from theme settings ''' + ''' get pango font attributes for banner from theme settings ''' theme = gajim.config.get('roster_theme') bannerfont = gajim.config.get_per('themes', theme, 'bannerfont') bannerfontattrs = gajim.config.get_per('themes', theme, 'bannerfontattrs') @@ -119,6 +129,9 @@ class ChatControlBase(MessageControl): event_keymod): pass # Derived should implement this rather than connecting to the event itself. + def status_url_clicked(self, widget, url): + helpers.launch_browser_mailer('url', url) + def __init__(self, type_id, parent_win, widget_name, contact, acct, resource = None): MessageControl.__init__(self, type_id, parent_win, widget_name, @@ -137,6 +150,22 @@ class ChatControlBase(MessageControl): id = widget.connect('button-press-event', self._on_banner_eventbox_button_press_event) self.handlers[id] = widget + + self.urlfinder = re.compile(r"(www\.(?!\.)|[a-z][a-z0-9+.-]*://)[^\s<>'\"]+[^!,\.\s<>\)'\"\]]") + + if gajim.HAVE_PYSEXY: + import sexy + self.banner_status_label = sexy.UrlLabel() + self.banner_status_label.connect('url_activated', self.status_url_clicked) + else: + self.banner_status_label = gtk.Label() + self.banner_status_label.set_selectable(True) + self.banner_status_label.set_alignment(0,0.5) + + banner_vbox = self.xml.get_widget('banner_vbox') + banner_vbox.pack_start(self.banner_status_label) + self.banner_status_label.show() + # Init DND self.TARGET_TYPE_URI_LIST = 80 self.dnd_list = [ ( 'text/uri-list', 0, self.TARGET_TYPE_URI_LIST ), @@ -151,6 +180,9 @@ class ChatControlBase(MessageControl): # Create textviews and connect signals self.conv_textview = ConversationTextview(self.account) + id = self.conv_textview.tv.connect('key_press_event', + self._conv_textview_key_press_event) + self.handlers[id] = self.conv_textview.tv # FIXME: DND on non editable TextView, find a better way self.drag_entered = False id = self.conv_textview.tv.connect('drag_data_received', @@ -246,13 +278,14 @@ class ChatControlBase(MessageControl): spell.set_language(lang) except (gobject.GError, RuntimeError), msg: dialogs.AspellDictError(lang) - self.style_event_id = 0 self.conv_textview.tv.show() self._paint_banner() # For JEP-0172 self.user_nick = None + self.smooth = True + 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): @@ -321,6 +354,7 @@ class ChatControlBase(MessageControl): banner_eventbox = self.xml.get_widget('banner_eventbox') banner_name_label = self.xml.get_widget('banner_name_label') self.disconnect_style_event(banner_name_label) + self.disconnect_style_event(self.banner_status_label) if bgcolor: banner_eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(bgcolor)) @@ -330,25 +364,33 @@ class ChatControlBase(MessageControl): if textcolor: banner_name_label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(textcolor)) + self.banner_status_label.modify_fg(gtk.STATE_NORMAL, + gtk.gdk.color_parse(textcolor)) default_fg = False else: default_fg = True if default_bg or default_fg: self._on_style_set_event(banner_name_label, None, default_fg, default_bg) - + self._on_style_set_event(self.banner_status_label, None, default_fg, + default_bg) + def disconnect_style_event(self, widget): - if self.style_event_id: - widget.disconnect(self.style_event_id) - del self.handlers[self.style_event_id] - self.style_event_id = 0 + # Try to find the event_id + found = False + for id in self.handlers: + if self.handlers[id] == widget: + found = True + break + if found: + widget.disconnect(id) + del self.handlers[id] def connect_style_event(self, widget, set_fg = False, set_bg = False): self.disconnect_style_event(widget) - self.style_event_id = widget.connect('style-set', - self._on_style_set_event, set_fg, set_bg) - self.handlers[self.style_event_id] = widget - + id = widget.connect('style-set', self._on_style_set_event, set_fg, set_bg) + self.handlers[id] = widget + def _on_style_set_event(self, widget, style, *opts): '''set style of widget from style class *.Frame.Eventbox opts[0] == True -> set fg color @@ -362,7 +404,14 @@ class ChatControlBase(MessageControl): fg_color = widget.style.fg[gtk.STATE_SELECTED] widget.modify_fg(gtk.STATE_NORMAL, fg_color) self.connect_style_event(widget, opts[0], opts[1]) - + + def _conv_textview_key_press_event(self, widget, event): + if gtk.gtk_version < (2, 12, 0): + return + if event.state & (gtk.gdk.SHIFT_MASK | gtk.gdk.CONTROL_MASK): + return False + self.parent_win.notebook.emit('key_press_event', event) + def _on_keypress_event(self, widget, event): if event.state & gtk.gdk.CONTROL_MASK: # CTRL + l|L: clear conv_textview @@ -389,6 +438,7 @@ class ChatControlBase(MessageControl): event.keyval == gtk.keysyms.Page_Up: self.parent_win.notebook.emit('key_press_event', event) return True + elif event.keyval == gtk.keysyms.m and \ (event.state & gtk.gdk.MOD1_MASK): # alt + m opens emoticons menu if gajim.config.get('emoticons_theme'): @@ -402,7 +452,7 @@ class ChatControlBase(MessageControl): # get the cursor position cursor = msg_tv.get_iter_location(buf.get_iter_at_mark( buf.get_insert())) - cursor = msg_tv.buffer_to_window_coords(gtk.TEXT_WINDOW_TEXT, + cursor = msg_tv.buffer_to_window_coords(gtk.TEXT_WINDOW_TEXT, cursor.x, cursor.y) x = origin[0] + cursor[0] y = origin[1] + size[1] @@ -519,7 +569,7 @@ class ChatControlBase(MessageControl): def _on_drag_data_received(self, widget, context, x, y, selection, target_type, timestamp): - pass # Derived classes SHOULD implement this method + pass # Derived classes SHOULD implement this method def _on_drag_leave(self, widget, context, time): # FIXME: DND on non editable TextView, find a better way @@ -614,7 +664,7 @@ class ChatControlBase(MessageControl): if kind in ('incoming', 'incoming_queue'): gc_message = False - if self.type_id == message_control.TYPE_GC: + if self.type_id == message_control.TYPE_GC: gc_message = True if ((self.parent_win and (not self.parent_win.get_active_jid() or \ @@ -712,10 +762,11 @@ class ChatControlBase(MessageControl): if not jid: jid = self.contact.jid - if gajim.interface.instances['logs'].has_key(jid): - gajim.interface.instances['logs'][jid].window.present() + if gajim.interface.instances.has_key('logs'): + gajim.interface.instances['logs'].window.present() + gajim.interface.instances['logs'].open_history(jid, self.account) else: - gajim.interface.instances['logs'][jid] = \ + gajim.interface.instances['logs'] = \ history_window.HistoryWindow(jid, self.account) def on_minimize_menuitem_toggled(self, widget): @@ -795,7 +846,7 @@ class ChatControlBase(MessageControl): # but we also want to avoid window resizing so if we reach that # minimum for conversation_textview and maximum for message_textview # we set to automatic the scrollbar policy - diff_y = message_height - requisition.height + diff_y = message_height - requisition.height if diff_y != 0: if conversation_height + diff_y < min_height: if message_height + conversation_height - min_height > min_height: @@ -812,9 +863,10 @@ class ChatControlBase(MessageControl): self.msg_scrolledwindow.set_property('vscrollbar-policy', gtk.POLICY_NEVER) self.msg_scrolledwindow.set_property('height-request', -1) - - self.conv_textview.bring_scroll_to_end(diff_y - 18) - + self.conv_textview.bring_scroll_to_end(diff_y - 18, False) + else: + self.conv_textview.bring_scroll_to_end(diff_y - 18, self.smooth) + self.smooth = True # reinit the flag # enable scrollbar automatic policy for horizontal scrollbar # if message we have in message_textview is too big if requisition.width > message_width: @@ -895,6 +947,7 @@ class ChatControlBase(MessageControl): if self.sent_history_pos == 0: return self.sent_history_pos = self.sent_history_pos - 1 + self.smooth = False conv_buf.set_text(self.sent_history[self.sent_history_pos]) elif direction == 'down': if self.sent_history_pos >= size - 1: @@ -904,6 +957,7 @@ class ChatControlBase(MessageControl): return self.sent_history_pos = self.sent_history_pos + 1 + self.smooth = False conv_buf.set_text(self.sent_history[self.sent_history_pos]) def lighten_color(self, color): @@ -948,11 +1002,11 @@ class ChatControl(ChatControlBase): TYPE_ID = message_control.TYPE_CHAT old_msg_kind = None # last kind of the printed message CHAT_CMDS = ['clear', 'compact', 'help', 'me', 'ping', 'say'] - - def __init__(self, parent_win, contact, acct, resource = None): + + def __init__(self, parent_win, contact, acct, session, resource = None): ChatControlBase.__init__(self, self.TYPE_ID, parent_win, 'chat_child_vbox', contact, acct, resource) - + # for muc use: # widget = self.xml.get_widget('muc_window_actions_button') widget = self.xml.get_widget('message_window_actions_button') @@ -968,7 +1022,7 @@ class ChatControl(ChatControlBase): # it is on enter-notify and leave-notify so no need to be per jid self.show_bigger_avatar_timeout_id = None self.bigger_avatar_window = None - self.show_avatar(self.contact.resource) + self.show_avatar(self.contact.resource) # chatstate timers and state self.reset_kbd_mouse_timeout_vars() @@ -982,7 +1036,7 @@ class ChatControl(ChatControlBase): 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) @@ -1002,7 +1056,9 @@ class ChatControl(ChatControlBase): if self.contact.jid in gajim.encrypted_chats[self.account]: self.xml.get_widget('gpg_togglebutton').set_active(True) - + + self.set_session(session) + self.status_tooltip = gtk.Tooltips() self.update_ui() # restore previous conversation @@ -1045,7 +1101,7 @@ class ChatControl(ChatControlBase): 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.get_shown_name() + + self.contact.jid, self.account, self.contact.get_shown_name() + \ '.jpeg') self.handlers[id] = menuitem menu.append(menuitem) @@ -1146,11 +1202,10 @@ class ChatControl(ChatControlBase): status = contact.status if status is not None: - self.status_tooltip.set_tip(banner_eventbox, status) - self.status_tooltip.enable() banner_name_label.set_ellipsize(pango.ELLIPSIZE_END) - status = helpers.reduce_chars_newlines(status, max_lines = 1) - status_escaped = gobject.markup_escape_text(status) + self.banner_status_label.set_ellipsize(pango.ELLIPSIZE_END) + status_reduced = helpers.reduce_chars_newlines(status, max_lines = 1) + status_escaped = gobject.markup_escape_text(status_reduced) font_attrs, font_attrs_small = self.get_font_attrs() st = gajim.config.get('displayed_chat_state_notifications') @@ -1179,11 +1234,23 @@ class ChatControl(ChatControlBase): # weight="heavy" size="x-large" label_text = '<span %s>%s</span><span %s>%s</span>' % \ (font_attrs, name, font_attrs_small, acct_info) + if status_escaped: - label_text += '\n<span %s>%s</span>' %\ - (font_attrs_small, status_escaped) + if gajim.HAVE_PYSEXY: + status_text = self.urlfinder.sub(self.make_href, status_escaped) + status_text = '<span %s>%s</span>' % (font_attrs_small, status_text) + else: + status_text = '<span %s>%s</span>' % (font_attrs_small, status_escaped) + self.status_tooltip.set_tip(banner_eventbox, status) + self.banner_status_label.show() + self.banner_status_label.set_no_show_all(False) else: + status_text = '' self.status_tooltip.disable() + self.banner_status_label.hide() + self.banner_status_label.set_no_show_all(True) + + self.banner_status_label.set_markup(status_text) # setup the label that holds name and jid banner_name_label.set_markup(label_text) @@ -1231,7 +1298,11 @@ class ChatControl(ChatControlBase): message_array = [] if command == 'me': - return False # This is not really a command + if len(message_array): + return False # /me is not really a command + else: + self.get_command_help(command) + return True # do not send "/me" as message if command == 'help': if len(message_array): @@ -1295,13 +1366,13 @@ class ChatControl(ChatControlBase): contact = self.contact + encrypted = bool(self.session) and self.session.enable_encryption + keyID = '' - encrypted = False if self.xml.get_widget('gpg_togglebutton').get_active(): keyID = contact.keyID encrypted = True - chatstates_on = gajim.config.get('outgoing_chat_state_notifications') != \ 'disabled' composing_xep = contact.composing_xep @@ -1313,7 +1384,7 @@ class ChatControl(ChatControlBase): # this is here (and not in send_chatstate) # because we want it sent with REAL message # (not standlone) eg. one that has body - + if contact.our_chatstate: # We already asked for xep 85, don't ask it twice composing_xep = 'asked_once' @@ -1393,6 +1464,26 @@ class ChatControl(ChatControlBase): self.mouse_over_in_last_30_secs = False self.kbd_activity_in_last_30_secs = False + def on_cancel_session_negotiation(self): + msg = _('Session negotiation cancelled') + ChatControlBase.print_conversation_line(self, msg, 'status', '', None) + + # print esession settings to textview + def print_esession_details(self): + if self.session and self.session.enable_encryption: + msg = _('E2E encryption enabled') + ChatControlBase.print_conversation_line(self, msg, 'status', '', None) + + if self.session.loggable: + msg = _('Session WILL be logged') + else: + msg = _('Session WILL NOT be logged') + + ChatControlBase.print_conversation_line(self, msg, 'status', '', None) + else: + msg = _('E2E encryption disabled') + ChatControlBase.print_conversation_line(self, msg, 'status', '', None) + def print_conversation(self, text, frm = '', tim = None, encrypted = False, subject = None, xhtml = None): '''Print a line in the conversation: @@ -1412,18 +1503,26 @@ class ChatControl(ChatControlBase): kind = 'info' name = '' else: - ec = gajim.encrypted_chats[self.account] - if encrypted and jid not in ec: - msg = _('Encryption enabled') - ChatControlBase.print_conversation_line(self, msg, - 'status', '', tim) - ec.append(jid) - elif not encrypted and jid in ec: - msg = _('Encryption disabled') - ChatControlBase.print_conversation_line(self, msg, - 'status', '', tim) - ec.remove(jid) - self.xml.get_widget('gpg_togglebutton').set_active(encrypted) + if self.session and self.session.enable_encryption: + if not encrypted: + msg = _('The following message was NOT encrypted') + ChatControlBase.print_conversation_line(self, msg, + 'status', '', tim) + else: + # GPG encryption + ec = gajim.encrypted_chats[self.account] + if encrypted and jid not in ec: + msg = _('OpenPGP Encryption enabled') + ChatControlBase.print_conversation_line(self, msg, + 'status', '', tim) + ec.append(jid) + elif not encrypted and jid in ec: + msg = _('OpenPGP Encryption disabled') + ChatControlBase.print_conversation_line(self, msg, + 'status', '', tim) + ec.remove(jid) + self.xml.get_widget('gpg_togglebutton').set_active(encrypted) + if not frm: kind = 'incoming' name = contact.get_shown_name() @@ -1530,27 +1629,41 @@ class ChatControl(ChatControlBase): ''' xml = gtkgui_helpers.get_glade('chat_control_popup_menu.glade') menu = xml.get_widget('chat_control_popup_menu') - + history_menuitem = xml.get_widget('history_menuitem') toggle_gpg_menuitem = xml.get_widget('toggle_gpg_menuitem') + toggle_e2e_menuitem = xml.get_widget('toggle_e2e_menuitem') add_to_roster_menuitem = xml.get_widget('add_to_roster_menuitem') send_file_menuitem = xml.get_widget('send_file_menuitem') information_menuitem = xml.get_widget('information_menuitem') - + convert_to_gc_menuitem = xml.get_widget('convert_to_groupchat') + muc_icon = gajim.interface.roster.load_icon('muc_active') + if muc_icon: + convert_to_gc_menuitem.set_image(muc_icon) + + ag = gtk.accel_groups_from_object(self.parent_win.window)[0] + history_menuitem.add_accelerator('activate', ag, gtk.keysyms.h, gtk.gdk.CONTROL_MASK, + gtk.ACCEL_VISIBLE) + information_menuitem.add_accelerator('activate', ag, gtk.keysyms.i, + gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) + contact = self.parent_win.get_active_contact() jid = contact.jid - - # history_menuitem - if gajim.jid_is_transport(jid): - history_menuitem.set_sensitive(False) - + # check if gpg capabitlies or else make gpg toggle insensitive gpg_btn = self.xml.get_widget('gpg_togglebutton') isactive = gpg_btn.get_active() is_sensitive = gpg_btn.get_property('sensitive') toggle_gpg_menuitem.set_active(isactive) toggle_gpg_menuitem.set_property('sensitive', is_sensitive) - + + # TODO: check that the remote client supports e2e + if not gajim.HAVE_PYCRYPTO: + toggle_e2e_menuitem.set_sensitive(False) + else: + isactive = int(self.session != None and self.session.enable_encryption) + toggle_e2e_menuitem.set_active(isactive) + # If we don't have resource, we can't do file transfer # in transports, contact holds our info we need to disable it too if self.TYPE_ID == message_control.TYPE_PM and self.gc_contact.jid and \ @@ -1560,7 +1673,12 @@ class ChatControl(ChatControlBase): send_file_menuitem.set_sensitive(True) else: send_file_menuitem.set_sensitive(False) - + + # check if it's possible to convert to groupchat + if gajim.get_transport_name_from_jid(jid) or \ + gajim.connections[self.account].is_zeroconf: + convert_to_gc_menuitem.set_sensitive(False) + # add_to_roster_menuitem if _('Not in Roster') in contact.groups: add_to_roster_menuitem.show() @@ -1568,8 +1686,7 @@ class ChatControl(ChatControlBase): else: add_to_roster_menuitem.hide() add_to_roster_menuitem.set_no_show_all(True) - - + # connect signals id = history_menuitem.connect('activate', self._on_history_menuitem_activate) @@ -1582,13 +1699,27 @@ class ChatControl(ChatControlBase): self.handlers[id] = add_to_roster_menuitem id = toggle_gpg_menuitem.connect('activate', self._on_toggle_gpg_menuitem_activate) + id = toggle_e2e_menuitem.connect('activate', + self._on_toggle_e2e_menuitem_activate) self.handlers[id] = toggle_gpg_menuitem id = information_menuitem.connect('activate', self._on_contact_information_menuitem_activate) self.handlers[id] = information_menuitem - menu.connect('selection-done', lambda w:w.destroy()) + id = convert_to_gc_menuitem.connect('activate', + self._on_convert_to_gc_menuitem_activate) + self.handlers[id] = convert_to_gc_menuitem + menu.connect('selection-done', self.destroy_menu, history_menuitem, + information_menuitem) return menu + def destroy_menu(self, menu, history_menuitem, information_menuitem): + # destroy accelerators + ag = gtk.accel_groups_from_object(self.parent_win.window)[0] + history_menuitem.remove_accelerator(ag, gtk.keysyms.h, gtk.gdk.CONTROL_MASK) + information_menuitem.remove_accelerator(ag, gtk.keysyms.i, gtk.gdk.CONTROL_MASK) + # destroy menu + menu.destroy() + def send_chatstate(self, state, contact = None): ''' sends OUR chatstate as STANDLONE chat state message (eg. no body) to contact only if new chatstate is different from the previous one @@ -1766,15 +1897,14 @@ class ChatControl(ChatControlBase): def _on_drag_data_received(self, widget, context, x, y, selection, target_type, timestamp): - # If no resource is known, we can't send a file + if not selection.data: + return if self.TYPE_ID == message_control.TYPE_PM: c = self.gc_contact else: c = self.contact - if not c.resource: - return if target_type == self.TARGET_TYPE_URI_LIST: - if not selection.data: + if not c.resource: # If no resource is known, we can't send a file return uri = selection.data.strip() uri_splitted = uri.split() # we may have more than one file dropped @@ -1783,6 +1913,26 @@ class ChatControl(ChatControlBase): if os.path.isfile(path): # is it file? ft = gajim.interface.instances['file_transfers'] ft.send_file(self.account, c, path) + return + + # chat2muc + treeview = gajim.interface.roster.tree + model = treeview.get_model() + data = selection.data + path = treeview.get_selection().get_selected_rows()[1][0] + iter = model.get_iter(path) + type = model[iter][2] + account = model[iter][4].decode('utf-8') + if type != 'contact': # source is not a contact + return + dropped_jid = data.decode('utf-8') + + dropped_transport = gajim.get_transport_name_from_jid(dropped_jid) + c_transport = gajim.get_transport_name_from_jid(c.jid) + if dropped_transport or c_transport: + return # transport contacts cannot be invited + + dialogs.TransformChatToMUC(self.account, [c.jid], [dropped_jid]) def _on_message_tv_buffer_changed(self, textbuffer): self.kbd_activity_in_last_5_secs = True @@ -1850,12 +2000,16 @@ class ChatControl(ChatControlBase): def read_queue(self): '''read queue and print messages containted in it''' + jid = self.contact.jid jid_with_resource = jid if self.resource: jid_with_resource += '/' + self.resource events = gajim.events.get_events(self.account, jid_with_resource) + if hasattr(self, 'session') and self.session and self.session.enable_encryption: + self.print_esession_details() + # Is it a pm ? is_pm = False room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) @@ -1877,6 +2031,9 @@ class ChatControl(ChatControlBase): encrypted = data[4], subject = data[1], xhtml = data[7]) if len(data) > 6 and isinstance(data[6], int): message_ids.append(data[6]) + + if len(data) > 8: + self.set_session(data[8]) if message_ids: gajim.logger.set_read_messages(message_ids) gajim.events.remove_events(self.account, jid_with_resource, @@ -1943,6 +2100,8 @@ class ChatControl(ChatControlBase): # so this line adds that window.set_events(gtk.gdk.POINTER_MOTION_MASK) window.set_app_paintable(True) + if gtk.gtk_version >= (2, 10, 0) and gtk.pygtk_version >= (2, 10, 0): + window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLTIP) window.realize() window.window.set_back_pixmap(pixmap, False) # make it transparent @@ -2000,6 +2159,31 @@ class ChatControl(ChatControlBase): tb = self.xml.get_widget('gpg_togglebutton') tb.set_active(not tb.get_active()) + def _on_convert_to_gc_menuitem_activate(self, widget): + '''user want to invite some friends to chat''' + dialogs.TransformChatToMUC(self.account, [self.contact.jid]) + + def _on_toggle_e2e_menuitem_activate(self, widget): + if self.session and self.session.enable_encryption: + self.session.terminate_e2e() + + self.print_esession_details() + + jid = str(self.session.jid) + + gajim.connections[self.account].delete_session(jid, + self.session.thread_id) + + self.set_session(gajim.connections[self.account].make_new_session(jid)) + else: + if not self.session: + fjid = self.contact.get_full_jid() + new_sess = gajim.connections[self.account].make_new_session(fjid) + self.set_session(new_sess) + + # XXX decide whether to use 4 or 3 message negotiation + self.session.negotiate_e2e(False) + def got_connected(self): ChatControlBase.got_connected(self) # Refreshing contact diff --git a/src/common/GnuPG.py b/src/common/GnuPG.py index 7d1a88e560..8870b6bd3f 100644 --- a/src/common/GnuPG.py +++ b/src/common/GnuPG.py @@ -1,27 +1,32 @@ ## common/GnuPG.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os from os import tmpfile @@ -87,19 +92,36 @@ else: return str, 'GnuPG not usable' self.options.recipients = recipients # a list! - proc = self.run(['--encrypt'], create_fhs=['stdin', 'stdout', + proc = self.run(['--encrypt'], create_fhs=['stdin', 'stdout', 'status', 'stderr']) proc.handles['stdin'].write(str) - proc.handles['stdin'].close() + try: + proc.handles['stdin'].close() + except IOError: + pass output = proc.handles['stdout'].read() - proc.handles['stdout'].close() + try: + proc.handles['stdout'].close() + except IOError: + pass + + stat = proc.handles['status'] + resp = self._read_response(stat) + try: + proc.handles['status'].close() + except IOError: + pass error = proc.handles['stderr'].read() proc.handles['stderr'].close() try: proc.wait() except IOError: pass + if 'BEGIN_ENCRYPTION' in resp and 'END_ENCRYPTION' in resp: + # Encryption succeeded, even if there is output on stderr. Maybe + # verbose is on + error = '' return self._stripHeaderFooter(output), error def decrypt(self, str, keyID): diff --git a/src/common/GnuPGInterface.py b/src/common/GnuPGInterface.py index 46fca86aac..b86786bb17 100644 --- a/src/common/GnuPGInterface.py +++ b/src/common/GnuPGInterface.py @@ -213,6 +213,9 @@ 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 General Public License +## along with Gajim. If not, see <http://www.gnu.org/licenses/>. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software diff --git a/src/common/caps.py b/src/common/caps.py index 49179db648..080c285034 100644 --- a/src/common/caps.py +++ b/src/common/caps.py @@ -1,15 +1,20 @@ ## ## Copyright (C) 2006 Gajim Team ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## from itertools import * import xmpp @@ -244,7 +249,7 @@ class ConnectionCaps(object): if not contact: return if not contact.caps_node: return # we didn't asked for that? if not node.startswith(contact.caps_node+'#'): return - node, ext = node.split('#') + node, ext = node.split('#', 1) if ext==contact.caps_ver: # this can be also version (like '0.9') exts=None else: diff --git a/src/common/check_paths.py b/src/common/check_paths.py index b7f06046d9..aba84008ca 100644 --- a/src/common/check_paths.py +++ b/src/common/check_paths.py @@ -1,17 +1,22 @@ ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005-2006 Travis Shirk <travis@pobox.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import sys @@ -122,7 +127,7 @@ def check_and_possibly_create_paths(): print _('%s is a directory but should be a file') % LOG_DB_PATH print _('Gajim will now exit') sys.exit() - + else: # dot_gajim doesn't exist if dot_gajim: # is '' on win9x so avoid that create_path(dot_gajim) diff --git a/src/common/commands.py b/src/common/commands.py index 8020958730..2e4ad6e25f 100644 --- a/src/common/commands.py +++ b/src/common/commands.py @@ -1,15 +1,20 @@ ## ## Copyright (C) 2006 Gajim Team ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import xmpp import helpers @@ -162,7 +167,7 @@ def find_current_groupchats(account): class LeaveGroupchatsCommand(AdHocCommand): commandnode = 'leave-groupchats' - commandname = 'Leave Groupchats' + commandname = _('Leave Groupchats') @staticmethod def isVisibleFor(samejid): @@ -288,6 +293,8 @@ class ConnectionCommands: iq = iq_obj.buildReply('result') jid = helpers.get_full_jid_from_iq(iq_obj) q = iq.getTag('query') + # buildReply don't copy the node attribute. Re-add it + q.setAttr('node', xmpp.NS_COMMANDS) for node, cmd in self.__commands.iteritems(): if cmd.isVisibleFor(self.isSameJID(jid)): @@ -299,8 +306,8 @@ class ConnectionCommands: self.connection.send(iq) - def commandQuery(self, con, iq_obj): - ''' Send disco result for query for command (JEP-0050, example 6.). + def commandInfoQuery(self, con, iq_obj): + ''' Send disco#info result for query for command (JEP-0050, example 6.). Return True if the result was sent, False if not. ''' jid = helpers.get_full_jid_from_iq(iq_obj) node = iq_obj.getTagAttr('query', 'node') @@ -323,6 +330,22 @@ class ConnectionCommands: return False + def commandItemsQuery(self, con, iq_obj): + ''' Send disco#items result for query for command. + Return True if the result was sent, False if not. ''' + jid = helpers.get_full_jid_from_iq(iq_obj) + node = iq_obj.getTagAttr('query', 'node') + + if node not in self.__commands: return False + + cmd = self.__commands[node] + if cmd.isVisibleFor(self.isSameJID(jid)): + iq = iq_obj.buildReply('result') + self.connection.send(iq) + return True + + return False + def _CommandExecuteCB(self, con, iq_obj): jid = helpers.get_full_jid_from_iq(iq_obj) diff --git a/src/common/config.py b/src/common/config.py index 5f5a8d29bc..1570059ade 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -1,25 +1,32 @@ ## common/config.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2004-2005 Vincent Hanquez <tab@snarc.org> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> -## Copyright (C) 2005 Travis Shirk <travis@pobox.com> -## Copyright (C) 2005 Norman Rasmussen <norman@rasmussen.co.za> +## Travis Shirk <travis@pobox.com> +## Norman Rasmussen <norman@rasmussen.co.za> ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> ## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> +## Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## +import sys import re import copy import defs @@ -44,6 +51,16 @@ opt_treat_incoming_messages = ['', 'chat', 'normal'] class Config: DEFAULT_ICONSET = 'dcraven' + if sys.platform == 'darwin': + DEFAULT_OPENWITH = 'open' + DEFAULT_BROWSER = 'open -a Safari' + DEFAULT_MAILAPP = 'open -a Mail' + DEFAULT_FILE_MANAGER = 'open -a Finder' + else: + DEFAULT_OPENWITH = 'gnome-open' + DEFAULT_BROWSER = 'firefox' + DEFAULT_MAILAPP = 'mozilla-thunderbird -compose' + DEFAULT_FILE_MANAGER = 'xffm' __options = { # name: [ type, default_value, help_string ] @@ -102,10 +119,10 @@ class Config: 'sounds_on': [ opt_bool, True ], # 'aplay', 'play', 'esdplay', 'artsplay' detected first time only 'soundplayer': [ opt_str, '' ], - 'openwith': [ opt_str, 'gnome-open' ], - 'custombrowser': [ opt_str, 'firefox' ], - 'custommailapp': [ opt_str, 'mozilla-thunderbird -compose' ], - 'custom_file_manager': [ opt_str, 'xffm' ], + 'openwith': [ opt_str, DEFAULT_OPENWITH ], + 'custombrowser': [ opt_str, DEFAULT_BROWSER ], + 'custommailapp': [ opt_str, DEFAULT_MAILAPP ], + 'custom_file_manager': [ opt_str, DEFAULT_FILE_MANAGER ], '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.')], @@ -127,7 +144,7 @@ class Config: 'single-msg-height': [opt_int, 280], 'roster_x-position': [ opt_int, 0 ], 'roster_y-position': [ opt_int, 0 ], - 'roster_width': [ opt_int, 150 ], + 'roster_width': [ opt_int, 200 ], 'roster_height': [ opt_int, 400 ], 'latest_disco_addresses': [ opt_str, '' ], 'recently_groupchat': [ opt_str, '' ], @@ -136,9 +153,10 @@ class Config: 'after_nickname': [ opt_str, ':', _('Characters that are printed after the nickname in conversations') ], 'send_os_info': [ opt_bool, True ], 'set_status_msg_from_current_music_track': [ opt_bool, False ], + 'set_status_msg_from_lastfm': [ opt_bool, False, _('If checked, Gajim can regularly poll a Last.fm account and adjust the status message to reflect recently played songs. set_status_msg_from_current_music_track option must be False.') ], + 'lastfm_username': [ opt_str, '', _('The username used to identify the Last.fm account.')], '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?')], 'restore_lines': [opt_int, 4, _('How many lines to remember from previous conversation when a chat tab/window is reopened.')], @@ -175,6 +193,8 @@ class Config: 'tabs_always_visible': [opt_bool, False, _('Show tab when only one conversation?')], 'tabs_border': [opt_bool, False, _('Show tabbed notebook border in chat windows?')], 'tabs_close_button': [opt_bool, True, _('Show close button in tab?')], + 'log_encrypted_sessions': [opt_bool, False, _('When negotiating an encrypted session, should Gajim assume you want your messages to be logged?')], + 'e2e_public_key': [opt_bool, False, _('When negotiating an encrypted session, should Gajim prefer to use public keys for identification?')], 'chat_avatar_width': [opt_int, 52], 'chat_avatar_height': [opt_int, 52], 'roster_avatar_width': [opt_int, 32], @@ -218,6 +238,7 @@ class Config: 'hide_groupchat_occupants_list': [opt_bool, False, _('Hides the group chat occupants list in group chat window.')], 'chat_merge_consecutive_nickname': [opt_bool, False, _('In a chat, show the nickname at the beginning of a line only when it\'s not the same person talking than in previous message.')], 'chat_merge_consecutive_nickname_indent': [opt_str, ' ', _('Indentation when using merge consecutive nickname.')], + 'use_smooth_scrolling': [opt_bool, True, _('Smooth scroll message in conversation window')], 'gc_nicknames_colors': [ opt_str, '#a34526:#c000ff:#0012ff:#388a99:#045723:#7c7c7c:#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.')], 'confirm_metacontacts': [ opt_str, '', _('Should we show the confirm metacontacts creation dialog or not? Empty string means we never show the dialog.')], @@ -235,6 +256,8 @@ class Config: 'subscribe_mood': [opt_bool, True], 'subscribe_activity': [opt_bool, True], 'subscribe_tune': [opt_bool, True], + 'attach_notifications_to_systray': [opt_bool, False, _('If True, notification windows from notification-daemon will be attached to systray icon.')], + 'use_pep': [opt_bool, False, 'temporary variable to enable pep support'], } __options_per_key = { @@ -257,14 +280,14 @@ class Config: 'active': [ opt_bool, True], 'proxy': [ opt_str, '', '', True ], 'keyid': [ opt_str, '', '', True ], + 'gpg_sign_presence': [ opt_bool, True, _('If disabled, don\'t sign presences with GPG key, even if GPG is configured.') ], 'keyname': [ opt_str, '', '', True ], 'usessl': [ opt_bool, False, '', True ], + 'ssl_fingerprint_sha1': [ opt_str, '', '', True ], 'use_srv': [ opt_bool, True, '', True ], 'use_custom_host': [ opt_bool, False, '', True ], 'custom_port': [ opt_int, 5222, '', True ], 'custom_host': [ opt_str, '', '', True ], - 'savegpgpass': [ opt_bool, False, '', True ], - 'gpgpassword': [ opt_str, '' ], 'sync_with_global_status': [ opt_bool, False, ], 'no_log_for': [ opt_str, '' ], 'minimized_gc': [ opt_str, '' ], diff --git a/src/common/configpaths.py b/src/common/configpaths.py index da41fb8d71..516d849ef3 100644 --- a/src/common/configpaths.py +++ b/src/common/configpaths.py @@ -79,9 +79,9 @@ class ConfigPaths: # LOG is deprecated k = ( 'LOG', 'LOG_DB', 'VCARD', 'AVATAR', 'MY_EMOTS', - 'MY_ICONSETS' ) + 'MY_ICONSETS', 'MY_CACERTS') v = (u'logs', u'logs.db', u'vcards', u'avatars', u'emoticons', - u'iconsets') + u'iconsets', u'cacerts.pem') if os.name == 'nt': v = map(lambda x: x.capitalize(), v) @@ -102,16 +102,19 @@ class ConfigPaths: # for k, v in paths.iteritems(): # print "%s: %s" % (repr(k), repr(v)) - def init_profile(self, profile): + def init_profile(self, profile = ''): conffile = windowsify(u'config') pidfile = windowsify(u'gajim') + secretsfile = windowsify(u'secrets') if len(profile) > 0: conffile += u'.' + profile pidfile += u'.' + profile + secretsfile += u'.' + profile pidfile += u'.pid' self.add_from_root('CONFIG_FILE', conffile) self.add_from_root('PID_FILE', pidfile) + self.add_from_root('SECRETS_FILE', secretsfile) # for k, v in paths.iteritems(): # print "%s: %s" % (repr(k), repr(v)) diff --git a/src/common/connection.py b/src/common/connection.py index 393a7d741c..91c89f2209 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -2,26 +2,34 @@ ## ## ## Copyright (C) 2003-2004 Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> -## Copyright (C) 2005-2006 Dimitur Kirov <dkirov@gmail.com> -## Copyright (C) 2005-2006 Travis Shirk <travis@pobox.com> +## Dimitur Kirov <dkirov@gmail.com> +## Travis Shirk <travis@pobox.com> ## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> +## Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import random import socket +import time + try: randomsource = random.SystemRandom() except: @@ -50,39 +58,39 @@ log = logging.getLogger('gajim.c.connection') import gtkgui_helpers -ssl_error = { -2: "Unable to get issuer certificate", -3: "Unable to get certificate CRL", -4: "Unable to decrypt certificate's signature", -5: "Unable to decrypt CRL's signature", -6: "Unable to decode issuer public key", -7: "Certificate signature failure", -8: "CRL signature failure", -9: "Certificate is not yet valid", -10: "Certificate has expired", -11: "CRL is not yet valid", -12: "CRL has expired", -13: "Format error in certificate's notBefore field", -14: "Format error in certificate's notAfter field", -15: "Format error in CRL's lastUpdate field", -16: "Format error in CRL's nextUpdate field", -17: "Out of memory", -18: "Self signed certificate in certificate chain", -19: "Unable to get local issuer certificate", -20: "Unable to verify the first certificate", -21: "Unable to verify the first certificate", -22: "Certificate chain too long", -23: "Certificate revoked", -24: "Invalid CA certificate", -25: "Path length constraint exceeded", -26: "Unsupported certificate purpose", -27: "Certificate not trusted", -28: "Certificate rejected", -29: "Subject issuer mismatch", -30: "Authority and subject key identifier mismatch", -31: "Authority and issuer serial number mismatch", -32: "Key usage does not include certificate signing", -50: "Application verification failure" +ssl_error = { +2: _("Unable to get issuer certificate"), +3: _("Unable to get certificate CRL"), +4: _("Unable to decrypt certificate's signature"), +5: _("Unable to decrypt CRL's signature"), +6: _("Unable to decode issuer public key"), +7: _("Certificate signature failure"), +8: _("CRL signature failure"), +9: _("Certificate is not yet valid"), +10: _("Certificate has expired"), +11: _("CRL is not yet valid"), +12: _("CRL has expired"), +13: _("Format error in certificate's notBefore field"), +14: _("Format error in certificate's notAfter field"), +15: _("Format error in CRL's lastUpdate field"), +16: _("Format error in CRL's nextUpdate field"), +17: _("Out of memory"), +18: _("Self signed certificate in certificate chain"), +19: _("Unable to get local issuer certificate"), +20: _("Unable to verify the first certificate"), +21: _("Unable to verify the first certificate"), +22: _("Certificate chain too long"), +23: _("Certificate revoked"), +24: _("Invalid CA certificate"), +25: _("Path length constraint exceeded"), +26: _("Unsupported certificate purpose"), +27: _("Certificate not trusted"), +28: _("Certificate rejected"), +29: _("Subject issuer mismatch"), +30: _("Authority and subject key identifier mismatch"), +31: _("Authority and issuer serial number mismatch"), +32: _("Key usage does not include certificate signing"), +50: _("Application verification failure") } class Connection(ConnectionHandlers): '''Connection class''' @@ -99,6 +107,8 @@ class Connection(ConnectionHandlers): self.last_connection = None # last ClientCommon instance self.is_zeroconf = False self.gpg = None + if USE_GPG: + self.gpg = GnuPG.GnuPG(gajim.config.get('use_gpg_agent')) self.status = '' self.priority = gajim.get_priority(name, 'offline') self.old_show = '' @@ -109,6 +119,7 @@ class Connection(ConnectionHandlers): self.time_to_reconnect = None self.last_time_to_reconnect = None self.new_account_info = None + self.new_account_form = None self.bookmarks = [] self.annotations = {} self.on_purpose = False @@ -117,7 +128,7 @@ class Connection(ConnectionHandlers): self.last_history_line = {} self.password = passwords.get_password(name) self.server_resource = gajim.config.get_per('accounts', name, 'resource') - # All valid resource substitution strings should be added to this hash. + # All valid resource substitution strings should be added to this hash. if self.server_resource: self.server_resource = Template(self.server_resource).safe_substitute({ 'hostname': socket.gethostname() @@ -131,18 +142,13 @@ class Connection(ConnectionHandlers): self.blocked_contacts = [] self.blocked_groups = [] self.pep_supported = False - # Do we continue connection when we get roster (send presence,get vcard...) + # Do we continue connection when we get roster (send presence,get vcard..) self.continue_connect_info = None # To know the groupchat jid associated with a sranza ID. Useful to # request vcard or os info... to a real JID but act as if it comes from # the fake jid self.groupchat_jids = {} # {ID : groupchat_jid} - if USE_GPG: - self.gpg = GnuPG.GnuPG(gajim.config.get('use_gpg_agent')) - gajim.config.set('usegpg', True) - else: - gajim.config.set('usegpg', False) - + self.on_connect_success = None self.on_connect_failure = None self.retrycount = 0 @@ -151,7 +157,7 @@ class Connection(ConnectionHandlers): self.available_transports = {} # list of available transports on this # server {'icq': ['icq.server.com', 'icq2.server.com'], } self.vcard_supported = True - self.metacontacts_supported = True + self.private_storage_supported = True # END __init__ def put_event(self, ev): @@ -171,16 +177,15 @@ class Connection(ConnectionHandlers): self.connected = 1 self.dispatch('STATUS', 'connecting') 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) + self.connect_and_init(self.old_show, self.status, self.gpg != None) else: # reconnect succeeded self.time_to_reconnect = None self.retrycount = 0 - + # We are doing disconnect at so many places, better use one function in all - def disconnect(self, on_purpose = False): + def disconnect(self, on_purpose=False): #FIXME: set the Tune to None before disconnection per account #gajim.interface.roster._music_track_changed(None, None) self.on_purpose = on_purpose @@ -193,7 +198,7 @@ class Connection(ConnectionHandlers): self.connection.disconnect() self.last_connection = None self.connection = None - + def _disconnectedReconnCB(self): '''Called when we are disconnected''' log.debug('disconnectedReconnCB') @@ -202,8 +207,8 @@ class Connection(ConnectionHandlers): # 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.dispatch('STATUS', 'offline') self.disconnect() if gajim.config.get_per('accounts', self.name, 'autoreconnect'): self.connected = -1 @@ -235,7 +240,7 @@ class Connection(ConnectionHandlers): self.disconnect() self.on_purpose = False # END disconenctedReconnCB - + def _connection_lost(self): self.disconnect(on_purpose = False) self.dispatch('STATUS', 'offline') @@ -257,7 +262,63 @@ class Connection(ConnectionHandlers): return is_form = data[2] conf = data[1] - self.dispatch('NEW_ACC_CONNECTED', (conf, is_form)) + if self.new_account_form: + def _on_register_result(result): + if not common.xmpp.isResultNode(result): + self.dispatch('ACC_NOT_OK', (result.getError())) + return + if USE_GPG: + self.gpg = GnuPG.GnuPG(gajim.config.get( + 'use_gpg_agent')) + self.dispatch('ACC_OK', (self.new_account_info)) + self.new_account_info = None + self.new_account_form = None + if self.connection: + self.connection.UnregisterDisconnectHandler( + self._on_new_account) + self.disconnect(on_purpose=True) + # it's the second time we get the form, we have info user + # typed, so send them + if is_form: + #TODO: Check if form has changed + iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to=self._hostname) + iq.setTag('query').addChild(node=self.new_account_form) + self.connection.SendAndCallForResponse(iq, + _on_register_result) + else: + if self.new_account_form.keys().sort() != \ + conf.keys().sort(): + # requested config has changed since first connection + self.dispatch('ACC_NOT_OK', (_( + 'Server %s provided a different registration form')\ + % data[0])) + return + common.xmpp.features_nb.register(self.connection, + self._hostname, self.new_account_form, + _on_register_result) + return + try: + errnum = self.connection.Connection.ssl_errnum + except AttributeError: + errnum = -1 # we don't have an errnum + ssl_msg = '' + if errnum > 0: + if errnum in ssl_error: + ssl_msg = ssl_error[errnum] + else: + ssl_msg = _('Unknown SSL error: %d') % errnum + ssl_cert = '' + if hasattr(self.connection.Connection, 'ssl_cert_pem'): + ssl_cert = self.connection.Connection.ssl_cert_pem + ssl_fingerprint = '' + if hasattr(self.connection.Connection, 'ssl_fingerprint_sha1'): + ssl_fingerprint = \ + self.connection.Connection.ssl_fingerprint_sha1 + self.dispatch('NEW_ACC_CONNECTED', (conf, is_form, ssl_msg, + ssl_cert, ssl_fingerprint)) + self.connection.UnregisterDisconnectHandler( + self._on_new_account) + self.disconnect(on_purpose=True) return if not data[1]: # wrong answer self.dispatch('ERROR', (_('Invalid answer'), @@ -477,7 +538,6 @@ class Connection(ConnectionHandlers): con.RegisterDisconnectHandler(self._disconnectedReconnCB) log.debug(_('Connected to server %s:%s with %s') % (self._current_host['host'], self._current_host['port'], con_type)) - self._register_handlers(con, con_type) name = gajim.config.get_per('accounts', self.name, 'name') hostname = gajim.config.get_per('accounts', self.name, 'hostname') @@ -487,14 +547,31 @@ class Connection(ConnectionHandlers): except AttributeError: errnum = -1 # we don't have an errnum if errnum > 0: - # FIXME: tell the user that the certificat is untrusted, and ask him what to do - try: - log.warning("The authenticity of the "+hostname+" certificate could be unvalid.\nSSL Error: "+ssl_error[errnum]) - except KeyError: - log.warning("Unknown SSL error: %d" % errnum) + text = _('The authenticity of the %s certificate could be invalid.') %\ + hostname + if errnum in ssl_error: + text += _('\nSSL Error: %s') % ssl_error[errnum] + else: + text += _('\nUnknown SSL error: %d') % errnum + self.dispatch('SSL_ERROR', (text, con.Connection.ssl_cert_pem, + con.Connection.ssl_fingerprint_sha1)) + return True + if hasattr(con.Connection, 'ssl_fingerprint_sha1'): + saved_fingerprint = gajim.config.get_per('accounts', self.name, 'ssl_fingerprint_sha1') + if saved_fingerprint: + # Check sha1 fingerprint + if con.Connection.ssl_fingerprint_sha1 != saved_fingerprint: + self.dispatch('FINGERPRINT_ERROR', + (con.Connection.ssl_fingerprint_sha1,)) + return True + self._register_handlers(con, con_type) con.auth(name, self.password, self.server_resource, 1, self.__on_auth) - return True + + def ssl_certificate_accepted(self): + name = gajim.config.get_per('accounts', self.name, 'name') + self._register_handlers(self.connection, 'ssl') + self.connection.auth(name, self.password, self.server_resource, 1, self.__on_auth) def _register_handlers(self, con, con_type): self.peerhost = con.get_peerhost() @@ -528,13 +605,13 @@ class Connection(ConnectionHandlers): 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 + # Forget password, it's wrong + 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, + 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) @@ -543,8 +620,8 @@ class Connection(ConnectionHandlers): def quit(self, kill_core): if kill_core and gajim.account_is_connected(self.name): - self.disconnect(on_purpose = True) - + self.disconnect(on_purpose=True) + def get_privacy_lists(self): if not self.connection: return @@ -570,7 +647,7 @@ class Connection(ConnectionHandlers): if not self.connection: return common.xmpp.features_nb.getActiveAndDefaultPrivacyLists(self.connection) - + def del_privacy_list(self, privacy_list): if not self.connection: return @@ -584,17 +661,17 @@ class Connection(ConnectionHandlers): 'again.') % privacy_list)) common.xmpp.features_nb.delPrivacyList(self.connection, privacy_list, _on_del_privacy_list_result) - + 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 @@ -604,7 +681,7 @@ class Connection(ConnectionHandlers): 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 = '') @@ -657,7 +734,7 @@ class Connection(ConnectionHandlers): #Get bookmarks from private namespace self.get_bookmarks() - + #Get annotations self.get_annotations() @@ -665,29 +742,37 @@ class Connection(ConnectionHandlers): self.dispatch('SIGNED_IN', ()) def test_gpg_passphrase(self, password): + if not self.gpg: + return False 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): + def get_signed_presence(self, msg, callback = None): + if gajim.config.get_per('accounts', self.name, 'gpg_sign_presence'): + return self.get_signed_msg(msg, callback) + return '' + + def get_signed_msg(self, msg, callback = None): + '''returns the signed message if possible + or an empty string if gpg is not used + or None if waiting for passphrase. + callback is the function to call when user give the passphrase''' signed = '' keyID = gajim.config.get_per('accounts', self.name, 'keyid') - if keyID and USE_GPG: + if keyID and self.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: + if 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: + return None + if self.gpg.passphrase is not None or use_gpg_agent: signed = self.gpg.sign(msg, keyID) if signed == 'BAD_PASSPHRASE': + self.gpg = None signed = '' - if self.connected < 2: - self.dispatch('BAD_PASSPHRASE', ()) + self.dispatch('BAD_PASSPHRASE', ()) return signed def connect_and_auth(self): @@ -695,21 +780,22 @@ class Connection(ConnectionHandlers): self.on_connect_failure = self._connect_failure self.connect() - def connect_and_init(self, show, msg, signed): - self.continue_connect_info = [show, msg, signed] + def connect_and_init(self, show, msg, sign_msg): + self.continue_connect_info = [show, msg, sign_msg] 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) - 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) + if not self.connection: + return + self.connection.set_send_timeout(self.keepalives, self.send_keepalive) + self.connection.onreceive(None) + 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 send_custom_status(self, show, msg, jid): if not show in STATUS_LIST: @@ -726,7 +812,7 @@ class Connection(ConnectionHandlers): if msg: p.setStatus(msg) else: - signed = self.get_signed_msg(msg) + signed = self.get_signed_presence(msg) priority = unicode(gajim.get_priority(self.name, sshow)) p = common.xmpp.Presence(typ = None, priority = priority, show = sshow, to = jid) @@ -744,15 +830,15 @@ class Connection(ConnectionHandlers): if not msg: msg = '' keyID = gajim.config.get_per('accounts', self.name, 'keyid') - signed = '' + sign_msg = False if not auto and not show == 'offline': - signed = self.get_signed_msg(msg) + sign_msg = True 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.on_purpose = False self.server_resource = gajim.config.get_per('accounts', self.name, 'resource') # All valid resource substitution strings should be added to this hash. @@ -761,7 +847,9 @@ class Connection(ConnectionHandlers): safe_substitute({ 'hostname': socket.gethostname() }) - self.connect_and_init(show, msg, signed) + if USE_GPG: + self.gpg = GnuPG.GnuPG(gajim.config.get('use_gpg_agent')) + self.connect_and_init(show, msg, sign_msg) elif show == 'offline': self.connected = 0 @@ -785,6 +873,7 @@ class Connection(ConnectionHandlers): was_invisible = self.connected == STATUS_LIST.index('invisible') self.connected = STATUS_LIST.index(show) if show == 'invisible': + signed = self.get_signed_presence(msg) self.send_invisible_presence(msg, signed) return if was_invisible and self.privacy_rules_supported: @@ -796,6 +885,7 @@ class Connection(ConnectionHandlers): p = self.add_sha(p) if msg: p.setStatus(msg) + signed = self.get_signed_presence(msg) if signed: p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) if self.connection: @@ -820,21 +910,21 @@ class Connection(ConnectionHandlers): self.connection.send(msg_iq) - def send_message(self, jid, msg, keyID, type = 'chat', subject='', - chatstate = None, msg_id = None, composing_xep = None, resource = None, - user_nick = None, xhtml = None, forward_from = None): + def send_message(self, jid, msg, keyID, type='chat', subject='', + chatstate=None, msg_id=None, composing_xep=None, resource=None, + user_nick=None, xhtml=None, session=None, forward_from=None, form_node=None): if not self.connection: return 1 if msg and not xhtml and gajim.config.get('rst_formatting_outgoing_messages'): xhtml = create_xhtml(msg) - if not msg and chatstate is None: + if not msg and chatstate is None and form_node is None: return 2 fjid = jid if resource: fjid += '/' + resource msgtxt = msg msgenc = '' - if keyID and USE_GPG: + if keyID and self.gpg: #encrypt msgenc, error = self.gpg.encrypt(msg, [keyID]) if msgenc and not error: @@ -866,12 +956,15 @@ class Connection(ConnectionHandlers): if msgenc: msg_iq.setTag(common.xmpp.NS_ENCRYPTED + ' x').setData(msgenc) + if form_node: + msg_iq.addChild(node=form_node) + # 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 + # chatstates - if peer supports xep85 or xep22, send chatstates # please note that the only valid tag inside a message containing a <body> # tag is the active event if chatstate is not None: @@ -888,16 +981,25 @@ class Connection(ConnectionHandlers): 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') + if chatstate is 'composing' or msgtxt: + chatstate_node.addChild(name = 'composing') if forward_from: addresses = msg_iq.addChild('addresses', namespace=common.xmpp.NS_ADDRESS) addresses.addChild('address', attrs = {'type': 'ofrom', 'jid': forward_from}) + if session: + # XEP-0201 + session.last_send = time.time() + msg_iq.setThread(session.thread_id) + + # XEP-0200 + if session.enable_encryption: + msg_iq = session.encrypt_stanza(msg_iq) + self.connection.send(msg_iq) - if not forward_from: + if not forward_from and session.is_loggable(): no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for')\ .split() ji = gajim.get_jid_without_resource(jid) @@ -914,14 +1016,14 @@ class Connection(ConnectionHandlers): gajim.logger.write(kind, jid, log_msg) except exceptions.PysqliteOperationalError, e: self.dispatch('ERROR', (_('Disk Write Error'), str(e))) - self.dispatch('MSGSENT', (jid, msg, keyID)) - + 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 @@ -1007,21 +1109,6 @@ class Connection(ConnectionHandlers): groups = groups) def send_new_account_infos(self, form, is_form): - def _on_register_result(result): - if not common.xmpp.isResultNode(result): - self.dispatch('ACC_NOT_OK', (result.getError())) - return - if USE_GPG: - self.gpg = GnuPG.GnuPG(gajim.config.get('use_gpg_agent')) - 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 - if self.connection: - self.connection.UnregisterDisconnectHandler(self._on_new_account) - self.disconnect(on_purpose=True) if is_form: # Get username and password and put them in new_account_info for field in self._data_form.iter_fields(): @@ -1029,17 +1116,14 @@ class Connection(ConnectionHandlers): self.new_account_info['name'] = field.value if field.var == 'password': self.new_account_info['password'] = field.value - iq=Iq('set', NS_REGISTER, to = self._hostname) - iq.setTag('query').addChild(node = form) - self.connection.SendAndCallForResponse(iq, _on_register_result) else: # Get username and password and put them in new_account_info if form.has_key('username'): self.new_account_info['name'] = form['username'] if form.has_key('password'): self.new_account_info['password'] = form['password'] - common.xmpp.features_nb.register(self.connection, self._hostname, - form, _on_register_result) + self.new_account_form = form + self.new_account(self.name, self.new_account_info) def new_account(self, name, config, sync = False): # If a connection already exist we cannot create a new account @@ -1204,6 +1288,20 @@ class Connection(ConnectionHandlers): p = self.add_sha(p, ptype != 'unavailable') self.connection.send(p) + def check_unique_room_id_support(self, server, instance): + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'get', to = server) + iq.setAttr('id', 'unique1') + iq.addChild('unique', namespace=common.xmpp.NS_MUC_UNIQUE) + def _on_response(resp): + if not common.xmpp.isResultNode(resp): + self.dispatch('UNIQUE_ROOM_ID_UNSUPPORTED', (server, instance)) + return + self.dispatch('UNIQUE_ROOM_ID_SUPPORTED', (server, instance, + resp.getTag('unique').getData())) + self.connection.SendAndCallForResponse(iq, _on_response) + def join_gc(self, nick, room_jid, password): # FIXME: This room JID needs to be normalized; see #1364 if not self.connection: @@ -1222,10 +1320,15 @@ class Connection(ConnectionHandlers): self.connection.send(p) # last date/time in history to avoid duplicate - if not self.last_history_line.has_key(room_jid): + if not self.last_history_line.has_key(room_jid): # Not in memory, get it from DB - last_log = gajim.logger.get_last_date_that_has_logs(room_jid, - is_room = True) + last_log = None + no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for')\ + .split() + if self.name not in no_log_for and room_jid not in no_log_for: + # Do not check if we are not logging for this room + 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[room_jid]= last_log @@ -1280,7 +1383,7 @@ class Connection(ConnectionHandlers): # send instantly so when we go offline, status is sent to gc before we # disconnect from jabber server self.connection.send(p) - # Save the time we quit to avoid duplicate logs AND be faster than + # Save the time we quit to avoid duplicate logs AND be faster than # get that date from DB self.last_history_line[jid] = time_time() @@ -1341,7 +1444,7 @@ class Connection(ConnectionHandlers): self.connection.send(iq) def gpg_passphrase(self, passphrase): - if USE_GPG: + if self.gpg: use_gpg_agent = gajim.config.get('use_gpg_agent') if use_gpg_agent: self.gpg.passphrase = None @@ -1349,13 +1452,13 @@ class Connection(ConnectionHandlers): self.gpg.passphrase = passphrase def ask_gpg_keys(self): - if USE_GPG: + if self.gpg: keys = self.gpg.get_keys() return keys return None def ask_gpg_secrete_keys(self): - if USE_GPG: + if self.gpg: keys = self.gpg.get_secret_keys() return keys return None @@ -1390,11 +1493,13 @@ class Connection(ConnectionHandlers): else: _on_unregister_account_connect(self.connection) - def send_invite(self, room, to, reason=''): + def send_invite(self, room, to, reason='', continue_tag=False): '''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 continue_tag: + c.addChild(name = 'continue') if reason != '': c.setTagData('reason', reason) self.connection.send(message) diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 1451da0a80..6423d41544 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -2,20 +2,25 @@ ## Copyright (C) 2006 Gajim Team ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## - Dimitur Kirov <dkirov@gmail.com> ## - Travis Shirk <travis@pobox.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import base64 @@ -24,7 +29,7 @@ import socket import sys from time import (altzone, daylight, gmtime, localtime, mktime, strftime, - time as time_time, timezone, tzname) + time as time_time, timezone, tzname) from calendar import timegm import socks5 @@ -45,6 +50,8 @@ if dbus_support.supported: import dbus from music_track_listener import MusicTrackListener +from common.stanza_session import EncryptedStanzaSession + STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible', 'error'] # kind of events we can wait for an answer @@ -64,8 +71,8 @@ except: class ConnectionBytestream: def __init__(self): self.files_props = {} - - def is_transfer_stoped(self, file_props): + + def is_transfer_stopped(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']: @@ -94,7 +101,7 @@ class ConnectionBytestream: 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): + if self.is_transfer_stopped(file_props): continue receiver_jid = unicode(file_props['receiver']).split('/')[0] if contact.jid == receiver_jid: @@ -182,11 +189,7 @@ class ConnectionBytestream: ft_add_hosts_to_send = map(lambda e:e.strip(), ft_add_hosts_to_send.split(',')) for ft_host in ft_add_hosts_to_send: - try: - ft_host = socket.gethostbyname(ft_host) - ft_add_hosts.append(ft_host) - except socket.gaierror: - self.dispatch('ERROR', (_('Wrong host'), _('The host %s you configured as the ft_add_hosts_to_send advanced option is not valid, so ignored.') % ft_host)) + ft_add_hosts.append(ft_host) listener = gajim.socks5queue.start_listener(port, sha_str, self._result_socks5_sid, file_props['sid']) if listener == None: @@ -212,17 +215,16 @@ class ConnectionBytestream: ostreamhost.setAttr('port', unicode(port)) ostreamhost.setAttr('host', ft_host) ostreamhost.setAttr('jid', sender) - for thehost in self.peerhost: - try: - thehost = self.peerhost[0] - streamhost = common.xmpp.Node(tag = 'streamhost') # My IP - query.addChild(node = streamhost) - streamhost.setAttr('port', unicode(port)) - streamhost.setAttr('host', thehost) - streamhost.setAttr('jid', sender) - except socket.gaierror: - self.dispatch('ERROR', (_('Wrong host'), - _('Invalid local address? :-O'))) + try: + thehost = self.peerhost[0] + streamhost = common.xmpp.Node(tag = 'streamhost') # My IP + query.addChild(node = streamhost) + streamhost.setAttr('port', unicode(port)) + streamhost.setAttr('host', thehost) + streamhost.setAttr('jid', sender) + except socket.gaierror: + self.dispatch('ERROR', (_('Wrong host'), + _('Invalid local address? :-O'))) if fast and proxyhosts != [] and gajim.config.get_per('accounts', self.name, 'use_ft_proxies'): @@ -353,7 +355,7 @@ class ConnectionBytestream: iq.setID(auth_id) query = iq.setTag('query') query.setNamespace(common.xmpp.NS_BYTESTREAM) - query.setAttr('sid', proxy['sid']) + query.setAttr('sid', proxy['sid']) activate = query.setTag('activate') activate.setData(file_props['proxy_receiver']) iq.setID(auth_id) @@ -444,7 +446,7 @@ class ConnectionBytestream: gajim.proxy65_manager.resolve_result(frm, query) try: - streamhost = query.getTag('streamhost-used') + streamhost = query.getTag('streamhost-used') except: # this bytestream result is not what we need pass id = real_id[3:] @@ -473,7 +475,10 @@ class ConnectionBytestream: raise common.xmpp.NodeProcessed if real_id[:3] == 'au_': - gajim.socks5queue.send_file(file_props, self.name) + if file.has_key('stopped') and file_props['stopped']: + self.remove_transfer(file_props) + else: + gajim.socks5queue.send_file(file_props, self.name) raise common.xmpp.NodeProcessed proxy = None @@ -495,7 +500,10 @@ class ConnectionBytestream: raise common.xmpp.NodeProcessed else: - gajim.socks5queue.send_file(file_props, self.name) + if file_props.has_key('stopped') and file_props['stopped']: + self.remove_transfer(file_props) + else: + gajim.socks5queue.send_file(file_props, self.name) if file_props.has_key('fast'): fasts = file_props['fast'] if len(fasts) > 0: @@ -657,7 +665,8 @@ class ConnectionDisco: common.xmpp.NS_DISCO, frm = to) iq.setAttr('id', id) query = iq.setTag('query') - query.setAttr('node','http://gajim.org/caps#' + gajim.version) + query.setAttr('node','http://gajim.org/caps#' + gajim.version.split('-', + 1)[0]) for f in (common.xmpp.NS_BYTESTREAM, common.xmpp.NS_SI, \ common.xmpp.NS_FILE, common.xmpp.NS_COMMANDS): feature = common.xmpp.Node('feature') @@ -709,8 +718,10 @@ class ConnectionDisco: def _DiscoverItemsGetCB(self, con, iq_obj): gajim.log.debug('DiscoverItemsGetCB') + if self.commandItemsQuery(con, iq_obj): + raise common.xmpp.NodeProcessed node = iq_obj.getTagAttr('query', 'node') - if node is None: + if node is None: result = iq_obj.buildReply('result') self.connection.send(result) raise common.xmpp.NodeProcessed @@ -723,7 +734,7 @@ class ConnectionDisco: q = iq_obj.getTag('query') node = q.getAttr('node') - if self.commandQuery(con, iq_obj): + if self.commandInfoQuery(con, iq_obj): raise common.xmpp.NodeProcessed else: @@ -736,7 +747,8 @@ class ConnectionDisco: extension = None if node and node.find('#') != -1: extension = node[node.index('#') + 1:] - client_version = 'http://gajim.org/caps#' + gajim.version + client_version = 'http://gajim.org/caps#' + gajim.version.split('-', + 1)[0] if node in (None, client_version): q.addChild('feature', attrs = {'var': common.xmpp.NS_BYTESTREAM}) @@ -745,12 +757,14 @@ class ConnectionDisco: q.addChild('feature', attrs = {'var': common.xmpp.NS_MUC}) q.addChild('feature', attrs = {'var': common.xmpp.NS_COMMANDS}) q.addChild('feature', attrs = {'var': common.xmpp.NS_DISCO_INFO}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_ACTIVITY}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_ACTIVITY + '+notify'}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_TUNE}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_TUNE + '+notify'}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_MOOD}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_MOOD + '+notify'}) + if gajim.config.get('use_pep'): + q.addChild('feature', attrs = {'var': common.xmpp.NS_ACTIVITY}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_ACTIVITY + '+notify'}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_TUNE}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_TUNE + '+notify'}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_MOOD}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_MOOD + '+notify'}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_ESESSION_INIT}) if (node is None or extension == 'cstates') and gajim.config.get('outgoing_chat_state_notifactions') != 'disabled': q.addChild('feature', attrs = {'var': common.xmpp.NS_CHATSTATES}) @@ -792,12 +806,12 @@ class ConnectionDisco: 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'): + 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': + attr['category'] == 'conference' and \ + attr.has_key('type') and attr['type'] == 'text': is_muc = True identities.append(attr) elif i.getName() == 'feature': @@ -868,7 +882,7 @@ class ConnectionVcard: if len(ext): c.setAttr('ext', ' '.join(ext)) - c.setAttr('ver', gajim.version) + c.setAttr('ver', gajim.version.split('-', 1)[0]) return p def node_to_dict(self, node): @@ -1082,6 +1096,10 @@ class ConnectionVcard: tag = meta.getAttr('tag') data = {'jid': jid} order = meta.getAttr('order') + try: + order = int(order) + except: + order = 0 if order != None: data['order'] = order if meta_list.has_key(tag): @@ -1090,7 +1108,8 @@ class ConnectionVcard: meta_list[tag] = [data] self.dispatch('METACONTACTS', meta_list) else: - self.metacontacts_supported = False + if iq_obj.getErrorCode() not in ('403', '406', '404'): + self.private_storage_supported = False # We can now continue connection by requesting the roster self.connection.initRoster() elif self.awaiting_answers[id][0] == PRIVACY_ARRIVED: @@ -1207,7 +1226,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, ConnectionBytestream.__init__(self) ConnectionCommands.__init__(self) ConnectionPubSub.__init__(self) - self.gmail_url=None + self.gmail_url = None # 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 @@ -1216,14 +1235,17 @@ 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 + # keep the latest subscribed event for each jid to prevent loop when we # acknoledge presences self.subscribed_events = {} + + # keep track of sessions this connection has with other JIDs + self.sessions = {} try: idle.init() except: HAS_IDLE = False - + def build_http_auth_answer(self, iq_obj, answer): if answer == 'yes': self.connection.send(iq_obj.buildReply('result')) @@ -1245,6 +1267,33 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, self.dispatch('HTTP_AUTH', (method, url, id, iq_obj, msg)); raise common.xmpp.NodeProcessed + def _FeatureNegCB(self, con, stanza, session): + gajim.log.debug('FeatureNegCB') + feature = stanza.getTag(name='feature', namespace=common.xmpp.NS_FEATURE) + form = common.xmpp.DataForm(node=feature.getTag('x')) + + if form['FORM_TYPE'] == 'urn:xmpp:ssn': + self.dispatch('SESSION_NEG', (stanza.getFrom(), session, form)) + else: + reply = stanza.buildReply() + reply.setType('error') + + reply.addChild(feature) + reply.addChild(node=xmpp.ErrorNode('service-unavailable', typ='cancel')) + + con.send(reply) + + raise common.xmpp.NodeProcessed + + def _InitE2ECB(self, con, stanza, session): + gajim.log.debug('InitE2ECB') + init = stanza.getTag(name='init', namespace=common.xmpp.NS_ESESSION_INIT) + form = common.xmpp.DataForm(node=init.getTag('x')) + + self.dispatch('SESSION_NEG', (stanza.getFrom(), session, form)) + + raise common.xmpp.NodeProcessed + def _ErrorCB(self, con, iq_obj): gajim.log.debug('ErrorCB') if iq_obj.getQueryNS() == common.xmpp.NS_VERSION: @@ -1313,7 +1362,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, if storage_tag: ns = storage_tag.getNamespace() if ns == 'storage:metacontacts': - self.metacontacts_supported = False + self.private_storage_supported = False # Private XML Storage (XEP49) is not supported by server # Continue connecting self.connection.initRoster() @@ -1321,10 +1370,10 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, 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')) + jid = helpers.parse_jid(item.getAttr('jid')) name = item.getAttr('name') - sub = item.getAttr('subscription') - ask = item.getAttr('ask') + sub = item.getAttr('subscription') + ask = item.getAttr('ask') groups = [] for group in item.getTags('group'): groups.append(group.getData()) @@ -1399,7 +1448,8 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, qp = iq_obj.getTag('query') qp.setTagData('utc', strftime('%Y%m%dT%T', gmtime())) qp.setTagData('tz', tzname[daylight]) - qp.setTagData('display', strftime('%c', localtime())) + qp.setTagData('display', helpers.decode_string(strftime('%c', + localtime()))) self.connection.send(iq_obj) raise common.xmpp.NodeProcessed @@ -1407,7 +1457,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, gajim.log.debug('TimeRevisedCB') iq_obj = iq_obj.buildReply('result') qp = iq_obj.setTag('time', - namespace=common.xmpp.NS_TIME_REVISED) + namespace=common.xmpp.NS_TIME_REVISED) qp.setTagData('utc', strftime('%Y-%m-%dT%TZ', gmtime())) zone = -(timezone, altzone)[daylight] / 60 tzo = (zone / 60, abs(zone % 60)) @@ -1460,6 +1510,19 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, def _messageCB(self, con, msg): '''Called when we receive a message''' + frm = helpers.get_full_jid_from_iq(msg) + mtype = msg.getType() + thread_id = msg.getThread() + + if not mtype: + mtype = 'normal' + + if not mtype == 'groupchat': + session = self.get_session(frm, thread_id, mtype) + + if thread_id and not session.received_thread_id: + session.received_thread_id = True + # check if the message is pubsub#event if msg.getTag('event') is not None: self._pubsubEventCB(con, msg) @@ -1469,9 +1532,31 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, common.xmpp.NS_HTTP_AUTH: self._HttpAuthCB(con, msg) return + if msg.getTag('feature') and msg.getTag('feature').namespace == \ + common.xmpp.NS_FEATURE: + if gajim.HAVE_PYCRYPTO: + self._FeatureNegCB(con, msg, session) + return + if msg.getTag('init') and msg.getTag('init').namespace == \ + common.xmpp.NS_ESESSION_INIT: + self._InitE2ECB(con, msg, session) + + encrypted = False + tim = msg.getTimestamp() + tim = helpers.datetime_tuple(tim) + tim = localtime(timegm(tim)) + + e2e_tag = msg.getTag('c', namespace = common.xmpp.NS_STANZA_CRYPTO) + if e2e_tag: + encrypted = True + + try: + msg = session.decrypt_stanza(msg) + except: + self.dispatch('FAILED_DECRYPT', (frm, tim)) + msgtxt = msg.getBody() msghtml = msg.getXHTML() - mtype = msg.getType() subject = msg.getSubject() # if not there, it's None tim = msg.getTimestamp() tim = helpers.datetime_tuple(tim) @@ -1490,7 +1575,6 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, if not no_log_for: no_log_for = '' no_log_for = no_log_for.split() - encrypted = False chatstate = None encTag = msg.getTag('x', namespace = common.xmpp.NS_ENCRYPTED) decmsg = '' @@ -1510,8 +1594,17 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, 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)) + is_continued = False + if xtag.getTag('continue'): + is_continued = True + self.dispatch('GC_INVITATION', (room_jid, frm, '', None, + is_continued)) return + form_node = None + for xtag in xtags: + if xtag.getNamespace() == common.xmpp.NS_DATA: + form_node = xtag + break # chatstates - look for chatstate tags in a message if not delayed if not delayed: composing_xep = False @@ -1537,10 +1630,12 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, 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) + # \x00 chars are not allowed in C (so in GTK) + decmsg = decmsg.replace('\x00', '') if decmsg: msgtxt = decmsg encrypted = True @@ -1549,7 +1644,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, if not error_msg: error_msg = msgtxt msgtxt = None - if self.name not in no_log_for: + if session.is_loggable(): try: gajim.logger.write('error', frm, error_msg, tim = tim, subject = subject) @@ -1565,20 +1660,21 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, if subject != None: self.dispatch('GC_SUBJECT', (frm, subject, msgtxt, has_timestamp)) else: + statusCode = msg.getStatusCode() if not msg.getTag('body'): #no <body> # It could be a config change. See # http://www.xmpp.org/extensions/xep-0045.html#roomconfig-notify if msg.getTag('x'): - statusCode = msg.getStatusCode() if statusCode != []: self.dispatch('GC_CONFIG_CHANGE', (jid, statusCode)) 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, has_timestamp, msghtml)) - if self.name not in no_log_for and not int(float(mktime(tim)))\ - <= self.last_history_line[jid] and msgtxt: + self.dispatch('GC_MSG', (frm, msgtxt, tim, has_timestamp, msghtml, + statusCode)) + if self.name not in no_log_for and jid not in no_log_for and not \ + int(float(mktime(tim))) <= self.last_history_line[jid] and msgtxt: try: gajim.logger.write('gc_msg', frm, msgtxt, tim = tim) except exceptions.PysqliteOperationalError, e: @@ -1587,8 +1683,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, elif mtype == 'chat': # it's type 'chat' if not msg.getTag('body') and chatstate is None: #no <body> return - if msg.getTag('body') and self.name not in no_log_for and jid not in\ - no_log_for and msgtxt: + if msg.getTag('body') and session.is_loggable() and msgtxt: try: msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, subject = subject) @@ -1601,9 +1696,13 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, reason = item.getTagData('reason') item = invite.getTag('password') password = invite.getTagData('password') - self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) + is_continued = False + if invite.getTag('invite').getTag('continue'): + is_continued = True + self.dispatch('GC_INVITATION',(frm, jid_from, reason, password, + is_continued)) return - if self.name not in no_log_for and jid not in no_log_for and msgtxt: + if session.is_loggable()and msgtxt: try: gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, subject = subject) @@ -1614,9 +1713,87 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, if treat_as: mtype = treat_as self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, - subject, chatstate, msg_id, composing_xep, user_nick, msghtml)) + subject, chatstate, msg_id, composing_xep, user_nick, msghtml, + session, form_node)) # END messageCB + def get_session(self, jid, thread_id, type): + '''returns an existing session between this connection and 'jid', returns a new one if none exist.''' + session = self.find_session(jid, thread_id, type) + + if session: + return session + else: + # it's possible we initiated a session with a bare JID and this is the + # first time we've seen a resource + bare_jid = gajim.get_jid_without_resource(jid) + if bare_jid != jid: + session = self.find_session(bare_jid, thread_id, type) + if session: + if not session.received_thread_id: + thread_id = session.thread_id + + self.move_session(bare_jid, thread_id, jid.split("/")[1]) + return session + + return self.make_new_session(jid, thread_id, type) + + def find_session(self, jid, thread_id, type): + try: + if type == 'chat' and not thread_id: + return self.find_null_session(jid) + else: + return self.sessions[jid][thread_id] + except KeyError: + return None + + def delete_session(self, jid, thread_id): + try: + del self.sessions[jid][thread_id] + + if not self.sessions[jid]: + del self.sessions[jid] + except KeyError: + pass + + def move_session(self, original_jid, thread_id, to_resource): + '''moves a session to another resource.''' + session = self.sessions[original_jid][thread_id] + + del self.sessions[original_jid][thread_id] + + new_jid = gajim.get_jid_without_resource(original_jid) + '/' + to_resource + session.jid = common.xmpp.JID(new_jid) + + if not new_jid in self.sessions: + self.sessions[new_jid] = {} + + self.sessions[new_jid][thread_id] = session + + def find_null_session(self, jid): + '''finds all of the sessions between us and jid that jid hasn't sent a thread_id in yet. + +returns the session that we last sent a message to.''' + + sessions_with_jid = self.sessions[jid].values() + no_threadid_sessions = filter(lambda s: not s.received_thread_id, sessions_with_jid) + + if no_threadid_sessions: + no_threadid_sessions.sort(key=lambda s: s.last_send) + return no_threadid_sessions[-1] + else: + return None + + def make_new_session(self, jid, thread_id = None, type = 'chat'): + sess = EncryptedStanzaSession(self, common.xmpp.JID(jid), thread_id, type) + + if not jid in self.sessions: + self.sessions[jid] = {} + + self.sessions[jid][sess.thread_id] = sess + + return sess + def _pubsubEventCB(self, con, msg): ''' Called when we receive <message/> with pubsub event. ''' # TODO: Logging? (actually services where logging would be useful, should @@ -1663,12 +1840,12 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, 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 + # 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, None)) + _('Nickname not allowed: %s') % resource, None, False, None, [])) return jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) timestamp = None @@ -1722,8 +1899,8 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, except: prio = 0 keyID = '' - if sigTag and GnuPG.USE_GPG: - #verify + if sigTag and self.gpg: + # verify sigmsg = sigTag.getData() keyID = self.gpg.verify(status, sigmsg) @@ -1827,7 +2004,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, else: if not status: status = _('I would like to add you to my roster.') - self.dispatch('SUBSCRIBE', (who, status, user_nick)) + self.dispatch('SUBSCRIBE', (jid_stripped, status, user_nick)) elif ptype == 'subscribed': if jid_stripped in self.automatically_added: self.automatically_added.remove(jid_stripped) @@ -1894,8 +2071,13 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, gajim.logger.write('status', jid_stripped, status, show) except exceptions.PysqliteOperationalError, e: self.dispatch('ERROR', (_('Disk Write Error'), str(e))) - self.dispatch('NOTIFY', (jid_stripped, show, status, resource, prio, - keyID, timestamp, contact_nickname)) + our_jid = gajim.get_jid_from_account(self.name) + if jid_stripped == our_jid and resource == self.server_resource: + # We got our own presence + self.dispatch('STATUS', show) + else: + self.dispatch('NOTIFY', (jid_stripped, show, status, resource, prio, + keyID, timestamp, contact_nickname)) # END presenceCB def _StanzaArrivedCB(self, con, obj): @@ -1993,41 +2175,62 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco, # 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 - 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 = priority, 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.priority = priority - self.dispatch('STATUS', show) - # ask our VCard - self.request_vcard(None) - - # Get bookmarks from private namespace - self.get_bookmarks() - - # Get annotations from private namespace - self.get_annotations() - - #Inform GUI we just signed in - self.dispatch('SIGNED_IN', ()) + sign_msg = self.continue_connect_info[2] + signed = '' + if sign_msg: + signed = self.get_signed_presence(msg, self._send_first_presence) + if signed is None: + self.dispatch('GPG_PASSWORD_REQUIRED', + (self._send_first_presence,)) + # _send_first_presence will be called when user enter passphrase + return + self._send_first_presence(signed) + + def _send_first_presence(self, signed = ''): + show = self.continue_connect_info[0] + msg = self.continue_connect_info[1] + sign_msg = self.continue_connect_info[2] + if sign_msg and not signed: + signed = self.get_signed_presence(msg) + if signed is None: + self.dispatch('ERROR', (_('OpenPGP passphrase was not given'), + #%s is the account name here + _('You will be connected to %s without OpenPGP.') % self.name)) + signed = '' + 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 + priority = gajim.get_priority(self.name, sshow) + our_jid = helpers.parse_jid(gajim.get_jid_from_account(self.name)) + vcard = self.get_cached_vcard(our_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 = priority, 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.priority = priority + self.dispatch('STATUS', show) + # ask our VCard + self.request_vcard(None) + + # Get bookmarks from private namespace + self.get_bookmarks() + + # Get annotations from private namespace + self.get_annotations() + + # Inform GUI we just signed in + self.dispatch('SIGNED_IN', ()) self.continue_connect_info = None def request_gmail_notifications(self): diff --git a/src/common/contacts.py b/src/common/contacts.py index 65fe13fb73..ef02f43dad 100644 --- a/src/common/contacts.py +++ b/src/common/contacts.py @@ -1,20 +1,25 @@ ## common/contacts.py ## -## Copyright (C) 2006 Yann Le Boulanger <asterix@lagaule.org> -## Copyright (C) 2006 Nikos Kouremenos <kourem@gmail.com> +## Copyright (C) 2006 Yann Leboulanger <asterix@lagaule.org> +## Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> -## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> +## Julien Pivotto <roidelapluie@gmail.com> +## Stephan Erb <steve-e@h3c.de> ## +## This file is part of Gajim. ## -## This program is free software; you can redistribute it and/or modify +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import common.gajim @@ -41,9 +46,9 @@ class Contact: # Capabilities; filled by caps.py/ConnectionCaps object # every time it gets these from presence stanzas - self.caps_node=None - self.caps_ver=None - self.caps_exts=None + self.caps_node = None + self.caps_ver = None + self.caps_exts = None # please read jep-85 http://www.jabber.org/jeps/jep-0085.html # we keep track of jep85 support with the peer by three extra states: @@ -206,6 +211,9 @@ class Contacts: if len(self._contacts[account][contact.jid]) == 0: del self._contacts[account][contact.jid] + def clear_contacts(self, account): + self._contacts[account] = {} + def remove_jid(self, account, jid): '''Removes all contacts for a given jid''' if not self._contacts.has_key(account): @@ -281,6 +289,10 @@ class Contacts: for account in accounts: our_jid = common.gajim.get_jid_from_account(account) for jid in self.get_jid_list(account): + if self.has_brother(account, jid) and not \ + self.is_big_brother(account, jid): + # count metacontacts only once + continue if jid == our_jid: continue if common.gajim.jid_is_transport(jid) and not \ @@ -300,6 +312,8 @@ class Contacts: # Transports group if common.gajim.jid_is_transport(jid): contact_groups = [_('Transports')] + if contact.is_observer(): + contact_groups = [_('Observers')] else: contact_groups = [_('General')] for group in groups: @@ -362,7 +376,7 @@ class Contacts: found = data break if found: - self._metacontacts_tags[account][tag].remove(data) + self._metacontacts_tags[account][tag].remove(found) break common.gajim.connections[account].store_metacontacts( self._metacontacts_tags[account]) @@ -374,6 +388,17 @@ class Contacts: return True return False + def is_big_brother(self, account, jid): + tag = self.get_metacontacts_tag(account, jid) + if tag: + family = self.get_metacontacts_family(account, jid) + bb_data = self.get_metacontacts_big_brother(family) + bb_jid = bb_data['jid'] + bb_account = bb_data['account'] + if bb_jid == jid and bb_account == account: + return True + return False + def get_metacontacts_jids(self, tag): '''Returns all jid for the given tag in the form {acct: [jid1, jid2],.}''' answers = {} @@ -399,48 +424,71 @@ class Contacts: answers.append(data) return answers - def _get_data_score(self, data): - '''compute thescore of a gived data - data is {'jid': jid, 'account': account, 'order': order} - order is optional - score = (max_order - order)*10000 + is_jabber*priority*10 + status''' - jid = data['jid'] - account = data['account'] - max_order = 0 - order = 0 - if data.has_key('order'): - order = data['order'] - if order: - family = self.get_metacontacts_family(account, jid) - for data_ in family: - if data_.has_key('order') and data_['order'] > max_order: - max_order = data_['order'] - contact = self.get_contact_with_highest_priority(account, jid) - score = (max_order - order)*10000 - - if common.gajim.get_transport_name_from_jid(jid) is None and \ - contact.show not in ('error', 'offline'): - 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) - if contact.show == 'offline' and contact.status: - # Offline contacts with a status message have highest score - score += 1 - return score + def compare_metacontacts(self, data1, data2): + '''compare 2 metacontacts. + Data is {'jid': jid, 'account': account, 'order': order} + order is optional''' + jid1 = data1['jid'] + jid2 = data2['jid'] + account1 = data1['account'] + account2 = data2['account'] + contact1 = self.get_contact_with_highest_priority(account1, jid1) + contact2 = self.get_contact_with_highest_priority(account2, jid2) + show_list = ['not in roster', 'error', 'offline', 'invisible', 'dnd', + 'xa', 'away', 'chat', 'online', 'requested', 'message'] + # contact can be null when we fill the roster on connection + if not contact1: + show1 = 0 + priority1 = 0 + else: + show1 = show_list.index(contact1.show) + priority1 = contact1.priority + if not contact2: + show2 = 0 + priority2 = 0 + else: + show2 = show_list.index(contact2.show) + priority2 = contact2.priority + # If only one is offline, it's always second + if show1 > 2 and show2 < 3: + return 1 + if show2 > 2 and show1 < 3: + return -1 + if 'order' in data1 and 'order' in data2: + if data1['order'] > data2['order']: + return 1 + if data1['order'] < data2['order']: + return -1 + transport1 = common.gajim.get_transport_name_from_jid(jid1) + transport2 = common.gajim.get_transport_name_from_jid(jid2) + if transport2 and not transport1: + return 1 + if transport1 and not transport2: + return -1 + if priority1 > priority2: + return 1 + if priority2 > priority1: + return -1 + if show1 > show2: + return 1 + if show2 > show1: + return -1 + if jid1 > jid2: + return 1 + if jid2 > jid1: + return -1 + # If all is the same, compare accounts, they can't be the same + if account1 > account2: + return 1 + if account2 > account1: + return -1 + return 0 def get_metacontacts_big_brother(self, family): '''which of the family will be the big brother under wich all others will be ?''' - max_score = 0 - max_data = family[0] - for data in family: - score = self._get_data_score(data) - if score > max_score: - max_score = score - max_data = data - return max_data + family.sort(cmp=self.compare_metacontacts) + return family[-1] def is_pm_from_jid(self, account, jid): '''Returns True if the given jid is a private message jid''' diff --git a/src/common/crypto.py b/src/common/crypto.py new file mode 100644 index 0000000000..190685f11b --- /dev/null +++ b/src/common/crypto.py @@ -0,0 +1,86 @@ +# common crypto functions (mostly specific to XEP-0116, but useful elsewhere) + +import os +import math + +from Crypto.Hash import SHA256 + +# convert a large integer to a big-endian bitstring +def encode_mpi(n): + if n >= 256: + return encode_mpi(n / 256) + chr(n % 256) + else: + return chr(n) + +# convert a large integer to a big-endian bitstring, padded with \x00s to +# a multiple of 16 bytes +def encode_mpi_with_padding(n): + return pad_to_multiple(encode_mpi(n), 16, '\x00', True) + +# pad 'string' to a multiple of 'multiple_of' with 'char'. +# pad on the left if 'left', otherwise pad on the right. +def pad_to_multiple(string, multiple_of, char, left): + mod = len(string) % multiple_of + if mod == 0: + return string + else: + padding = (multiple_of - mod) * char + + if left: + return padding + string + else: + return string + padding + +# convert a big-endian bitstring to an integer +def decode_mpi(s): + if len(s) == 0: + return 0 + else: + return 256 * decode_mpi(s[:-1]) + ord(s[-1]) + +def sha256(string): + sh = SHA256.new() + sh.update(string) + return sh.digest() + +base28_chr = "acdefghikmopqruvwxy123456789" + +def sas_28x5(m_a, form_b): + sha = sha256(m_a + form_b + 'Short Authentication String') + lsb24 = decode_mpi(sha[-3:]) + return base28(lsb24) + +def base28(n): + if n >= 28: + return base28(n / 28) + base28_chr[n % 28] + else: + return base28_chr[n] + +def random_bytes(bytes): + return os.urandom(bytes) + +def generate_nonce(): + return random_bytes(8) + +# generate a random number between 'bottom' and 'top' +def srand(bottom, top): + # minimum number of bytes needed to represent that range + bytes = int(math.ceil(math.log(top - bottom, 256))) + + # in retrospect, this is horribly inadequate. + return (decode_mpi(random_bytes(bytes)) % (top - bottom)) + bottom + +# a faster version of (base ** exp) % mod +# taken from <http://lists.danga.com/pipermail/yadis/2005-September/001445.html> +def powmod(base, exp, mod): + square = base % mod + result = 1 + + while exp > 0: + if exp & 1: # exponent is odd + result = (result * square) % mod + + square = (square * square) % mod + exp /= 2 + + return result diff --git a/src/common/dataforms.py b/src/common/dataforms.py index e46fcbfc25..0b59d7471c 100644 --- a/src/common/dataforms.py +++ b/src/common/dataforms.py @@ -170,7 +170,7 @@ class BooleanField(DataField): v = self.getTagData('value') if v in ('0', 'false'): return False if v in ('1', 'true'): return True - if v is None: return None + if v is None: return False # default value is False raise WrongFieldValue def fset(self, value): self.setTagData('value', value and '1' or '0') diff --git a/src/common/dbus_support.py b/src/common/dbus_support.py index 94b973c5d9..71695036a4 100644 --- a/src/common/dbus_support.py +++ b/src/common/dbus_support.py @@ -1,21 +1,26 @@ ## dbus_support.py ## -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2005 Andrew Sayman <lorien420@myrealbox.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## -import os +import os, sys from common import gajim from common import exceptions @@ -23,10 +28,13 @@ from common import exceptions _GAJIM_ERROR_IFACE = 'org.gajim.dbus.Error' try: + if sys.platform == 'darwin': + import osx.dbus + osx.dbus.load(True) import dbus import dbus.service import dbus.glib - supported = True # does use have D-Bus bindings? + supported = True # does user have D-Bus bindings? except ImportError: supported = False if not os.name == 'nt': # only say that to non Windows users @@ -98,7 +106,7 @@ class SessionBus: session_bus = SessionBus() def get_interface(interface, path): - '''Returns an interface on the current SessionBus. If the interface isn't + '''Returns an interface on the current SessionBus. If the interface isn\'t running, it tries to start it first.''' if not supported: return None diff --git a/src/common/defs.py b/src/common/defs.py index d557e6912e..3f776c43e2 100644 --- a/src/common/defs.py +++ b/src/common/defs.py @@ -2,7 +2,7 @@ docdir = '../' datadir = '../' -version = '0.11.1.5' +version = '0.11.4.0-svn' import sys, os.path for base in ('.', 'common'): diff --git a/src/common/dh.py b/src/common/dh.py new file mode 100644 index 0000000000..8dd73f669a --- /dev/null +++ b/src/common/dh.py @@ -0,0 +1,207 @@ +import string + +# This file defines a number of constants; specifically, large primes suitable for +# use with the Diffie-Hellman key exchange. +# +# These constants have been obtained from RFC2409 and RFC3526. + +generators = [ None, # one to get the right offset + 2, + 2, + None, + None, + 2, + None, + None, + None, + None, + None, + None, + None, + None, + 2, # group 14 + 2, + 2, + 2, + 2, + ] + +hex_primes = [ None, + +# group 1 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 +29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD +EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 +E485B576 625E7EC6 F44C42E9 A63A3620 FFFFFFFF FFFFFFFF''', + +# group 2 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 +29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD +EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 +E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED +EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 +FFFFFFFF FFFFFFFF''', + +# XXX how do I obtain these? +None, +None, + +# group 5 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 +29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD +EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 +E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED +EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D +C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F +83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D +670C354E 4ABC9804 F1746C08 CA237327 FFFFFFFF FFFFFFFF''', + +None, +None, +None, +None, +None, +None, +None, +None, + +# group 14 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 +29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD +EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 +E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED +EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D +C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F +83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D +670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B +E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 +DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 +15728E5A 8AACAA68 FFFFFFFF FFFFFFFF''', + +# group 15 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 +29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD +EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 +E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED +EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D +C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F +83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D +670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B +E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 +DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 +15728E5A 8AAAC42D AD33170D 04507A33 A85521AB DF1CBA64 +ECFB8504 58DBEF0A 8AEA7157 5D060C7D B3970F85 A6E1E4C7 +ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 1AD2EE6B +F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C +BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 +43DB5BFC E0FD108E 4B82D120 A93AD2CA FFFFFFFF FFFFFFFF''', + +# group 16 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 +29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD +EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 +E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED +EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D +C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F +83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D +670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B +E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 +DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 +15728E5A 8AAAC42D AD33170D 04507A33 A85521AB DF1CBA64 +ECFB8504 58DBEF0A 8AEA7157 5D060C7D B3970F85 A6E1E4C7 +ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 1AD2EE6B +F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C +BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 +43DB5BFC E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 +88719A10 BDBA5B26 99C32718 6AF4E23C 1A946834 B6150BDA +2583E9CA 2AD44CE8 DBBBC2DB 04DE8EF9 2E8EFC14 1FBECAA6 +287C5947 4E6BC05D 99B2964F A090C3A2 233BA186 515BE7ED +1F612970 CEE2D7AF B81BDD76 2170481C D0069127 D5B05AA9 +93B4EA98 8D8FDDC1 86FFFB7DC 90A6C08F 4DF435C9 34063199 +FFFFFFFF FFFFFFFF''', + +# group 17 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 +8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B +302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 +A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 +49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 +FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D +670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C +180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718 +3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D +04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D +B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 +1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C +BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC +E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26 +99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB +04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2 +233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127 +D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492 +36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD F8FF9406 +AD9E530E E5DB382F 413001AE B06A53ED 9027D831 179727B0 865A8918 +DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B DB7F1447 E6CC254B 33205151 +2BD7AF42 6FB8F401 378CD2BF 5983CA01 C64B92EC F032EA15 D1721D03 +F482D7CE 6E74FEF6 D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F +BEC7E8F3 23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA +CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 06A1D58B +B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C DA56C9EC 2EF29632 +387FE8D7 6E3C0468 043E8F66 3F4860EE 12BF2D5B 0B7474D6 E694F91E +6DCC4024 FFFFFFFF FFFFFFFF''', + +# group 18 +'''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 +29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD +EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 +E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED +EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D +C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F +83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D +670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B +E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 +DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510 +15728E5A 8AAAC42D AD33170D 04507A33 A85521AB DF1CBA64 +ECFB8504 58DBEF0A 8AEA7157 5D060C7D B3970F85 A6E1E4C7 +ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 1AD2EE6B +F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C +BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 +43DB5BFC E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 +88719A10 BDBA5B26 99C32718 6AF4E23C 1A946834 B6150BDA +2583E9CA 2AD44CE8 DBBBC2DB 04DE8EF9 2E8EFC14 1FBECAA6 +287C5947 4E6BC05D 99B2964F A090C3A2 233BA186 515BE7ED +1F612970 CEE2D7AF B81BDD76 2170481C D0069127 D5B05AA9 +93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492 +36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD +F8FF9406 AD9E530E E5DB382F 413001AE B06A53ED 9027D831 +179727B0 865A8918 DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B +DB7F1447 E6CC254B 33205151 2BD7AF42 6FB8F401 378CD2BF +5983CA01 C64B92EC F032EA15 D1721D03 F482D7CE 6E74FEF6 +D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F BEC7E8F3 +23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA +CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 +06A1D58B B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C +DA56C9EC 2EF29632 387FE8D7 6E3C0468 043E8F66 3F4860EE +12BF2D5B 0B7474D6 E694F91E 6DBE1159 74A3926F 12FEE5E4 +38777CB6 A932DF8C D8BEC4D0 73B931BA 3BC832B6 8D9DD300 +741FA7BF 8AFC47ED 2576F693 6BA42466 3AAB639C 5AE4F568 +3423B474 2BF1C978 238F16CB E39D652D E3FDB8BE FC848AD9 +22222E04 A4037C07 13EB57A8 1A23F0C7 3473FC64 6CEA306B +4BCBC886 2F8385DD FA9D4B7F A2C087E8 79683303 ED5BDD3A +062B3CF5 B3A278A6 6D2A13F8 3F44F82D DF310EE0 74AB6A36 +4597E899 A0255DC1 64F31CC5 0846851D F9AB4819 5DED7EA1 +B1D510BD 7EE74D73 FAF36BC3 1ECFA268 359046F4 EB879F92 +4009438B 481C6CD7 889A002E D5EE382B C9190DA6 FC026E47 +9558E447 5677E9AA 9E3050E2 765694DF C81F56E8 80B96E71 +60C980DD 98EDD3DF FFFFFFFF FFFFFFFF''' +] + +all_ascii = ''.join(map(chr, range(256))) + +def hex_to_decimal(stripee): + if not stripee: + return None + + return int(stripee.translate(all_ascii, string.whitespace), 16) + +primes = map(hex_to_decimal, hex_primes) diff --git a/src/common/events.py b/src/common/events.py index ddb7eef2eb..f676ec7fc4 100644 --- a/src/common/events.py +++ b/src/common/events.py @@ -1,24 +1,30 @@ ## common/events.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## -## Copyright (C) 2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2006 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import time @@ -159,12 +165,22 @@ class Events: return self._get_nb_events(types = types, account = account) def get_events(self, account, jid = None, types = []): - '''if event is not specified, get all events from this jid, + '''returns all events from the given account of the form + {jid1: [], jid2: []} + if jid is given, returns all events from the given jid in a list: [] optionnaly only from given type''' if not self._events.has_key(account): return [] if not jid: - return self._events[account] + events_list = {} # list of events + for jid_ in self._events[account]: + events = [] + for ev in self._events[account][jid_]: + if not types or ev.type_ in types: + events.append(ev) + if events: + events_list[jid_] = events + return events_list if not self._events[account].has_key(jid): return [] events_list = [] # list of events diff --git a/src/common/exceptions.py b/src/common/exceptions.py index 12d674535c..7b19cddc23 100644 --- a/src/common/exceptions.py +++ b/src/common/exceptions.py @@ -1,17 +1,22 @@ ## exceptions.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## class PysqliteNotAvailable(Exception): '''sqlite2 is not installed or python bindings are missing''' @@ -54,8 +59,20 @@ class SessionBusNotPresent(Exception): def __str__(self): return _('Session bus is not available.\nTry reading http://trac.gajim.org/wiki/GajimDBus') +class NegotiationError(Exception): + '''A session negotiation failed''' + pass + +class DecryptionError(Exception): + '''A message couldn't be decrypted into usable XML''' + pass + +class Cancelled(Exception): + '''The user cancelled an operation''' + pass + class GajimGeneralException(Exception): - '''This exception ir our general exception''' + '''This exception is our general exception''' def __init__(self, text=''): Exception.__init__(self) self.text = text diff --git a/src/common/fuzzyclock.py b/src/common/fuzzyclock.py index 50d155af4a..a1ed31e588 100755 --- a/src/common/fuzzyclock.py +++ b/src/common/fuzzyclock.py @@ -2,23 +2,28 @@ ## ## Contributors for this file: ## -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Christoph Neuroth <delmonico@gmx.net> ## ## Copyright (C) 2006 Christoph Neuroth <delmonico@gmx.net> -## Yann Le Boulanger <asterix@lagaule.org> +## Yann Leboulanger <asterix@lagaule.org> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## ''' Python class to show a "fuzzy clock". diff --git a/src/common/gajim.py b/src/common/gajim.py index 09d837c4de..bfc7a555a4 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -1,19 +1,24 @@ ## common/gajim.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005-2006 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2005-2006 Travis Shirk <travis@pobox.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import sys import logging @@ -72,6 +77,7 @@ VCARD_PATH = gajimpaths['VCARD'] AVATAR_PATH = gajimpaths['AVATAR'] MY_EMOTS_PATH = gajimpaths['MY_EMOTS'] MY_ICONSETS_PATH = gajimpaths['MY_ICONSETS'] +MY_CACERTS = gajimpaths['MY_CACERTS'] TMP = gajimpaths['TMP'] DATA_DIR = gajimpaths['DATA'] HOME_DIR = gajimpaths['HOME'] @@ -136,6 +142,18 @@ priority_dict = {} for status in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'): priority_dict[status] = config.get('autopriority' + status) +HAVE_PYCRYPTO = True +try: + import Crypto +except ImportError: + HAVE_PYCRYPTO = False + +HAVE_PYSEXY = True +try: + import sexy +except ImportError: + HAVE_PYSEXY = False + def get_nick_from_jid(jid): pos = jid.find('@') return jid[:pos] diff --git a/src/common/helpers.py b/src/common/helpers.py index c768d10f8e..aed9e52800 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -1,21 +1,26 @@ ## common/helpers.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> -## Copyright (C) 2005 -## Dimitur Kirov <dkirov@gmail.com> +## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> +## Stephan Erb <steve-e@h3c.de> +## +## This file is part of Gajim. ## -## This program is free software; you can redistribute it and/or modify +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import re import locale @@ -25,6 +30,7 @@ import urllib import errno import select import sha +import sys from encodings.punycode import punycode_encode from encodings import idna @@ -34,6 +40,9 @@ from i18n import ngettext from xmpp_stringprep import nodeprep, resourceprep, nameprep +if sys.platform == 'darwin': + from osx import nsapp + try: import winsound # windows-only built-in module for playing wav import win32api @@ -420,6 +429,9 @@ def launch_browser_mailer(kind, uri): command = 'kfmclient exec' elif gajim.config.get('openwith') == 'exo-open': command = 'exo-open' + elif ((sys.platform == 'darwin') and + (gajim.config.get('openwith') == 'open')): + command = 'open' elif gajim.config.get('openwith') == 'custom': if kind == 'url': command = gajim.config.get('custombrowser') @@ -447,6 +459,9 @@ def launch_file_manager(path_to_open): command = 'kfmclient exec' elif gajim.config.get('openwith') == 'exo-open': command = 'exo-open' + elif ((sys.platform == 'darwin') and + (gajim.config.get('openwith') == 'open')): + command = 'open' elif gajim.config.get('openwith') == 'custom': command = gajim.config.get('custom_file_manager') if command == '': # if no app is configured @@ -469,7 +484,9 @@ def play_sound_file(path_to_soundfile): return if path_to_soundfile is None or not os.path.exists(path_to_soundfile): return - if os.name == 'nt': + if sys.platform == 'darwin': + nsapp.playFile(path_to_soundfile) + elif os.name == 'nt': try: winsound.PlaySound(path_to_soundfile, winsound.SND_FILENAME|winsound.SND_ASYNC) @@ -489,7 +506,11 @@ def get_file_path_from_dnd_dropped_uri(uri): if path.startswith('file:\\\\\\'): # windows path = path[8:] # 8 is len('file:///') elif path.startswith('file://'): # nautilus, rox - path = path[7:] # 7 is len('file://') + if sys.platform == 'darwin': + # OS/X includes hostname in file:// URI + path = re.sub('file://[^/]*', '', path) + else: + path = path[7:] # 7 is len('file://') elif path.startswith('file:'): # xffm path = path[5:] # 5 is len('file:') return path @@ -544,6 +565,19 @@ def get_global_status(): status = gajim.connections[account].status return status +def statuses_unified(): + '''testing if all statuses are the same.''' + reference = None + for account in gajim.connections: + if not gajim.config.get_per('accounts', account, + 'sync_with_global_status'): + continue + if reference == None: + reference = gajim.connections[account].connected + elif reference != gajim.connections[account].connected: + return False + return True + def get_icon_name_to_show(contact, account = None): '''Get the icon name to show in online, away, requested, ...''' if account and gajim.events.get_nb_roster_events(account, contact.jid): @@ -1050,3 +1084,11 @@ def get_iconset_path(iconset): return os.path.join(gajim.DATA_DIR, 'iconsets', iconset) elif os.path.isdir(os.path.join(gajim.MY_ICONSETS_PATH, iconset)): return os.path.join(gajim.MY_ICONSETS_PATH, iconset) + +def get_transport_path(transport): + if os.path.isdir(os.path.join(gajim.DATA_DIR, 'iconsets', 'transports', + transport)): + return os.path.join(gajim.DATA_DIR, 'iconsets', 'transports', transport) + elif os.path.isdir(os.path.join(gajim.MY_ICONSETS_PATH, 'transports', + transport)): + return os.path.join(gajim.MY_ICONSETS_PATH, 'transports', transport) diff --git a/src/common/i18n.py b/src/common/i18n.py index 8eae356213..450a73002c 100644 --- a/src/common/i18n.py +++ b/src/common/i18n.py @@ -1,27 +1,32 @@ ## common/i18n.py ## -*- coding: utf-8 -*- ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import locale import gettext diff --git a/src/common/logger.py b/src/common/logger.py index e5a36a8fea..489986faa2 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -1,17 +1,22 @@ ## logger.py ## ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## ''' This module allows to access the on-disk database of logs. ''' @@ -137,6 +142,9 @@ class Logger: for row in rows: # row[0] is first item of row (the only result here, the jid) self.jids_already_in.append(row[0]) + + def get_jids_in_db(self): + return self.jids_already_in def jid_is_from_pm(self, jid): '''if jid is gajim@conf/nkour it's likely a pm one, how we know @@ -181,7 +189,13 @@ class Logger: typ = constants.JID_ROOM_TYPE else: typ = constants.JID_NORMAL_TYPE - self.cur.execute('INSERT INTO jids (jid, type) VALUES (?, ?)', (jid, typ)) + try: + self.cur.execute('INSERT INTO jids (jid, type) VALUES (?, ?)', (jid, + typ)) + except sqlite.IntegrityError, e: + # Jid already in DB, maybe added by another instance. re-read DB + self.get_jids_already_in_db() + return self.get_jid_id(jid, typestr) try: self.con.commit() except sqlite.OperationalError, e: diff --git a/src/common/nslookup.py b/src/common/nslookup.py index 484dc7f1dd..ae535993e8 100644 --- a/src/common/nslookup.py +++ b/src/common/nslookup.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Dimitur Kirov <dkirov@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import sys import os diff --git a/src/common/optparser.py b/src/common/optparser.py index c5aaede3ee..86a86b5d7e 100644 --- a/src/common/optparser.py +++ b/src/common/optparser.py @@ -1,16 +1,22 @@ ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import locale @@ -57,9 +63,10 @@ class OptionsParser: if os.path.exists(self.__filename): #we talk about a file print _('error: cannot open %s for reading') % self.__filename - return + return False new_version = gajim.config.get('version') + new_version = new_version.split('-', 1)[0] for line in fd.readlines(): try: line = line.decode('utf-8') @@ -67,11 +74,13 @@ class OptionsParser: line = line.decode(locale.getpreferredencoding()) self.read_line(line) old_version = gajim.config.get('version') + old_version = old_version.split('-', 1)[0] self.update_config(old_version, new_version) self.old_values = {} # clean mem fd.close() + return True def write_line(self, fd, opt, parents, value): if value == None: @@ -163,6 +172,10 @@ class OptionsParser: self.update_config_to_01114() if old < [0, 11, 1, 5] and new >= [0, 11, 1, 5]: self.update_config_to_01115() + if old < [0, 11, 2, 1] and new >= [0, 11, 2, 1]: + self.update_config_to_01121() + if old < [0, 11, 2, 2] and new >= [0, 11, 2, 2]: + self.update_config_to_01122() gajim.logger.init_vars() gajim.config.set('version', new_version) @@ -476,3 +489,40 @@ class OptionsParser: pass con.close() gajim.config.set('version', '0.11.1.5') + + def update_config_to_01121(self): + # remove old unencrypted secrets file + from common.configpaths import gajimpaths + + new_file = gajimpaths['SECRETS_FILE'] + + old_file = os.path.dirname(new_file) + '/secrets' + + if os.path.exists(old_file): + os.remove(old_file) + + gajim.config.set('version', '0.11.2.1') + + def update_config_to_01122(self): + back = os.getcwd() + os.chdir(logger.LOG_DB_FOLDER) + con = sqlite.connect(logger.LOG_DB_FILE) + os.chdir(back) + cur = con.cursor() + try: + cur.executescript( + ''' + CREATE TABLE IF NOT EXISTS caps_cache ( + node TEXT, + ver TEXT, + ext TEXT, + data BLOB + ); + ''' + ) + con.commit() + except sqlite.OperationalError, e: + pass + con.close() + gajim.config.set('version', '0.11.2.2') + diff --git a/src/common/passwords.py b/src/common/passwords.py index 79d83cb16a..08514bbdaf 100644 --- a/src/common/passwords.py +++ b/src/common/passwords.py @@ -2,15 +2,20 @@ ## Copyright (C) 2006 Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com> ## Copyright (C) 2006 Nikos Kouremenos <kourem@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## __all__ = ['get_password', 'save_password'] @@ -37,7 +42,8 @@ class SimplePasswordStorage(PasswordStorage): def save_password(self, account_name, password): gajim.config.set_per('accounts', account_name, 'password', password) - gajim.connections[account_name].password = password + if account_name in gajim.connections: + gajim.connections[account_name].password = password class GnomePasswordStorage(PasswordStorage): diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py index 4dd5080299..29627478ff 100644 --- a/src/common/proxy65_manager.py +++ b/src/common/proxy65_manager.py @@ -4,15 +4,20 @@ ## Contributors for this file: ## - Dimitur Kirov <dkirov@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import socket import struct import errno @@ -108,9 +113,8 @@ class ProxyResolver: query.setNamespace(common.xmpp.NS_BYTESTREAM) query.setAttr('sid', self.sid) - query.setTag('activate') - # activate = query.setTag('activate') - # activate.setData(self.jid + "/" + self.sid) + activate = query.setTag('activate') + activate.setData(self.jid + "/" + self.sid) if self.active_connection: self.active_connection.send(iq) @@ -253,7 +257,8 @@ class HostTester(Socks5, IdleObject): self._recv=self._sock.recv except Exception, ee: (errnum, errstr) = ee - if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK): + # 56 is for freebsd + if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK): # still trying to connect return # win32 needs this diff --git a/src/common/rst_xhtml_generator.py b/src/common/rst_xhtml_generator.py index 6b78828ef1..978ca2b488 100644 --- a/src/common/rst_xhtml_generator.py +++ b/src/common/rst_xhtml_generator.py @@ -1,18 +1,23 @@ ## rst_xhtml_generator.py ## -## Copyright (C) 2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2006 Santiago Gala ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## try: from docutils import io diff --git a/src/common/sleepy.py b/src/common/sleepy.py index 4ebf7ad248..bcc5f73c34 100644 --- a/src/common/sleepy.py +++ b/src/common/sleepy.py @@ -1,26 +1,31 @@ ## common/sleepy.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Nikos Kouremenos <kourem@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## from common import gajim -import os +import os, sys STATE_UNKNOWN = 'OS probably not supported' @@ -42,6 +47,8 @@ try: lastInputInfo = LASTINPUTINFO() lastInputInfo.cbSize = ctypes.sizeof(lastInputInfo) + elif sys.platform == 'darwin': + import osx.idle as idle else: # unix import idle except: diff --git a/src/common/socks5.py b/src/common/socks5.py index a4529b7816..6d70266a80 100644 --- a/src/common/socks5.py +++ b/src/common/socks5.py @@ -2,28 +2,33 @@ ## common/xmpp/socks5.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## - Dimitur Kirov <dkirov@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import socket diff --git a/src/common/stanza_session.py b/src/common/stanza_session.py new file mode 100644 index 0000000000..d8625d6a74 --- /dev/null +++ b/src/common/stanza_session.py @@ -0,0 +1,910 @@ +from common import gajim + +from common import xmpp +from common import helpers +from common import exceptions + +import random +import string + +import time + +import xmpp.c14n + +import base64 + +XmlDsig = 'http://www.w3.org/2000/09/xmldsig#' + +class StanzaSession(object): + def __init__(self, conn, jid, thread_id, type): + self.conn = conn + + self.jid = jid + + self.type = type + + if thread_id: + self.received_thread_id = True + self.thread_id = thread_id + else: + self.received_thread_id = False + if type == 'normal': + self.thread_id = None + else: + self.thread_id = self.generate_thread_id() + + self.last_send = 0 + self.status = None + self.negotiated = {} + + def generate_thread_id(self): + return "".join([random.choice(string.ascii_letters) for x in xrange(0,32)]) + + def send(self, msg): + if self.thread_id: + msg.NT.thread = self.thread_id + + msg.setAttr('to', self.jid) + self.conn.send_stanza(msg) + + if isinstance(msg, xmpp.Message): + self.last_send = time.time() + + def reject_negotiation(self, body = None): + msg = xmpp.Message() + feature = msg.NT.feature + feature.setNamespace(xmpp.NS_FEATURE) + + x = xmpp.DataForm(typ='submit') + x.addChild(node=xmpp.DataField(name='FORM_TYPE', value='urn:xmpp:ssn')) + x.addChild(node=xmpp.DataField(name='accept', value='0')) + + feature.addChild(node=x) + + if body: + msg.setBody(body) + + self.send(msg) + + self.cancelled_negotiation() + + def cancelled_negotiation(self): + '''A negotiation has been cancelled, so reset this session to its default state.''' + + if hasattr(self, 'control'): + self.control.on_cancel_session_negotiation() + + self.status = None + self.negotiated = {} + + def terminate(self): + msg = xmpp.Message() + feature = msg.NT.feature + feature.setNamespace(xmpp.NS_FEATURE) + + x = xmpp.DataForm(typ='submit') + x.addChild(node=xmpp.DataField(name='FORM_TYPE', value='urn:xmpp:ssn')) + x.addChild(node=xmpp.DataField(name='terminate', value='1')) + + feature.addChild(node=x) + + self.send(msg) + + self.status = None + + def acknowledge_termination(self): + # we could send an acknowledgement message to the remote client here + self.status = None + +if gajim.HAVE_PYCRYPTO: + from Crypto.Cipher import AES + from Crypto.Hash import HMAC, SHA256 + from Crypto.PublicKey import RSA + from common import crypto + + from common import dh + import secrets + +# an encrypted stanza negotiation has several states. i've represented them +# as the following values in the 'status' +# attribute of the session object: + +# 1. None: +# default state +# 2. 'requested-e2e': +# this client has initiated an esession negotiation and is waiting +# for a response +# 3. 'responded-e2e': +# this client has responded to an esession negotiation request and +# is waiting for the initiator to identify itself and complete the +# negotiation +# 4. 'identified-alice': +# this client identified itself and is waiting for the responder to +# identify itself and complete the negotiation +# 5. 'active': +# an encrypted session has been successfully negotiated. messages +# of any of the types listed in 'encryptable_stanzas' should be +# encrypted before they're sent. + +# the transition between these states is handled in gajim.py's +# handle_session_negotiation method. + +class EncryptedStanzaSession(StanzaSession): + def __init__(self, conn, jid, thread_id, type = 'chat'): + StanzaSession.__init__(self, conn, jid, thread_id, type = 'chat') + + self.loggable = True + + self.xes = {} + self.es = {} + + self.n = 128 + + self.enable_encryption = False + + # _s denotes 'self' (ie. this client) + self._kc_s = None + + # _o denotes 'other' (ie. the client at the other end of the session) + self._kc_o = None + + # keep the encrypter updated with my latest cipher key + def set_kc_s(self, value): + self._kc_s = value + self.encrypter = self.cipher.new(self._kc_s, self.cipher.MODE_CTR, + counter=self.encryptcounter) + + def get_kc_s(self): + return self._kc_s + + # keep the decrypter updated with the other party's latest cipher key + def set_kc_o(self, value): + self._kc_o = value + self.decrypter = self.cipher.new(self._kc_o, self.cipher.MODE_CTR, + counter=self.decryptcounter) + + def get_kc_o(self): + return self._kc_o + + kc_s = property(get_kc_s, set_kc_s) + kc_o = property(get_kc_o, set_kc_o) + + def encryptcounter(self): + self.c_s = (self.c_s + 1) % (2 ** self.n) + return crypto.encode_mpi_with_padding(self.c_s) + + def decryptcounter(self): + self.c_o = (self.c_o + 1) % (2 ** self.n) + return crypto.encode_mpi_with_padding(self.c_o) + + def sign(self, string): + if self.negotiated['sign_algs'] == (XmlDsig + 'rsa-sha256'): + hash = crypto.sha256(string) + return crypto.encode_mpi(gajim.pubkey.sign(hash, '')[0]) + + def encrypt_stanza(self, stanza): + encryptable = filter(lambda x: x.getName() not in ('error', 'amp', + 'thread'), stanza.getChildren()) + + # XXX can also encrypt contents of <error/> elements in stanzas @type = + # 'error' + # (except for <defined-condition + # xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> child elements) + + old_en_counter = self.c_s + + for element in encryptable: + stanza.delChild(element) + + plaintext = ''.join(map(str, encryptable)) + + m_compressed = self.compress(plaintext) + m_final = self.encrypt(m_compressed) + + c = stanza.NT.c + c.setNamespace('http://www.xmpp.org/extensions/xep-0200.html#ns') + c.NT.data = base64.b64encode(m_final) + + # XXX check for rekey request, handle <key/> elements + + m_content = ''.join(map(str, c.getChildren())) + c.NT.mac = base64.b64encode(self.hmac(self.km_s, m_content + \ + crypto.encode_mpi(old_en_counter))) + + return stanza + + def hmac(self, key, content): + return HMAC.new(key, content, self.hash_alg).digest() + + def generate_initiator_keys(self, k): + return (self.hmac(k, 'Initiator Cipher Key'), + self.hmac(k, 'Initiator MAC Key'), + self.hmac(k, 'Initiator SIGMA Key') ) + + def generate_responder_keys(self, k): + return (self.hmac(k, 'Responder Cipher Key'), + self.hmac(k, 'Responder MAC Key'), + self.hmac(k, 'Responder SIGMA Key') ) + + def compress(self, plaintext): + if self.compression == None: + return plaintext + + def decompress(self, compressed): + if self.compression == None: + return compressed + + def encrypt(self, encryptable): + padded = crypto.pad_to_multiple(encryptable, 16, ' ', False) + + return self.encrypter.encrypt(padded) + + def decrypt_stanza(self, stanza): + c = stanza.getTag(name='c', + namespace='http://www.xmpp.org/extensions/xep-0200.html#ns') + + stanza.delChild(c) + + # contents of <c>, minus <mac>, minus whitespace + macable = ''.join(map(str, filter(lambda x: x.getName() != 'mac', + c.getChildren()))) + + received_mac = base64.b64decode(c.getTagData('mac')) + calculated_mac = self.hmac(self.km_o, macable + \ + crypto.encode_mpi_with_padding(self.c_o)) + + if not calculated_mac == received_mac: + raise exceptions.DecryptionError, 'bad signature' + + m_final = base64.b64decode(c.getTagData('data')) + m_compressed = self.decrypt(m_final) + plaintext = self.decompress(m_compressed) + + try: + parsed = xmpp.Node(node='<node>' + plaintext + '</node>') + except: + raise exceptions.DecryptionError, 'decrypted <data/> not parseable as XML' + + for child in parsed.getChildren(): + stanza.addChild(node=child) + + return stanza + + def decrypt(self, ciphertext): + return self.decrypter.decrypt(ciphertext) + + def logging_preference(self): + if gajim.config.get('log_encrypted_sessions'): + return ["may", "mustnot"] + else: + return ["mustnot", "may"] + + def get_shared_secret(self, e, y, p): + if (not 1 < e < (p - 1)): + raise exceptions.NegotiationError, "invalid DH value" + + return crypto.sha256(crypto.encode_mpi(crypto.powmod(e, y, p))) + + def c7lize_mac_id(self, form): + kids = form.getChildren() + macable = filter(lambda x: x.getVar() not in ('mac', 'identity'), kids) + return ''.join(map(lambda el: xmpp.c14n.c14n(el), macable)) + + def verify_identity(self, form, dh_i, sigmai, i_o): + m_o = base64.b64decode(form['mac']) + id_o = base64.b64decode(form['identity']) + + m_o_calculated = self.hmac(self.km_o, crypto.encode_mpi(self.c_o) + id_o) + + if m_o_calculated != m_o: + raise exceptions.NegotiationError, 'calculated m_%s differs from received m_%s' % (i_o, i_o) + + if i_o == 'a' and self.sas_algs == 'sas28x5': + # XXX not necessary if there's a verified retained secret + self.sas = crypto.sas_28x5(m_o, self.form_s) + + if self.negotiated['recv_pubkey']: + plaintext = self.decrypt(id_o) + parsed = xmpp.Node(node='<node>' + plaintext + '</node>') + + if self.negotiated['recv_pubkey'] == 'hash': + fingerprint = parsed.getTagData('fingerprint') + + # XXX find stored pubkey or terminate session + raise 'unimplemented' + else: + if self.negotiated['sign_algs'] == (XmlDsig + 'rsa-sha256'): + keyvalue = parsed.getTag(name='RSAKeyValue', namespace=XmlDsig) + + n, e = map(lambda x: crypto.decode_mpi(base64.b64decode( + keyvalue.getTagData(x))), ('Modulus', 'Exponent')) + eir_pubkey = RSA.construct((n,long(e))) + + pubkey_o = xmpp.c14n.c14n(keyvalue) + else: + # XXX DSA, etc. + raise 'unimplemented' + + enc_sig = parsed.getTag(name='SignatureValue', + namespace=XmlDsig).getData() + signature = (crypto.decode_mpi(base64.b64decode(enc_sig)),) + else: + mac_o = self.decrypt(id_o) + pubkey_o = '' + + c7l_form = self.c7lize_mac_id(form) + + content = self.n_s + self.n_o + crypto.encode_mpi(dh_i) + pubkey_o + + if sigmai: + self.form_o = c7l_form + content += self.form_o + else: + form_o2 = c7l_form + content += self.form_o + form_o2 + + mac_o_calculated = self.hmac(self.ks_o, content) + + if self.negotiated['recv_pubkey']: + hash = crypto.sha256(mac_o_calculated) + + if not eir_pubkey.verify(hash, signature): + raise exceptions.NegotiationError, 'public key signature verification failed!' + + elif mac_o_calculated != mac_o: + raise exceptions.NegotiationError, 'calculated mac_%s differs from received mac_%s' % (i_o, i_o) + + def make_identity(self, form, dh_i): + if self.negotiated['send_pubkey']: + if self.negotiated['sign_algs'] == (XmlDsig + 'rsa-sha256'): + pubkey = secrets.secrets().my_pubkey(self.conn.name) + fields = (pubkey.n, pubkey.e) + + cb_fields = map(lambda f: base64.b64encode(crypto.encode_mpi(f)), fields) + + pubkey_s = '<RSAKeyValue xmlns="http://www.w3.org/2000/09/xmldsig#"><Modulus>%s</Modulus><Exponent>%s</Exponent></RSAKeyValue>' % tuple(cb_fields) + else: + pubkey_s = '' + + form_s2 = ''.join(map(lambda el: xmpp.c14n.c14n(el), form.getChildren())) + + old_c_s = self.c_s + content = self.n_o + self.n_s + crypto.encode_mpi(dh_i) + pubkey_s + self.form_s + form_s2 + + mac_s = self.hmac(self.ks_s, content) + + if self.negotiated['send_pubkey']: + signature = self.sign(mac_s) + + sign_s = '<SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">%s</SignatureValue>' % base64.b64encode(signature) + + if self.negotiated['send_pubkey'] == 'hash': + b64ed = base64.b64encode(self.hash(pubkey_s)) + pubkey_s = '<fingerprint>%s</fingerprint>' % b64ed + + id_s = self.encrypt(pubkey_s + sign_s) + else: + id_s = self.encrypt(mac_s) + + m_s = self.hmac(self.km_s, crypto.encode_mpi(old_c_s) + id_s) + + if self.status == 'requested-e2e' and self.sas_algs == 'sas28x5': + # we're alice; check for a retained secret + # if none exists, prompt the user with the SAS + self.sas = crypto.sas_28x5(m_s, self.form_o) + + if self.sigmai: + # XXX save retained secret? + self.check_identity(lambda : ()) + + return (xmpp.DataField(name='identity', value=base64.b64encode(id_s)), \ + xmpp.DataField(name='mac', value=base64.b64encode(m_s))) + + def negotiate_e2e(self, sigmai): + self.negotiated = {} + + request = xmpp.Message() + feature = request.NT.feature + feature.setNamespace(xmpp.NS_FEATURE) + + x = xmpp.DataForm(typ='form') + + x.addChild(node=xmpp.DataField(name='FORM_TYPE', value='urn:xmpp:ssn', typ='hidden')) + x.addChild(node=xmpp.DataField(name='accept', value='1', typ='boolean', required=True)) + + # this field is incorrectly called 'otr' in XEPs 0116 and 0217 + x.addChild(node=xmpp.DataField(name='logging', typ='list-single', options=self.logging_preference(), required=True)) + + # unsupported options: 'disabled', 'enabled' + x.addChild(node=xmpp.DataField(name='disclosure', typ='list-single', options=['never'], required=True)) + x.addChild(node=xmpp.DataField(name='security', typ='list-single', options=['e2e'], required=True)) + x.addChild(node=xmpp.DataField(name='crypt_algs', value='aes128-ctr', typ='hidden')) + x.addChild(node=xmpp.DataField(name='hash_algs', value='sha256', typ='hidden')) + x.addChild(node=xmpp.DataField(name='compress', value='none', typ='hidden')) + + # unsupported options: 'iq', 'presence' + x.addChild(node=xmpp.DataField(name='stanzas', typ='list-multi', options=['message'])) + + x.addChild(node=xmpp.DataField(name='init_pubkey', options=['none', 'key', 'hash'], typ='list-single')) + + # XXX store key, use hash + x.addChild(node=xmpp.DataField(name='resp_pubkey', options=['none', 'key'], typ='list-single')) + + x.addChild(node=xmpp.DataField(name='ver', value='1.0', typ='hidden')) + + x.addChild(node=xmpp.DataField(name='rekey_freq', value='4294967295', typ='hidden')) + + x.addChild(node=xmpp.DataField(name='sas_algs', value='sas28x5', typ='hidden')) + x.addChild(node=xmpp.DataField(name='sign_algs', value='http://www.w3.org/2000/09/xmldsig#rsa-sha256', typ='hidden')) + + self.n_s = crypto.generate_nonce() + + x.addChild(node=xmpp.DataField(name='my_nonce', value=base64.b64encode(self.n_s), typ='hidden')) + + modp_options = [ 5, 14, 2, 1 ] + + x.addChild(node=xmpp.DataField(name='modp', typ='list-single', options=map(lambda x: [ None, x ], modp_options))) + + x.addChild(node=self.make_dhfield(modp_options, sigmai)) + self.sigmai = sigmai + + self.form_s = ''.join(map(lambda el: xmpp.c14n.c14n(el), x.getChildren())) + + feature.addChild(node=x) + + self.status = 'requested-e2e' + + self.send(request) + + # 4.3 esession response (bob) + def verify_options_bob(self, form): + negotiated = {'recv_pubkey': None, 'send_pubkey': None} + not_acceptable = [] + ask_user = {} + + fixed = { 'disclosure': 'never', + 'security': 'e2e', + 'crypt_algs': 'aes128-ctr', + 'hash_algs': 'sha256', + 'compress': 'none', + 'stanzas': 'message', + 'init_pubkey': 'none', + 'resp_pubkey': 'none', + 'ver': '1.0', + 'sas_algs': 'sas28x5' } + + self.encryptable_stanzas = ['message'] + + self.sas_algs = 'sas28x5' + self.cipher = AES + self.hash_alg = SHA256 + self.compression = None + + for name, field in map(lambda name: (name, form.getField(name)), form.asDict().keys()): + options = map(lambda x: x[1], field.getOptions()) + values = field.getValues() + + if not field.getType() in ('list-single', 'list-multi'): + options = values + + if name in fixed: + if fixed[name] in options: + negotiated[name] = fixed[name] + else: + not_acceptable.append(name) + elif name == 'rekey_freq': + preferred = int(options[0]) + negotiated['rekey_freq'] = preferred + self.rekey_freq = preferred + elif name == 'logging': + my_prefs = self.logging_preference() + + if my_prefs[0] in options: # our first choice is offered, select it + pref = my_prefs[0] + negotiated['logging'] = pref + else: # see if other acceptable choices are offered + for pref in my_prefs: + if pref in options: + ask_user['logging'] = pref + break + + if not 'logging' in ask_user: + not_acceptable.append(name) + elif name == 'init_pubkey': + for x in ('key'): + if x in options: + negotiated['recv_pubkey'] = x + break + elif name == 'resp_pubkey': + for x in ('hash', 'key'): + if x in options: + negotiated['send_pubkey'] = x + break + elif name == 'sign_algs': + if (XmlDsig + 'rsa-sha256') in options: + negotiated['sign_algs'] = XmlDsig + 'rsa-sha256' + else: + # XXX some things are handled elsewhere, some things are not-implemented + pass + + return (negotiated, not_acceptable, ask_user) + + # 4.3 esession response (bob) + def respond_e2e_bob(self, form, negotiated, not_acceptable): + response = xmpp.Message() + feature = response.NT.feature + feature.setNamespace(xmpp.NS_FEATURE) + + x = xmpp.DataForm(typ='submit') + + x.addChild(node=xmpp.DataField(name='FORM_TYPE', value='urn:xmpp:ssn')) + x.addChild(node=xmpp.DataField(name='accept', value='true')) + + for name in negotiated: + # some fields are internal and should not be sent + if not name in ('send_pubkey', 'recv_pubkey'): + x.addChild(node=xmpp.DataField(name=name, value=negotiated[name])) + + self.negotiated = negotiated + + # the offset of the group we chose (need it to match up with the dhhash) + group_order = 0 + self.modp = int(form.getField('modp').getOptions()[group_order][1]) + x.addChild(node=xmpp.DataField(name='modp', value=self.modp)) + + g = dh.generators[self.modp] + p = dh.primes[self.modp] + + self.n_o = base64.b64decode(form['my_nonce']) + + dhhashes = form.getField('dhhashes').getValues() + self.negotiated['He'] = base64.b64decode(dhhashes[group_order].encode("utf8")) + + bytes = int(self.n / 8) + + self.n_s = crypto.generate_nonce() + + self.c_o = crypto.decode_mpi(crypto.random_bytes(bytes)) # n-bit random number + self.c_s = self.c_o ^ (2 ** (self.n - 1)) + + self.y = crypto.srand(2 ** (2 * self.n - 1), p - 1) + self.d = crypto.powmod(g, self.y, p) + + to_add = { 'my_nonce': self.n_s, + 'dhkeys': crypto.encode_mpi(self.d), + 'counter': crypto.encode_mpi(self.c_o), + 'nonce': self.n_o } + + for name in to_add: + b64ed = base64.b64encode(to_add[name]) + x.addChild(node=xmpp.DataField(name=name, value=b64ed)) + + self.form_o = ''.join(map(lambda el: xmpp.c14n.c14n(el), form.getChildren())) + self.form_s = ''.join(map(lambda el: xmpp.c14n.c14n(el), x.getChildren())) + + self.status = 'responded-e2e' + + feature.addChild(node=x) + + if not_acceptable: + response = xmpp.Error(response, xmpp.ERR_NOT_ACCEPTABLE) + + feature = xmpp.Node(xmpp.NS_FEATURE + ' feature') + + for f in not_acceptable: + n = xmpp.Node('field') + n['var'] = f + feature.addChild(node=n) + + response.T.error.addChild(node=feature) + + self.send(response) + + # 'Alice Accepts' + def verify_options_alice(self, form): + negotiated = {} + ask_user = {} + not_acceptable = [] + + if not form['logging'] in self.logging_preference(): + not_acceptable.append(form['logging']) + elif form['logging'] != self.logging_preference()[0]: + ask_user['logging'] = form['logging'] + else: + negotiated['logging'] = self.logging_preference()[0] + + for r,a in (('recv_pubkey', 'resp_pubkey'), ('send_pubkey', 'init_pubkey')): + negotiated[r] = None + + if a in form.asDict() and form[a] in ('key', 'hash'): + negotiated[r] = form[a] + + if 'sign_algs' in form.asDict(): + if form['sign_algs'] in (XmlDsig + 'rsa-sha256',): + negotiated['sign_algs'] = form['sign_algs'] + else: + not_acceptable.append(form['sign_algs']) + + return (negotiated, not_acceptable, ask_user) + + # 'Alice Accepts', continued + def accept_e2e_alice(self, form, negotiated): + self.encryptable_stanzas = ['message'] + self.sas_algs = 'sas28x5' + self.cipher = AES + self.hash_alg = SHA256 + self.compression = None + + self.negotiated = negotiated + + accept = xmpp.Message() + feature = accept.NT.feature + feature.setNamespace(xmpp.NS_FEATURE) + + result = xmpp.DataForm(typ='result') + + self.c_s = crypto.decode_mpi(base64.b64decode(form['counter'])) + self.c_o = self.c_s ^ (2 ** (self.n - 1)) + + self.n_o = base64.b64decode(form['my_nonce']) + + mod_p = int(form['modp']) + p = dh.primes[mod_p] + x = self.xes[mod_p] + e = self.es[mod_p] + + self.d = crypto.decode_mpi(base64.b64decode(form['dhkeys'])) + + self.k = self.get_shared_secret(self.d, x, p) + + result.addChild(node=xmpp.DataField(name='FORM_TYPE', value='urn:xmpp:ssn')) + result.addChild(node=xmpp.DataField(name='accept', value='1')) + result.addChild(node=xmpp.DataField(name='nonce', value=base64.b64encode(self.n_o))) + + self.kc_s, self.km_s, self.ks_s = self.generate_initiator_keys(self.k) + + if self.sigmai: + self.kc_o, self.km_o, self.ks_o = self.generate_responder_keys(self.k) + self.verify_identity(form, self.d, True, 'b') + else: + srses = secrets.secrets().retained_secrets(self.conn.name, self.jid.getStripped()) + rshashes = [self.hmac(self.n_s, rs) for (rs,v) in srses] + + if not rshashes: + # we've never spoken before, but we'll pretend we have + rshash_size = self.hash_alg.digest_size + rshashes.append(crypto.random_bytes(rshash_size)) + + rshashes = [base64.b64encode(rshash) for rshash in rshashes] + result.addChild(node=xmpp.DataField(name='rshashes', value=rshashes)) + result.addChild(node=xmpp.DataField(name='dhkeys', value=base64.b64encode(crypto.encode_mpi(e)))) + + self.form_o = ''.join(map(lambda el: xmpp.c14n.c14n(el), form.getChildren())) + + # MUST securely destroy K unless it will be used later to generate the final shared secret + + for datafield in self.make_identity(result, e): + result.addChild(node=datafield) + + feature.addChild(node=result) + self.send(accept) + + if self.sigmai: + self.status = 'active' + self.enable_encryption = True + else: + self.status = 'identified-alice' + + # 4.5 esession accept (bob) + def accept_e2e_bob(self, form): + response = xmpp.Message() + + init = response.NT.init + init.setNamespace(xmpp.NS_ESESSION_INIT) + + x = xmpp.DataForm(typ='result') + + for field in ('nonce', 'dhkeys', 'rshashes', 'identity', 'mac'): + assert field in form.asDict(), "alice's form didn't have a %s field" % field + + # 4.5.1 generating provisory session keys + e = crypto.decode_mpi(base64.b64decode(form['dhkeys'])) + p = dh.primes[self.modp] + + if crypto.sha256(crypto.encode_mpi(e)) != self.negotiated['He']: + raise exceptions.NegotiationError, 'SHA256(e) != He' + + k = self.get_shared_secret(e, self.y, p) + + self.kc_o, self.km_o, self.ks_o = self.generate_initiator_keys(k) + + # 4.5.2 verifying alice's identity + + self.verify_identity(form, e, False, 'a') + + # 4.5.4 generating bob's final session keys + + srs = '' + + srses = secrets.secrets().retained_secrets(self.conn.name, self.jid.getStripped()) + rshashes = [base64.b64decode(rshash) for rshash in form.getField('rshashes').getValues()] + + for (secret, verified) in srses: + if self.hmac(self.n_o, secret) in rshashes: + srs = secret + break + + # other shared secret + # (we're not using one) + oss = '' + + k = crypto.sha256(k + srs + oss) + + self.kc_s, self.km_s, self.ks_s = self.generate_responder_keys(k) + self.kc_o, self.km_o, self.ks_o = self.generate_initiator_keys(k) + + # 4.5.5 + if srs: + srshash = self.hmac(srs, 'Shared Retained Secret') + else: + srshash = crypto.random_bytes(32) + + x.addChild(node=xmpp.DataField(name='FORM_TYPE', value='urn:xmpp:ssn')) + x.addChild(node=xmpp.DataField(name='nonce', value=base64.b64encode(self.n_o))) + x.addChild(node=xmpp.DataField(name='srshash', value=base64.b64encode(srshash))) + + for datafield in self.make_identity(x, self.d): + x.addChild(node=datafield) + + init.addChild(node=x) + + self.send(response) + + self.do_retained_secret(k, srs) + + if self.negotiated['logging'] == 'mustnot': + self.loggable = False + + self.status = 'active' + self.enable_encryption = True + + if hasattr(self, 'control'): + self.control.print_esession_details() + + def final_steps_alice(self, form): + srs = '' + srses = secrets.secrets().retained_secrets(self.conn.name, self.jid.getStripped()) + + srshash = base64.b64decode(form['srshash']) + + for (secret, verified) in srses: + if self.hmac(secret, 'Shared Retained Secret') == srshash: + srs = secret + break + + oss = '' + k = crypto.sha256(self.k + srs + oss) + del self.k + + self.do_retained_secret(k, srs) + + # don't need to calculate ks_s here + + self.kc_s, self.km_s, self.ks_s = self.generate_initiator_keys(k) + self.kc_o, self.km_o, self.ks_o = self.generate_responder_keys(k) + + # 4.6.2 Verifying Bob's Identity + + self.verify_identity(form, self.d, False, 'b') +# Note: If Alice discovers an error then she SHOULD ignore any encrypted content she received in the stanza. + + if self.negotiated['logging'] == 'mustnot': + self.loggable = False + + self.status = 'active' + self.enable_encryption = True + + if hasattr(self, 'control'): + self.control.print_esession_details() + + # calculate and store the new retained secret + # prompt the user to check the remote party's identity (if necessary) + def do_retained_secret(self, k, srs): + new_srs = self.hmac(k, 'New Retained Secret') + account = self.conn.name + bjid = self.jid.getStripped() + + if srs: + if secrets.secrets().srs_verified(account, bjid, srs): + secrets.secrets().replace_srs(account, bjid, srs, new_srs, True) + else: + def _cb(verified): + secrets.secrets().replace_srs(account, bjid, srs, new_srs, verified) + + self.check_identity(_cb) + else: + def _cb(verified): + secrets.secrets().save_new_srs(account, bjid, new_srs, verified) + + self.check_identity(_cb) + + def make_dhfield(self, modp_options, sigmai): + dhs = [] + + for modp in modp_options: + p = dh.primes[modp] + g = dh.generators[modp] + + x = crypto.srand(2 ** (2 * self.n - 1), p - 1) + + # XXX this may be a source of performance issues + e = crypto.powmod(g, x, p) + + self.xes[modp] = x + self.es[modp] = e + + if sigmai: + dhs.append(base64.b64encode(crypto.encode_mpi(e))) + name = 'dhkeys' + else: + He = crypto.sha256(crypto.encode_mpi(e)) + dhs.append(base64.b64encode(He)) + name = 'dhhashes' + + return xmpp.DataField(name=name, typ='hidden', value=dhs) + + def terminate_e2e(self): + self.terminate() + + self.enable_encryption = False + + def acknowledge_termination(self): + StanzaSession.acknowledge_termination(self) + + self.enable_encryption = False + + def fail_bad_negotiation(self, reason, fields = None): + '''sends an error and cancels everything. + +if fields == None, the remote party has given us a bad cryptographic value of some kind + +otherwise, list the fields we haven't implemented''' + + err = xmpp.Error(xmpp.Message(), xmpp.ERR_FEATURE_NOT_IMPLEMENTED) + err.T.error.T.text.setData(reason) + + if fields: + feature = xmpp.Node(xmpp.NS_FEATURE + ' feature') + + for field in fields: + fn = xmpp.Node('field') + fn['var'] = field + feature.addChild(node=feature) + + err.addChild(node=feature) + + self.send(err) + + self.status = None + self.enable_encryption = False + + # this prevents the MAC check on decryption from succeeding, + # preventing falsified messages from going through. + self.km_o = '' + + def is_loggable(self): + account = self.conn.name + no_log_for = gajim.config.get_per('accounts', account, 'no_log_for') + + if not no_log_for: + no_log_for = '' + + no_log_for = no_log_for.split() + + return self.loggable and account not in no_log_for and self.jid not in no_log_for + + def cancelled_negotiation(self): + StanzaSession.cancelled_negotiation(self) + self.enable_encryption = False + + self.km_o = '' diff --git a/src/common/xmpp/c14n.py b/src/common/xmpp/c14n.py new file mode 100644 index 0000000000..b58e0a1d6c --- /dev/null +++ b/src/common/xmpp/c14n.py @@ -0,0 +1,36 @@ +from simplexml import ustr + +# XML canonicalisation methods (for XEP-0116) +def c14n(node): + s = "<" + node.name + if node.namespace: + if not node.parent or node.parent.namespace != node.namespace: + s = s + ' xmlns="%s"' % node.namespace + + sorted_attrs = node.attrs.keys() + sorted_attrs.sort() + for key in sorted_attrs: + val = ustr(node.attrs[key]) + # like XMLescape() but with whitespace and without > + s = s + ' %s="%s"' % ( key, normalise_attr(val) ) + s = s + ">" + cnt = 0 + if node.kids: + for a in node.kids: + if (len(node.data)-1) >= cnt: + s = s + normalise_text(node.data[cnt]) + s = s + c14n(a) + cnt=cnt+1 + if (len(node.data)-1) >= cnt: s = s + normalise_text(node.data[cnt]) + if not node.kids and s[-1:]=='>': + s=s[:-1]+' />' + else: + s = s + "</" + node.name + ">" + return s.encode('utf-8') + +def normalise_attr(val): + return val.replace('&', '&').replace('<', '<').replace('"', '"').replace('\t', '	').replace('\n', '
').replace('\r', '
') + +def normalise_text(val): + return val.replace('&', '&').replace('<', '<').replace('>', '>').replace('\r', '
') + diff --git a/src/common/xmpp/idlequeue.py b/src/common/xmpp/idlequeue.py index db0c575bdd..5ee73c9874 100644 --- a/src/common/xmpp/idlequeue.py +++ b/src/common/xmpp/idlequeue.py @@ -204,15 +204,15 @@ class SelectIdleQueue(IdleQueue): except select.error, e: waiting_descriptors = ((),(),()) if e[0] != 4: # interrupt - raise - for fd in waiting_descriptors[0]: - self.queue.get(fd).pollin() - self.check_time_events() - return True + raise + for fd in waiting_descriptors[0]: + q = self.queue.get(fd) + if q: + q.pollin() for fd in waiting_descriptors[1]: - self.queue.get(fd).pollout() - self.check_time_events() - return True + q = self.queue.get(fd) + if q: + q.pollout() for fd in waiting_descriptors[2]: self.queue.get(fd).pollend() self.check_time_events() diff --git a/src/common/xmpp/protocol.py b/src/common/xmpp/protocol.py index 3c160a62c0..c09b9921f0 100644 --- a/src/common/xmpp/protocol.py +++ b/src/common/xmpp/protocol.py @@ -48,6 +48,7 @@ NS_DISCO ='http://jabber.org/protocol/disco' NS_DISCO_INFO =NS_DISCO+'#info' NS_DISCO_ITEMS =NS_DISCO+'#items' NS_ENCRYPTED ='jabber:x:encrypted' # XEP-0027 +NS_ESESSION_INIT='http://www.xmpp.org/extensions/xep-0116.html#ns-init' # XEP-0116 NS_EVENT ='jabber:x:event' # XEP-0022 NS_FEATURE ='http://jabber.org/protocol/feature-neg' NS_FILE ='http://jabber.org/protocol/si/profile/file-transfer' # JEP-0096 @@ -66,6 +67,7 @@ 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_MUC_UNIQUE =NS_MUC+'#unique' NS_NICK ='http://jabber.org/protocol/nick' # XEP-0172 NS_OFFLINE ='http://www.jabber.org/jeps/jep-0030.html' # XEP-0013 NS_PHYSLOC ='http://jabber.org/protocol/physloc' # XEP-0112 @@ -86,6 +88,7 @@ NS_SESSION ='urn:ietf:params:xml:ns:xmpp-session' NS_SI ='http://jabber.org/protocol/si' # XEP-0096 NS_SI_PUB ='http://jabber.org/protocol/sipub' # XEP-0137 NS_SIGNED ='jabber:x:signed' # XEP-0027 +NS_STANZA_CRYPTO='http://www.xmpp.org/extensions/xep-0200.html#ns' # JEP-0200 NS_STANZAS ='urn:ietf:params:xml:ns:xmpp-stanzas' NS_STREAM ='http://affinix.com/jabber/stream' NS_STREAMS ='http://etherx.jabber.org/streams' diff --git a/src/common/xmpp/roster.py b/src/common/xmpp/roster.py index 86c9e8438e..b90c30732f 100644 --- a/src/common/xmpp/roster.py +++ b/src/common/xmpp/roster.py @@ -64,6 +64,10 @@ class Roster(PlugIn): def RosterIqHandler(self,dis,stanza): """ Subscription tracker. Used internally for setting items state in internal roster representation. """ + sender = stanza.getAttr('from') + if not sender == None and not sender.bareMatch( + self._owner.User + '@' + self._owner.Server): + return for item in stanza.getTag('query').getTags('item'): jid=item.getAttr('jid') if item.getAttr('subscription')=='remove': diff --git a/src/common/xmpp/transports_nb.py b/src/common/xmpp/transports_nb.py index c5115cc1ca..c4cda46366 100644 --- a/src/common/xmpp/transports_nb.py +++ b/src/common/xmpp/transports_nb.py @@ -554,8 +554,8 @@ class NonBlockingTcp(PlugIn, IdleObject): # FIXME: This happens when we switch an already # connected socket to SSL (STARTTLS). Instead of # ignoring the error, the socket should only be - # connected to once. See #2846. - workaround = (errno.EALREADY, 10056) + # connected to once. See #2846 and #3396. + workaround = (errno.EALREADY, 10056, 56) # 10035 - winsock equivalent of EINPROGRESS if errnum not in (errno.EINPROGRESS, 10035) + workaround: @@ -745,10 +745,34 @@ class NonBlockingTLS(PlugIn): #tcpsock._sslContext = OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD) tcpsock.ssl_errnum = 0 tcpsock._sslContext.set_verify(OpenSSL.SSL.VERIFY_PEER, self._ssl_verify_callback) + cacerts = os.path.join(gajim.DATA_DIR, 'other', 'cacerts.pem') try: - tcpsock._sslContext.load_verify_locations(os.path.join(gajim.DATA_DIR, 'other', 'cacerts.pem')) + tcpsock._sslContext.load_verify_locations(cacerts) except: - log.warning(_("Unable to load SSL certificats from file %s" % os.path.abspath(os.path.join(gajim.DATA_DIR,'other','ca.crt')))) + log.warning('Unable to load SSL certificats from file %s' % \ + os.path.abspath(cacerts)) + # load users certs + if os.path.isfile(gajim.MY_CACERTS): + store = tcpsock._sslContext.get_cert_store() + f = open(gajim.MY_CACERTS) + lines = f.readlines() + i = 0 + begin = -1 + for line in lines: + if 'BEGIN CERTIFICATE' in line: + begin = i + continue + elif 'END CERTIFICATE' in line and begin > -1: + cert = ''.join(lines[begin:i+2]) + try: + X509cert = OpenSSL.crypto.load_certificate( + OpenSSL.crypto.FILETYPE_PEM, cert) + store.add_cert(X509cert) + except: + log.warning('Unable to load a certificate from file %s' % \ + gajim.MY_CACERTS) + begin = -1 + i += 1 tcpsock._sslObj = OpenSSL.SSL.Connection(tcpsock._sslContext, tcpsock._sock) tcpsock._sslObj.set_connect_state() # set to client mode @@ -788,9 +812,12 @@ class NonBlockingTLS(PlugIn): def _ssl_verify_callback(self, sslconn, cert, errnum, depth, ok): # Exceptions can't propagate up through this callback, so print them here. try: + self._owner.Connection.ssl_fingerprint_sha1 = cert.digest('sha1') if errnum == 0: return True self._owner.Connection.ssl_errnum = errnum + self._owner.Connection.ssl_cert_pem = OpenSSL.crypto.dump_certificate( + OpenSSL.crypto.FILETYPE_PEM, cert) return True except: log.error("Exception caught in _ssl_info_callback:", exc_info=True) diff --git a/src/common/xmpp_stringprep.py b/src/common/xmpp_stringprep.py index f0cb473c9e..9ce38e16f2 100644 --- a/src/common/xmpp_stringprep.py +++ b/src/common/xmpp_stringprep.py @@ -1,21 +1,26 @@ ## common/xmpp_stringprep.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## ## Copyright (C) 2001-2005 Twisted Matrix Laboratories. ## Copyright (C) 2005 Gajim Team ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import sys, warnings diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index c3de88a387..ff9308162e 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -3,15 +3,20 @@ ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> ## 2006 Dimitur Kirov <dkirov@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## from common import gajim import common.xmpp from common.xmpp.idlequeue import IdleObject @@ -74,7 +79,16 @@ 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.conn_holder) + ''' loop through roster to find who has connected to us''' + from_jid = None + nameinfo = socket.getnameinfo(sock[1], 0) + ipaddr = socket.gethostbyname(nameinfo[0]) + for jid in self.conn_holder.getRoster().keys(): + entry = self.conn_holder.getRoster().getItem(jid) + if (entry['address'] == ipaddr): + from_jid = jid + break; + P2PClient(sock[0], sock[1][0], sock[1][1], self.conn_holder, [], from_jid) def disconnect(self): ''' free all resources, we are not listening anymore ''' @@ -212,11 +226,11 @@ class P2PClient(IdleObject): def on_disconnect(self): if self.conn_holder: - if self.conn_holder.number_of_awaiting_messages.has_key(self.conn_holder.fd): - if self.conn_holder.number_of_awaiting_messages[self.conn_holder.fd] > 0: + if self.conn_holder.number_of_awaiting_messages.has_key(self.fd): + if self.conn_holder.number_of_awaiting_messages[self.fd] > 0: self._caller.dispatch('MSGERROR',[unicode(self.to), -1, \ _('Connection to host could not be established'), None, None]) - del self.conn_holder.number_of_awaiting_messages[self.conn_holder.fd] + del self.conn_holder.number_of_awaiting_messages[self.fd] self.conn_holder.remove_connection(self.sock_hash) if self.__dict__.has_key('Dispatcher'): self.Dispatcher.PlugOut() diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index eaa2f6a17c..8ccc68d644 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -2,21 +2,26 @@ ## Copyright (C) 2006 Gajim Team ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <nkour@jabber.org> ## - Dimitur Kirov <dkirov@gmail.com> ## - Travis Shirk <travis@pobox.com> ## - Stefan Bethge <stefan@lanpartei.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import time @@ -44,6 +49,8 @@ except: gajim.log.debug(_('Unable to load idle module')) HAS_IDLE = False +from common.stanza_session import EncryptedStanzaSession + class ConnectionVcard: def __init__(self): self.vcard_sha = None @@ -138,7 +145,7 @@ class ConnectionBytestream: def __init__(self): self.files_props = {} - def is_transfer_stoped(self, file_props): + def is_transfer_stopped(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']: @@ -167,7 +174,7 @@ class ConnectionBytestream: 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): + if self.is_transfer_stopped(file_props): continue receiver_jid = unicode(file_props['receiver']).split('/')[0] if contact.jid == receiver_jid: @@ -593,6 +600,7 @@ class ConnectionBytestream: file_props['sender'] = unicode(iq_obj.getFrom()) file_props['request-id'] = unicode(iq_obj.getAttr('id')) file_props['sid'] = unicode(si.getAttr('id')) + file_props['transfered_size'] = [] gajim.socks5queue.add_file_props(self.name, file_props) self.dispatch('FILE_REQUEST', (jid, file_props)) raise common.xmpp.NodeProcessed @@ -628,6 +636,8 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream): # keep the jids we auto added (transports contacts) to not send the # SUBSCRIBED event to gui self.automatically_added = [] + # keep track of sessions this connection has with other JIDs + self.sessions = {} try: idle.init() except: @@ -635,26 +645,55 @@ 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 + thread_id = msg.getThread() tim = msg.getTimestamp() tim = helpers.datetime_tuple(tim) tim = time.localtime(timegm(tim)) frm = msg.getFrom() + if frm == None: for key in self.connection.zeroconf.contacts: if ip == self.connection.zeroconf.contacts[key][zeroconf.C_ADDRESS]: frm = key frm = unicode(frm) jid = frm + + session = self.get_session(frm, thread_id, mtype) + + if thread_id and not session.received_thread_id: + session.received_thread_id = True + + if msg.getTag('feature') and msg.getTag('feature').namespace == \ + common.xmpp.NS_FEATURE: + if gajim.HAVE_PYCRYPTO: + self._FeatureNegCB(con, msg, session) + return + if msg.getTag('init') and msg.getTag('init').namespace == \ + common.xmpp.NS_ESESSION_INIT: + self._InitE2ECB(con, msg, session) + no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for').split() encrypted = False chatstate = None + + e2e_tag = msg.getTag('c', namespace = common.xmpp.NS_STANZA_CRYPTO) + if e2e_tag: + encrypted = True + + try: + msg = session.decrypt_stanza(msg) + except: + self.dispatch('FAILED_DECRYPT', (frm, tim)) + + msgtxt = msg.getBody() + msghtml = msg.getXHTML() + subject = msg.getSubject() # if not there, it's None + encTag = msg.getTag('x', namespace = common.xmpp.NS_ENCRYPTED) decmsg = '' + form_node = msg.getTag('x', namespace = common.xmpp.NS_DATA) # invitations invite = None if not encTag: @@ -715,16 +754,122 @@ 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_xep, user_nick, msghtml)) + chatstate, msg_id, composing_xep, user_nick, msghtml, session, + form_node)) 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: self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', - subject, chatstate, msg_id, composing_xep, user_nick)) + subject, chatstate, msg_id, composing_xep, user_nick, msghtml, + session, form_node)) # END messageCB + def _FeatureNegCB(self, con, stanza, session): + gajim.log.debug('FeatureNegCB') + feature = stanza.getTag(name='feature', namespace=common.xmpp.NS_FEATURE) + form = common.xmpp.DataForm(node=feature.getTag('x')) + + if form['FORM_TYPE'] == 'urn:xmpp:ssn': + self.dispatch('SESSION_NEG', (stanza.getFrom(), session, form)) + else: + reply = stanza.buildReply() + reply.setType('error') + + reply.addChild(feature) + reply.addChild(node=xmpp.ErrorNode('service-unavailable', typ='cancel')) + + con.send(reply) + + raise common.xmpp.NodeProcessed + + def _InitE2ECB(self, con, stanza, session): + gajim.log.debug('InitE2ECB') + init = stanza.getTag(name='init', namespace=common.xmpp.NS_ESESSION_INIT) + form = common.xmpp.DataForm(node=init.getTag('x')) + + self.dispatch('SESSION_NEG', (stanza.getFrom(), session, form)) + + raise common.xmpp.NodeProcessed + + def get_session(self, jid, thread_id, type): + '''returns an existing session between this connection and 'jid', returns a new one if none exist.''' + session = self.find_session(jid, thread_id, type) + + if session: + return session + else: + # it's possible we initiated a session with a bare JID and this is the + # first time we've seen a resource + bare_jid = gajim.get_jid_without_resource(jid) + if bare_jid != jid: + session = self.find_session(bare_jid, thread_id, type) + if session: + if not session.received_thread_id: + thread_id = session.thread_id + + self.move_session(bare_jid, thread_id, jid.split("/")[1]) + return session + + return self.make_new_session(jid, thread_id, type) + + def find_session(self, jid, thread_id, type): + try: + if type == 'chat' and not thread_id: + return self.find_null_session(jid) + else: + return self.sessions[jid][thread_id] + except KeyError: + return None + + def delete_session(self, jid, thread_id): + try: + del self.sessions[jid][thread_id] + + if not self.sessions[jid]: + del self.sessions[jid] + except KeyError: + print "jid %s should have been in %s, but it wasn't. missing session?" % (repr(jid), repr(self.sessions.keys())) + + def move_session(self, original_jid, thread_id, to_resource): + '''moves a session to another resource.''' + session = self.sessions[original_jid][thread_id] + + del self.sessions[original_jid][thread_id] + + new_jid = gajim.get_jid_without_resource(original_jid) + '/' + to_resource + session.jid = common.xmpp.JID(new_jid) + + if not new_jid in self.sessions: + self.sessions[new_jid] = {} + + self.sessions[new_jid][thread_id] = session + + def find_null_session(self, jid): + '''finds all of the sessions between us and jid that jid hasn't sent a thread_id in yet. + +returns the session that we last sent a message to.''' + + sessions_with_jid = self.sessions[jid].values() + no_threadid_sessions = filter(lambda s: not s.received_thread_id, sessions_with_jid) + + if no_threadid_sessions: + no_threadid_sessions.sort(key=lambda s: s.last_send) + return no_threadid_sessions[-1] + else: + return None + + def make_new_session(self, jid, thread_id = None, type = 'chat'): + sess = EncryptedStanzaSession(self, common.xmpp.JID(jid), thread_id, type) + + if not jid in self.sessions: + self.sessions[jid] = {} + + self.sessions[jid][sess.thread_id] = sess + + return sess + def parse_data_form(self, node): dic = {} tag = node.getTag('title') diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index b218eab41c..36f56a3476 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -1,15 +1,15 @@ ## common/zeroconf/connection_zeroconf.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <nkour@jabber.org> ## - Dimitur Kirov <dkirov@gmail.com> ## - Travis Shirk <travis@pobox.com> ## - Stefan Bethge <stefan@lanpartei.de> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2006 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <nkour@jabber.org> ## Dimitur Kirov <dkirov@gmail.com> @@ -17,15 +17,20 @@ ## Norman Rasmussen <norman@rasmussen.co.za> ## Stefan Bethge <stefan@lanpartei.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os @@ -57,6 +62,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connected = 0 # offline self.connection = None self.gpg = None + if USE_GPG: + self.gpg = GnuPG.GnuPG(gajim.config.get('use_gpg_agent')) self.is_zeroconf = True self.privacy_rules_supported = False self.blocked_contacts = [] @@ -82,15 +89,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # 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.gpg = GnuPG.GnuPG(gajim.config.get('use_gpg_agent')) self.get_config_values_or_default() self.muc_jid = {} # jid of muc server for each transport type self.vcard_supported = False + self.private_storage_supported = False def get_config_values_or_default(self): ''' get name, host, port from config, or @@ -135,7 +140,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.log.debug('reconnect') # signed = self.get_signed_msg(self.status) - self.connect(self.old_show, self.status) + self.disconnect() + self.change_status(self.old_show, self.status) def quit(self, kill_core): if kill_core and self.connected > 1: @@ -314,6 +320,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): check = self.connection.announce() else: self.connected = STATUS_LIST.index(show) + self.dispatch('SIGNED_IN', ()) # 'disconnect' elif show == 'offline' and self.connected: @@ -349,7 +356,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def send_message(self, jid, msg, keyID, type = 'chat', subject='', chatstate = None, msg_id = None, composing_xep = None, resource = None, - user_nick = None): + user_nick = None, session=None): fjid = jid if not self.connection: @@ -410,12 +417,20 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if chatstate is 'composing' or msgtxt: chatstate_node.addChild(name = 'composing') + if session: + session.last_send = time.time() + msg_iq.setThread(session.thread_id) + + if session.enable_encryption: + msg_iq = session.encrypt_stanza(msg_iq) + if not self.connection.send(msg_iq, msg != None): return 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: + if session.is_loggable() and 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) diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index 1de058af75..2fb4123f81 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## from common.zeroconf import zeroconf diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index e34599da26..8d8e70185e 100644 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## C_NAME, C_DOMAIN, C_INTERFACE, C_PROTOCOL, C_HOST, \ C_ADDRESS, C_PORT, C_BARE_NAME, C_TXT = range(9) diff --git a/src/common/zeroconf/zeroconf_avahi.py b/src/common/zeroconf/zeroconf_avahi.py index 6ad7688267..626d1be328 100644 --- a/src/common/zeroconf/zeroconf_avahi.py +++ b/src/common/zeroconf/zeroconf_avahi.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## from common import gajim @@ -171,7 +176,7 @@ class Zeroconf: def service_add_fail_callback(self, err): gajim.log.debug('Error while adding service. %s' % str(err)) - if str(err) == 'Local name collision': + if 'Local name collision' in str(err): alternative_name = self.server.GetAlternativeServiceName(self.username) self.name_conflictCB(alternative_name) return @@ -179,9 +184,12 @@ class Zeroconf: self.disconnect() def server_state_changed_callback(self, state, error): + gajim.log.debug('server state changed to %s' % state) if state == self.avahi.SERVER_RUNNING: self.create_service() - elif state == self.avahi.SERVER_COLLISION: + elif state in (self.avahi.SERVER_COLLISION, + self.avahi.SERVER_REGISTERING): + self.disconnect() self.entrygroup.Reset() elif state == self.avahi.CLIENT_FAILURE: # does it ever go here? @@ -190,8 +198,11 @@ class Zeroconf: def entrygroup_state_changed_callback(self, state, error): # the name is already present, so recreate if state == self.avahi.ENTRY_GROUP_COLLISION: + gajim.log.debug('zeroconf.py: local name collision') self.service_add_fail_callback('Local name collision') elif state == self.avahi.ENTRY_GROUP_FAILURE: + self.disconnect() + self.entrygroup.Reset() gajim.log.debug('zeroconf.py: ENTRY_GROUP_FAILURE reached(that' ' should not happen)') @@ -238,8 +249,13 @@ class Zeroconf: txt['status'] = 'avail' self.txt = txt - gajim.log.debug('Publishing service %s of type %s' % (self.name, self.stype)) - self.entrygroup.AddService(self.avahi.IF_UNSPEC, self.avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, self.avahi_txt(), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) + gajim.log.debug('Publishing service %s of type %s' % (self.name, + self.stype)) + self.entrygroup.AddService(self.avahi.IF_UNSPEC, + self.avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', + '', dbus.UInt16(self.port), self.avahi_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) @@ -268,8 +284,7 @@ class Zeroconf: self.entrygroup.Reset() self.entrygroup.Free() # .Free() has mem leaks - obj = self.entrygroup._obj - obj._bus = None + self.entrygroup._obj._bus = None self.entrygroup._obj = None self.entrygroup = None self.announced = False diff --git a/src/common/zeroconf/zeroconf_bonjour.py b/src/common/zeroconf/zeroconf_bonjour.py index 3b72070040..79d699ba47 100644 --- a/src/common/zeroconf/zeroconf_bonjour.py +++ b/src/common/zeroconf/zeroconf_bonjour.py @@ -2,19 +2,25 @@ ## ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## from common import gajim import sys import select +import re from string import split from common.zeroconf.zeroconf import C_BARE_NAME, C_DOMAIN @@ -109,7 +115,8 @@ class Zeroconf: r'\064': '@', } - name, stype, protocol, domain, dummy = split(fullname, '.') + # Split on '.' but do not split on '\.' + name, stype, protocol, domain, dummy = re.split('(?<!\\\\)\.', fullname) # Replace the escaped values for src, trg in escaping.items(): diff --git a/src/config.py b/src/config.py index 02fce854ca..e2a8999dc1 100644 --- a/src/config.py +++ b/src/config.py @@ -1,24 +1,30 @@ ## config.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2003-2005 Vincent Hanquez <tab@snarc.org> ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject -import os +import os, sys import common.config import common.sleepy from common.i18n import Q_ @@ -63,11 +69,12 @@ class PreferencesWindow: 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.notebook = self.xml.get_widget('preferences_notebook') + self.treat_incoming_messages_combobox =\ + self.xml.get_widget('treat_incoming_messages_combobox') + self.one_window_type_combobox =\ + self.xml.get_widget('one_window_type_combobox') self.iconset_combobox = self.xml.get_widget('iconset_combobox') - self.notify_on_new_message_radiobutton = self.xml.get_widget( - 'notify_on_new_message_radiobutton') - self.popup_new_message_radiobutton = self.xml.get_widget( - 'popup_new_message_radiobutton') self.notify_on_signin_checkbutton = self.xml.get_widget( 'notify_on_signin_checkbutton') self.notify_on_signout_checkbutton = self.xml.get_widget( @@ -83,30 +90,10 @@ class PreferencesWindow: self.auto_xa_time_spinbutton = self.xml.get_widget( 'auto_xa_time_spinbutton') self.auto_xa_message_entry = self.xml.get_widget('auto_xa_message_entry') - self.trayicon_checkbutton = self.xml.get_widget('trayicon_checkbutton') - self.notebook = self.xml.get_widget('preferences_notebook') - self.one_window_type_combobox =\ - self.xml.get_widget('one_window_type_combobox') - self.treat_incoming_messages_combobox =\ - self.xml.get_widget('treat_incoming_messages_combobox') w = self.xml.get_widget('anc_hbox') - # trayicon - if gajim.interface.systray_capabilities: - st = gajim.config.get('trayicon') - self.trayicon_checkbutton.set_active(st) - else: - self.trayicon_checkbutton.set_sensitive(False) - - # Save position - st = gajim.config.get('saveposition') - self.xml.get_widget('save_position_checkbutton').set_active(st) - - # Sort contacts by show - st = gajim.config.get('sort_by_show') - self.xml.get_widget('sort_by_show_checkbutton').set_active(st) - + ### General tab ### # Display avatars in roster st = gajim.config.get('show_avatars_in_roster') self.xml.get_widget('show_avatars_in_roster_checkbutton').set_active(st) @@ -116,6 +103,10 @@ class PreferencesWindow: self.xml.get_widget('show_status_msgs_in_roster_checkbutton').set_active( st) + # Sort contacts by show + st = gajim.config.get('sort_by_show') + self.xml.get_widget('sort_by_show_checkbutton').set_active(st) + # emoticons emoticons_combobox = self.xml.get_widget('emoticons_combobox') emoticons_list = os.listdir(os.path.join(gajim.DATA_DIR, 'emoticons')) @@ -142,6 +133,44 @@ class PreferencesWindow: if not gajim.config.get('emoticons_theme'): emoticons_combobox.set_active(len(l)-1) + # Set default for treat incoming messages + choices = common.config.opt_treat_incoming_messages + type = gajim.config.get('treat_incoming_messages') + if type in choices: + self.treat_incoming_messages_combobox.set_active(choices.index(type)) + else: + self.treat_incoming_messages_combobox.set_active(0) + + # Set default for single window type + choices = common.config.opt_one_window_types + type = gajim.config.get('one_message_window') + if type in choices: + self.one_window_type_combobox.set_active(choices.index(type)) + else: + self.one_window_type_combobox.set_active(0) + + # Compact View + st = gajim.config.get('compact_view') + self.xml.get_widget('compact_view_checkbutton').set_active(st) + + # Ignore XHTML + st = gajim.config.get('ignore_incoming_xhtml') + self.xml.get_widget('xhtml_checkbutton').set_active(st) + + # use speller + if HAS_GTK_SPELL: + st = gajim.config.get('use_speller') + self.xml.get_widget('speller_checkbutton').set_active(st) + else: + self.xml.get_widget('speller_checkbutton').set_sensitive(False) + + # Themes + theme_combobox = self.xml.get_widget('theme_combobox') + cell = gtk.CellRendererText() + theme_combobox.pack_start(cell, True) + theme_combobox.add_attribute(cell, 'text', 0) + self.update_theme_list() + # iconset iconsets_list = os.listdir(os.path.join(gajim.DATA_DIR, 'iconsets')) if os.path.isdir(gajim.MY_ICONSETS_PATH): @@ -179,121 +208,11 @@ class PreferencesWindow: if gajim.config.get('iconset') == l[i]: self.iconset_combobox.set_active(i) - # Set default for single window type - choices = common.config.opt_one_window_types - type = gajim.config.get('one_message_window') - if type in choices: - self.one_window_type_combobox.set_active(choices.index(type)) - else: - self.one_window_type_combobox.set_active(0) - - # Compact View - st = gajim.config.get('compact_view') - self.xml.get_widget('compact_view_checkbutton').set_active(st) - - # Set default for treat incoming messages - choices = common.config.opt_treat_incoming_messages - type = gajim.config.get('treat_incoming_messages') - if type in choices: - self.treat_incoming_messages_combobox.set_active(choices.index(type)) - else: - self.treat_incoming_messages_combobox.set_active(0) - # Use transports iconsets st = gajim.config.get('use_transports_iconsets') self.xml.get_widget('transports_iconsets_checkbutton').set_active(st) - # Themes - theme_combobox = self.xml.get_widget('theme_combobox') - cell = gtk.CellRendererText() - theme_combobox.pack_start(cell, True) - theme_combobox.add_attribute(cell, 'text', 0) - self.update_theme_list() - - # use speller - if os.name == 'nt': - self.xml.get_widget('speller_checkbutton').set_no_show_all(True) - else: - if HAS_GTK_SPELL: - st = gajim.config.get('use_speller') - self.xml.get_widget('speller_checkbutton').set_active(st) - else: - self.xml.get_widget('speller_checkbutton').set_sensitive(False) - - # Ignore XHTML - st = gajim.config.get('ignore_incoming_xhtml') - self.xml.get_widget('xhtml_checkbutton').set_active(st) - - # Print time - st = gajim.config.get('print_ichat_every_foo_minutes') - text = _('Every %s _minutes') % st - self.xml.get_widget('time_sometimes_radiobutton').set_label(text) - - if gajim.config.get('print_time') == 'never': - self.xml.get_widget('time_never_radiobutton').set_active(True) - elif gajim.config.get('print_time') == 'sometimes': - self.xml.get_widget('time_sometimes_radiobutton').set_active(True) - else: - self.xml.get_widget('time_always_radiobutton').set_active(True) - - # Color for incoming messages - colSt = gajim.config.get('inmsgcolor') - self.xml.get_widget('incoming_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Color for outgoing messages - colSt = gajim.config.get('outmsgcolor') - self.xml.get_widget('outgoing_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Color for status messages - colSt = gajim.config.get('statusmsgcolor') - self.xml.get_widget('status_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Color for hyperlinks - colSt = gajim.config.get('urlmsgcolor') - self.xml.get_widget('url_msg_colorbutton').set_color( - gtk.gdk.color_parse(colSt)) - - # Font for messages - font = gajim.config.get('conversation_font') - # try to set default font for the current desktop env - fontbutton = self.xml.get_widget('conversation_fontbutton') - if font == '': - fontbutton.set_sensitive(False) - self.xml.get_widget('default_chat_font').set_active(True) - else: - fontbutton.set_font_name(font) - - # on new message - only_in_roster = True - if gajim.config.get('notify_on_new_message'): - self.xml.get_widget('notify_on_new_message_radiobutton').set_active( - True) - only_in_roster = False - if gajim.config.get('autopopup'): - self.xml.get_widget('popup_new_message_radiobutton').set_active(True) - only_in_roster = False - if only_in_roster: - self.xml.get_widget('only_in_roster_radiobutton').set_active(True) - - # notify on online statuses - st = gajim.config.get('notify_on_signin') - self.notify_on_signin_checkbutton.set_active(st) - - # notify on offline statuses - st = gajim.config.get('notify_on_signout') - self.notify_on_signout_checkbutton.set_active(st) - - # autopopupaway - st = gajim.config.get('autopopupaway') - self.auto_popup_away_checkbutton.set_active(st) - - # Ignore messages from unknown contacts - self.xml.get_widget('ignore_events_from_unknown_contacts_checkbutton').\ - set_active(gajim.config.get('ignore_unknown_contacts')) - + ### Privacy tab ### # outgoing send chat state notifications st = gajim.config.get('outgoing_chat_state_notifications') combo = self.xml.get_widget('outgoing_chat_states_combobox') @@ -314,8 +233,34 @@ class PreferencesWindow: else: # disabled combo.set_active(2) + # Ignore messages from unknown contacts + self.xml.get_widget('ignore_events_from_unknown_contacts_checkbutton').\ + set_active(gajim.config.get('ignore_unknown_contacts')) + + ### Events tab ### + # On new event + on_event_combobox = self.xml.get_widget('on_event_combobox') + if gajim.config.get('autopopup'): + on_event_combobox.set_active(0) + elif gajim.config.get('notify_on_new_message'): + on_event_combobox.set_active(1) + else: + on_event_combobox.set_active(2) + + # notify on online statuses + st = gajim.config.get('notify_on_signin') + self.notify_on_signin_checkbutton.set_active(st) + + # notify on offline statuses + st = gajim.config.get('notify_on_signout') + self.notify_on_signout_checkbutton.set_active(st) + + # autopopupaway + st = gajim.config.get('autopopupaway') + self.auto_popup_away_checkbutton.set_active(st) + # sounds - if os.name == 'nt': + if ((os.name == 'nt') or (sys.platform == 'darwin')): # if windows, player must not become visible on show_all soundplayer_hbox = self.xml.get_widget('soundplayer_hbox') soundplayer_hbox.set_no_show_all(True) @@ -362,7 +307,7 @@ class PreferencesWindow: self.fill_sound_treeview() - #Autoaway + # Autoaway st = gajim.config.get('autoaway') self.auto_away_checkbutton.set_active(st) @@ -453,18 +398,34 @@ class PreferencesWindow: 'applications_combobox') self.xml.get_widget('custom_apps_frame').hide() self.xml.get_widget('custom_apps_frame').set_no_show_all(True) + + if sys.platform == 'darwin': + self.applications_combobox.remove_text(4) + self.applications_combobox.remove_text(3) + self.applications_combobox.remove_text(2) + self.applications_combobox.remove_text(1) + self.applications_combobox.append_text( + _('Always use OS/X default applications')) + self.applications_combobox.append_text(_('Custom')) + if gajim.config.get('autodetect_browser_mailer'): self.applications_combobox.set_active(0) # else autodetect_browser_mailer is False. - # so user has 'Always Use GNOME/KDE/XFCE4' or Custom + # so user has 'Always Use GNOME/KDE/Xfce' or Custom elif gajim.config.get('openwith') == 'gnome-open': self.applications_combobox.set_active(1) elif gajim.config.get('openwith') == 'kfmclient exec': self.applications_combobox.set_active(2) elif gajim.config.get('openwith') == 'exo-open': - self.applications_combobox.set_active(3) + self.applications_combobox.set_active(3) + elif ((sys.platform == 'darwin') and + (gajim.config.get('openwith') == 'open')): + self.applications_combobox.set_active(1) elif gajim.config.get('openwith') == 'custom': - self.applications_combobox.set_active(4) + if sys.platform == 'darwin': + self.applications_combobox.set_active(2) + else: + self.applications_combobox.set_active(4) self.xml.get_widget('custom_apps_frame').show() self.xml.get_widget('custom_browser_entry').set_text( @@ -500,23 +461,23 @@ class PreferencesWindow: # PEP st = gajim.config.get('publish_mood') - self.xml.get_widget('pub_mood').set_active(st) - + self.xml.get_widget('publish_mood_checkbutton').set_active(st) + st = gajim.config.get('publish_activity') - self.xml.get_widget('pub_activity').set_active(st) - + self.xml.get_widget('publish_activity_checkbutton').set_active(st) + st = gajim.config.get('publish_tune') - self.xml.get_widget('pub_tune').set_active(st) - + self.xml.get_widget('publish_tune_checkbutton').set_active(st) + st = gajim.config.get('subscribe_mood') - self.xml.get_widget('sub_mood').set_active(st) - + self.xml.get_widget('subscribe_mood_checkbutton').set_active(st) + st = gajim.config.get('subscribe_activity') - self.xml.get_widget('sub_activity').set_active(st) - + self.xml.get_widget('subscribe_activity_checkbutton').set_active(st) + st = gajim.config.get('subscribe_tune') - self.xml.get_widget('sub_tune').set_active(st) - + self.xml.get_widget('subscribe_tune_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') @@ -535,7 +496,37 @@ class PreferencesWindow: break else: frame_gmail.hide() - + + # Color for incoming messages + colSt = gajim.config.get('inmsgcolor') + self.xml.get_widget('incoming_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Color for outgoing messages + colSt = gajim.config.get('outmsgcolor') + self.xml.get_widget('outgoing_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Color for status messages + colSt = gajim.config.get('statusmsgcolor') + self.xml.get_widget('status_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Color for hyperlinks + colSt = gajim.config.get('urlmsgcolor') + self.xml.get_widget('url_msg_colorbutton').set_color( + gtk.gdk.color_parse(colSt)) + + # Font for messages + font = gajim.config.get('conversation_font') + # try to set default font for the current desktop env + fontbutton = self.xml.get_widget('conversation_fontbutton') + if font == '': + fontbutton.set_sensitive(False) + self.xml.get_widget('default_chat_font').set_active(True) + else: + fontbutton.set_font_name(font) + self.xml.signal_autoconnect(self) self.sound_tree.get_model().connect('row-changed', @@ -550,6 +541,8 @@ class PreferencesWindow: self.theme_preferences = None self.notebook.set_current_page(0) + if not gajim.config.get('use_pep'): + self.notebook.remove_page(5) self.window.show_all() gtkgui_helpers.possibly_move_window_in_current_desktop(self.window) @@ -565,37 +558,21 @@ class PreferencesWindow: w.set_sensitive(widget.get_active()) gajim.interface.save_config() - def on_trayicon_checkbutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('trayicon', True) - gajim.interface.show_systray() - show = helpers.get_global_show() - 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() - # no tray, show roster! - gajim.config.set('show_roster_on_startup', True) - gajim.interface.roster.draw_roster() - gajim.interface.save_config() - - def on_pub_mood_toggled(self, widget): + def on_publish_mood_checkbutton_toggled(self, widget): if widget.get_active() == False: for account in gajim.connections: if gajim.connections[account].pep_supported: pep.user_send_mood(account, '') self.on_checkbutton_toggled(widget, 'publish_mood') - def on_pub_activity_toggled(self, widget): + def on_publish_activity_checkbutton_toggled(self, widget): if widget.get_active() == False: for account in gajim.connections: if gajim.connections[account].pep_supported: pep.user_send_activity(account, '') self.on_checkbutton_toggled(widget, 'publish_activity') - def on_pub_tune_toggled(self, widget): + def on_publish_tune_checkbutton_toggled(self, widget): if widget.get_active() == False: for account in gajim.connections: if gajim.connections[account].pep_supported: @@ -604,13 +581,13 @@ class PreferencesWindow: gajim.interface.roster.enable_syncing_status_msg_from_current_music_track( widget.get_active()) - def on_sub_mood_toggled(self, widget): + def on_subscribe_mood_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'subscribe_mood') - def on_sub_activity_toggled(self, widget): + def on_subscribe_activity_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'subscribe_activity') - def on_sub_tune_toggled(self, widget): + def on_subscribe_tune_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'subscribe_tune') def on_save_position_checkbutton_toggled(self, widget): @@ -620,13 +597,6 @@ class PreferencesWindow: 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() - for ctl in gajim.interface.msg_win_mgr.controls(): - if ctl.type_id == message_control.TYPE_GC: - ctl.update_ui() - def on_show_avatars_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_avatars_in_roster') gajim.interface.roster.draw_roster() @@ -637,7 +607,18 @@ class PreferencesWindow: message_control.TYPE_GC) + \ gajim.interface.minimized_controls[account].values(): gc_control.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() + for ctl in gajim.interface.msg_win_mgr.controls(): + if ctl.type_id == message_control.TYPE_GC: + ctl.update_ui() + + def on_sort_by_show_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'sort_by_show') + gajim.interface.roster.draw_roster() + def on_emoticons_combobox_changed(self, widget): active = widget.get_active() model = widget.get_model() @@ -656,51 +637,10 @@ class PreferencesWindow: for win in gajim.interface.msg_win_mgr.windows(): win.toggle_emoticons() - def on_iconset_combobox_changed(self, widget): - model = widget.get_model() - active = widget.get_active() - icon_string = model[active][1].decode('utf-8') - gajim.config.set('iconset', icon_string) - gajim.interface.roster.reload_jabber_state_images() - gajim.interface.save_config() - - def on_transports_iconsets_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'use_transports_iconsets') - gajim.interface.roster.reload_jabber_state_images() - - def on_manage_theme_button_clicked(self, widget): - if self.theme_preferences is None: - self.theme_preferences = dialogs.GajimThemesWindow() - else: - self.theme_preferences.window.present() - self.theme_preferences.select_active_theme() - - def on_theme_combobox_changed(self, widget): - model = widget.get_model() + def on_treat_incoming_messages_combobox_changed(self, widget): active = widget.get_active() - config_theme = model[active][0].decode('utf-8').replace(' ', '_') - - gajim.config.set('roster_theme', config_theme) - - # begin repainting themed widgets throughout - gajim.interface.roster.repaint_themed_widgets() - gajim.interface.roster.change_roster_style(None) - gajim.interface.save_config() - - def update_theme_list(self): - theme_combobox = self.xml.get_widget('theme_combobox') - model = gtk.ListStore(str) - theme_combobox.set_model(model) - i = 0 - for config_theme in gajim.config.get_per('themes'): - theme = config_theme.replace('_', ' ') - model.append([theme]) - if gajim.config.get('roster_theme') == config_theme: - theme_combobox.set_active(i) - i += 1 - - def on_open_advanced_notifications_button_clicked(self, widget): - dialogs.AdvancedNotificationsWindow() + config_type = common.config.opt_treat_incoming_messages[active] + gajim.config.set('treat_incoming_messages', config_type) def on_one_window_type_combo_changed(self, widget): active = widget.get_active() @@ -709,10 +649,16 @@ class PreferencesWindow: gajim.interface.save_config() gajim.interface.msg_win_mgr.reconfig() - def on_treat_incoming_messages_combobox_changed(self, widget): + def on_compact_view_checkbutton_toggled(self, widget): active = widget.get_active() - config_type = common.config.opt_treat_incoming_messages[active] - gajim.config.set('treat_incoming_messages', config_type) + for ctl in gajim.interface.msg_win_mgr.controls(): + ctl.chat_buttons_set_visible(active) + gajim.config.set('compact_view', active) + gajim.interface.save_config() + gajim.interface.roster.draw_roster() + + def on_xhtml_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ignore_incoming_xhtml') def apply_speller(self): for acct in gajim.connections: @@ -737,15 +683,6 @@ class PreferencesWindow: if spell_obj: spell_obj.detach() - def on_compact_view_checkbutton_toggled(self, widget): - active = widget.get_active() - for ctl in gajim.interface.msg_win_mgr.controls(): - ctl.chat_buttons_set_visible(active) - gajim.config.set('compact_view', active) - gajim.interface.save_config() - gajim.interface.roster.draw_roster() - - def on_speller_checkbutton_toggled(self, widget): active = widget.get_active() gajim.config.set('use_speller', active) @@ -771,22 +708,111 @@ class PreferencesWindow: else: self.remove_speller() - def on_xhtml_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ignore_incoming_xhtml') - - def on_time_never_radiobutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('print_time', 'never') + def on_theme_combobox_changed(self, widget): + model = widget.get_model() + active = widget.get_active() + config_theme = model[active][0].decode('utf-8').replace(' ', '_') + + gajim.config.set('roster_theme', config_theme) + + # begin repainting themed widgets throughout + gajim.interface.roster.repaint_themed_widgets() + gajim.interface.roster.change_roster_style(None) gajim.interface.save_config() - def on_time_sometimes_radiobutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('print_time', 'sometimes') + def update_theme_list(self): + theme_combobox = self.xml.get_widget('theme_combobox') + model = gtk.ListStore(str) + theme_combobox.set_model(model) + i = 0 + for config_theme in gajim.config.get_per('themes'): + theme = config_theme.replace('_', ' ') + model.append([theme]) + if gajim.config.get('roster_theme') == config_theme: + theme_combobox.set_active(i) + i += 1 + + def on_manage_theme_button_clicked(self, widget): + if self.theme_preferences is None: + self.theme_preferences = dialogs.GajimThemesWindow() + else: + self.theme_preferences.window.present() + self.theme_preferences.select_active_theme() + + def on_iconset_combobox_changed(self, widget): + model = widget.get_model() + active = widget.get_active() + icon_string = model[active][1].decode('utf-8') + gajim.config.set('iconset', icon_string) + gajim.interface.roster.reload_jabber_state_images() gajim.interface.save_config() - def on_time_always_radiobutton_toggled(self, widget): - if widget.get_active(): - gajim.config.set('print_time', 'always') + def on_transports_iconsets_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'use_transports_iconsets') + gajim.interface.roster.reload_jabber_state_images() + + def on_outgoing_chat_states_combobox_changed(self, widget): + active = widget.get_active() + if active == 0: # all + gajim.config.set('outgoing_chat_state_notifications', 'all') + elif active == 1: # only composing + gajim.config.set('outgoing_chat_state_notifications', 'composing_only') + else: # disabled + gajim.config.set('outgoing_chat_state_notifications', 'disabled') + + def on_displayed_chat_states_combobox_changed(self, widget): + active = widget.get_active() + if active == 0: # all + gajim.config.set('displayed_chat_state_notifications', 'all') + elif active == 1: # only composing + gajim.config.set('displayed_chat_state_notifications', + 'composing_only') + else: # disabled + gajim.config.set('displayed_chat_state_notifications', 'disabled') + + def on_ignore_events_from_unknown_contacts_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ignore_unknown_contacts') + + def on_on_event_combobox_changed(self, widget): + active = widget.get_active() + if active == 0: + gajim.config.set('autopopup', True) + gajim.config.set('notify_on_new_message', False) + elif active == 1: + gajim.config.set('autopopup', False) + gajim.config.set('notify_on_new_message', True) + else: + gajim.config.set('autopopup', False) + gajim.config.set('notify_on_new_message', False) + + def on_notify_on_signin_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'notify_on_signin') + + def on_notify_on_signout_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'notify_on_signout') + + def on_auto_popup_away_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'autopopupaway') + + def on_open_advanced_notifications_button_clicked(self, widget): + dialogs.AdvancedNotificationsWindow() + + def on_play_sounds_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'sounds_on', + [self.xml.get_widget('soundplayer_hbox'), + self.xml.get_widget('sounds_scrolledwindow'), + self.xml.get_widget('browse_sounds_hbox')]) + + def on_soundplayer_entry_changed(self, widget): + gajim.config.set('soundplayer', widget.get_text().decode('utf-8')) + gajim.interface.save_config() + + def on_sounds_treemodel_row_changed(self, model, path, iter): + sound_event = model[iter][3].decode('utf-8') + gajim.config.set_per('soundevents', sound_event, 'enabled', + bool(model[path][0])) + gajim.config.set_per('soundevents', sound_event, 'path', + model[iter][2].decode('utf-8')) gajim.interface.save_config() def update_text_tags(self): @@ -854,73 +880,6 @@ class PreferencesWindow: self.update_text_tags() gajim.interface.save_config() - def on_notify_on_new_message_radiobutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'notify_on_new_message', - [self.auto_popup_away_checkbutton]) - - def on_popup_new_message_radiobutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'autopopup', - [self.auto_popup_away_checkbutton]) - - def on_only_in_roster_radiobutton_toggled(self, widget): - if widget.get_active(): - self.auto_popup_away_checkbutton.set_sensitive(False) - - def on_notify_on_signin_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'notify_on_signin') - - def on_notify_on_signout_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'notify_on_signout') - - def on_auto_popup_away_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'autopopupaway') - - def on_ignore_events_from_unknown_contacts_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ignore_unknown_contacts') - - def on_outgoing_chat_states_combobox_changed(self, widget): - active = widget.get_active() - if active == 0: # all - gajim.config.set('outgoing_chat_state_notifications', 'all') - elif active == 1: # only composing - gajim.config.set('outgoing_chat_state_notifications', 'composing_only') - else: # disabled - gajim.config.set('outgoing_chat_state_notifications', 'disabled') - - def on_displayed_chat_states_combobox_changed(self, widget): - active = widget.get_active() - if active == 0: # all - gajim.config.set('displayed_chat_state_notifications', 'all') - elif active == 1: # only composing - gajim.config.set('displayed_chat_state_notifications', - 'composing_only') - else: # disabled - gajim.config.set('displayed_chat_state_notifications', 'disabled') - - def on_play_sounds_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'sounds_on', - [self.xml.get_widget('soundplayer_hbox'), - self.xml.get_widget('sounds_scrolledwindow'), - self.xml.get_widget('browse_sounds_hbox')]) - - def on_soundplayer_entry_changed(self, widget): - gajim.config.set('soundplayer', widget.get_text().decode('utf-8')) - gajim.interface.save_config() - - def on_prompt_online_status_message_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ask_online_status') - - def on_prompt_offline_status_message_checkbutton_toggled(self, widget): - self.on_checkbutton_toggled(widget, 'ask_offline_status') - - def on_sounds_treemodel_row_changed(self, model, path, iter): - sound_event = model[iter][3].decode('utf-8') - gajim.config.set_per('soundevents', sound_event, 'enabled', - bool(model[path][0])) - gajim.config.set_per('soundevents', sound_event, 'path', - model[iter][2].decode('utf-8')) - gajim.interface.save_config() - def on_auto_away_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'autoaway', [self.auto_away_time_spinbutton, self.auto_away_message_entry]) @@ -951,6 +910,12 @@ class PreferencesWindow: def on_auto_xa_message_entry_changed(self, widget): gajim.config.set('autoxa_message', widget.get_text().decode('utf-8')) + def on_prompt_online_status_message_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ask_online_status') + + def on_prompt_offline_status_message_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'ask_offline_status') + def fill_default_msg_treeview(self): model = self.default_msg_tree.get_model() model.clear() @@ -1010,19 +975,30 @@ class PreferencesWindow: def on_applications_combobox_changed(self, widget): gajim.config.set('autodetect_browser_mailer', False) - if widget.get_active() == 4: - self.xml.get_widget('custom_apps_frame').show() - gajim.config.set('openwith', 'custom') - else: + if sys.platform == 'darwin': if widget.get_active() == 0: gajim.config.set('autodetect_browser_mailer', True) + self.xml.get_widget('custom_apps_frame').hide() elif widget.get_active() == 1: - gajim.config.set('openwith', 'gnome-open') + self.xml.get_widget('custom_apps_frame').hide() + gajim.config.set('openwith', 'open') elif widget.get_active() == 2: - gajim.config.set('openwith', 'kfmclient exec') - elif widget.get_active() == 3: - gajim.config.set('openwith', 'exo-open') - self.xml.get_widget('custom_apps_frame').hide() + self.xml.get_widget('custom_apps_frame').show() + gajim.config.set('openwith', 'custom') + else: + if widget.get_active() == 4: + self.xml.get_widget('custom_apps_frame').show() + gajim.config.set('openwith', 'custom') + else: + if widget.get_active() == 0: + gajim.config.set('autodetect_browser_mailer', True) + elif widget.get_active() == 1: + gajim.config.set('openwith', 'gnome-open') + elif widget.get_active() == 2: + gajim.config.set('openwith', 'kfmclient exec') + elif widget.get_active() == 3: + gajim.config.set('openwith', 'exo-open') + self.xml.get_widget('custom_apps_frame').hide() gajim.interface.save_config() def on_custom_browser_entry_changed(self, widget): @@ -1377,10 +1353,6 @@ class AccountsWindow: def on_close_button_clicked(self, widget): self.window.destroy() - def on_accounts_window_destroy(self, widget): - if gajim.interface.instances.has_key('accounts'): - del gajim.interface.instances['accounts'] - def __init__(self): self.xml = gtkgui_helpers.get_glade('accounts_window.glade') self.window = self.xml.get_widget('accounts_window') @@ -1418,8 +1390,6 @@ class AccountsWindow: st = gajim.config.get('mergeaccounts') self.xml.get_widget('merge_checkbutton').set_active(st) - import os - self.avahi_available = True try: import avahi @@ -1493,8 +1463,8 @@ class AccountsWindow: gajim.connections[gajim.ZEROCONF_ACC_NAME].update_details() return - elif self.need_relogin and gajim.connections[self.current_account].\ - connected > 0: + elif self.need_relogin and self.current_account and \ + gajim.connections[self.current_account].connected > 0: def login(account, show_before, status_before): ''' login with previous status''' # first make sure connection is really closed, @@ -1605,7 +1575,8 @@ class AccountsWindow: # Personal tab gpg_key_label = self.xml.get_widget('gpg_key_label2') - if gajim.config.get('usegpg'): + if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME) and \ + gajim.connections[gajim.ZEROCONF_ACC_NAME].gpg: self.xml.get_widget('gpg_choose_button2').set_sensitive(True) self.init_account_gpg() else: @@ -1621,7 +1592,7 @@ class AccountsWindow: account = self.current_account keyid = gajim.config.get_per('accounts', account, 'keyid') keyname = gajim.config.get_per('accounts', account, 'keyname') - savegpgpass = gajim.config.get_per('accounts', account, 'savegpgpass') + use_gpg_agent = gajim.config.get('use_gpg_agent') if account == gajim.ZEROCONF_ACC_NAME: widget_name_add = '2' @@ -1630,27 +1601,19 @@ class AccountsWindow: gpg_key_label = self.xml.get_widget('gpg_key_label' + widget_name_add) gpg_name_label = self.xml.get_widget('gpg_name_label' + widget_name_add) - gpg_save_password_checkbutton = \ - self.xml.get_widget('gpg_save_password_checkbutton' + widget_name_add) - gpg_password_entry = self.xml.get_widget('gpg_password_entry' + \ - widget_name_add) + use_gpg_agent_checkbutton = self.xml.get_widget( + 'use_gpg_agent_checkbutton' + widget_name_add) - if not keyid or not gajim.config.get('usegpg'): - gpg_save_password_checkbutton.set_sensitive(False) - gpg_password_entry.set_sensitive(False) + if not keyid or not gajim.connections[account].gpg: + use_gpg_agent_checkbutton.set_sensitive(False) gpg_key_label.set_text(_('No key selected')) gpg_name_label.set_text('') return gpg_key_label.set_text(keyid) gpg_name_label.set_text(keyname) - gpg_save_password_checkbutton.set_sensitive(True) - gpg_save_password_checkbutton.set_active(savegpgpass) - - if savegpgpass: - gpg_password_entry.set_sensitive(True) - gpgpassword = gajim.config.get_per('accounts', account, 'gpgpassword') - gpg_password_entry.set_text(gpgpassword) + use_gpg_agent_checkbutton.set_sensitive(True) + use_gpg_agent_checkbutton.set_active(use_gpg_agent) def init_normal_account(self): account = self.current_account @@ -1704,7 +1667,7 @@ class AccountsWindow: # Personal tab gpg_key_label = self.xml.get_widget('gpg_key_label1') - if gajim.config.get('usegpg'): + if gajim.connections[account].gpg: self.xml.get_widget('gpg_choose_button1').set_sensitive(True) self.init_account_gpg() else: @@ -1762,10 +1725,7 @@ class AccountsWindow: win_opened = True break # Detect if we have opened windows for this account - self.dialog = None - def remove(widget, account): - if self.dialog: - self.dialog.destroy() + def remove(account): if gajim.interface.instances[account].has_key('remove_account'): gajim.interface.instances[account]['remove_account'].window.\ present() @@ -1773,13 +1733,13 @@ class AccountsWindow: gajim.interface.instances[account]['remove_account'] = \ RemoveAccountWindow(account) if win_opened: - self.dialog = dialogs.ConfirmationDialog( + 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) + remove(account) def on_rename_button_clicked(self, widget): if gajim.connections[self.current_account].connected != 0: @@ -1839,7 +1799,7 @@ class AccountsWindow: # ServiceCache object keep old property account if hasattr(gajim.connections[old_name], 'services_cache'): - gajim.connections[self.account].services_cache.account = new_name + gajim.connections[old_name].services_cache.account = new_name del gajim.interface.instances[old_name] del gajim.interface.minimized_controls[old_name] del gajim.nicks[old_name] @@ -2010,6 +1970,7 @@ class AccountsWindow: return self.on_checkbutton_toggled(widget, 'sync_with_global_status', account=self.current_account) + gajim.interface.roster.update_status_combobox() def on_use_ft_proxies_checkbutton1_toggled(self, widget): if self.ignore_events: @@ -2117,17 +2078,14 @@ class AccountsWindow: wiget_name_ext = '2' else: wiget_name_ext = '1' - checkbutton = self.xml.get_widget('gpg_save_password_checkbutton' + \ - wiget_name_ext) gpg_key_label = self.xml.get_widget('gpg_key_label' + wiget_name_ext) gpg_name_label = self.xml.get_widget('gpg_name_label' + wiget_name_ext) - gpg_password_entry = self.xml.get_widget('gpg_password_entry' + \ - wiget_name_ext) + use_gpg_agent_checkbutton = self.xml.get_widget( + 'use_gpg_agent_checkbutton' + wiget_name_ext) if keyID[0] == _('None'): gpg_key_label.set_text(_('No key selected')) gpg_name_label.set_text('') - checkbutton.set_sensitive(False) - gpg_password_entry.set_sensitive(False) + use_gpg_agent_checkbutton.set_sensitive(False) if self.option_changed('keyid', ''): self.need_relogin = True gajim.config.set_per('accounts', self.current_account, 'keyname', '') @@ -2135,34 +2093,20 @@ class AccountsWindow: else: gpg_key_label.set_text(keyID[0]) gpg_name_label.set_text(keyID[1]) - checkbutton.set_sensitive(True) + use_gpg_agent_checkbutton.set_sensitive(True) if self.option_changed('keyid', keyID[0]): self.need_relogin = True gajim.config.set_per('accounts', self.current_account, 'keyname', keyID[1]) gajim.config.set_per('accounts', self.current_account, 'keyid', keyID[0]) - gajim.config.set_per('accounts', self.current_account, 'savegpgpass', - False) - gajim.config.set_per('accounts', self.current_account, 'gpgpassword', '') - checkbutton.set_active(False) - gpg_password_entry.set_text('') - def on_gpg_save_password_checkbutton_toggled(self, widget): + def on_use_gpg_agent_checkbutton_toggled(self, widget): if self.current_account == gajim.ZEROCONF_ACC_NAME: wiget_name_ext = '2' else: wiget_name_ext = '1' - self.xml.get_widget('gpg_password_entry' + wiget_name_ext).set_sensitive( - widget.get_active()) - self.on_checkbutton_toggled(widget, 'savegpgpass', - account = self.current_account) - - def on_gpg_password_entry_changed(self, widget): - if self.ignore_events: - return - gajim.config.set_per('accounts', self.current_account, 'gpgpassword', - widget.get_text().decode('utf-8')) + self.on_checkbutton_toggled(widget, 'use_gpg_agent') def on_edit_details_button1_clicked(self, widget): if not gajim.interface.instances.has_key(self.current_account): @@ -2244,13 +2188,16 @@ class AccountsWindow: else: gajim.interface.roster.regroup = False gajim.interface.roster.draw_roster() - gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.roster.set_actions_menu_needs_rebuild() elif not gajim.config.get('enable_zeroconf') and widget.get_active(): self.xml.get_widget('zeroconf_notebook').set_sensitive(True) # enable (will create new account if not present) gajim.connections[gajim.ZEROCONF_ACC_NAME] = common.zeroconf.\ connection_zeroconf.ConnectionZeroconf(gajim.ZEROCONF_ACC_NAME) + if gajim.connections[gajim.ZEROCONF_ACC_NAME].gpg: + self.xml.get_widget('gpg_choose_button2').set_sensitive(True) + self.init_account_gpg() # update variables gajim.interface.instances[gajim.ZEROCONF_ACC_NAME] = {'infos': {}, 'disco': {}, 'gc_config': {}, 'search': {}} @@ -2276,7 +2223,7 @@ class AccountsWindow: else: gajim.interface.roster.regroup = False gajim.interface.roster.draw_roster() - gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.roster.set_actions_menu_needs_rebuild() gajim.interface.save_config() self.on_checkbutton_toggled(widget, 'enable_zeroconf') @@ -2641,9 +2588,7 @@ class RemoveAccountWindow: self.window.show_all() def on_remove_button_clicked(self, widget): - def remove(widget): - if self.dialog: - self.dialog.destroy() + def remove(): if gajim.connections[self.account].connected and \ not self.remove_and_unregister_radiobutton.get_active(): # change status to offline only if we will not remove this JID from @@ -2666,14 +2611,13 @@ class RemoveAccountWindow: else: self._on_remove_success(True) - self.dialog = None if gajim.connections[self.account].connected: - self.dialog = dialogs.ConfirmationDialog( + dialog = dialogs.ConfirmationDialog( _('Account "%s" is connected to the server') % self.account, _('If you remove it, the connection will be lost.'), on_response_ok = remove) else: - remove(None) + remove() def _on_remove_success(self, res): # action of unregistration has failed, we don't remove the account @@ -2706,7 +2650,7 @@ class RemoveAccountWindow: else: gajim.interface.roster.regroup = False gajim.interface.roster.draw_roster() - gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.roster.set_actions_menu_needs_rebuild() if gajim.interface.instances.has_key('accounts'): gajim.interface.instances['accounts'].init_accounts() self.window.destroy() @@ -2728,6 +2672,8 @@ class ManageBookmarksWindow: continue if gajim.connections[account].is_zeroconf: continue + if not gajim.connections[account].private_storage_supported: + continue iter = self.treestore.append(None, [None, account, None, None, None, None, None, None]) @@ -2900,7 +2846,7 @@ class ManageBookmarksWindow: gajim.connections[account_unicode].bookmarks.append(bmdict) gajim.connections[account_unicode].store_bookmarks() - gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.roster.set_actions_menu_needs_rebuild() self.window.destroy() def on_cancel_button_clicked(self, widget): @@ -3091,6 +3037,11 @@ class AccountCreationWizardWindow: self.window.show_all() def on_wizard_window_destroy(self, widget): + page = self.notebook.get_current_page() + if page in (4, 5) and self.account in gajim.connections: + # connection instance is saved in gajim.connections and we canceled the + # addition of the account + del gajim.connections[self.account] del gajim.interface.instances['account_creation_wizard'] def on_register_server_features_button_clicked(self, widget): @@ -3104,13 +3055,19 @@ class AccountCreationWizardWindow: self.window.destroy() def on_back_button_clicked(self, widget): - if self.notebook.get_current_page() in (1, 2): + cur_page = self.notebook.get_current_page() + if cur_page in (1, 2): self.notebook.set_current_page(0) self.back_button.set_sensitive(False) - elif self.notebook.get_current_page() == 3: + elif cur_page == 3: + self.xml.get_widget('form_vbox').remove(self.data_form_widget) + self.notebook.set_current_page(2) # show server page + elif cur_page == 4: + if self.account in gajim.connections: + del gajim.connections[self.account] self.notebook.set_current_page(2) self.xml.get_widget('form_vbox').remove(self.data_form_widget) - elif self.notebook.get_current_page() == 5: # finish page + elif cur_page == 6: # finish page self.forward_button.show() if self.modify: self.notebook.set_current_page(1) # Go to parameters page @@ -3193,9 +3150,10 @@ class AccountCreationWizardWindow: self.go_online_checkbutton.show() img = self.xml.get_widget('finish_image') img.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_DIALOG) - self.notebook.set_current_page(5) # show finish page + self.notebook.set_current_page(6) # show finish page self.show_vcard_checkbutton.set_active(False) elif cur_page == 2: + # We are creating a new account server = self.xml.get_widget('server_comboboxentry1').child.get_text()\ .decode('utf-8') @@ -3231,7 +3189,7 @@ class AccountCreationWizardWindow: config['custom_host'] = self.xml.get_widget( 'custom_host_entry').get_text().decode('utf-8') - self.notebook.set_current_page(4) # show creating page + self.notebook.set_current_page(5) # show creating page self.back_button.hide() self.forward_button.hide() self.update_progressbar_timeout_id = gobject.timeout_add(100, @@ -3241,6 +3199,18 @@ class AccountCreationWizardWindow: con.new_account(self.account, config) gajim.connections[self.account] = con elif cur_page == 3: + checked = self.xml.get_widget('ssl_checkbutton').get_active() + if checked: + hostname = gajim.connections[self.account].new_account_info[ + 'hostname'] + f = open(gajim.MY_CACERTS, 'a') + f.write(hostname + '\n') + f.write(self.ssl_cert + '\n\n') + f.close() + gajim.connections[self.account].new_account_info[ + 'ssl_fingerprint_sha1'] = self.ssl_fingerprint + self.notebook.set_current_page(4) # show fom page + elif cur_page == 4: if self.is_form: form = self.data_form_widget.data_form else: @@ -3249,7 +3219,7 @@ class AccountCreationWizardWindow: self.is_form) self.xml.get_widget('form_vbox').remove(self.data_form_widget) self.xml.get_widget('progressbar_label').set_markup('<b>Account is being created</b>\n\nPlease wait...') - self.notebook.set_current_page(4) # show creating page + self.notebook.set_current_page(5) # show creating page self.back_button.hide() self.forward_button.hide() self.update_progressbar_timeout_id = gobject.timeout_add(100, @@ -3279,13 +3249,13 @@ class AccountCreationWizardWindow: self.progressbar.pulse() return True # loop forever - def new_acc_connected(self, form, is_form): - '''connection to server succeded, present the form to the user''' + def new_acc_connected(self, form, is_form, ssl_msg, ssl_cert, + ssl_fingerprint): + '''connection to server succeded, present the form to the user.''' if self.update_progressbar_timeout_id is not None: gobject.source_remove(self.update_progressbar_timeout_id) self.back_button.show() self.forward_button.show() - self.notebook.set_current_page(3) # show form page self.is_form = is_form if is_form: dataform = dataforms.ExtendForm(node = form) @@ -3294,6 +3264,21 @@ class AccountCreationWizardWindow: self.data_form_widget = FakeDataForm(form) self.data_form_widget.show_all() self.xml.get_widget('form_vbox').pack_start(self.data_form_widget) + self.ssl_fingerprint = ssl_fingerprint + self.ssl_cert = ssl_cert + if ssl_msg: + # An SSL warning occured, show it + hostname = gajim.connections[self.account].new_account_info['hostname'] + self.xml.get_widget('ssl_label').set_markup(_('<b>Security Warning</b>' + '\n\nThe authenticity of the %s SSL certificate could be invalid.\n' + 'SSL Error: %s\n' + 'Do you still want to connect to this server?') % (hostname, + ssl_msg)) + text = _('Add this certificate to the list of trusted certificates.\nSHA1 fingerprint of the certificate:\n%s') % ssl_fingerprint + self.xml.get_widget('ssl_checkbutton').set_label(text) + self.notebook.set_current_page(3) # show SSL page + else: + self.notebook.set_current_page(4) # show form page def new_acc_not_connected(self, reason): '''Account creation failed: connection to server failed''' @@ -3309,7 +3294,7 @@ class AccountCreationWizardWindow: finish_text = '<big><b>%s</b></big>\n\n%s' % ( _('An error occurred during account creation') , reason) self.finish_label.set_markup(finish_text) - self.notebook.set_current_page(5) # show finish page + self.notebook.set_current_page(6) # show finish page def acc_is_ok(self, config): '''Account creation succeeded''' @@ -3332,7 +3317,7 @@ class AccountCreationWizardWindow: 'button, or later by choosing the Accounts menuitem under the Edit ' 'menu from the main window.')) self.finish_label.set_markup(finish_text) - self.notebook.set_current_page(5) # show finish page + self.notebook.set_current_page(6) # show finish page if self.update_progressbar_timeout_id is not None: gobject.source_remove(self.update_progressbar_timeout_id) @@ -3349,7 +3334,7 @@ class AccountCreationWizardWindow: finish_text = '<big><b>%s</b></big>\n\n%s' % (_('An error occurred during ' 'account creation') , reason) self.finish_label.set_markup(finish_text) - self.notebook.set_current_page(5) # show finish page + self.notebook.set_current_page(6) # show finish page if self.update_progressbar_timeout_id is not None: gobject.source_remove(self.update_progressbar_timeout_id) @@ -3426,8 +3411,6 @@ class AccountCreationWizardWindow: config['custom_host'] = '' config['keyname'] = '' config['keyid'] = '' - config['savegpgpass'] = False - config['gpgpassword'] = '' return config def save_account(self, login, server, savepass, password): @@ -3482,7 +3465,7 @@ class AccountCreationWizardWindow: else: gajim.interface.roster.regroup = False gajim.interface.roster.draw_roster() - gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.roster.set_actions_menu_needs_rebuild() gajim.interface.save_config() #---------- ZeroconfPropertiesWindow class -------------# diff --git a/src/conversation_textview.py b/src/conversation_textview.py index f4e06e1bb2..53b3a68b14 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -1,22 +1,28 @@ ## conversation_textview.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005-2006 Travis Shirk <travis@pobox.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 +## 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import random from tempfile import gettempdir from subprocess import Popen +from threading import Timer # for smooth scrolling import gtk import pango @@ -37,6 +43,107 @@ from common.fuzzyclock import FuzzyClock from htmltextview import HtmlTextView from common.exceptions import GajimGeneralException + +def is_selection_modified(mark): + name = mark.get_name() + if name and name in ('selection_bound', 'insert'): + return True + else: + return False + +def has_focus(widget): + return widget.flags() & gtk.HAS_FOCUS == gtk.HAS_FOCUS + +class TextViewImage(gtk.Image): + + def __init__(self, anchor): + super(TextViewImage, self).__init__() + self.anchor = anchor + self._selected = False + self._disconnect_funcs = [] + self.connect("parent-set", self.on_parent_set) + self.connect("expose-event", self.on_expose) + + def _get_selected(self): + parent = self.get_parent() + if not parent or not self.anchor: return False + buffer = parent.get_buffer() + position = buffer.get_iter_at_child_anchor(self.anchor) + bounds = buffer.get_selection_bounds() + if bounds and position.in_range(*bounds): + return True + else: + return False + + def get_state(self): + parent = self.get_parent() + if not parent: + return gtk.STATE_NORMAL + if self._selected: + if has_focus(parent): + return gtk.STATE_SELECTED + else: + return gtk.STATE_ACTIVE + else: + return gtk.STATE_NORMAL + + def _update_selected(self): + selected = self._get_selected() + if self._selected != selected: + self._selected = selected + self.queue_draw() + + def _do_connect(self, widget, signal, callback): + id = widget.connect(signal, callback) + def disconnect(): + widget.disconnect(id) + self._disconnect_funcs.append(disconnect) + + def _disconnect_signals(self): + for func in self._disconnect_funcs: + func() + self._disconnect_funcs = [] + + def on_parent_set(self, widget, old_parent): + parent = self.get_parent() + if not parent: + self._disconnect_signals() + return + + self._do_connect(parent, "style-set", self.do_queue_draw) + self._do_connect(parent, "focus-in-event", self.do_queue_draw) + self._do_connect(parent, "focus-out-event", self.do_queue_draw) + + textbuf = parent.get_buffer() + self._do_connect(textbuf, "mark-set", self.on_mark_set) + self._do_connect(textbuf, "mark-deleted", self.on_mark_deleted) + + def do_queue_draw(self, *args): + self.queue_draw() + return False + + def on_mark_set(self, buf, iterat, mark): + self.on_mark_modified(mark) + return False + + def on_mark_deleted(self, buf, mark): + self.on_mark_modified(mark) + return False + + def on_mark_modified(self, mark): + if is_selection_modified(mark): + self._update_selected() + + def on_expose(self, widget, event): + state = self.get_state() + if state != gtk.STATE_NORMAL: + gc = widget.get_style().base_gc[state] + area = widget.allocation + widget.window.draw_rectangle(gc, True, area.x, area.y, + area.width, area.height) + return False + + class ConversationTextview: '''Class for the conversation textview (where user reads already said messages) for chat/groupchat windows''' @@ -44,6 +151,10 @@ class ConversationTextview: 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) + # smooth scroll constants + MAX_SCROLL_TIME = 0.4 # seconds + SCROLL_DELAY = 33 # milliseconds + 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''' @@ -62,6 +173,8 @@ class ConversationTextview: self.tv.set_left_margin(2) self.tv.set_right_margin(2) self.handlers = {} + self.images = [] + self.image_cache = {} # connect signals id = self.tv.connect('motion_notify_event', @@ -72,6 +185,11 @@ class ConversationTextview: id = self.tv.connect('button_press_event', self.on_textview_button_press_event) self.handlers[id] = self.tv + + id = self.tv.connect("expose-event", + self.on_textview_expose_event) + self.handlers[id] = self.tv + self.account = account self.change_cursor = None @@ -154,6 +272,7 @@ class ConversationTextview: self.line_tooltip = tooltips.BaseTooltip() # use it for hr too self.tv.focus_out_line_pixbuf = ConversationTextview.FOCUS_OUT_LINE_PIXBUF + self.smooth_id = None def del_handlers(self): for i in self.handlers.keys(): @@ -181,6 +300,48 @@ class ConversationTextview: return True return False + # Smooth scrolling inspired by Pidgin code + def smooth_scroll(self): + parent = self.tv.get_parent() + if not parent: + return False + vadj = parent.get_vadjustment() + max_val = vadj.upper - vadj.page_size + 1 + cur_val = vadj.get_value() + # scroll by 1/3rd of remaining distance + onethird = cur_val + ((max_val - cur_val) / 3.0) + vadj.set_value(onethird) + if max_val - onethird < 0.01: + self.smooth_id = None + self.smooth_scroll_timer.cancel() + return False + return True + + def smooth_scroll_timeout(self): + gobject.idle_add(self.do_smooth_scroll_timeout) + return + + def do_smooth_scroll_timeout(self): + if not self.smooth_id: + # we finished scrolling + return + gobject.source_remove(self.smooth_id) + self.smooth_id = None + parent = self.tv.get_parent() + if parent: + vadj = parent.get_vadjustment() + vadj.set_value(vadj.upper - vadj.page_size + 1) + + def smooth_scroll_to_end(self): + if None != self.smooth_id: # already scrolling + return False + self.smooth_id = gobject.timeout_add(self.SCROLL_DELAY, + self.smooth_scroll) + self.smooth_scroll_timer = Timer(self.MAX_SCROLL_TIME, + self.smooth_scroll_timeout) + self.smooth_scroll_timer.start() + return False + def scroll_to_end(self): parent = self.tv.get_parent() buffer = self.tv.get_buffer() @@ -192,7 +353,9 @@ class ConversationTextview: adjustment.set_value(0) return False # when called in an idle_add, just do it once - def bring_scroll_to_end(self, diff_y = 0): + def bring_scroll_to_end(self, diff_y = 0,\ + use_smooth =\ + gajim.config.get('use_smooth_scrolling')): ''' scrolls to the end of textview if end is not visible ''' buffer = self.tv.get_buffer() end_iter = buffer.get_end_iter() @@ -200,7 +363,10 @@ class ConversationTextview: visible_rect = self.tv.get_visible_rect() # scroll only if expected end is not visible if end_rect.y >= (visible_rect.y + visible_rect.height + diff_y): - gobject.idle_add(self.scroll_to_end_iter) + if use_smooth: + gobject.idle_add(self.smooth_scroll_to_end) + else: + gobject.idle_add(self.scroll_to_end_iter) def scroll_to_end_iter(self): buffer = self.tv.get_buffer() @@ -288,6 +454,32 @@ class ConversationTextview: self.line_tooltip.show_tooltip(_('Text below this line is what has ' 'been said since the last time you paid attention to this group chat'), 8, position[1] + pointer[1]) + def on_textview_expose_event(self, widget, event): + expalloc = event.area + exp_x0 = expalloc.x + exp_y0 = expalloc.y + exp_x1 = exp_x0 + expalloc.width + exp_y1 = exp_y0 + expalloc.height + + try: + tryfirst = [self.image_cache[(exp_x0, exp_y0)]] + except KeyError: + tryfirst = [] + + for image in tryfirst + self.images: + imgalloc = image.allocation + img_x0 = imgalloc.x + img_y0 = imgalloc.y + img_x1 = img_x0 + imgalloc.width + img_y1 = img_y0 + imgalloc.height + + if img_x0 <= exp_x0 and img_y0 <= exp_y0 and \ + exp_x1 <= img_x1 and exp_y1 <= img_y1: + self.image_cache[(img_x0, img_y0)] = image + widget.propagate_expose(image, event) + return True + return False + def on_textview_motion_notify_event(self, widget, event): '''change the cursor to a hand when we are over a mail or an url''' pointer_x, pointer_y, spam = self.tv.window.get_pointer() @@ -407,7 +599,7 @@ class ConversationTextview: item.set_property('sensitive', False) else: item = gtk.MenuItem(_('Web _Search for it')) - link = search_link % self.selected_phrase + link = search_link % self.selected_phrase id = item.connect('activate', self.visit_url_from_menuitem, link) self.handlers[id] = item submenu.append(item) @@ -548,6 +740,7 @@ class ConversationTextview: if event.type == gtk.gdk.BUTTON_PRESS: if event.button == 3: # right click self.make_link_menu(event, kind, href) + return True else: # we launch the correct application helpers.launch_browser_mailer(kind, href) @@ -632,7 +825,7 @@ class ConversationTextview: cwd=gettempdir()) exitcode = p.wait() - if exitcode == 0: + if exitcode == 0: p = Popen(['dvips', '-E', '-o', tmpfile + '.ps', tmpfile + '.dvi'], cwd=gettempdir()) exitcode = p.wait() @@ -670,13 +863,14 @@ class ConversationTextview: emot_ascii = possible_emot_ascii_caps end_iter = buffer.get_end_iter() anchor = buffer.create_child_anchor(end_iter) - img = gtk.Image() + img = TextViewImage(anchor) animations = gajim.interface.emoticons_animations if not emot_ascii in animations: animations[emot_ascii] = gtk.gdk.PixbufAnimation( gajim.interface.emoticons[emot_ascii]) img.set_from_animation(animations[emot_ascii]) img.show() + self.images.append(img) # add with possible animation self.tv.add_child_at_anchor(img, anchor) #FIXME: one day, somehow sync with regexp in gajim.py @@ -857,7 +1051,10 @@ class ConversationTextview: if at_the_end or kind == 'outgoing': # we are at the end or we are sending something # scroll to the end (via idle in case the scrollbar has appeared) - gobject.idle_add(self.scroll_to_end) + if gajim.config.get('use_smooth_scrolling'): + gobject.idle_add(self.smooth_scroll_to_end) + else: + gobject.idle_add(self.scroll_to_end) buffer.end_user_action() diff --git a/src/dataforms_widget.py b/src/dataforms_widget.py index 19fb91c186..95f60ab8b8 100644 --- a/src/dataforms_widget.py +++ b/src/dataforms_widget.py @@ -1,42 +1,51 @@ ## dataforms.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <nkour@jabber.org> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2003-2005 Vincent Hanquez <tab@snarc.org> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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. ## -""" This module contains widget that can display data form (JEP-0004). +## You should have received a copy of the GNU General Public License +## along with Gajim. If not, see <http://www.gnu.org/licenses/>. +## +''' This module contains widget that can display data form (JEP-0004). Words single and multiple refers here to types of data forms: single means these with one record of data (without <reported/> element), -multiple - these which may contain more data (with <reported/> element).""" +multiple - these which may contain more data (with <reported/> element).''' import gtk +import gobject import gtkgui_helpers +import dialogs import common.dataforms as dataforms +from common import helpers import itertools class DataFormWidget(gtk.Alignment, object): # "public" interface - """ Data Form widget. Use like any other widget. """ + ''' Data Form widget. Use like any other widget. ''' def __init__(self, dataformnode=None): - """ Create a widget. """ + ''' Create a widget. ''' gtk.Alignment.__init__(self, xscale=1.0, yscale=1.0) self._data_form = None - self.xml=gtkgui_helpers.get_glade('data_form_window.glade', 'data_form_vbox') + self.xml = gtkgui_helpers.get_glade('data_form_window.glade', + 'data_form_vbox') self.xml.signal_autoconnect(self) for name in ('instructions_label', 'instructions_hseparator', 'single_form_viewport', 'data_form_types_notebook', @@ -55,7 +64,7 @@ class DataFormWidget(gtk.Alignment, object): selection.set_mode(gtk.SELECTION_MULTIPLE) def set_data_form(self, dataform): - """ Set the data form (xmpp.DataForm) displayed in widget. """ + ''' Set the data form (xmpp.DataForm) displayed in widget. ''' assert isinstance(dataform, dataforms.DataForm) self.del_data_form() @@ -66,14 +75,14 @@ class DataFormWidget(gtk.Alignment, object): self.build_multiple_data_form() # create appropriate description for instructions field if there isn't any - if dataform.instructions=='': + if dataform.instructions == '': self.instructions_label.set_no_show_all(True) self.instructions_label.hide() else: self.instructions_label.set_text(dataform.instructions) def get_data_form(self): - """ Data form displayed in the widget or None if no form. """ + ''' Data form displayed in the widget or None if no form. ''' return self._data_form def del_data_form(self): @@ -81,20 +90,20 @@ class DataFormWidget(gtk.Alignment, object): self._data_form = None data_form = property(get_data_form, set_data_form, del_data_form, - "Data form presented in a widget") + 'Data form presented in a widget') def get_title(self): - """ Get the title of data form, as a unicode object. If no - title or no form, returns u''. Useful for setting window title. """ + ''' Get the title of data form, as a unicode object. If no + title or no form, returns u''. Useful for setting window title. ''' if self._data_form is not None: if self._data_form.title is not None: return self._data_form.title return u'' - title = property(get_title, None, None, "Data form title") + title = property(get_title, None, None, 'Data form title') def show(self): - """ Treat 'us' as one widget. """ + ''' Treat 'us' as one widget. ''' self.show_all() # "private" methods @@ -141,23 +150,27 @@ class DataFormWidget(gtk.Alignment, object): # creating model for form... fieldtypes = [] + fieldvars = [] for field in self._data_form.reported.iter_fields(): # note: we store also text-private and hidden fields, # we just do not display them. # TODO: boolean fields #elif field.type=='boolean': fieldtypes.append(bool) fieldtypes.append(str) + fieldvars.append(field.var) self.multiplemodel = gtk.ListStore(*fieldtypes) # moving all data to model for item in self._data_form.iter_records(): - # TODO: probably wrong... (.value[s]?, fields not in the same order?) - # not checking multiple-item forms... - self.multiplemodel.append([field.value for field in item.iter_fields()]) + iter = self.multiplemodel.append() + for field in item.iter_fields(): + self.multiplemodel.set_value(iter, fieldvars.index(field.var), + field.value) # constructing columns... - for field, counter in zip(self._data_form.reported.iter_fields(), itertools.count()): + for field, counter in zip(self._data_form.reported.iter_fields(), + itertools.count()): self.records_treeview.append_column( gtk.TreeViewColumn(field.label, gtk.CellRendererText(), text=counter)) @@ -226,19 +239,21 @@ class DataFormWidget(gtk.Alignment, object): def on_remove_button_clicked(self, widget): selection = self.records_treeview.get_selection() - model, rowrefs = selection.get_selected_rows() # rowref is a list of paths + model, rowrefs = selection.get_selected_rows() + # rowref is a list of paths for i in xrange(len(rowrefs)): rowrefs[i] = gtk.TreeRowReference(model, rowrefs[i]) - # rowref is a list of row references; need to convert because we will modify the model, - # paths would change + # rowref is a list of row references; need to convert because we will + # modify the model, paths would change for rowref in rowrefs: del model[rowref.get_path()] - + def on_up_button_clicked(self, widget): selection = self.records_treeview.get_selection() model, (path,) = selection.get_selected_rows() iter = model.get_iter(path) - previter = model.get_iter((path[0]-1,)) # constructing path for previous iter + # constructing path for previous iter + previter = model.get_iter((path[0]-1,)) model.swap(iter, previter) self.refresh_multiple_buttons() @@ -256,9 +271,9 @@ class DataFormWidget(gtk.Alignment, object): self.refresh_multiple_buttons() class SingleForm(gtk.Table, object): - """ Widget that represent DATAFORM_SINGLE mode form. Because this is used + ''' Widget that represent DATAFORM_SINGLE mode form. Because this is used not only to display single forms, but to form input windows of multiple-type - forms, it is in another class.""" + forms, it is in another class.''' def __init__(self, dataform): assert isinstance(dataform, dataforms.SimpleDataForm) @@ -269,11 +284,11 @@ class SingleForm(gtk.Table, object): self.tooltips = gtk.Tooltips() def decorate_with_tooltip(widget, field): - """ Adds a tooltip containing field's description to a widget. + ''' Adds a tooltip containing field's description to a widget. Creates EventBox if widget doesn't have its own gdk window. - Returns decorated widget. """ - if field.description!='': - if widget.flags()>k.NO_WINDOW: + Returns decorated widget. ''' + if field.description != '': + if widget.flags() & gtk.NO_WINDOW: evbox = gtk.EventBox() evbox.add(widget) widget = evbox @@ -290,31 +305,32 @@ class SingleForm(gtk.Table, object): # for each field... for field in self._data_form.iter_fields(): - if field.type=='hidden': continue + if field.type == 'hidden': continue commonlabel = True commonlabelcenter = False commonwidget = True widget = None - if field.type=='boolean': + if field.type == 'boolean': commonlabelcenter = True widget = gtk.CheckButton() - widget.connect('toggled', self.on_boolean_checkbutton_toggled, field) + widget.connect('toggled', self.on_boolean_checkbutton_toggled, + field) widget.set_active(field.value) - elif field.type=='fixed': + elif field.type == 'fixed': leftattach = 1 rightattach = 2 if field.label is None: commonlabel = False leftattach = 0 - commonwidget=False + commonwidget = False widget = gtk.Label(field.value) widget.set_line_wrap(True) - self.attach(widget, leftattach, rightattach, linecounter, linecounter+1, - xoptions=gtk.FILL, yoptions=gtk.FILL) + self.attach(widget, leftattach, rightattach, linecounter, + linecounter+1, xoptions=gtk.FILL, yoptions=gtk.FILL) elif field.type == 'list-single': # TODO: What if we have radio buttons and non-required field? @@ -343,7 +359,8 @@ class SingleForm(gtk.Table, object): f.value = model[iter][1] else: f.value = '' - widget = gtkgui_helpers.create_combobox(field.options, field.value) + widget = gtkgui_helpers.create_combobox(field.options, + field.value) widget.connect('changed', on_list_single_combobox_changed, field) widget.set_sensitive(readwrite) @@ -366,7 +383,8 @@ class SingleForm(gtk.Table, object): elif field.type == 'jid-multi': commonwidget = False - xml = gtkgui_helpers.get_glade('data_form_window.glade', 'item_list_table') + xml = gtkgui_helpers.get_glade('data_form_window.glade', + 'item_list_table') widget = xml.get_widget('item_list_table') treeview = xml.get_widget('item_treeview') @@ -380,7 +398,8 @@ class SingleForm(gtk.Table, object): renderer = gtk.CellRendererText() renderer.set_property('editable', True) renderer.connect('edited', - self.on_jid_multi_cellrenderertext_edited, listmodel, field) + self.on_jid_multi_cellrenderertext_edited, treeview, listmodel, + field) treeview.append_column(gtk.TreeViewColumn(None, renderer, text=0)) @@ -423,10 +442,10 @@ class SingleForm(gtk.Table, object): textwidget = gtk.TextView() textwidget.set_wrap_mode(gtk.WRAP_WORD) - textwidget.get_buffer().connect('changed', self.on_text_multi_textbuffer_changed, - field) + textwidget.get_buffer().connect('changed', + self.on_text_multi_textbuffer_changed, field) textwidget.get_buffer().set_text(field.value) - + widget = gtk.ScrolledWindow() widget.add(textwidget) @@ -434,13 +453,15 @@ class SingleForm(gtk.Table, object): widget=decorate_with_tooltip(widget, field) self.attach(widget, 1, 2, linecounter, linecounter+1) - else:# field.type == 'text-single' or field.type is nonstandard: + else: + # field.type == 'text-single' or field.type is nonstandard: # JEP says that if we don't understand some type, we # should handle it as text-single commonlabelcenter = True if readwrite: widget = gtk.Entry() - widget.connect('changed', self.on_text_single_entry_changed, field) + widget.connect('changed', self.on_text_single_entry_changed, + field) widget.set_sensitive(readwrite) if field.value is None: field.value = u'' @@ -501,8 +522,22 @@ class SingleForm(gtk.Table, object): widget.get_start_iter(), widget.get_end_iter()) - def on_jid_multi_cellrenderertext_edited(self, cell, path, newtext, model, field): - old=model[path][0] + def on_jid_multi_cellrenderertext_edited(self, cell, path, newtext, treeview, + model, field): + old = model[path][0] + if old == newtext: + return + try: + newtext = helpers.parse_jid(newtext) + except helpers.InvalidFormat, s: + dialogs.ErrorDialog(_('Invalid Jabber ID'), str(s)) + return + if newtext in field.values: + dialogs.ErrorDialog( + _('Jabber ID already in list'), + _('The Jabber ID you entered is already in the list. Choose another one.')) + gobject.idle_add(treeview.set_cursor, path) + return model[path][0]=newtext values = field.values @@ -510,9 +545,16 @@ class SingleForm(gtk.Table, object): field.values = values def on_jid_multi_add_button_clicked(self, widget, treeview, model, field): - iter = model.insert(999999, ("new@jabber.id",)) + #Default jid + jid = _('new@jabber.id') + if jid in field.values: + i = 1 + while _('new%d@jabber.id') % i in field.values: + i += 1 + jid = _('new%d@jabber.id') % i + iter = model.insert(999999, (jid,)) treeview.set_cursor(model.get_path(iter), treeview.get_column(0), True) - field.values = field.values + ["new@jabber.id"] + field.values = field.values + [jid] def on_jid_multi_edit_button_clicked(self, widget, treeview): model, iter = treeview.get_selection().get_selected() diff --git a/src/dialogs.py b/src/dialogs.py index c264adbcda..e50b3abbda 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -1,24 +1,30 @@ # -*- coding: utf-8 -*- ## dialogs.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2003-2004 Vincent Hanquez <tab@snarc.org> ## Copyright (C) 2005-2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2005-2006 Travis Shirk <travis@pobox.com> ## Copyright (C) 2005 Norman Rasmussen <norman@rasmussen.co.za> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> -## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> +## Julien Pivotto <roidelapluie@gmail.com> +## Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject @@ -28,6 +34,9 @@ import gtkgui_helpers import vcard import conversation_textview import message_control +import dataforms_widget + +from random import randrange try: import gtkspell @@ -43,6 +52,7 @@ from advanced import AdvancedConfigurationWindow from common import gajim from common import helpers +from common import dataforms from common.exceptions import GajimGeneralException class EditGroupsDialog: @@ -197,7 +207,7 @@ class EditGroupsDialog: for group in groups: if group not in helpers.special_groups or groups[group] > 0: group_list.append(group) - group_list.sort() + group_list.sort() for group in group_list: iter = store.append() store.set(iter, 0, group) # Group name @@ -235,22 +245,71 @@ class PassphraseDialog: passphrase = self.passphrase_entry.get_text().decode('utf-8') else: passphrase = -1 - save_passphrase_checkbutton = self.xml.\ - get_widget('save_passphrase_checkbutton') + + if self.check: + save_passphrase_checkbutton = self.xml.\ + get_widget('save_passphrase_checkbutton') + checked = save_passphrase_checkbutton.get_active() + else: + checked = False + self.window.destroy() - return passphrase, save_passphrase_checkbutton.get_active() + return passphrase, checked - def __init__(self, titletext, labeltext, checkbuttontext): + def __init__(self, titletext, labeltext, checkbuttontext=None, is_modal = True, + ok_handler = None, cancel_handler = None): self.xml = gtkgui_helpers.get_glade('passphrase_dialog.glade') self.window = self.xml.get_widget('passphrase_dialog') self.passphrase_entry = self.xml.get_widget('passphrase_entry') self.passphrase = -1 self.window.set_title(titletext) self.xml.get_widget('message_label').set_text(labeltext) - self.xml.get_widget('save_passphrase_checkbutton').set_label( - checkbuttontext) + + self.ok = False + + self.cancel_handler = cancel_handler + self.is_modal = is_modal + if not is_modal and ok_handler is not None: + self.ok_handler = ok_handler + okbutton = self.xml.get_widget('ok_button') + okbutton.connect('clicked', self.on_okbutton_clicked) + cancelbutton = self.xml.get_widget('cancel_button') + cancelbutton.connect('clicked', self.on_cancelbutton_clicked) + self.xml.signal_autoconnect(self) self.window.show_all() + + self.check = bool(checkbuttontext) + checkbutton = self.xml.get_widget('save_passphrase_checkbutton') + if self.check: + checkbutton.set_label(checkbuttontext) + else: + checkbutton.hide() + + def on_okbutton_clicked(self, widget): + passph = self.passphrase_entry.get_text().decode('utf-8') + + if self.check: + checked = self.xml.get_widget('save_passphrase_checkbutton').\ + get_active() + else: + checked = False + + self.ok = True + + self.window.destroy() + + if isinstance(self.ok_handler, tuple): + self.ok_handler[0](passph, checked, *self.ok_handler[1:]) + else: + self.ok_handler(passph, checked) + + def on_cancelbutton_clicked(self, widget): + self.window.destroy() + + def on_passphrase_dialog_destroy(self, widget): + if self.cancel_handler and not self.ok: + self.cancel_handler() class ChooseGPGKeyDialog: '''Class for GPG key dialog''' @@ -268,11 +327,13 @@ class ChooseGPGKeyDialog: self.keys_treeview.set_model(model) #columns renderer = gtk.CellRendererText() - self.keys_treeview.insert_column_with_attributes(-1, _('KeyID'), + col = self.keys_treeview.insert_column_with_attributes(-1, _('KeyID'), renderer, text = 0) + col.set_sort_column_id(0) renderer = gtk.CellRendererText() - self.keys_treeview.insert_column_with_attributes(-1, _('Contact name'), - renderer, text = 1) + col = self.keys_treeview.insert_column_with_attributes(-1, + _('Contact name'), renderer, text = 1) + col.set_sort_column_id(1) self.keys_treeview.set_search_column(1) self.fill_tree(secret_keys, selected) self.window.show_all() @@ -520,7 +581,7 @@ class ChangeStatusMessageDialog: def on_change_status_message_dialog_key_press_event(self, widget, event): self.countdown_enabled = False if event.keyval == gtk.keysyms.Return or \ - event.keyval == gtk.keysyms.KP_Enter: # catch CTRL+ENTER + event.keyval == gtk.keysyms.KP_Enter: # catch CTRL+ENTER if (event.state & gtk.gdk.CONTROL_MASK): self.window.response(gtk.RESPONSE_OK) # Stop the event @@ -555,14 +616,14 @@ class ChangeStatusMessageDialog: resp = dlg2.run() if resp != gtk.RESPONSE_OK: return + self.preset_messages_dict[msg_name] = msg_text else: + self.preset_messages_dict[msg_name] = msg_text iter_ = self.message_liststore.append((msg_name,)) gajim.config.add_per('statusmsg', msg_name) # select in combobox the one we just saved self.message_combobox.set_active_iter(iter_) gajim.config.set_per('statusmsg', msg_name, 'message', msg_text_1l) - self.preset_messages_dict[msg_name] = msg_text - class AddNewContactWindow: '''Class for AddNewContactWindow''' @@ -597,6 +658,7 @@ class AddNewContactWindow: return location['add_contact'] = self self.xml = gtkgui_helpers.get_glade('add_new_contact_window.glade') + self.xml.signal_autoconnect(self) self.window = self.xml.get_widget('add_new_contact_window') for w in ('account_combobox', 'account_hbox', 'account_label', 'uid_label', 'uid_entry', 'protocol_combobox', 'protocol_jid_combobox', @@ -668,7 +730,6 @@ _('Please fill in the data of the contact you want to add in account %s') %accou self.auto_authorize_checkbutton.show() 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) if not type_: @@ -718,18 +779,17 @@ _('Please fill in the data of the contact you want to add in account %s') %accou self.group_comboboxentry.set_active(i) i += 1 + self.window.show_all() + if self.account: self.account_label.hide() self.account_hbox.hide() - self.account_label.set_no_show_all(True) - self.account_hbox.set_no_show_all(True) else: liststore = gtk.ListStore(str, str) for acct in accounts: liststore.append([acct, acct]) self.account_combobox.set_model(liststore) self.account_combobox.set_active(0) - self.window.show_all() def on_add_new_contact_window_destroy(self, widget): if self.account: @@ -820,8 +880,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou model.append([jid_]) self.protocol_jid_combobox.set_active(0) if len(self.agents[type_]) > 1: - self.protocol_jid_combobox.set_no_show_all(False) - self.protocol_jid_combobox.show_all() + self.protocol_jid_combobox.show() else: self.protocol_jid_combobox.hide() if type_ in self.uid_labels: @@ -833,8 +892,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou 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.register_hbox.show() self.auto_authorize_checkbutton.hide() self.connected_label.hide() self.subscription_table.hide() @@ -851,8 +909,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou 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.subscription_table.show() self.auto_authorize_checkbutton.show() self.connected_label.hide() self.add_button.set_sensitive(True) @@ -861,13 +918,14 @@ _('Please fill in the data of the contact you want to add in account %s') %accou 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.subscription_table.show() + self.auto_authorize_checkbutton.show() self.add_button.set_sensitive(True) def transport_signed_out(self, jid): if self.protocol_jid_combobox.get_active_text() == jid: self.subscription_table.hide() + self.auto_authorize_checkbutton.hide() self.connected_label.show() self.add_button.set_sensitive(False) @@ -942,7 +1000,9 @@ class AboutDialog: artists = ['Anders Ström', 'Christophe Got', 'Dennis Craven', 'Guillaume Morin', 'Josef VybÃral', 'Membris Khan'] dlg.set_artists(artists) + gobject.idle_add(self.dorun, dlg) + def dorun(self, dlg): rep = dlg.run() dlg.destroy() @@ -1084,20 +1144,56 @@ class ConfirmationDialog(HigDialog): '''HIG compliant confirmation dialog.''' def __init__(self, pritext, sectext='', on_response_ok = None, on_response_cancel = None): + self.user_response_ok = on_response_ok + self.user_response_cancel = on_response_cancel HigDialog.__init__(self, None, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, pritext, sectext, - on_response_ok, on_response_cancel) + self.on_response_ok, self.on_response_cancel) self.popup() + def on_response_ok(self, widget): + if self.user_response_ok: + if isinstance(self.user_response_ok, tuple): + self.user_response_ok[0](*self.user_response_ok[1:]) + else: + self.user_response_ok() + self.destroy() + + def on_response_cancel(self, widget): + if self.user_response_cancel: + if isinstance(self.user_response_cancel, tuple): + self.user_response_cancel[0](*self.user_response_ok[1:]) + else: + self.user_response_cancel() + self.destroy() + class NonModalConfirmationDialog(HigDialog): '''HIG compliant non modal confirmation dialog.''' def __init__(self, pritext, sectext='', on_response_ok = None, on_response_cancel = None): + self.user_response_ok = on_response_ok + self.user_response_cancel = on_response_cancel HigDialog.__init__(self, None, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, pritext, sectext, - on_response_ok, on_response_cancel) + self.on_response_ok, self.on_response_cancel) self.set_modal(False) + def on_response_ok(self, widget): + if self.user_response_ok: + if isinstance(self.user_response_ok, tuple): + self.user_response_ok[0](*self.user_response_ok[1:]) + else: + self.user_response_ok() + self.destroy() + + def on_response_cancel(self, widget): + if self.user_response_cancel: + if isinstance(self.user_response_cancel, tuple): + self.user_response_cancel[0](*self.user_response_cancel[1:]) + else: + self.user_response_cancel() + self.destroy() + class WarningDialog(HigDialog): def __init__(self, pritext, sectext=''): '''HIG compliant warning dialog.''' @@ -1130,15 +1226,19 @@ class YesNoDialog(HigDialog): HigDialog.__init__( self, None, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, pritext, sectext, on_response_yes = on_response_yes, on_response_no = on_response_no) + self.set_modal(False) self.popup() class ConfirmationDialogCheck(ConfirmationDialog): '''HIG compliant confirmation dialog with checkbutton.''' def __init__(self, pritext, sectext='', checktext = '', - on_response_ok = None, on_response_cancel = None): + on_response_ok = None, on_response_cancel = None, is_modal = True): + self.user_response_ok = on_response_ok + self.user_response_cancel = on_response_cancel + HigDialog.__init__(self, None, gtk.MESSAGE_QUESTION, - gtk.BUTTONS_OK_CANCEL, pritext, sectext, on_response_ok, - on_response_cancel) + gtk.BUTTONS_OK_CANCEL, pritext, sectext, self.on_response_ok, + self.on_response_cancel) self.set_default_response(gtk.RESPONSE_OK) @@ -1147,8 +1247,28 @@ class ConfirmationDialogCheck(ConfirmationDialog): self.checkbutton = gtk.CheckButton(checktext) self.vbox.pack_start(self.checkbutton, expand = False, fill = True) + self.set_modal(is_modal) self.popup() + # XXX should cancel if somebody closes the dialog + + def on_response_ok(self, widget): + if self.user_response_ok: + if isinstance(self.user_response_ok, tuple): + self.user_response_ok[0](self.is_checked(), + *self.user_response_ok[1:]) + else: + self.user_response_ok(self.is_checked()) + self.destroy() + + def on_response_cancel(self, widget): + if self.user_response_cancel: + if isinstance(self.user_response_cancel, tuple): + self.user_response_cancel[0](*self.user_response_ok[1:]) + else: + self.user_response_cancel() + self.destroy() + def is_checked(self): ''' Get active state of the checkbutton ''' return self.checkbutton.get_active() @@ -1408,6 +1528,9 @@ class JoinGroupchatWindow: if len(self._empty_required_widgets): self.xml.get_widget('join_button').set_sensitive(False) + if not gajim.connections[account].private_storage_supported: + self.xml.get_widget('auto_join_checkbutton').set_sensitive(False) + self.window.show_all() def on_join_groupchat_window_destroy(self, widget): @@ -1544,7 +1667,7 @@ class SynchroniseSelectAccountDialog: if not iter: return remote_account = model.get_value(iter, 0).decode('utf-8') - + if gajim.connections[remote_account].connected < 2: ErrorDialog(_('This account is not connected to the server'), _('You cannot synchronize with an account unless it is connected.')) @@ -1643,7 +1766,7 @@ class NewChatDialog(InputDialog): keys.sort() for jid in keys: contact = self.completion_dict[jid] - img = gajim.interface.roster.jabber_state_images['16'][contact.show] + img = gajim.interface.roster.jabber_state_images['16'][contact.show] liststore.append((img.get_pixbuf(), jid)) self.ok_handler = self.new_chat_response @@ -1825,8 +1948,11 @@ class SingleMessageWindow: singled message depending on action argument which can be 'send' or 'receive'. ''' - def __init__(self, account, to = '', action = '', from_whom = '', - subject = '', message = '', resource = ''): + # Keep a reference on windows so garbage collector don't restroy them + instances = [] + def __init__(self, account, to='', action='', from_whom='', subject='', + message='', resource='', session=None, form_node=None): + self.instances.append(self) self.account = account self.action = action @@ -1835,6 +1961,7 @@ class SingleMessageWindow: self.to = to self.from_whom = from_whom self.resource = resource + self.session = session self.xml = gtkgui_helpers.get_glade('single_message_window.glade') self.window = self.xml.get_widget('single_message_window') @@ -1856,6 +1983,18 @@ class SingleMessageWindow: self.conversation_tv_buffer = self.conversation_textview.tv.get_buffer() self.xml.get_widget('conversation_scrolledwindow').add( self.conversation_textview.tv) + + self.form_widget = None + parent_box = self.xml.get_widget('conversation_scrolledwindow').get_parent() + if form_node: + dataform = dataforms.ExtendForm(node = form_node) + self.form_widget = dataforms_widget.DataFormWidget(dataform) + self.form_widget.show_all() + parent_box.add(self.form_widget) + parent_box.child_set_property(self.form_widget, 'position', + parent_box.child_get_property(self.xml.get_widget('conversation_scrolledwindow'), 'position')) + self.action = 'form' + self.send_button = self.xml.get_widget('send_button') self.reply_button = self.xml.get_widget('reply_button') self.send_and_close_button = self.xml.get_widget('send_and_close_button') @@ -1878,7 +2017,7 @@ class SingleMessageWindow: spell1.set_language(lang) spell2.set_language(lang) except gobject.GError, msg: - dialogs.AspellDictError(lang) + AspellDictError(lang) self.prepare_widgets_for(self.action) @@ -1912,6 +2051,9 @@ class SingleMessageWindow: gajim.config.get('single-msg-height')) self.window.show_all() + def on_single_message_window_destroy(self, widget): + self.instances.remove(self) + def set_cursor_to_end(self): end_iter = self.message_tv_buffer.get_end_iter() self.message_tv_buffer.place_cursor(end_iter) @@ -1985,6 +2127,17 @@ class SingleMessageWindow: self.reply_button.grab_focus() self.cancel_button.hide() self.close_button.show() + elif action == 'form': # prepare UI for Receiving + title = _('Form %s') % title + self.send_button.show() + self.send_and_close_button.show() + self.to_label.show() + self.to_entry.show() + self.reply_button.hide() + self.from_label.hide() + self.from_entry.hide() + self.conversation_scrolledwindow.hide() + self.message_scrolledwindow.hide() self.window.set_title(title) @@ -2023,9 +2176,19 @@ class SingleMessageWindow: message) return + if self.session: + session = self.session + else: + session = gajim.connections[self.account].make_new_session(to_whom_jid) + + if self.form_widget: + form_node = self.form_widget.data_form + else: + form_node = None # FIXME: allow GPG message some day gajim.connections[self.account].send_message(to_whom_jid, message, - keyID = None, type = 'normal', subject=subject) + keyID=None, type='normal', subject=subject, session=session, + form_node=form_node) self.subject_entry.set_text('') # we sent ok, clear the subject self.message_tv_buffer.set_text('') # we sent ok, clear the textview @@ -2042,7 +2205,7 @@ class SingleMessageWindow: self.window.destroy() SingleMessageWindow(self.account, to = self.from_whom, action = 'send', from_whom = self.from_whom, subject = self.subject, - message = self.message) + message = self.message, session = self.session) def on_send_and_close_button_clicked(self, widget): self.send_single_message() @@ -2228,7 +2391,6 @@ class PrivacyListWindow: jid_entry_completion.set_model(jids_list_store) jid_entry_completion.set_popup_completion(True) self.edit_type_jabberid_entry.set_completion(jid_entry_completion) - if action == 'EDIT': self.refresh_rules() @@ -2470,101 +2632,6 @@ class PrivacyListWindow: def on_close_button_clicked(self, widget): self.window.destroy() -class BlockedContactsWindow: - '''Window that is the main window for ContactWindows;''' - def __init__(self, account): - self.account = account - self.xml = gtkgui_helpers.get_glade('blocked_contacts_window.glade') - self.window = self.xml.get_widget('blocked_contacts_window') - self.remove_button = self.xml.get_widget('remove_button') - self.contacts_treeview = self.xml.get_widget('contacts_treeview') - renderer = gtk.CellRendererText() - - self.store = gtk.ListStore(str) - self.contacts_treeview.set_model(self.store) - - column = gtk.TreeViewColumn('Contact', renderer, text=0) - self.contacts_treeview.append_column(column) - - if len(gajim.connections) > 1: - title = _('Blocked Contacts for %s') % self.account - else: - title = _('Blocked Contacts') - self.window.set_title(title) - self.window.show_all() - self.xml.signal_autoconnect(self) - gajim.connections[self.account].get_privacy_list('block') - - def on_blocked_contacts_window_destroy(self, widget): - key_name = 'blocked_contacts' - if key_name in gajim.interface.instances[self.account]: - del gajim.interface.instances[self.account][key_name] - - def on_remove_button_clicked(self, widget): - if self.contacts_treeview.get_selection().get_selected()[1] == None: - return - tags = [] - rule_selected = self.store.get_path( - self.contacts_treeview.get_selection().get_selected()[1])[0] - for i in range(0, len(self.global_rules)): - if i != rule_selected: - tags.append(self.global_rules[i]) - else: - deleted_rule = self.global_rules[i] - for rule in self.global_rules_to_append: - tags.append(rule) - gajim.connections[self.account].set_privacy_list( - 'block', tags) - gajim.connections[self.account].get_privacy_list('block') - if len(tags) == 0: - self.privacy_list_received([]) - gajim.connections[self.account].blocked_contacts = [] - gajim.connections[self.account].blocked_groups = [] - gajim.connections[self.account].blocked_list = [] - gajim.connections[self.account].set_default_list('') - gajim.connections[self.account].set_active_list('') - gajim.connections[self.account].del_privacy_list('block') - status = gajim.connections[self.account].connected - msg = gajim.connections[self.account].status - show = gajim.SHOW_LIST[gajim.connections[self.account].connected] - if deleted_rule['type'] == 'jid': - jid = deleted_rule['value'] - gajim.connections[self.account].send_custom_status(show, msg, jid) - # needed for draw_contact: - if jid in gajim.connections[self.account].blocked_contacts: - gajim.connections[self.account].blocked_contacts.remove(jid) - gajim.interface.roster.draw_contact(jid, self.account) - else: - group = deleted_rule['value'] - # needed for draw_group: - if group in gajim.connections[self.account].blocked_groups: - gajim.connections[self.account].blocked_groups.remove(group) - gajim.interface.roster.draw_group(group, self.account) - for jid in gajim.contacts.get_jid_list(self.account): - contact = gajim.contacts.get_contact_with_highest_priority( - self.account, jid) - if group in contact.groups: - gajim.connections[self.account].send_custom_status(show, msg, - contact.jid) - gajim.interface.roster.draw_contact(contact.jid, self.account) - - def privacy_list_received(self, rules): - self.store.clear() - self.global_rules = [] - self.global_rules_to_append = [] - for rule in rules: - if rule['type'] == 'jid' and rule['action'] == 'deny': - #self.global_rules[text_item] = rule - self.store.append([rule['value']]) - self.global_rules.append(rule) - elif rule['type'] == 'group' and rule['action'] == 'deny': - text_item = _('Group %s') % rule['value'] - self.store.append([text_item]) - self.global_rules.append(rule) - else: - self.global_rules_to_append.append(rule) - - class PrivacyListsWindow: '''Window that is the main window for Privacy Lists; we can list there the privacy lists and ask to create a new one @@ -2688,17 +2755,21 @@ class PrivacyListsWindow: class InvitationReceivedDialog: def __init__(self, account, room_jid, contact_jid, password = None, - comment = None): + comment = None, is_continued = False): self.room_jid = room_jid self.account = account self.password = password + self.is_continued = is_continued xml = gtkgui_helpers.get_glade('invitation_received_dialog.glade') self.dialog = xml.get_widget('invitation_received_dialog') #Don't translate $Contact - pritext = _('$Contact has invited you to group chat %(room_jid)s')\ - % {'room_jid': room_jid} + if is_continued: + pritext = _('$Contact has invited you to join a discussion') + else: + pritext = _('$Contact has invited you to group chat %(room_jid)s')\ + % {'room_jid': room_jid} contact = gajim.contacts.get_first_contact_from_jid(account, contact_jid) if contact and contact.name: contact_text = '%s (%s)' % (contact.name, contact_jid) @@ -2709,6 +2780,7 @@ class InvitationReceivedDialog: label_text = '<big><b>%s</b></big>' % pritext if comment: # only if not None and not '' + comment = gobject.markup_escape_text(comment) sectext = _('Comment: %s') % comment label_text += '\n\n%s' % sectext @@ -2726,8 +2798,11 @@ class InvitationReceivedDialog: def on_accept_button_clicked(self, widget): self.dialog.destroy() try: - JoinGroupchatWindow(self.account, self.room_jid, - password=self.password) + if self.is_continued: + gajim.interface.roster.join_gc_room(self.account, self.room_jid, + gajim.nicks[self.account], None, is_continued=True) + else: + JoinGroupchatWindow(self.account, self.room_jid) except GajimGeneralException: pass @@ -2829,6 +2904,9 @@ class ImageChooserDialog(FileChooserDialog): on_response_ok = (on_ok, on_response_ok), on_response_cancel = on_response_cancel) + if on_response_cancel: + self.connect('destroy', on_response_cancel) + filter = gtk.FileFilter() filter.set_name(_('All files')) filter.add_pattern('*') @@ -2840,6 +2918,7 @@ class ImageChooserDialog(FileChooserDialog): filter.add_mime_type('image/jpeg') filter.add_mime_type('image/gif') filter.add_mime_type('image/tiff') + filter.add_mime_type('image/svg+xml') filter.add_mime_type('image/x-xpixmap') # xpm self.add_filter(filter) self.set_filter(filter) @@ -3394,3 +3473,134 @@ class AdvancedNotificationsWindow: def on_close_window(self, widget): self.window.destroy() + +class TransformChatToMUC: + # Keep a reference on windows so garbage collector don't restroy them + instances = [] + def __init__(self, account, jids, preselected = None): + '''This window is used to trasform a one-to-one chat to a MUC. + We do 2 things: first select the server and then make a guests list.''' + + self.instances.append(self) + self.account = account + self.auto_jids = jids + self.preselected_jids = preselected + + self.xml = gtkgui_helpers.get_glade('chat_to_muc_window.glade') + self.window = self.xml.get_widget('chat_to_muc_window') + + for widget_to_add in ('invite_button', 'cancel_button', + 'server_list_comboboxentry', 'guests_treeview', + 'server_and_guests_hseparator', 'server_select_label'): + self.__dict__[widget_to_add] = self.xml.get_widget(widget_to_add) + + # set comboboxentry + renderer_servers = gtk.CellRendererText() + + server_list = [] + self.servers = gtk.ListStore(str) + self.server_list_comboboxentry.set_model(self.servers) + + self.server_list_comboboxentry.set_text_column(0) + + # get the muc server of our server + if 'jabber' in gajim.connections[account].muc_jid: + server_list.append(gajim.connections[account].muc_jid['jabber']) + # add servers or recently joined groupchats + recently_groupchat = gajim.config.get('recently_groupchat').split() + for g in recently_groupchat: + server = gajim.get_server_from_jid(g) + if server not in server_list and not server.startswith('irc'): + server_list.append(server) + # add a default server + if not server_list: + server_list.append('conference.jabber.org') + + for s in server_list: + self.servers.append([s]) + + self.server_list_comboboxentry.set_active(0) + + # set treeview + # name, jid + self.store = gtk.ListStore(gtk.gdk.Pixbuf, str, str) + self.store.set_sort_column_id(1, gtk.SORT_ASCENDING) + self.guests_treeview.set_model(self.store) + + renderer1 = gtk.CellRendererText() + renderer2 = gtk.CellRendererPixbuf() + column = gtk.TreeViewColumn('Status', renderer2, pixbuf=0) + self.guests_treeview.append_column(column) + column = gtk.TreeViewColumn('Name', renderer1, text=1) + self.guests_treeview.append_column(column) + + self.guests_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE) + + # set jabber id and pseudos + for account in gajim.contacts.get_accounts(): + if gajim.connections[account].is_zeroconf: + continue + for jid in gajim.contacts.get_jid_list(account): + contact = \ + gajim.contacts.get_contact_with_highest_priority(account, jid) + contact_transport = gajim.get_transport_name_from_jid(jid) + # do not add transports, zeroconf contacs, minimized groupchats + # and selfjid to list of invitable jids + if contact.jid not in self.auto_jids and contact.jid != \ + gajim.get_jid_from_account(self.account) and not contact_transport \ + and not contact.is_transport() and contact.jid not in \ + gajim.interface.minimized_controls[account]: + if contact.show not in ('offline', 'error'): + img = gajim.interface.roster.jabber_state_images['16'][ + contact.show] + name = contact.name + if name == '': + name = jid.split('@')[0] + iter = self.store.append([img.get_pixbuf(), name, jid]) + # preselect treeview rows + if self.preselected_jids and jid in self.preselected_jids: + path = self.store.get_path(iter) + self.guests_treeview.get_selection().\ + select_path(path) + + # show all + self.window.show_all() + + self.xml.signal_autoconnect(self) + + def on_chat_to_muc_window_destroy(self, widget): + self.instances.remove(self) + + def on_chat_to_muc_window_key_press_event(self, widget, event): + if event.keyval == gtk.keysyms.Escape: # ESCAPE + self.window.destroy() + + def on_invite_button_clicked(self, widget): + server = self.server_list_comboboxentry.get_active_text() + if server == '': + return + room_id = gajim.nicks[self.account] + str(randrange(9999999)) + gajim.connections[self.account].check_unique_room_id_support(server, self) + + def unique_room_id_supported(self, server, room_id): + guest_list = [] + guests = self.guests_treeview.get_selection().get_selected_rows() + for guest in guests[1]: + iter = self.store.get_iter(guest) + guest_list.append(self.store[iter][2].decode('utf-8')) + for guest in self.auto_jids: + guest_list.append(guest) + room_jid = room_id + '@' + server + gajim.automatic_rooms[self.account][room_jid] = {} + gajim.automatic_rooms[self.account][room_jid]['invities'] = guest_list + gajim.automatic_rooms[self.account][room_jid]['continue_tag'] = True + gajim.interface.roster.join_gc_room(self.account, room_jid, + gajim.nicks[self.account], None, is_continued=True) + self.window.destroy() + + def on_cancel_button_clicked(self, widget): + self.window.destroy() + + def unique_room_id_error(self, server): + self.unique_room_id_supported(server, + gajim.nicks[self.account] + str(randrange(9999999))) diff --git a/src/disco.py b/src/disco.py index 7446447e5d..28ff7b2a09 100644 --- a/src/disco.py +++ b/src/disco.py @@ -1,19 +1,24 @@ # -*- coding: utf-8 -*- ## config.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005-2006 Stéphan Kochen <stephan@kochen.nl> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## # The appearance of the treeview, and parts of the dialog, are controlled by # AgentBrowser (sub-)classes. Methods that probably should be overridden when @@ -67,6 +72,7 @@ def _gen_agent_type_info(): # Jabber server ('server', 'im'): (ToplevelAgentBrowser, 'jabber.png'), ('services', 'jabber'): (ToplevelAgentBrowser, 'jabber.png'), + ('hierarchy', 'branch'): (AgentBrowser, 'jabber.png'), # Services ('conference', 'text'): (MucBrowser, 'conference.png'), @@ -79,6 +85,7 @@ def _gen_agent_type_info(): ('pubsub', 'generic'): (PubSubBrowser, 'pubsub.png'), ('pubsub', 'service'): (PubSubBrowser, 'pubsub.png'), ('proxy', 'bytestreams'): (None, 'bytestreams.png'), # Socks5 FT proxy + ('headline', 'newmail'): (ToplevelAgentBrowser, 'mail.png'), # Transports ('conference', 'irc'): (ToplevelAgentBrowser, 'irc.png'), @@ -444,7 +451,6 @@ _('Without a connection, you can not browse available services')) self.style_event_id = 0 self.banner.realize() self.paint_banner() - self.filter_hbox = self.xml.get_widget('filter_hbox') self.action_buttonbox = self.xml.get_widget('action_buttonbox') # Address combobox @@ -954,6 +960,7 @@ _('This service does not contain any items to browse.')) disco#items query.''' self.model.append((jid, node, item.get('name', ''), get_agent_address(jid, node))) + self.cache.get_info(jid, node, self._agent_info, force = force) def _update_item(self, iter, jid, node, item): '''Called when an item should be updated in the model. The result of a @@ -964,7 +971,9 @@ _('This service does not contain any items to browse.')) 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.''' - self.model[iter][2] = identities[0].get('name', '') + name = identities[0].get('name', '') + if name: + self.model[iter][2] = name def _update_error(self, iter, jid, node): '''Called when a disco#info query failed for an item.''' @@ -1195,26 +1204,6 @@ class ToplevelAgentBrowser(AgentBrowser): self.search_button = None AgentBrowser._clean_actions(self) - def cleanup(self): - self.tooltip.hide_tooltip() - AgentBrowser.cleanup(self) - - def update_theme(self): - theme = gajim.config.get('roster_theme') - bgcolor = gajim.config.get_per('themes', theme, 'groupbgcolor') - if bgcolor: - self._renderer.set_property('cell-background', bgcolor) - self.window.services_treeview.queue_draw() - - def on_execute_button_clicked(self, widget = None): - '''When we want to execute a command: - open adhoc command window''' - model, iter = self.window.services_treeview.get_selection().get_selected() - if not iter: - return - service = model[iter][0].decode('utf-8') - adhoc_commands.CommandWindow(self.account, service) - def on_search_button_clicked(self, widget = None): '''When we want to search something: open search window''' @@ -1228,20 +1217,6 @@ class ToplevelAgentBrowser(AgentBrowser): gajim.interface.instances[self.account]['search'][service] = \ search_window.SearchWindow(self.account, service) - def on_register_button_clicked(self, widget = None): - '''When we want to register an agent: - request information about registering with the agent and close the - window.''' - model, iter = self.window.services_treeview.get_selection().get_selected() - if not iter: - return - jid = model[iter][0].decode('utf-8') - if jid: - gajim.connections[self.account].request_register_agent_info(jid) - self.window.destroy(chain = True) - - AgentBrowser._clean_actions(self) - def cleanup(self): self.tooltip.hide_tooltip() AgentBrowser.cleanup(self) diff --git a/src/features_window.py b/src/features_window.py index f0f7c061bb..eeb983a989 100644 --- a/src/features_window.py +++ b/src/features_window.py @@ -1,18 +1,25 @@ ## features_window.py ## -## Copyright (C) 2007 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2007 Yann Leboulanger <asterix@lagaule.org> +## Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os +import sys import gtk import gobject import gtkgui_helpers @@ -66,7 +73,7 @@ class FeaturesWindow: _('Requires gnome-keyring and python-gnome2-desktop.'), _('Feature not available under Windows.')), _('SRV'): (self.srv_available, - _('Ability to connect to servers which is using SRV records.'), + _('Ability to connect to servers which are using SRV records.'), _('Requires dnsutils.'), _('Requires nslookup to use SRV records.')), _('Spell Checker'): (self.speller_available, @@ -89,6 +96,18 @@ class FeaturesWindow: _('Transform LaTeX espressions between $$ $$.'), _('Requires texlive-latex-base, dvips and imagemagick. You have to set \'use_latex\' to True in the Advanced Configuration Editor.'), _('Feature not available under Windows.')), + _('End to end encryption'): (self.pycrypto_available, + _('Encrypting chatmessages.'), + _('Requires python-crypto.'), + _('Requires python-crypto.')), + _('RST Generator'): (self.docutils_available, + _('Generate XHTML output from RST code (see http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html).'), + _('Requires python-docutils.'), + _('Requires python-docutils.')), + _('libsexy'): (self.pysexy_available, + _('Ability to have clickable URLs in chat and groupchat window banners.'), + _('Requires python-sexy.'), + _('Requires python-sexy.')), } # name, supported @@ -124,7 +143,7 @@ class FeaturesWindow: selection = widget.get_selection() path = selection.get_selected_rows()[1][0] available = self.model[path][1] - feature = self.model[path][0] + feature = self.model[path][0].decode('utf-8') text = self.features[feature][1] + '\n' if os.name == 'nt': text = text + self.features[feature][3] @@ -201,6 +220,12 @@ class FeaturesWindow: def notification_available(self): if os.name == 'nt': return False + elif sys.platform == 'darwin': + try: + import osx.growler + except: + return False + return True from common import dbus_support if self.dbus_available() and dbus_support.get_notifications_interface(): return True @@ -274,3 +299,18 @@ class FeaturesWindow: if exitcode == 0: return True return False + + def pycrypto_available(self): + from common import gajim + return gajim.HAVE_PYCRYPTO + + def docutils_available(self): + try: + import docutils + except: + return False + return True + + def pysexy_available(self): + from common import gajim + return gajim.HAVE_PYSEXY diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py index 8de1e4a747..04253ee13a 100644 --- a/src/filetransfers_window.py +++ b/src/filetransfers_window.py @@ -1,21 +1,26 @@ ## filetransfers_window.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Copyright (C) 2004-2005 Vincent Hanquez <tab@snarc.org> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject @@ -128,7 +133,7 @@ class FileTransfersWindow: if file_props['tt_account'] == account: receiver_jid = unicode(file_props['receiver']).split('/')[0] if jid == receiver_jid: - if not self.is_transfer_stoped(file_props): + if not self.is_transfer_stopped(file_props): active_transfers[0].append(file_props) # 'account' is the recipient @@ -136,7 +141,7 @@ class FileTransfersWindow: if file_props['tt_account'] == account: sender_jid = unicode(file_props['sender']).split('/')[0] if jid == sender_jid: - if not self.is_transfer_stoped(file_props): + if not self.is_transfer_stopped(file_props): active_transfers[1].append(file_props) return active_transfers @@ -219,13 +224,17 @@ _('Connection with peer cannot be established.')) self.tree.get_selection().unselect_all() def show_file_send_request(self, account, contact): + + desc_entry = gtk.Entry() + def on_ok(widget): file_dir = None files_path_list = dialog.get_filenames() files_path_list = gtkgui_helpers.decode_filechooser_file_paths( files_path_list) + desc = desc_entry.get_text() for file_path in files_path_list: - if self.send_file(account, contact, file_path) and file_dir is None: + if self.send_file(account, contact, file_path, desc) and file_dir is None: file_dir = os.path.dirname(file_path) if file_dir: gajim.config.set('last_send_dir', file_dir) @@ -245,9 +254,17 @@ _('Connection with peer cannot be established.')) # FIXME: add send icon to this button (JUMP_TO) dialog.add_action_widget(btn, gtk.RESPONSE_OK) dialog.set_default_response(gtk.RESPONSE_OK) + + desc_hbox = gtk.HBox(False, 5) + desc_hbox.pack_start(gtk.Label(_('Description: ')),False,False,0) + desc_hbox.pack_start(desc_entry,True,True,0) + + dialog.vbox.pack_start(desc_hbox, False, False, 0) + btn.show() + desc_hbox.show_all() - def send_file(self, account, contact, file_path): + def send_file(self, account, contact, file_path, file_desc=''): ''' start the real transfer(upload) of the file ''' if gtkgui_helpers.file_is_locked(file_path): pritext = _('Gajim cannot access this file') @@ -263,7 +280,7 @@ _('Connection with peer cannot be established.')) resource = resource) (file_dir, file_name) = os.path.split(file_path) file_props = self.get_send_file_props(account, contact, - file_path, file_name) + file_path, file_name, file_desc) if file_props is None: return False self.add_transfer(account, contact, file_props) @@ -294,8 +311,7 @@ _('Connection with peer cannot be established.')) prim_text = _('%s wants to send you a file:') % contact.jid dialog, dialog2 = None, None - def on_response_ok(widget, account, contact, file_props): - dialog.destroy() + def on_response_ok(account, contact, file_props): def on_ok(widget, account, contact, file_props): file_path = dialog2.get_filename() @@ -324,7 +340,9 @@ _('Connection with peer cannot be established.')) file_props['offset'] = dl_size else: dirname = os.path.dirname(file_path) - if not os.access(dirname, os.W_OK): + if not os.access(dirname, os.W_OK) and os.name != 'nt': + # read-only bit is used to mark special folder under windows, + # not to mark that a folder is read-only. See ticket #3587 dialogs.ErrorDialog(_('Directory "%s" is not writable') % dirname, _('You do not have permission to create files in this directory.')) return dialog2.destroy() @@ -348,8 +366,7 @@ _('Connection with peer cannot be established.')) dialog2.connect('delete-event', lambda widget, event: on_cancel(widget, account, contact, file_props)) - def on_response_cancel(widget, account, file_props): - dialog.destroy() + def on_response_cancel(account, file_props): gajim.connections[account].send_file_rejection(file_props) dialog = dialogs.NonModalConfirmationDialog(prim_text, sec_text, @@ -471,7 +488,7 @@ _('Connection with peer cannot be established.')) if full_size == 0: percent = 0 else: - percent = round(float(transfered_size) / full_size * 100) + percent = round(float(transfered_size) / full_size * 100, 1) if iter is None: iter = self.get_iter_by_sid(typ, sid) if iter is not None: @@ -536,11 +553,12 @@ _('Connection with peer cannot be established.')) return iter iter = self.model.iter_next(iter) - def get_send_file_props(self, account, contact, file_path, file_name): + def get_send_file_props(self, account, contact, file_path, file_name, + file_desc=''): ''' create new file_props dict and set initial file transfer properties in it''' file_props = {'file-name' : file_path, 'name' : file_name, - 'type' : 's'} + 'type' : 's', 'desc' : file_desc} if os.path.isfile(file_path): stat = os.stat(file_path) else: @@ -656,7 +674,7 @@ _('Connection with peer cannot be established.')) return True return not file_props['paused'] - def is_transfer_stoped(self, file_props): + def is_transfer_stopped(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']: @@ -698,7 +716,7 @@ _('Connection with peer cannot be established.')) self.remove_menuitem.set_sensitive(is_row_selected) self.open_folder_menuitem.set_sensitive(is_row_selected) is_stopped = False - if self.is_transfer_stoped(file_props): + if self.is_transfer_stopped(file_props): is_stopped = True self.cancel_button.set_sensitive(not is_stopped) self.cancel_menuitem.set_sensitive(not is_stopped) @@ -752,7 +770,7 @@ _('Connection with peer cannot be established.')) iter = self.model.get_iter((i)) sid = self.model[iter][C_SID].decode('utf-8') file_props = self.files_props[sid[0]][sid[1:]] - if self.is_transfer_stoped(file_props): + if self.is_transfer_stopped(file_props): self._remove_transfer(iter, sid, file_props) i -= 1 self.tree.get_selection().unselect_all() diff --git a/src/gajim-remote.py b/src/gajim-remote.py index 91ff086a65..892375a39c 100755 --- a/src/gajim-remote.py +++ b/src/gajim-remote.py @@ -1,18 +1,23 @@ #!/usr/bin/env python ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## # gajim-remote help will show you the D-BUS API of Gajim @@ -35,6 +40,9 @@ def send_error(error_message): sys.exit(1) try: + if sys.platform == 'darwin': + import osx.dbus + osx.dbus.load(False) import dbus import dbus.service import dbus.glib diff --git a/src/gajim.py b/src/gajim.py index b9e12222ce..33cd8a6b40 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -2,25 +2,48 @@ ## gajim.py ## ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> -## Copyright (C) 2005-2006 Dimitur Kirov <dkirov@gmail.com> +## Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2005 Travis Shirk <travis@pobox.com> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> -## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> +## Julien Pivotto <roidelapluie@gmail.com> +## Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## -import sys import os + +if os.name == 'nt': + import warnings + warnings.filterwarnings(action='ignore') + +# Used to create windows installer with GTK included +# paths = os.environ['PATH'] +# list_ = paths.split(';') +# new_list = [] +# for p in list_: +# if p.find('gtk') < 0 and p.find('GTK') < 0: +# new_list.append(p) +# new_list.insert(0, 'gtk/lib') +# new_list.insert(0, 'gtk/bin') +# os.environ['PATH'] = ';'.join(new_list) +# os.environ['GTK_BASEPATH'] = 'gtk' + +import sys import urllib import logging @@ -112,11 +135,24 @@ del config_path common.configpaths.gajimpaths.init_profile(profile) del profile +# PyGTK2.10+ only throws a warning +import warnings +warnings.filterwarnings('error', module='gtk') +try: + import gtk +except Warning, msg: + if str(msg) == 'could not open display': + print >> sys.stderr, _('Gajim needs X server to run. Quiting...') + sys.exit() +warnings.resetwarnings() + import message_control from chat_control import ChatControlBase from atom_window import AtomWindow +import negotiation + from common import exceptions from common.zeroconf import connection_zeroconf from common import dbus_support @@ -131,12 +167,6 @@ if os.name == 'posix': # dl module is Unix Only except: pass -try: - import gtk -except RuntimeError, msg: - if str(msg) == 'could not open display': - print >> sys.stderr, _('Gajim needs X server to run. Quiting...') - sys.exit() pritext = '' if gtk.pygtk_version < (2, 8, 0): pritext = _('Gajim needs PyGTK 2.8 or above') @@ -169,7 +199,7 @@ if os.name == 'nt': 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, + dlg = gtk.MessageDialog(None, gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message_format = pritext) @@ -208,6 +238,7 @@ from common import socks5 from common import gajim from common import helpers from common import optparser +from common import dataforms if verbose: gajim.verbose = True del verbose @@ -280,16 +311,19 @@ def pid_alive(): if get_p(pid) in ('python.exe', 'gajim.exe'): return True return False + elif sys.platform == 'darwin': + from osx import checkPID + return checkPID(pid, 'Gajim.bin') try: if not os.path.exists('/proc'): return True # no /proc, assume Gajim is running try: - f = open('/proc/%d/cmdline'% pid) + f = open('/proc/%d/cmdline'% pid) except IOError, e: if e.errno == errno.ENOENT: return False # file/pid does not exist - raise + raise n = f.read().lower() f.close() @@ -342,6 +376,9 @@ def on_exit(): # delete pid file on normal exit if os.path.exists(pid_filename): os.remove(pid_filename) + if sys.platform == 'darwin': + import osx + osx.shutdown() import atexit atexit.register(on_exit) @@ -353,7 +390,7 @@ import profile_window import config class GlibIdleQueue(idlequeue.IdleQueue): - ''' + ''' Extends IdleQueue to use glib io_add_wath, instead of select/poll In another, `non gui' implementation of Gajim IdleQueue can be used safetly. ''' @@ -361,29 +398,29 @@ class GlibIdleQueue(idlequeue.IdleQueue): ''' this method is called at the end of class constructor. Creates a dict, which maps file/pipe/sock descriptor to glib event id''' self.events = {} - # time() is already called in glib, we just get the last value + # time() is already called in glib, we just get the last value # overrides IdleQueue.current_time() self.current_time = lambda: gobject.get_current_time() - + def add_idle(self, fd, flags): ''' this method is called when we plug a new idle object. Start listening for events from fd ''' - res = gobject.io_add_watch(fd, flags, self.process_events, + res = gobject.io_add_watch(fd, flags, self.process_events, priority=gobject.PRIORITY_LOW) # store the id of the watch, so that we can remove it on unplug self.events[fd] = res - + def remove_idle(self, fd): ''' this method is called when we unplug a new idle object. Stop listening for events from fd ''' gobject.source_remove(self.events[fd]) del(self.events[fd]) - + def process(self): self.check_time_events() - + class Interface: def handle_event_roster(self, account, data): #('ROSTER', account, array) @@ -404,7 +441,7 @@ class Interface: def handle_event_information(self, unused, data): #('INFORMATION', account, (title_text, section_text)) dialogs.InformationDialog(data[0], data[1]) - + def handle_event_ask_new_nick(self, account, data): #('ASK_NEW_NICK', account, (room_jid, title_text, prompt_text, proposed_nick)) room_jid = data[0] @@ -425,6 +462,8 @@ class Interface: gajim.connections[account].build_http_auth_answer(iq_obj, answer) sec_msg = _('Do you accept this request?') + if gajim.get_number_of_connected_accounts() > 1: + sec_msg = _('Do you accept this request on account %s?') % account if data[4]: sec_msg = data[4] + '\n' + sec_msg self.dialog = dialogs.YesNoDialog(_('HTTP (%s) Authorization for %s (id: %s)') \ @@ -444,7 +483,7 @@ class Interface: if ft.files_props['s'].has_key(sid): file_props = ft.files_props['s'][sid] file_props['error'] = -4 - self.handle_event_file_request_error(account, + self.handle_event_file_request_error(account, (jid_from, file_props, errmsg)) conn = gajim.connections[account] conn.disconnect_transfer(file_props) @@ -456,7 +495,7 @@ class Interface: sid = id[3:] if conn.files_props.has_key(sid): file_props = conn.files_props[sid] - self.handle_event_file_send_error(account, + self.handle_event_file_send_error(account, (jid_from, file_props)) conn.disconnect_transfer(file_props) return @@ -519,7 +558,7 @@ class Interface: self.edit_own_details(account) if self.remote_ctrl: self.remote_ctrl.raise_signal('AccountPresence', (status, account)) - + def edit_own_details(self, account): jid = gajim.get_jid_from_account(account) if not self.instances[account].has_key('profile'): @@ -594,7 +633,7 @@ class Interface: self.roster.add_self_contact(account) elif contact1.show in statuss: old_show = statuss.index(contact1.show) - if (resources != [''] and (len(lcontact) != 1 or + if (resources != [''] and (len(lcontact) != 1 or lcontact[0].show != 'offline')) and jid.find('@') > 0: old_show = 0 contact1 = gajim.contacts.copy_contact(contact1) @@ -685,11 +724,11 @@ class Interface: # It's maybe a GC_NOTIFY (specialy for MSN gc) self.handle_event_gc_notify(account, (jid, array[1], status_message, array[3], None, None, None, None, None, None, None, None)) - + def handle_event_msg(self, account, array): # 'MSG' (account, (jid, msg, time, encrypted, msg_type, subject, - # chatstate, msg_id, composing_xep, user_nick, xhtml)) + # chatstate, msg_id, composing_xep, user_nick, xhtml, session, form_node)) # user_nick is JEP-0172 full_jid_with_resource = array[0] @@ -704,6 +743,7 @@ class Interface: msg_id = array[7] composing_xep = array[8] xhtml = array[10] + session = array[11] if gajim.config.get('ignore_incoming_xhtml'): xhtml = None if gajim.jid_is_transport(jid): @@ -741,7 +781,7 @@ class Interface: jid_of_control = jid chat_control = self.msg_win_mgr.get_control(jid, account) - # Handle chat states + # Handle chat states contact = gajim.contacts.get_contact(account, jid, resource) if contact: if contact.composing_xep != 'XEP-0085': # We cache xep85 support @@ -757,7 +797,7 @@ class Interface: # got no valid jep85 answer, peer does not support it contact.chatstate = False elif chatstate == 'active': - # Brand new message, incoming. + # Brand new message, incoming. contact.our_chatstate = chatstate contact.chatstate = chatstate if msg_id: # Do not overwrite an existing msg_id with None @@ -774,7 +814,7 @@ class Interface: if not contact: # contact is not in the roster, create a fake one to display # notification - contact = common.contacts.Contact(jid = jid, resource = resource) + contact = common.contacts.Contact(jid = jid, resource = resource) advanced_notif_num = notify.get_advanced_notification('message_received', account, contact) @@ -783,27 +823,28 @@ class Interface: if msg_type == 'normal': if not gajim.events.get_events(account, jid, ['normal']): first = True - elif not chat_control and not gajim.events.get_events(account, + elif not chat_control and not gajim.events.get_events(account, jid_of_control, [msg_type]): # msg_type can be chat or pm first = True if pm: nickname = resource groupchat_control.on_private_message(nickname, message, array[2], - xhtml, msg_id) + xhtml, session, msg_id) else: # array: (jid, msg, time, encrypted, msg_type, subject) if encrypted: self.roster.on_message(jid, message, array[2], account, array[3], msg_type, subject, resource, msg_id, array[9], - advanced_notif_num) + advanced_notif_num, session=session, form_node=array[12]) 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 = xhtml) + advanced_notif_num, xhtml=xhtml, session=session, + form_node=array[12]) nickname = gajim.get_name_from_jid(account, jid) - # Check and do wanted notifications + # Check and do wanted notifications msg = message if subject: msg = _('Subject: %s') % subject + '\n' + msg @@ -856,7 +897,7 @@ class Interface: msg = _('error while sending %s ( %s )') % (array[3], msg) self.roster.on_message(jid, msg, array[4], account, \ msg_type='error') - + def handle_event_msgsent(self, account, array): #('MSGSENT', account, (jid, msg, keyID)) msg = array[1] @@ -914,14 +955,14 @@ class Interface: gajim.connections[account].ack_unsubscribed(jid) if self.remote_ctrl: self.remote_ctrl.raise_signal('Unsubscribed', (account, jid)) - + def handle_event_agent_info_error(self, account, agent): #('AGENT_ERROR_INFO', account, (agent)) try: gajim.connections[account].services_cache.agent_info_error(agent) except AttributeError: return - + def handle_event_agent_items_error(self, account, agent): #('AGENT_ERROR_INFO', account, (agent)) try: @@ -978,10 +1019,11 @@ class Interface: return def handle_event_new_acc_connected(self, account, array): - #('NEW_ACC_CONNECTED', account, (infos, is_form)) + #('NEW_ACC_CONNECTED', account, (infos, is_form, ssl_msg, ssl_cert, + # ssl_fingerprint)) if self.instances.has_key('account_creation_wizard'): self.instances['account_creation_wizard'].new_acc_connected(array[0], - array[1]) + array[1], array[2], array[3], array[4]) def handle_event_new_acc_not_connected(self, account, array): #('NEW_ACC_NOT_CONNECTED', account, (reason)) @@ -1026,7 +1068,7 @@ class Interface: resource = '' if vcard.has_key('resource'): resource = vcard['resource'] - + # vcard window win = None if self.instances[account]['infos'].has_key(jid): @@ -1125,23 +1167,38 @@ class Interface: # print status in chat window and update status/GPG image if ctrl: - contact = ctrl.contact - contact.show = show - contact.status = status - uf_show = helpers.get_uf_show(show) - if status: - ctrl.print_conversation(_('%s is now %s (%s)') % (nick, uf_show, - status), 'status') + statusCode = array[9] + if '303' in statusCode: + new_nick = array[10] + ctrl.print_conversation(_('%s is now known as %s') % (nick, + new_nick), 'status') + gc_c = gajim.contacts.get_gc_contact(account, room_jid, new_nick) + c = gajim.contacts.contact_from_gc_contact(gc_c) + ctrl.gc_contact = gc_c + ctrl.contact = c + ctrl.draw_banner() + old_jid = room_jid + '/' + nick + new_jid = room_jid + '/' + new_nick + self.msg_win_mgr.change_key(old_jid, new_jid, account) else: - ctrl.print_conversation(_('%s is now %s') % (nick, uf_show), - 'status') - ctrl.parent_win.redraw_tab(ctrl) - ctrl.update_ui() + contact = ctrl.contact + contact.show = show + contact.status = status + uf_show = helpers.get_uf_show(show) + if status: + ctrl.print_conversation(_('%s is now %s (%s)') % (nick, uf_show, + status), 'status') + else: + ctrl.print_conversation(_('%s is now %s') % (nick, uf_show), + 'status') + ctrl.parent_win.redraw_tab(ctrl) + ctrl.update_ui() 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, has_timestamp, htmlmsg)) + # ('GC_MSG', account, (jid, msg, time, has_timestamp, htmlmsg, + # [status_codes])) jids = array[0].split('/', 1) room_jid = jids[0] @@ -1163,7 +1220,7 @@ class Interface: # message from someone nick = jids[1] - gc_control.on_message(nick, array[1], array[2], array[3], xhtml) + gc_control.on_message(nick, array[1], array[2], array[3], xhtml, array[5]) contact = gajim.contacts.\ get_contact_with_highest_priority(account, room_jid) @@ -1197,8 +1254,8 @@ class Interface: text = None if len(jids) > 1: text = '%s has set the subject to %s' % (jids[1], array[1]) - # Workaround for psi bug http://flyspray.psi-im.org/task/595 , to be - # deleted one day. We can receive a subject with a body that contains + # Workaround for psi bug http://flyspray.psi-im.org/task/595 , to be + # deleted one day. We can receive a subject with a body that contains # "X has set the subject to Y" ... elif array[2]: text = array[2] @@ -1212,12 +1269,25 @@ class Interface: #('GC_CONFIG', account, (jid, form)) config is a dict 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]) + if gajim.automatic_rooms[account][room_jid].has_key('continue_tag'): + # We're converting chat to muc. allow participants to invite + form = dataforms.ExtendForm(node = array[1]) + for f in form.iter_fields(): + if f.var == 'muc#roomconfig_allowinvites': + f.value = True + gajim.connections[account].send_gc_config(room_jid, form) + else: + # use default configuration + gajim.connections[account].send_gc_config(room_jid, array[1]) # invite contacts + # check if it is necessary to add <continue /> + continue_tag = False + if gajim.automatic_rooms[account][room_jid].has_key('continue_tag'): + continue_tag = True 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) + gajim.connections[account].send_invite(room_jid, jid, + continue_tag=continue_tag) 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] = \ @@ -1241,6 +1311,7 @@ class Interface: if '100' in statusCode: # Can be a presence (see chg_contact_status in groupchat_contol.py) changes.append(_('Any occupant is allowed to see your full JID')) + gc_control.is_anonymous = False if '102' in statusCode: changes.append(_('Room now shows unavailable member')) if '103' in statusCode: @@ -1255,10 +1326,13 @@ class Interface: changes.append(_('Room logging is now disabled')) if '172' in statusCode: changes.append(_('Room is now non-anonymous')) + gc_control.is_anonymous = False if '173' in statusCode: changes.append(_('Room is now semi-anonymous')) + gc_control.is_anonymous = True if '174' in statusCode: changes.append(_('Room is now fully-anonymous')) + gc_control.is_anonymous = True for change in changes: gc_control.print_conversation(change) @@ -1294,16 +1368,16 @@ class Interface: dlg.input_entry.set_visibility(False) def handle_event_gc_invitation(self, account, array): - #('GC_INVITATION', (room_jid, jid_from, reason, password)) + #('GC_INVITATION', (room_jid, jid_from, reason, password, is_continued)) jid = gajim.get_jid_without_resource(array[1]) room_jid = array[0] if helpers.allow_popup_window(account) or not self.systray_enabled: dialogs.InvitationReceivedDialog(account, room_jid, jid, array[3], - array[2]) + array[2], is_continued=array[4]) return self.add_event(account, jid, 'gc-invitation', (room_jid, array[2], - array[3])) + array[3], array[4])) if helpers.allow_showing_notification(account): path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', @@ -1313,14 +1387,53 @@ class Interface: notify.popup(event_type, jid, account, 'gc-invitation', path, event_type, room_jid) + def forget_gpg_passphrase(self, keyid): + if self.gpg_passphrase.has_key(keyid): + del self.gpg_passphrase[keyid] + return False + def handle_event_bad_passphrase(self, account, array): + #('BAD_PASSPHRASE', account, ()) use_gpg_agent = gajim.config.get('use_gpg_agent') + sectext = '' if use_gpg_agent: - return + sectext = _('You configured Gajim to use GPG agent, but there is no ' + 'GPG agent running or it returned a wrong passphrase.\n') + sectext += _('You are currently connected without your OpenPGP key.') keyID = gajim.config.get_per('accounts', account, 'keyid') - self.roster.forget_gpg_passphrase(keyID) - dialogs.WarningDialog(_('Your passphrase is incorrect'), - _('You are currently connected without your OpenPGP key.')) + self.forget_gpg_passphrase(keyID) + dialogs.WarningDialog(_('Your passphrase is incorrect'), sectext) + + def handle_event_gpg_password_required(self, account, array): + #('GPG_PASSWORD_REQUIRED', account, (callback,)) + callback = array[0] + keyid = gajim.config.get_per('accounts', account, 'keyid') + if self.gpg_passphrase.has_key(keyid): + gajim.connections[account].gpg_passphrase(self.gpg_passphrase[keyid]) + callback() + return + password_ok = False + count = 0 + title = _('Passphrase Required') + second = _('Enter GPG key passphrase for account %s.') % account + while not password_ok and count < 3: + count += 1 + w = dialogs.PassphraseDialog(title, second, '') + passphrase, save = w.run() + if passphrase == -1: + # User pressed cancel + passphrase = None + password_ok = True + else: + password_ok = gajim.connections[account].\ + test_gpg_passphrase(passphrase) + title = _('Wrong Passphrase') + second = _('Please retype your GPG passphrase or press Cancel.') + if passphrase != None: + self.gpg_passphrase[keyid] = passphrase + gobject.timeout_add(30000, self.forget_gpg_passphrase, keyid) + gajim.connections[account].gpg_passphrase(passphrase) + callback() def handle_event_roster_info(self, account, array): #('ROSTER_INFO', account, (jid, name, sub, ask, groups)) @@ -1384,8 +1497,8 @@ class Interface: # ('BOOKMARKS', account, [{name,jid,autojoin,password,nick}, {}]) # We received a bookmark item from the server (JEP48) # Auto join GC windows if neccessary - - self.roster.actions_menu_needs_rebuild = True + + self.roster.set_actions_menu_needs_rebuild() invisible_show = gajim.SHOW_LIST.index('invisible') # do not autojoin if we are invisible if gajim.connections[account].connected == invisible_show: @@ -1429,7 +1542,7 @@ class Interface: 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 @@ -1437,7 +1550,7 @@ class Interface: # each message has a 'From', 'Subject' and 'Snippet' field text += _('\nFrom: %(from_address)s') % \ {'from_address': gmessage['From']} - + if gajim.config.get_per('soundevents', 'gmail_received', 'enabled'): helpers.play_sound('gmail_received') path = gtkgui_helpers.get_path_to_generic_or_avatar(img) @@ -1447,50 +1560,63 @@ class Interface: if self.remote_ctrl: self.remote_ctrl.raise_signal('NewGmail', (account, array)) - def save_avatar_files(self, jid, photo_decoded, puny_nick = None): - '''Save the decoded avatar to a separate file, and generate files for dbus notifications''' + def save_avatar_files(self, jid, photo, puny_nick = None, local = False): + '''Saves an avatar to a separate file, and generate files for dbus notifications. An avatar can be given as a pixmap directly or as an decoded image.''' puny_jid = helpers.sanitize_filename(jid) path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) if puny_nick: path_to_file = os.path.join(path_to_file, puny_nick) # remove old avatars for typ in ('jpeg', 'png'): - path_to_original_file = path_to_file + '.' + typ + if local: + path_to_original_file = path_to_file + '_local'+ '.' + typ + else: + path_to_original_file = path_to_file + '.' + typ if os.path.isfile(path_to_original_file): os.remove(path_to_original_file) - pixbuf, typ = gtkgui_helpers.get_pixbuf_from_data(photo_decoded, - want_type = True) - if pixbuf is None: - return - if typ not in ('jpeg', 'png'): - gajim.log.debug('gtkpixbuf cannot save other than jpeg and png formats. saving %s\'avatar as png file (originaly %s)' % (jid, typ)) - typ = 'png' - path_to_original_file = path_to_file + '.' + typ + if local and photo: + pixbuf = photo + type = 'png' + extension = '_local.png' # save local avatars as png file + else: + pixbuf, typ = gtkgui_helpers.get_pixbuf_from_data(photo, want_type = True) + if pixbuf is None: + return + extension = '.' + typ + if typ not in ('jpeg', 'png'): + gajim.log.debug('gtkpixbuf cannot save other than jpeg and png formats. saving %s\'avatar as png file (originaly %s)' % (jid, typ)) + typ = 'png' + extension = '.png' + path_to_original_file = path_to_file + extension pixbuf.save(path_to_original_file, typ) # Generate and save the resized, color avatar - pixbuf = gtkgui_helpers.get_scaled_pixbuf( - gtkgui_helpers.get_pixbuf_from_data(photo_decoded), 'notification') + pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'notification') if pixbuf: - path_to_normal_file = path_to_file + '_notif_size_colored.png' + path_to_normal_file = path_to_file + '_notif_size_colored' + extension pixbuf.save(path_to_normal_file, 'png') # Generate and save the resized, black and white avatar bwbuf = gtkgui_helpers.get_scaled_pixbuf( gtkgui_helpers.make_pixbuf_grayscale(pixbuf), 'notification') if bwbuf: - path_to_bw_file = path_to_file + '_notif_size_bw.png' + path_to_bw_file = path_to_file + '_notif_size_bw' + extension bwbuf.save(path_to_bw_file, 'png') - def remove_avatar_files(self, jid, puny_nick = None): + def remove_avatar_files(self, jid, puny_nick = None, local = False): '''remove avatar files of a jid''' puny_jid = helpers.sanitize_filename(jid) path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) if puny_nick: path_to_file = os.path.join(path_to_file, puny_nick) - for ext in ('.jpeg', '.png', '_notif_size_colored.png', - '_notif_size_bw.png'): + for ext in ('.jpeg', '.png'): + if local: + ext = '_local' + ext path_to_original_file = path_to_file + ext - if os.path.isfile(path_to_original_file): - os.remove(path_to_original_file) + if os.path.isfile(path_to_file + ext): + os.remove(path_to_file + ext) + if os.path.isfile(path_to_file + '_notif_size_colored' + ext): + os.remove(path_to_file + '_notif_size_colored' + ext) + if os.path.isfile(path_to_file + '_notif_size_bw' + ext): + os.remove(path_to_file + '_notif_size_bw' + ext) def add_event(self, account, jid, type_, event_args): '''add an event to the gajim.events var''' @@ -1517,11 +1643,11 @@ class Interface: if no_queue: # We didn't have a queue: we change icons if not gajim.contacts.get_contact_with_highest_priority(account, jid): # add contact to roster ("Not In The Roster") if he is not - self.roster.add_to_not_in_the_roster(account, jid) + self.roster.add_to_not_in_the_roster(account, jid) self.roster.draw_contact(jid, account) # Show contact in roster (if he is invisible for example) and select line - path = self.roster.get_path(jid, account) + path = self.roster.get_path(jid, account) self.roster.show_and_select_path(path, jid, account) def remove_first_event(self, account, jid, type_ = None): @@ -1577,7 +1703,16 @@ class Interface: def handle_event_file_request(self, account, array): jid = array[0] if jid not in gajim.contacts.get_jid_list(account): - return + 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] + contact = gajim.contacts.create_contact(jid = jid, name = '', + groups = [_('Not in Roster')], show = 'not in roster', status = '', + sub = 'none', keyID = keyID) + gajim.contacts.add_contact(account, contact) + self.roster.add_contact_to_roster(contact.jid, account) file_props = array[1] contact = gajim.contacts.get_first_contact_from_jid(account, jid) @@ -1602,13 +1737,13 @@ class Interface: if time.time() - self.last_ftwindow_update > 0.5: # update ft window every 500ms self.last_ftwindow_update = time.time() - self.instances['file_transfers'].set_progress(file_props['type'], + 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: - ft.set_progress(file_props['type'], file_props['sid'], + ft.set_progress(file_props['type'], file_props['sid'], file_props['received-len']) else: ft.set_status(file_props['type'], file_props['sid'], 'stop') @@ -1638,7 +1773,7 @@ class Interface: msg_type = 'file-stopped' event_type = _('File Transfer Stopped') - if event_type == '': + 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 # who calls this func (sth is really wrong unless this func is also registered @@ -1726,7 +1861,7 @@ class Interface: '''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 + self.roster.set_actions_menu_needs_rebuild() if self.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \ gajim.connections[account].connected in (2, 3): # we go online or free for chat, so we activate auto status @@ -1759,6 +1894,173 @@ class Interface: atom_entry, = data AtomWindow.newAtomEntry(atom_entry) + def handle_event_failed_decrypt(self, account, data): + jid, tim = data + + ctrl = self.msg_win_mgr.get_control(jid, account) + if ctrl: + ctrl.print_conversation_line('Unable to decrypt message from %s\nIt may have been tampered with.' % (jid), 'status', '', tim) + else: + print 'failed decrypt, unable to find a control to notify you in.' + + def handle_session_negotiation(self, account, data): + jid, session, form = data + + if form.getField('accept') and not form['accept'] in ('1', 'true'): + session.cancelled_negotiation() + return + + # encrypted session states. these are described in stanza_session.py + + try: + # bob responds + if form.getType() == 'form' and 'security' in form.asDict(): + def continue_with_negotiation(*args): + if len(args): + self.dialog.destroy() + + # we don't support 3-message negotiation as the responder + if 'dhkeys' in form.asDict(): + session.fail_bad_negotiation('3 message negotiation not supported when responding', ('dhkeys',)) + return + + negotiated, not_acceptable, ask_user = session.verify_options_bob(form) + + if ask_user: + def accept_nondefault_options(widget): + self.dialog.destroy() + negotiated.update(ask_user) + session.respond_e2e_bob(form, negotiated, not_acceptable) + + def reject_nondefault_options(widget): + self.dialog.destroy() + for key in ask_user.keys(): + not_acceptable.append(key) + session.respond_e2e_bob(form, negotiated, not_acceptable) + + self.dialog = dialogs.YesNoDialog(_('Confirm these session options'), + _('''The remote client wants to negotiate an session with these features: + + %s + + Are these options acceptable?''') % (negotiation.describe_features(ask_user)), + on_response_yes = accept_nondefault_options, + on_response_no = reject_nondefault_options) + else: + session.respond_e2e_bob(form, negotiated, not_acceptable) + + def ignore_negotiation(widget): + self.dialog.destroy() + return + + continue_with_negotiation() + + return + + # alice accepts + elif session.status == 'requested-e2e' and form.getType() == 'submit': + negotiated, not_acceptable, ask_user = session.verify_options_alice(form) + + if session.sigmai: + def _cb(on_success): + negotiation.show_sas_dialog(session, jid, session.sas, on_success) + + session.check_identity = _cb + + if ask_user: + def accept_nondefault_options(widget): + dialog.destroy() + + negotiated.update(ask_user) + + try: + session.accept_e2e_alice(form, negotiated) + except exceptions.NegotiationError, details: + session.fail_bad_negotiation(details) + + def reject_nondefault_options(widget): + session.reject_negotiation() + dialog.destroy() + + dialog = dialogs.YesNoDialog(_('Confirm these session options'), + _('The remote client selected these options:\n\n%s\n\nContinue with the session?') % (negotiation.describe_features(ask_user)), + on_response_yes = accept_nondefault_options, + on_response_no = reject_nondefault_options) + else: + try: + session.accept_e2e_alice(form, negotiated) + except exceptions.NegotiationError, details: + session.fail_bad_negotiation(details) + + return + elif session.status == 'responded-e2e' and form.getType() == 'result': + + def _cb(on_success): + negotiation.show_sas_dialog(session, jid, session.sas, on_success) + + session.check_identity = _cb + + try: + session.accept_e2e_bob(form) + except exceptions.NegotiationError, details: + session.fail_bad_negotiation(details) + + return + elif session.status == 'identified-alice' and form.getType() == 'result': + def _cb(on_success): + negotiation.show_sas_dialog(session, jid, session.sas, on_success) + + session.check_identity = _cb + + try: + session.final_steps_alice(form) + except exceptions.NegotiationError, details: + session.fail_bad_negotiation(details) + + return + except exceptions.Cancelled: + # user cancelled the negotiation + + session.reject_negotiation() + + return + + if form.getField('terminate') and\ + form.getField('terminate').getValue() in ('1', 'true'): + was_encrypted = session.enable_encryption + ctrl = session.control + + session.acknowledge_termination() + gajim.connections[account].delete_session(str(jid), session.thread_id) + + if ctrl: + new_sess = gajim.connections[account].make_new_session(str(jid)) + ctrl.set_session(new_sess) + + if was_encrypted: + ctrl.print_esession_details() + + return + + # non-esession negotiation. this isn't very useful, but i'm keeping it around + # to test my test suite. + if form.getType() == 'form': + ctrl = gajim.interface.msg_win_mgr.get_control(str(jid), account) + if not ctrl: + resource = jid.getResource() + contact = gajim.contacts.get_contact(account, str(jid), resource) + if not contact: + connection = gajim.connections[account] + contact = gajim.contacts.create_contact(jid = jid.getStripped(), + resource = resource, show = connection.get_status()) + self.roster.new_chat(contact, account, resource = resource) + + ctrl = gajim.interface.msg_win_mgr.get_control(str(jid), account) + + ctrl.set_session(session) + + negotiation.FeatureNegotiationWindow(account, jid, session, form) + def handle_event_privacy_lists_received(self, account, data): # ('PRIVACY_LISTS_RECEIVED', account, list) if not self.instances.has_key(account): @@ -1790,7 +2092,7 @@ class Interface: # self.store.append([text_item]) # self.global_rules.append(rule) #else: - # self.global_rules_to_append.append(rule) + # self.global_rules_to_append.append(rule) if self.instances[account].has_key('blocked_contacts'): self.instances[account]['blocked_contacts'].\ privacy_list_received(rules) @@ -1812,7 +2114,7 @@ class Interface: def handle_event_zc_name_conflict(self, account, data): dlg = dialogs.InputDialog(_('Username Conflict'), - _('Please type a new username for your local account'), + _('Please type a new username for your local account'), is_modal = True) dlg.input_entry.set_text(data) response = dlg.get_response() @@ -1877,6 +2179,56 @@ class Interface: if self.instances[account].has_key('pep_services'): self.instances[account]['pep_services'].new_service(data[0], data[1]) + def handle_event_unique_room_id_supported(self, account, data): + '''Receive confirmation that unique_room_id are supported''' + # ('UNIQUE_ROOM_ID_SUPPORTED', server, instance, room_id) + instance = data[1] + instance.unique_room_id_supported(data[0], data[2]) + + def handle_event_unique_room_id_unsupported(self, account, data): + # ('UNIQUE_ROOM_ID_UNSUPPORTED', server, instance) + instance = data[1] + instance.unique_room_id_error(data[0]) + + def handle_event_ssl_error(self, account, data): + # ('SSL_ERROR', account, (text, cert, sha1_fingerprint)) + server = gajim.config.get_per('accounts', account, 'hostname') + def on_ok(is_checked): + if is_checked: + f = open(gajim.MY_CACERTS, 'a') + f.write(server + '\n') + f.write(data[1] + '\n\n') + f.close() + gajim.config.set_per('accounts', account, 'ssl_fingerprint_sha1', + data[2]) + gajim.connections[account].ssl_certificate_accepted() + def on_cancel(): + gajim.connections[account].disconnect(on_purpose=True) + self.handle_event_status(account, 'offline') + pritext = _('Error verifying SSL certificate') + sectext = _('There was an error verifying the SSL certificate of your jabber server: %(error)s\nDo you still want to connect to this server?') % {'error': data[0]} + checktext = _('Add this certificate to the list of trusted certificates.\nSHA1 fingerprint of the certificate:\n%s') % data[2] + dialogs.ConfirmationDialogCheck(pritext, sectext, checktext, + on_response_ok=on_ok, on_response_cancel=on_cancel) + + def handle_event_fingerprint_error(self, account, data): + # ('FINGERPRINT_ERROR', account, (fingerprint,)) + def on_yes(widget): + dialog.destroy() + gajim.config.set_per('accounts', account, 'ssl_fingerprint_sha1', + data[0]) + gajim.connections[account].ssl_certificate_accepted() + def on_no(widget): + dialog.destroy() + gajim.connections[account].disconnect(on_purpose=True) + self.handle_event_status(account, 'offline') + pritext = _('SSL certificate error') + sectext = _('It seems SSL certificate has changed or your connection is ' + 'being hacked. Do you still want to connect and update the fingerprint' + 'of the certificate?') + dialog = dialogs.YesNoDialog(pritext, sectext, on_response_yes=on_yes, + on_response_no=on_no) + def read_sleepy(self): '''Check idle status and change that status if needed''' if not self.sleeper.poll(): @@ -1941,7 +2293,7 @@ class Interface: def hide_systray(self): self.systray_enabled = False self.systray.hide_icon() - + def image_is_ok(self, image): if not os.path.exists(image): return False @@ -1954,7 +2306,7 @@ class Interface: if t != gtk.IMAGE_PIXBUF and t != gtk.IMAGE_ANIMATION: return False return True - + def make_regexps(self): # regexp meta characters are: . ^ $ * + ? { } [ ] \ | ( ) # one escapes the metachars with \ @@ -1983,10 +2335,10 @@ class Interface: r'ftp://', r'ed2k://', r'irc://', r'magnet:', r'sip:', r'www\.', r'ftp\.')) # NOTE: it's ok to catch www.gr such stuff exist! - + #FIXME: recognize xmpp: and treat it specially - - links = r'\b(%s)\S*[\w\/\=]|' % prefixes + + links = r"(www\.(?!\.)|[a-z][a-z0-9+.-]*://)[^\s<>'\"]+[^!,\.\s<>\)'\"\]]" #2nd one: at_least_one_char@at_least_one_char.at_least_one_char mail = r'\bmailto:\S*[^\s\W]|' r'\b\S+@\S+\.\S*[^\s\W]' @@ -1996,17 +2348,17 @@ class Interface: r'(?<!\w|\<)' r'/[^\s/]' r'([^/]*[^\s/])?' r'/(?!\w)|'\ r'(?<!\w)' r'_[^\s_]' r'([^_]*[^\s_])?' r'_(?!\w)' - latex = r'|\$\$.*\$\$' - - basic_pattern = links + mail - + latex = r'|\$\$[^$\\]*?([\]\[0-9A-Za-z()|+*/-]|[\\][\]\[0-9A-Za-z()|{}$])(.*?[^\\])?\$\$' + + basic_pattern = links + '|' + mail + if gajim.config.get('use_latex'): basic_pattern += latex - + if gajim.config.get('ascii_formatting'): basic_pattern += formatting self.basic_pattern_re = re.compile(basic_pattern, re.IGNORECASE) - + emoticons_pattern = '' if gajim.config.get('emoticons_theme'): # When an emoticon is bordered by an alpha-numeric character it is NOT @@ -2019,6 +2371,7 @@ class Interface: emoticons_pattern_postmatch = '' emoticon_length = 0 for emoticon in keys: # travel thru emoticons list + emoticon = emoticon.decode('utf-8') emoticon_escaped = re.escape(emoticon) # espace regexp metachars emoticons_pattern += emoticon_escaped + '|'# | means or in regexp if (emoticon_length != len(emoticon)): @@ -2035,15 +2388,16 @@ class Interface: '(?:(?<![\w.]' + emoticons_pattern_prematch[:-1] + '))' + \ '(?:' + emoticons_pattern[:-1] + ')' + \ '(?:(?![\w.]' + emoticons_pattern_postmatch[:-1] + '))' - + # because emoticons match later (in the string) they need to be after # basic matches that may occur earlier emot_and_basic_pattern = basic_pattern + emoticons_pattern - self.emot_and_basic_re = re.compile(emot_and_basic_pattern, re.IGNORECASE) - + self.emot_and_basic_re = re.compile(emot_and_basic_pattern, + re.IGNORECASE + re.UNICODE) + # at least one character in 3 parts (before @, after @, after .) self.sth_at_sth_dot_sth_re = re.compile(r'\S+@\S+\.\S*[^\s)?]') - + re.purge() # clear the regular expression cache def on_emoticon_sort(self, emot1, emot2): @@ -2060,9 +2414,9 @@ class Interface: def popup_emoticons_under_button(self, button, parent_win): ''' pops emoticons menu under button, located in parent_win''' - gtkgui_helpers.popup_emoticons_under_button(self.emoticons_menu, + gtkgui_helpers.popup_emoticons_under_button(self.emoticons_menu, button, parent_win) - + def prepare_emoticons_menu(self): menu = gtk.Menu() def emoticon_clicked(w, str_): @@ -2116,10 +2470,11 @@ class Interface: import emoticons if need_reload: # we need to reload else that doesn't work when changing emoticon set - reload(emoticons) + reload(emoticons) emots = emoticons.emoticons for emot in emots: emot_file = os.path.join(path, emots[emot]) + emot = emot.decode('utf-8') if not self.image_is_ok(emot_file): continue # This avoids duplicated emoticons with the same image eg. :) and :-) @@ -2135,7 +2490,7 @@ class Interface: if self.emoticons_menu: self.emoticons_menu.destroy() self.emoticons_menu = self.prepare_emoticons_menu() - + def register_handlers(self): self.handlers = { 'ROSTER': self.handle_event_roster, @@ -2193,6 +2548,7 @@ class Interface: 'SIGNED_IN': self.handle_event_signed_in, 'METACONTACTS': self.handle_event_metacontacts, 'ATOM_ENTRY': self.handle_atom_entry, + 'FAILED_DECRYPT': self.handle_event_failed_decrypt, 'PRIVACY_LISTS_RECEIVED': self.handle_event_privacy_lists_received, 'PRIVACY_LIST_RECEIVED': self.handle_event_privacy_list_received, 'PRIVACY_LISTS_ACTIVE_DEFAULT': \ @@ -2206,6 +2562,13 @@ class Interface: 'SEARCH_RESULT': self.handle_event_search_result, 'RESOURCE_CONFLICT': self.handle_event_resource_conflict, 'PEP_ACCESS_MODEL': self.handle_event_pep_access_model, + 'UNIQUE_ROOM_ID_UNSUPPORTED': \ + self.handle_event_unique_room_id_unsupported, + 'UNIQUE_ROOM_ID_SUPPORTED': self.handle_event_unique_room_id_supported, + 'SESSION_NEG': self.handle_session_negotiation, + 'GPG_PASSWORD_REQUIRED': self.handle_event_gpg_password_required, + 'SSL_ERROR': self.handle_event_ssl_error, + 'FINGERPRINT_ERROR': self.handle_event_fingerprint_error, } gajim.handlers = self.handlers @@ -2298,7 +2661,7 @@ class Interface: event = gajim.events.get_first_event(account, jid, type_) data = event.parameters dialogs.InvitationReceivedDialog(account, data[0], jid, data[2], - data[1]) + data[1], data[3]) gajim.events.remove_events(account, jid, event) self.roster.draw_contact(jid, account) if w: @@ -2321,6 +2684,7 @@ class Interface: self.minimized_controls = {} self.status_sent_to_users = {} self.status_sent_to_groups = {} + self.gpg_passphrase = {} self.default_colors = { 'inmsgcolor': gajim.config.get('inmsgcolor'), 'outmsgcolor': gajim.config.get('outmsgcolor'), @@ -2328,7 +2692,7 @@ class Interface: 'urlmsgcolor': gajim.config.get('urlmsgcolor'), } - parser.read() + cfg_was_read = parser.read() # Do not set gajim.verbose to False if -v option was given if gajim.config.get('verbose'): gajim.verbose = True @@ -2351,7 +2715,7 @@ class Interface: if len(gajim.config.get_per('statusmsg')) == 0: for msg in gajim.config.statusmsg_default: gajim.config.add_per('statusmsg', msg) - gajim.config.set_per('statusmsg', msg, 'message', + gajim.config.set_per('statusmsg', msg, 'message', gajim.config.statusmsg_default[msg]) #add default themes if there is not in the config file theme = gajim.config.get('roster_theme') @@ -2360,10 +2724,10 @@ class Interface: if len(gajim.config.get_per('themes')) == 0: d = ['accounttextcolor', 'accountbgcolor', 'accountfont', 'accountfontattrs', 'grouptextcolor', 'groupbgcolor', 'groupfont', - 'groupfontattrs', 'contacttextcolor', 'contactbgcolor', + 'groupfontattrs', 'contacttextcolor', 'contactbgcolor', 'contactfont', 'contactfontattrs', 'bannertextcolor', 'bannerbgcolor'] - + default = gajim.config.themes_default for theme_name in default: gajim.config.add_per('themes', theme_name) @@ -2371,15 +2735,15 @@ class Interface: for o in d: gajim.config.set_per('themes', theme_name, o, theme[d.index(o)]) - - if gajim.config.get('autodetect_browser_mailer'): + + if gajim.config.get('autodetect_browser_mailer') or not cfg_was_read: gtkgui_helpers.autodetect_browser_mailer() if gajim.verbose: gajim.log.setLevel(gajim.logging.DEBUG) else: gajim.log.setLevel(None) - + # pygtk2.8+ on win, breaks io_add_watch. # We use good old select.select() if os.name == 'nt': @@ -2392,7 +2756,7 @@ class Interface: # resolve and keep current record of resolved hosts gajim.resolver = nslookup.Resolver(gajim.idlequeue) gajim.socks5queue = socks5.SocksQueue(gajim.idlequeue, - self.handle_event_file_rcv_completed, + self.handle_event_file_rcv_completed, self.handle_event_file_progress) gajim.proxy65_manager = proxy65_manager.Proxy65Manager(gajim.idlequeue) self.register_handlers() @@ -2407,9 +2771,9 @@ class Interface: 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': {}} - + + self.instances = {} + for a in gajim.connections: self.instances[a] = {'infos': {}, 'disco': {}, 'gc_config': {}, 'search': {}} @@ -2429,7 +2793,7 @@ class Interface: gajim.transport_avatar[a] = {} self.roster = roster_window.RosterWindow() - + if gajim.config.get('remote_control'): try: import remote_control @@ -2465,9 +2829,12 @@ class Interface: auto=True) gajim.sleeper_state[account] = 'autoaway' - bus = dbus.SessionBus() - bus.add_signal_receiver(gnome_screensaver_ActiveChanged_cb, - 'ActiveChanged', 'org.gnome.ScreenSaver') + try: + bus = dbus.SessionBus() + bus.add_signal_receiver(gnome_screensaver_ActiveChanged_cb, + 'ActiveChanged', 'org.gnome.ScreenSaver') + except: + pass self.show_vcard_when_connect = [] @@ -2482,11 +2849,12 @@ class Interface: self.systray_enabled = False self.systray_capabilities = False - - if os.name == 'nt' and gtk.pygtk_version >= (2, 10, 0) and\ - gtk.gtk_version >= (2, 10, 0): - import statusicon - self.systray = statusicon.StatusIcon() + + if (((os.name == 'nt') or (sys.platform == 'darwin')) 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 @@ -2501,7 +2869,7 @@ class Interface: self.init_emoticons() self.make_regexps() - + # get instances for windows/dialogs that will show_all()/hide() self.instances['file_transfers'] = dialogs.FileTransfersWindow() @@ -2538,7 +2906,7 @@ if __name__ == '__main__': print >> sys.stderr, "Encodings: d:%s, fs:%s, p:%s" % \ (sys.getdefaultencoding(), sys.getfilesystemencoding(), locale.getpreferredencoding()) - if os.name != 'nt': + if ((os.name != 'nt') and (sys.platform != 'darwin')): # Session Management support try: import gnome.ui @@ -2550,10 +2918,10 @@ if __name__ == '__main__': gnome.program_init('gajim', gajim.version) cli = gnome.ui.master_client() cli.connect('die', die_cb) - + path_to_gajim_script = gtkgui_helpers.get_abspath_for_script( 'gajim') - + if path_to_gajim_script: argv = [path_to_gajim_script] # FIXME: remove this typeerror catch when gnome python is old and @@ -2563,8 +2931,12 @@ if __name__ == '__main__': cli.set_restart_command(argv) except AttributeError: cli.set_restart_command(len(argv), argv) - + check_paths.check_and_possibly_create_paths() + if sys.platform == 'darwin': + import osx + osx.init() + Interface() gtk.main() diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py index 3454ee79f1..eea5fb651e 100644 --- a/src/gajim_themes_window.py +++ b/src/gajim_themes_window.py @@ -1,28 +1,34 @@ ## gajim_themes_window.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## - Dimitur Kirov <dkirov@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import pango diff --git a/src/groupchat_control.py b/src/groupchat_control.py index 1315f1442e..1d975cf9cd 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -1,8 +1,8 @@ ## groupchat_control.py ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> @@ -10,17 +10,23 @@ ## Copyright (C) 2006 Travis Shirk <travis@pobox.com> ## Copyright (C) 2005-2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> -## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> +## Lukas Petrovicky <lukas@petrovicky.net> +## Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import time @@ -41,7 +47,7 @@ from common import helpers from chat_control import ChatControl from chat_control import ChatControlBase from conversation_textview import ConversationTextview -from common.exceptions import GajimGeneralException +from common.exceptions import GajimGeneralException #(status_image, type, nick, shown_nick) ( @@ -105,14 +111,14 @@ def tree_cell_data_func(column, renderer, model, iter, tv=None): class PrivateChatControl(ChatControl): TYPE_ID = message_control.TYPE_PM - def __init__(self, parent_win, gc_contact, contact, account): + def __init__(self, parent_win, gc_contact, contact, account, session): room_jid = contact.jid.split('/')[0] room_ctrl = gajim.interface.msg_win_mgr.get_control(room_jid, account) if gajim.interface.minimized_controls[account].has_key(room_jid): room_ctrl = gajim.interface.minimized_controls[account][room_jid] self.room_name = room_ctrl.name self.gc_contact = gc_contact - ChatControl.__init__(self, parent_win, contact, account) + ChatControl.__init__(self, parent_win, contact, account, session) self.TYPE_ID = 'pm' def send_message(self, message): @@ -153,10 +159,13 @@ class GroupchatControl(ChatControlBase): 'help', 'invite', 'join', 'kick', 'leave', 'me', 'msg', 'nick', 'part', 'names', 'say', 'topic'] - def __init__(self, parent_win, contact, acct): + def __init__(self, parent_win, contact, acct, is_continued=False): ChatControlBase.__init__(self, self.TYPE_ID, parent_win, 'muc_child_vbox', contact, acct); + self.is_continued=is_continued + self.is_anonymous = True + widget = self.xml.get_widget('muc_window_actions_button') id = widget.connect('clicked', self.on_actions_button_clicked) self.handlers[id] = widget @@ -190,7 +199,8 @@ class GroupchatControl(ChatControlBase): self.handlers[id] = widget self.room_jid = self.contact.jid - self.nick = contact.name + self.nick = contact.name.decode('utf-8') + self.new_nick = '' self.name = self.room_jid.split('@')[0] compact_view = gajim.config.get('compact_view') @@ -221,10 +231,10 @@ class GroupchatControl(ChatControlBase): # connect the menuitems to their respective functions xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade') - widget = xm.get_widget('bookmark_room_menuitem') - id = widget.connect('activate', + self.bookmark_room_menuitem = xm.get_widget('bookmark_room_menuitem') + id = self.bookmark_room_menuitem.connect('activate', self._on_bookmark_room_menuitem_activate) - self.handlers[id] = widget + self.handlers[id] = self.bookmark_room_menuitem self.change_nick_menuitem = xm.get_widget('change_nick_menuitem') id = self.change_nick_menuitem.connect('activate', @@ -246,9 +256,10 @@ class GroupchatControl(ChatControlBase): self._on_change_subject_menuitem_activate) self.handlers[id] = self.change_subject_menuitem - widget = xm.get_widget('history_menuitem') - id = widget.connect('activate', self._on_history_menuitem_activate) - self.handlers[id] = widget + self.history_menuitem = xm.get_widget('history_menuitem') + id = self.history_menuitem.connect('activate', + self._on_history_menuitem_activate) + self.handlers[id] = self.history_menuitem self.minimize_menuitem = xm.get_widget('minimize_menuitem') id = self.minimize_menuitem.connect('toggled', @@ -477,23 +488,55 @@ class GroupchatControl(ChatControlBase): houses the room jid, subject. ''' self.name_label.set_ellipsize(pango.ELLIPSIZE_END) + self.banner_status_label.set_ellipsize(pango.ELLIPSIZE_END) font_attrs, font_attrs_small = self.get_font_attrs() - text = '<span %s>%s</span>' % (font_attrs, self.room_jid) + if self.is_continued: + nicks = [] + for nick in gajim.contacts.get_nick_list(self.account, self.room_jid): + if nick != self.nick: + nicks.append(nick) + if nicks != []: + title = ', ' + title = 'Conversation with ' + title.join(nicks) + else: + title = 'Continued conversation' + text = '<span %s>%s</span>' % (font_attrs, title) + else: + text = '<span %s>%s</span>' % (font_attrs, self.room_jid) + self.name_label.set_markup(text) + if self.subject: subject = helpers.reduce_chars_newlines(self.subject, max_lines = 2) subject = gobject.markup_escape_text(subject) - text += '\n<span %s>%s</span>' % (font_attrs_small, subject) + if gajim.HAVE_PYSEXY: + subject_text = self.urlfinder.sub(self.make_href, subject) + subject_text = '<span %s>%s</span>' % (font_attrs_small, + subject_text) + else: + subject_text = '<span %s>%s</span>' % (font_attrs_small, subject) # tooltip must always hold ALL the subject self.subject_tooltip.set_tip(self.event_box, self.subject) + self.banner_status_label.show() + self.banner_status_label.set_no_show_all(False) + else: + subject_text = '' + self.subject_tooltip.disable() + self.banner_status_label.hide() + self.banner_status_label.set_no_show_all(True) - self.name_label.set_markup(text) + self.banner_status_label.set_markup(subject_text) def prepare_context_menu(self): '''sets sensitivity state for configure_room''' + ag = gtk.accel_groups_from_object(self.parent_win.window)[0] + self.history_menuitem.add_accelerator('activate', ag, gtk.keysyms.h, + gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) if self.contact.jid in gajim.config.get_per('accounts', self.account, 'minimized_gc').split(' '): self.minimize_menuitem.set_active(True) + if not gajim.connections[self.account].private_storage_supported: + self.bookmark_room_menuitem.set_sensitive(False) if gajim.gc_connected[self.account][self.room_jid]: c = gajim.contacts.get_gc_contact(self.account, self.room_jid, self.nick) @@ -515,7 +558,11 @@ class GroupchatControl(ChatControlBase): self.change_nick_menuitem.set_sensitive(False) return self.gc_popup_menu - def on_message(self, nick, msg, tim, has_timestamp = False, xhtml = None): + def on_message(self, nick, msg, tim, has_timestamp = False, xhtml = None, + status_code = []): + if '100' in status_code: + # Room is not anonymous + self.is_anonymous = False if not nick: # message from server self.print_conversation(msg, tim = tim, xhtml = xhtml) @@ -528,7 +575,7 @@ class GroupchatControl(ChatControlBase): else: self.print_conversation(msg, nick, tim, xhtml) - def on_private_message(self, nick, msg, tim, xhtml, msg_id = None): + def on_private_message(self, nick, msg, tim, xhtml, session, msg_id = None): # Do we have a queue? fjid = self.room_jid + '/' + nick no_queue = len(gajim.events.get_events(self.account, fjid)) == 0 @@ -540,7 +587,7 @@ class GroupchatControl(ChatControlBase): return event = gajim.events.create_event('pm', (msg, '', 'incoming', tim, - False, '', msg_id, xhtml)) + False, '', msg_id, xhtml, session)) gajim.events.add_event(self.account, fjid, event) autopopup = gajim.config.get('autopopup') @@ -560,7 +607,7 @@ class GroupchatControl(ChatControlBase): self.parent_win.show_title() self.parent_win.redraw_tab(self) else: - self._start_private_message(nick) + self._start_private_message(nick, session) # Scroll to line self.list_treeview.expand_row(path[0:1], False) self.list_treeview.scroll_to_cell(path) @@ -825,8 +872,20 @@ class GroupchatControl(ChatControlBase): def on_send_file(self, widget, gc_contact): '''sends a file to a contact in the room''' - gajim.interface.instances['file_transfers'].show_file_send_request( - self.account, gc_contact) + def _on_send_files(gc_c): + gajim.interface.instances['file_transfers'].show_file_send_request( + self.account, gc_c) + self_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, + self.nick) + if self.is_anonymous and gc_contact.affiliation not in ['admin', 'owner']\ + and self_contact.affiliation in ['admin', 'owner']: + prim_text = _('Really send file?') + sec_text = _('If you send a file to %s, he/she will know your real Jabber ID.') % gc_contact.name + dialog = dialogs.NonModalConfirmationDialog(prim_text, sec_text, + on_response_ok = (_on_send_files, gc_contact)) + dialog.popup() + else: + _on_send_files(gc_contact) def draw_contact(self, nick, selected=False, focus=False): iter = self.get_contact_iter(nick) @@ -928,7 +987,9 @@ class GroupchatControl(ChatControlBase): 'reason': reason } self.print_conversation(s, 'info', tim = tim) elif '303' in statusCode: # Someone changed his or her nick - if new_nick == self.nick: # We changed our nick + if new_nick == self.new_nick: # We changed our nick + self.nick = self.new_nick + self.new_nick = '' s = _('You are now known as %s') % new_nick else: s = _('%s is now known as %s') % (nick, new_nick) @@ -942,7 +1003,8 @@ class GroupchatControl(ChatControlBase): self.attention_list.remove(nick) # keep nickname color if nick in self.gc_custom_colors: - self.gc_custom_colors[new_nick] = self.gc_custom_colors[nick] + 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) @@ -957,7 +1019,7 @@ class GroupchatControl(ChatControlBase): 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): + if os.path.exists(old_file) and old_file != files[old_file]: if os.path.exists(files[old_file]): # Windows require this os.remove(files[old_file]) @@ -1133,6 +1195,8 @@ class GroupchatControl(ChatControlBase): if nick == self.nick: # we became online self.got_connected() self.list_treeview.expand_row((model.get_path(role_iter)), False) + if self.is_continued: + self.draw_banner_text() return iter def get_role_iter(self, role): @@ -1186,9 +1250,15 @@ class GroupchatControl(ChatControlBase): # example: /nick foo if len(message_array) and message_array[0] != self.nick: nick = message_array[0] - nick = helpers.parse_resource(nick) + try: + nick = helpers.parse_resource(nick) + except: + # Invalid Nickname + dialogs.ErrorDialog(_('Invalid nickname'), + _('The nickname has not allowed characters.')) + return True gajim.connections[self.account].join_gc(nick, self.room_jid, None) - self.nick = nick + self.new_nick = nick self.clear(self.msg_textview) else: self.get_command_help(command) @@ -1251,19 +1321,13 @@ class GroupchatControl(ChatControlBase): if len(message_array): message_array = message_array[0].split() invitee = message_array.pop(0) - if invitee.find('@') >= 0: - reason = ' '.join(message_array) - gajim.connections[self.account].send_invite(self.room_jid, - invitee, reason) - s = _('Invited %(contact_jid)s to %(room_jid)s.') % { - 'contact_jid': invitee, - 'room_jid': self.room_jid} - self.print_conversation(s, 'info') - 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') % invitee - self.print_conversation(s, 'info') + reason = ' '.join(message_array) + gajim.connections[self.account].send_invite(self.room_jid, invitee, reason) + s = _('Invited %(contact_jid)s to %(room_jid)s.') % { + 'contact_jid': invitee, + 'room_jid': self.room_jid} + self.print_conversation(s, 'info') + self.clear(self.msg_textview) else: self.get_command_help(command) return True @@ -1271,29 +1335,26 @@ class GroupchatControl(ChatControlBase): # example: /join room@conference.example.com/nick if len(message_array): room_jid = message_array[0] - if room_jid.find('@') >= 0: - if room_jid.find('/') >= 0: - room_jid, nick = room_jid.split('/', 1) - else: - nick = '' - # 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() - else: - try: - gajim.interface.instances[self.account]['join_gc'] =\ - dialogs.JoinGroupchatWindow(self.account, - 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[0] - self.print_conversation(s, 'info') + if room_jid.find('@') < 0: + room_jid = room_jid + '@' + gajim.get_server_from_jid(self.room_jid) else: - self.get_command_help(command) + room_jid = '@' + gajim.get_server_from_jid(self.room_jid) + if room_jid.find('/') >= 0: + room_jid, nick = room_jid.split('/', 1) + else: + nick = '' + # 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() + else: + try: + gajim.interface.instances[self.account]['join_gc'] =\ + dialogs.JoinGroupchatWindow(self.account, + room_jid = room_jid, nick = nick) + except GajimGeneralException: + pass + self.clear(self.msg_textview) return True elif command == 'leave' or command == 'part' or command == 'close': # Leave the room and close the tab or window @@ -1468,11 +1529,26 @@ class GroupchatControl(ChatControlBase): '''asks user for new nick and on ok it sets it on room''' def on_ok(widget): nick = instance.input_entry.get_text().decode('utf-8') - nick = helpers.parse_resource(nick) + try: + nick = helpers.parse_resource(nick) + except: + # invalid char + dialogs.ErrorDialog(_('Invalid nickname'), + _('The nickname has not allowed characters.')) + return gajim.connections[self.account].join_gc(nick, self.room_jid, None) - self.nick = nick + if gajim.gc_connected[self.account][self.room_jid]: + # We are changing nick, we will change self.nick when we receive + # presence that inform that it works + self.new_nick = nick + else: + # We are connecting, we will not get a changed nick presence so + # change it NOW. We don't already have a nick so it's harmless + self.nick = nick + def on_cancel(): + self.new_nick = '' instance = dialogs.InputDialog(title, prompt, proposed_nick, - is_modal = False, ok_handler = on_ok) + is_modal = False, ok_handler = on_ok, cancel_handler = on_cancel) def minimize(self, status='offline'): # Minimize it @@ -1496,6 +1572,8 @@ class GroupchatControl(ChatControlBase): self.contact.jid, status = self.subject) def shutdown(self, status='offline'): + # destroy banner tooltip - bug #pygtk for that! + self.subject_tooltip.destroy() gajim.connections[self.account].send_gc_status(self.nick, self.room_jid, show='offline', status=status) nick_list = gajim.contacts.get_nick_list(self.account, self.room_jid) @@ -1554,8 +1632,6 @@ class GroupchatControl(ChatControlBase): if dialog.is_checked(): # user does not want to be asked again gajim.config.set('confirm_close_muc', False) - dialog.destroy() - return retval def set_control_active(self, state): @@ -1614,18 +1690,19 @@ class GroupchatControl(ChatControlBase): if response == gtk.RESPONSE_OK: reason = instance.input_entry1.get_text().decode('utf-8') jid = instance.input_entry2.get_text().decode('utf-8') - # Test jid - try: - jid = helpers.parse_jid(jid) - except: - dialogs.ErrorDialog(_('Invalid group chat Jabber ID'), - _('The group chat Jabber ID has not allowed characters.')) - return + if jid: + # Test jid + try: + jid = helpers.parse_jid(jid) + except: + dialogs.ErrorDialog(_('Invalid group chat Jabber ID'), + _('The group chat Jabber ID has not allowed characters.')) + return else: # Abord destroy operation return gajim.connections[self.account].destroy_gc_room(self.room_jid, reason, - jid) + jid) def _on_bookmark_room_menuitem_activate(self, widget): bm = { @@ -1647,7 +1724,7 @@ class GroupchatControl(ChatControlBase): gajim.connections[self.account].bookmarks.append(bm) gajim.connections[self.account].store_bookmarks() - gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.roster.set_actions_menu_needs_rebuild() dialogs.InformationDialog( _('Bookmark has been added successfully'), @@ -1924,7 +2001,7 @@ class GroupchatControl(ChatControlBase): menu.show_all() menu.popup(None, None, None, event.button, event.time) - def _start_private_message(self, nick): + def _start_private_message(self, nick, session = None): gc_c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) nick_jid = gc_c.get_full_jid() diff --git a/src/gtkexcepthook.py b/src/gtkexcepthook.py index 7e398979df..34a1bd4187 100644 --- a/src/gtkexcepthook.py +++ b/src/gtkexcepthook.py @@ -1,19 +1,24 @@ ## gtkexcepthook.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## ## Initially written and submitted by Gustavo J. A. M. Carneiro ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import sys import os diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py index 3622adc8ee..c697164608 100644 --- a/src/gtkgui_helpers.py +++ b/src/gtkgui_helpers.py @@ -1,21 +1,27 @@ ## gtkgui_helpers.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2004-2005 Vincent Hanquez <tab@snarc.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> -## Copyright (C) 2005 Travis Shirk <travis@pobox.com> -## Copyright (C) 2005 Norman Rasmussen <norman@rasmussen.co.za> +## Travis Shirk <travis@pobox.com> +## Norman Rasmussen <norman@rasmussen.co.za> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import xml.sax.saxutils import gtk @@ -121,7 +127,7 @@ def get_theme_font_for_option(theme, option): def get_default_font(): '''Get the desktop setting for application font - first check for GNOME, then XFCE and last KDE + first check for GNOME, then Xfce and last KDE it returns None on failure or else a string 'Font Size' ''' try: @@ -180,6 +186,8 @@ def autodetect_browser_mailer(): gajim.config.set('openwith', 'kfmclient exec') elif user_runs_xfce(): gajim.config.set('openwith', 'exo-open') + elif user_runs_osx(): + gajim.config.set('openwith', 'open') else: gajim.config.set('openwith', 'custom') @@ -195,6 +203,9 @@ def user_runs_xfce(): return True return False +def user_runs_osx(): + return sys.platform == 'darwin' + def get_running_processes(): '''returns running processes or None (if not /proc exists)''' if os.path.isdir('/proc'): @@ -605,7 +616,7 @@ def get_path_to_generic_or_avatar(generic, jid = None, suffix = None): path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + suffix filepath, extension = os.path.splitext(path_to_file) path_to_local_file = filepath + '_local' + extension - if os.path.exists(path_to_local_file): + if os.path.exists(path_to_local_file): return path_to_local_file if os.path.exists(path_to_file): return path_to_file @@ -643,12 +654,10 @@ def possibly_set_gajim_as_xmpp_handler(): else: path_to_kde_file = None - def set_gajim_as_xmpp_handler(widget = None): - if widget: + def set_gajim_as_xmpp_handler(is_checked=None): + if is_checked != None: # come from confirmation dialog - gajim.config.set('check_if_gajim_is_default', - dlg.checkbutton.get_active()) - dlg.destroy() + gajim.config.set('check_if_gajim_is_default', is_checked) path_to_gajim_script, typ = get_abspath_for_script('gajim-remote', True) if path_to_gajim_script: if typ == 'svn': @@ -711,10 +720,9 @@ Description=xmpp sectext = _('Would you like to make Gajim the default Jabber client?') checktext = _('Always check to see if Gajim is the default Jabber client ' 'on startup') - def on_cancel(widget): + def on_cancel(): gajim.config.set('check_if_gajim_is_default', - dlg.checkbutton.get_active()) - dlg.destroy() + dlg.is_checked()) dlg = dialogs.ConfirmationDialogCheck(pritext, sectext, checktext, set_gajim_as_xmpp_handler, on_cancel) if gajim.config.get('check_if_gajim_is_default'): @@ -752,9 +760,8 @@ def destroy_widget(widget): def on_avatar_save_as_menuitem_activate(widget, jid, account, default_name = ''): def on_ok(widget): - def on_ok2(widget, file_path, pixbuf): + def on_ok2(file_path, pixbuf): pixbuf.save(file_path, 'jpeg') - dialog2.destroy() dialog.destroy() file_path = dialog.get_filename() @@ -808,7 +815,7 @@ default_name = ''): 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'), + 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: diff --git a/src/history_manager.py b/src/history_manager.py index 569d0e8bd8..3ba50a8cb0 100755 --- a/src/history_manager.py +++ b/src/history_manager.py @@ -3,22 +3,44 @@ ## ## Copyright (C) 2006-2007 Nikos Kouremenos <kourem@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## ## NOTE: some method names may match those of logger.py but that's it ## someday (TM) should have common class that abstracts db connections and helpers on it ## the same can be said for history_window.py -import sys import os + +if os.name == 'nt': + import warnings + warnings.filterwarnings(action='ignore') + +# Used to create windows installer with GTK included +# paths = os.environ['PATH'] +# list_ = paths.split(';') +# new_list = [] +# for p in list_: +# if p.find('gtk') < 0 and p.find('GTK') < 0: +# new_list.append(p) +# new_list.insert(0, 'gtk/lib') +# new_list.insert(0, 'gtk/bin') +# os.environ['PATH'] = ';'.join(new_list) +# os.environ['GTK_BASEPATH'] = 'gtk' + +import sys import signal import gtk import gobject @@ -26,7 +48,10 @@ import time import locale from common import i18n -import exceptions +import common.configpaths +common.configpaths.gajimpaths.init() +common.configpaths.gajimpaths.init_profile() +from common import exceptions import dialogs import gtkgui_helpers from common.logger import LOG_DB_PATH, constants @@ -75,7 +100,7 @@ class HistoryManager: self.logs_scrolledwindow = xml.get_widget('logs_scrolledwindow') self.search_results_scrolledwindow = xml.get_widget( 'search_results_scrolledwindow') - self.welcome_label = xml.get_widget('welcome_label') + self.welcome_vbox = xml.get_widget('welcome_vbox') self.jids_already_in = [] # holds jids that we already have in DB self.AT_LEAST_ONE_DELETION_DONE = False @@ -211,7 +236,7 @@ class HistoryManager: self.logs_liststore.clear() # clear the store - self.welcome_label.hide() + self.welcome_vbox.hide() self.search_results_scrolledwindow.hide() self.logs_scrolledwindow.show() @@ -478,9 +503,8 @@ class HistoryManager: if paths_len == 0: # nothing is selected return - def on_ok(widget, liststore, list_of_paths): + def on_ok(liststore, list_of_paths): # delete all rows from db that match jid_id - self.dialog.destroy() list_of_rowrefs = [] for path in list_of_paths: # make them treerowrefs (it's needed) list_of_rowrefs.append(gtk.TreeRowReference(liststore, path)) @@ -511,7 +535,7 @@ class HistoryManager: 'Do you really want to delete logs of the selected contact?', 'Do you really want to delete logs of the selected contacts?', paths_len) - self.dialog = dialogs.ConfirmationDialog(pri_text, + dialogs.ConfirmationDialog(pri_text, _('This is an irreversible operation.'), on_response_ok = (on_ok, liststore, list_of_paths)) @@ -520,8 +544,7 @@ class HistoryManager: if paths_len == 0: # nothing is selected return - def on_ok(widget, liststore, list_of_paths): - self.dialog.destroy() + def on_ok(liststore, list_of_paths): # delete rows from db that match log_line_id list_of_rowrefs = [] for path in list_of_paths: # make them treerowrefs (it's needed) @@ -547,7 +570,7 @@ class HistoryManager: pri_text = i18n.ngettext( 'Do you really want to delete the selected message?', 'Do you really want to delete the selected messages?', paths_len) - self.dialog = dialogs.ConfirmationDialog(pri_text, + dialogs.ConfirmationDialog(pri_text, _('This is an irreversible operation.'), on_response_ok = (on_ok, liststore, list_of_paths)) @@ -556,7 +579,7 @@ class HistoryManager: if text == '': return - self.welcome_label.hide() + self.welcome_vbox.hide() self.logs_scrolledwindow.hide() self.search_results_scrolledwindow.show() diff --git a/src/history_window.py b/src/history_window.py index 19af94b730..45d6f68c69 100644 --- a/src/history_window.py +++ b/src/history_window.py @@ -1,27 +1,33 @@ ## history_window.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject @@ -40,23 +46,29 @@ constants = Constants() # contact_name, date, message, time ( +C_LOG_JID, C_CONTACT_NAME, C_UNIXTIME, C_MESSAGE, C_TIME -) = range(4) +) = range(5) class HistoryWindow: '''Class for browsing logs of conversations with contacts''' - def __init__(self, jid, account): - self.jid = jid + def __init__(self, jid = None, account = None): + if jid is None: + # Use self.jid to pass text to input_entry + self.jid = 'Enter jid or contact name here' + else: + self.jid = jid self.account = account + self.mark_days_idle_call_id = None xml = gtkgui_helpers.get_glade('history_window.glade') self.window = xml.get_widget('history_window') - + self.jid_entry = xml.get_widget('jid_entry') self.calendar = xml.get_widget('calendar') scrolledwindow = xml.get_widget('scrolledwindow') self.history_textview = conversation_textview.ConversationTextview( @@ -64,16 +76,39 @@ class HistoryWindow: scrolledwindow.add(self.history_textview.tv) self.history_buffer = self.history_textview.tv.get_buffer() self.history_buffer.create_tag('highlight', background = 'yellow') + self.checkbutton = xml.get_widget('log_history_checkbutton') + self.checkbutton.connect('toggled', self.on_log_history_checkbutton_toggled) self.query_entry = xml.get_widget('query_entry') - self.search_button = xml.get_widget('search_button') - query_builder_button = xml.get_widget('query_builder_button') - query_builder_button.hide() - query_builder_button.set_no_show_all(True) self.expander_vbox = xml.get_widget('expander_vbox') - + self.query_combobox = xml.get_widget('query_combobox') + self.query_combobox.set_active(0) self.results_treeview = xml.get_widget('results_treeview') + + # create jid dict for auto completion + self.completion_dict = {} + liststore = gtkgui_helpers.get_completion_liststore(self.jid_entry) + + # Add all jids in logs.db: + # he only info we have got to fill the dict is the JID, use it as key + db_jids = gajim.logger.get_jids_in_db() + for jid in db_jids: + self.completion_dict[jid] = None + + # Enhance contacts of online accounts with their contact reference and their name + for account in gajim.contacts.get_accounts(): + self.completion_dict.update(helpers.get_contact_dict_for_account(account)) + keys = self.completion_dict.keys() + keys.sort() + # Add icons + for jid in keys: + if gajim.logger.jid_is_room_jid(jid): + img = gajim.interface.roster.load_icon('muc_active') + else: + img = gajim.interface.roster.jabber_state_images['16']['online'] + liststore.append((img.get_pixbuf(), jid)) + # contact_name, date, message, time - model = gtk.ListStore(str, str, str, str) + model = gtk.ListStore(str, str, str, str, str) self.results_treeview.set_model(model) col = gtk.TreeViewColumn(_('Name')) self.results_treeview.append_column(col) @@ -98,43 +133,10 @@ class HistoryWindow: col.set_attributes(renderer, text = C_MESSAGE) col.set_resizable(True) - contact = gajim.contacts.get_first_contact_from_jid(account, jid) - if contact: - title = _('Conversation History with %s') % contact.get_shown_name() - else: - title = _('Conversation History with %s') % jid - self.window.set_title(title) + self.jid_entry.set_text(self.jid) xml.signal_autoconnect(self) - - # fake event so we start mark days procedure for selected month - # selected month is current month as calendar defaults to selecting - # current date - self.calendar.emit('month-changed') - - # 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, self.account) - if result is None: - date = time.localtime() - else: - tim = result - date = time.localtime(tim) - - y, m, d = date[0], date[1], date[2] - gtk_month = gtkgui_helpers.make_python_month_gtk_month(m) - self.calendar.select_month(gtk_month, y) - self.calendar.select_day(d) - self.add_lines_for_date(y, m, d) - - log = True - if self.jid in gajim.config.get_per('accounts', self.account, - 'no_log_for').split(' '): - log = False - checkbutton = xml.get_widget('log_history_checkbutton') - checkbutton.set_active(log) - checkbutton.connect('toggled', self.on_log_history_checkbutton_toggled) - + self.jid_entry.emit('activate') self.window.show_all() def on_history_window_destroy(self, widget): @@ -143,11 +145,85 @@ class HistoryWindow: # stop him! gobject.source_remove(self.mark_days_idle_call_id) self.history_textview.del_handlers() - del gajim.interface.instances['logs'][self.jid] + del gajim.interface.instances['logs'] + + def on_history_window_key_press_event(self, widget, event): + if event.keyval == gtk.keysyms.Escape: + self.window.destroy() def on_close_button_clicked(self, widget): self.window.destroy() + def on_jid_entry_activate(self, widget): + self.jid = self.jid_entry.get_text().decode('utf-8') + + if self.completion_dict.has_key(self.jid): # a full qualified jid or a contact name was entered + contact = self.completion_dict[self.jid] + if contact: # we have got additional info, jid enhanced with contact + self.jid = contact.jid + self.jid_entry.set_text(contact.get_shown_name()) + self.jids_to_search = [contact.jid] + else: + self.jids_to_search = [self.jid] + + # Try to find the corresponding account of the jid + accounts = gajim.contacts.get_accounts() + self.account = None + for account in accounts: + contact = gajim.contacts.get_first_contact_from_jid(account ,self.jid) + if contact: + self.account = account + break + if self.account is None: + # We do not know an account. This can only happen if the contact is offine, + # or if we browse a groupchat history. The account is not really needed, a dummy can + # be set. + # FIXME: This may leed to wrong self nick in the displayed history + self.account = gajim.contacts.get_accounts()[0] + self.checkbutton.set_sensitive(False) + else: + # The logging checkbutton, can only work if we have got an account. + log = True + if self.jid in gajim.config.get_per('accounts', self.account, + 'no_log_for').split(' '): + log = False + self.checkbutton.set_active(log) + self.checkbutton.set_sensitive(True) + + # select logs for last date we have logs with contact + self.calendar.set_sensitive(True) + self.calendar.emit('month-changed') + lastlog = gajim.logger.get_last_date_that_has_logs(self.jid, self.account) + + tim = lastlog + date = time.localtime(tim) + + y, m, d = date[0], date[1], date[2] + gtk_month = gtkgui_helpers.make_python_month_gtk_month(m) + self.calendar.select_month(gtk_month, y) + self.calendar.select_day(d) + + self.query_entry.set_sensitive(True) + + if contact: + title = _('Conversation History with %s') % contact.get_shown_name() + else: + title = _('Conversation History with %s') % self.jid + self.window.set_title(title) + + + else: # neither a valid jid, nor an existing contact name was entered + # we have got nothing to show or to search in + self.history_buffer.set_text('') # clear the buffer + self.query_entry.set_sensitive(False) + + self.checkbutton.set_sensitive(False) + self.calendar.set_sensitive(False) + self.calendar.clear_marks() + + title = _('Conversation History') + self.window.set_title(title) + def on_calendar_day_selected(self, widget): year, month, day = widget.get_date() # integers month = gtkgui_helpers.make_gtk_month_python_month(month) @@ -322,40 +398,75 @@ class HistoryWindow: gobject.timeout_add(200, self.set_unset_expand_on_expander, widget) else: gobject.timeout_add(200, self.set_unset_expand_on_expander, widget) - self.search_button.grab_default() self.query_entry.grab_focus() - def on_search_button_clicked(self, widget): + def on_query_entry_activate(self, widget): text = self.query_entry.get_text() model = self.results_treeview.get_model() model.clear() if text == '': return - # contact_name, time, kind, show, message, subject - 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) - for row in results: - contact_name = row[0] - if not contact_name: - kind = row[2] - if kind == constants.KIND_CHAT_MSG_SENT: # it's us! :) - contact_name = gajim.nicks[self.account] - else: - contact = gajim.contacts.get_first_contact_from_jid(self.account, - self.jid) - if contact: - contact_name = contact.get_shown_name() + + # perform search in preselected jids. jids are preselected with the query_combobox (all, current...) + for jid in self.jids_to_search: + accounts = gajim.contacts.get_accounts() + account = None + for acc in accounts: + contact = gajim.contacts.get_first_contact_from_jid(acc ,jid) + if contact: + account = acc + break + if account is None: + # We do not know an account. This can only happen if the contact is offine, + # or if we browse a groupchat history. The account is not needed, a dummy can + # be set. + # FIXME: This may leed to wrong self nick in the displayed history + account = gajim.contacts.get_accounts()[0] + + # contact_name, time, kind, show, message, subject + results = gajim.logger.get_search_results_for_query( + jid, text, 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) + for row in results: + contact_name = row[0] + if not contact_name: + kind = row[2] + if kind == constants.KIND_CHAT_MSG_SENT: # it's us! :) + contact_name = gajim.nicks[account] else: - contact_name = self.jid - tim = row[1] - message = row[4] - local_time = time.localtime(tim) - date = time.strftime('%x', local_time) - # name, date, message, time (full unix time) - model.append((contact_name, date, message, tim)) + contact = self.completion_dict[jid] + if contact: + contact_name = contact.get_shown_name() + else: + contact_name = jid + tim = row[1] + message = row[4] + local_time = time.localtime(tim) + date = time.strftime('%x', local_time) + # jid (to which log is assigned to), name, date, message, time (full unix time) + model.append((jid, contact_name, date, message, tim)) + + def on_query_combobox_changed(self, widget): + self.jids_to_search = [] + if self.query_combobox.get_active() == 0: + # Search current contact + if self.completion_dict.has_key(self.jid): + self.query_entry.set_sensitive(True) + contact = self.completion_dict[self.jid] + if contact: + self.jids_to_search = [contact.jid] + else: + self.jids_to_search = [self.jid] + else: + # We cannot search in logs of an non-existing jid + self.query_entry.set_sensitive(False) + if self.query_combobox.get_active() == 1: + # Search all histories + self.query_entry.set_sensitive(True) + self.jids_to_search = gajim.logger.get_jids_in_db() + def on_results_treeview_row_activated(self, widget, path, column): '''a row was double clicked, get date from row, and select it in calendar @@ -370,7 +481,12 @@ class HistoryWindow: gtk_month = tim[1] month = gtkgui_helpers.make_python_month_gtk_month(gtk_month) day = tim[2] - + + # switch to belonging logfile if necessary + log_jid = model[path][C_LOG_JID] + if log_jid != self.jid: + self.open_history(log_jid, None) + # avoid reruning mark days algo if same month and year! if year != cur_year or gtk_month != cur_month: self.calendar.select_month(month, year) @@ -416,3 +532,8 @@ class HistoryWindow: gajim.config.set_per('accounts', self.account, 'no_log_for', ' '.join(no_log_for)) + def open_history(self, jid, account): + '''Simulate that the jid was entered by hand''' + self.jid_entry.set_text(jid) + self.jid_entry.emit('activate') + diff --git a/src/htmltextview.py b/src/htmltextview.py index 75fbccf0ad..a274d7274c 100644 --- a/src/htmltextview.py +++ b/src/htmltextview.py @@ -10,6 +10,9 @@ ### 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 General Public License +## along with Gajim. If not, see <http://www.gnu.org/licenses/>. ### ### You should have received a copy of the GNU Lesser General Public ### License along with this library; if not, write to the @@ -910,6 +913,7 @@ class HtmlTextView(gtk.TextView): self.set_wrap_mode(gtk.WRAP_CHAR) self.set_editable(False) self._changed_cursor = False + self.connect('destroy', self.__destroy_event) 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) @@ -920,6 +924,10 @@ class HtmlTextView(gtk.TextView): # end big hack build_patterns(self,gajim.config,gajim.interface) + def __destroy_event(self, widget): + if self.tooltip.timeout != 0: + self.tooltip.hide_tooltip() + def __leave_event(self, widget, event): if self._changed_cursor: window = widget.get_window(gtk.TEXT_WINDOW_TEXT) diff --git a/src/lastfm.py b/src/lastfm.py new file mode 100644 index 0000000000..385407f136 --- /dev/null +++ b/src/lastfm.py @@ -0,0 +1,217 @@ +#!/bin/env python +""" +LastFM Python class +Copyright (C) 2007 Olivier Mehani <shtrom@ssji.net> + +$Id: lastfm.py 52 2007-11-03 23:19:00Z shtrom $ +Python class to handily retrieve song information from a Last.fm account. + +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 +""" + +__version__ = '$Revision: 64 $' + +from urllib import urlopen +from xml.dom import minidom +from time import time, strftime + +class LastFM: + # Where to fetch the played song information + LASTFM_FORMAT_URL = \ + 'http://ws.audioscrobbler.com/1.0/user/%s/recenttracks.xml' + # Delay in seconds after which the last song entry is considered too old tox + # be displayed. + MAX_DELAY = 600 + + ARTIST = 0 + NAME = 1 + ALBUM = 2 + TIME = 3 + + def __init__(self, username, proxies=None): + """ + Create a new LastFM object. + + username, the Last.fm username + proxies, the list of proxies to use to connect to the Last.fm data, as + expected by urllib.urlopen() + """ + self.setUsername(username) + self._proxies = proxies + self.scrobbling = False + self.updateData() + + def __str__(self): + return 'Last.fm song tracker for user %s.%s' % (self._username, + self.formatSongTitle( + ' Last song was \"%(n)s\" by \"%(a)s\" in album \"%(b)s\".')) + + def getUsername(self): + return self._username + + def setUsername(self, username): + self._username = username + self.lastSongs = [] + + def updateData(self): + """ + Fetch the last recent tracks list and update the object accordingly. + + Return True if the last played time has changed, False otherwise. + """ + try: + xmldocument = urlopen(self.LASTFM_FORMAT_URL % self._username, + self._proxies) + xmltree = minidom.parse(xmldocument) + except: + print 'Error parsing XML from Last.fm...' + return False + + if xmltree.childNodes.length != 1: + raise Exception('XML document not formed as expected') + + recenttracks = xmltree.childNodes[0] + + tracklist = recenttracks.getElementsByTagName('track') + + # do not update if nothing more has been scrobbled since last time + if len(tracklist) > 0 and \ + int(tracklist[0].getElementsByTagName('date')[0]. + getAttribute('uts')) != self.getLastScrobbledTime(): + self.lastSongs = [] + for track in tracklist: + artistNode = track.getElementsByTagName('artist')[0] + if artistNode.firstChild: + artist = artistNode.firstChild.data + else: + artist = None + + nameNode = track.getElementsByTagName('name')[0] + if nameNode.firstChild: + name = nameNode.firstChild.data + else: + name = None + + albumNode = track.getElementsByTagName('album')[0] + if albumNode.firstChild: + album = albumNode.firstChild.data + else: + album = None + + timeNode = track.getElementsByTagName('date')[0] + self.lastSongs.append((artist, name, album, + int(timeNode.getAttribute('uts')))) + self.scrobbling = True + return True + + # if nothing has been scrobbled for too long, an update to the + # "currently" playing song should be made + if self.scrobbling and not self.lastSongIsRecent(): + self.scrobbling = False + return True + + return False + + def getLastSong(self): + """ + Return the last played song as a tuple of (ARTIST, SONG, ALBUM, TIME). + """ + if len(self.lastSongs) < 1: + return None + return self.lastSongs[0] + + def getLastScrobbledTime(self): + """ + Return the Unix time the last song was played. + """ + if len(self.lastSongs) < 1: + return 0 + return self.lastSongs[0][self.TIME] + + def timeSinceLastScrobbled(self, lst=None): + """ + Return the time in seconds since the last song has been scrobbled. + + lst, the Unix time at which a song has been scrobbled, defaults to that + of the last song + """ + if lst == None: + lst = self.getLastScrobbledTime() + return int(time()) - lst + + def lastSongIsRecent(self, delay=None): + """ + Return a boolean stating whether the last song has been played less + the specified delay earlier. + + delay, the delay to use, defaults to self.MAX_DELAY + """ + if delay == None: + delay = self.MAX_DELAY + return self.timeSinceLastScrobbled() < delay + + def getLastRecentSong(self, delay=None): + """ + Return the last *recently* played song. + + "Recently" means that the song has been played less than delay + earlier. + + delay, the delay to use, see lastSongIsRecent for the semantics + """ + self.updateData() + if self.lastSongIsRecent(delay): + return self.getLastSong() + return None + + def formatSongTitle(self, formatString='%(a)s - %(n)s', songTuple=None): + """ + Format a song tuple according to a format string. This makes use of the + basic Python string formatting operations. + + formatString, the string according to which the song should be formated: + "%(a)s" is replaced by the artist; + "%(n)s" is replaced by the name of the song; + "%(b)s" is replaced by the album; + defaults to "%s - %t". + songTuple, the tuple representing the song, defaults to the last song + """ + str = '' + if songTuple == None: + songTuple = self.getLastRecentSong() + + if songTuple != None: + dict = { + 'a': songTuple[0], + 'n': songTuple[1], + 'b': songTuple[2] + } + str = formatString % dict + + return str + +# Fallback if the script is called directly +if __name__ == '__main__': + from sys import argv + from time import sleep + if len(argv) != 2: + raise Exception('Incorrect number of arguments. Only the Last.fm username is required.') + + lfm = LastFM(argv[1]) + print lfm + while 1: + if lfm.updateData(): + print lfm.formatSongTitle() + sleep(60) diff --git a/src/lastfm_track_listener.py b/src/lastfm_track_listener.py new file mode 100644 index 0000000000..fe3d28240f --- /dev/null +++ b/src/lastfm_track_listener.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +## lastfmtracklistener.py +## +## Copyright (C) 2007 Olivier Mehani <shtrom-gajim@ssji.net> +## Heavily based on music_track_listener.py: +## Copyright (C) 2006 Gustavo Carneiro <gjcarneiro@gmail.com> +## Copyright (C) 2006 Nikos Kouremenos <kourem@gmail.com> +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; 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 +from lastfm import LastFM + +class LastFMTrackInfo(object): + __slots__ = ['title', 'album', 'artist'] + + def __eq__(self, other): + if self.__class__ != other.__class__: + return False + return self.title == other.title and self.album == other.album and \ + self.artist == other.artist + + def __ne__(self, other): + return not self.__eq__(other) + +class LastFMTrackListener(gobject.GObject): + __gsignals__ = { + 'music-track-changed': (gobject.SIGNAL_RUN_LAST, None, (object,)), + } + + # polling period in milliseconds + INTERVAL = 60000 #LastFM.MAX_DELAY * 250 # 1/4 of LastFM's delay (in s) + + _instance = None + @classmethod + def get(cls, username): + if cls._instance is None: + cls._instance = cls(username) + else: + cls._instance._lfm.setUsername(username) + return cls._instance + + def __init__(self, username): + super(LastFMTrackListener, self).__init__() + self._lfm_user = username + self._lfm = LastFM(self._lfm_user) + self._last_playing_music = None + self._lastfm_music_track_change() + gobject.timeout_add(self.INTERVAL, self._lastfm_periodic_check) + + def _lastfm_properties_extract(self, song_tuple): + if song_tuple: + info = LastFMTrackInfo() + info.title = song_tuple[LastFM.NAME] + info.album = song_tuple[LastFM.ALBUM] + info.artist = song_tuple[LastFM.ARTIST] + return info + return None + + def _lastfm_periodic_check(self): + if self._lfm.updateData(): + self._lastfm_music_track_change() + return True + + def _lastfm_music_track_change(self): + info = self._lastfm_properties_extract( + self._lfm.getLastRecentSong()) + self._last_playing_music = info + self.emit('music-track-changed', info) + + def get_playing_track(self): + '''Return a LastFMTrackInfo for the currently playing + song, or None if no song is playing''' + return self._last_playing_music + +# here we test :) +if __name__ == '__main__': + from sys import argv + if len(argv) != 2: + raise Exception("Incorrect number of arguments. Only the Last.fm username is required.") + + def music_track_change_cb(listener, music_track_info): + if music_track_info is None: + print "Stop!" + else: + print 'Now playing: "%s" by %s' % ( + music_track_info.title, music_track_info.artist) + + listener = LastFMTrackListener.get(argv[1]) + 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/message_control.py b/src/message_control.py index 1bc2ac0dd9..b6b584eb26 100644 --- a/src/message_control.py +++ b/src/message_control.py @@ -1,16 +1,22 @@ ## message_control.py ## ## Copyright (C) 2006 Travis Shirk <travis@pobox.com> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtkgui_helpers from common import gajim @@ -110,14 +116,42 @@ class MessageControl: def get_specific_unread(self): return len(gajim.events.get_events(self.account, self.contact.jid)) + def set_session(self, session): + if hasattr(self, 'session') and session == self.session: + return + + was_encrypted = False + + if hasattr(self, 'session') and self.session: + if self.session.enable_encryption: + was_encrypted = True + + print "starting a new session, dropping the old one!" + gajim.connections[self.account].delete_session(self.session.jid, self.session.thread_id) + + self.session = session + + if session: + session.control = self + + if was_encrypted: + self.print_esession_details() + def send_message(self, message, keyID = '', type = 'chat', chatstate = None, msg_id = None, composing_xep = None, resource = None, user_nick = None): '''Send the given message to the active tab. Doesn't return None if error ''' jid = self.contact.jid + + if not self.session: + fjid = self.contact.get_full_jid() + new_session = gajim.connections[self.account].make_new_session(fjid) + + self.set_session(new_session) + # Send and update history return gajim.connections[self.account].send_message(jid, message, keyID, type = type, chatstate = chatstate, msg_id = msg_id, composing_xep = composing_xep, resource = self.resource, - user_nick = user_nick) + user_nick = user_nick, session = self.session) diff --git a/src/message_textview.py b/src/message_textview.py index 1c76173a35..ba93e6cd54 100644 --- a/src/message_textview.py +++ b/src/message_textview.py @@ -1,27 +1,32 @@ ## message_textview.py ## ## Contributors for this file: -## - Yann Le Boulanger <asterix@lagaule.org> +## - Yann Leboulanger <asterix@lagaule.org> ## - Nikos Kouremenos <kourem@gmail.com> ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject diff --git a/src/message_window.py b/src/message_window.py index 65d25968cf..c2ebe27699 100644 --- a/src/message_window.py +++ b/src/message_window.py @@ -1,25 +1,31 @@ ## message_window.py ## -## Copyright (C) 2003-2004 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2004 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> -## Copyright (C) 2005 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005 Yann Leboulanger <asterix@lagaule.org> ## Vincent Hanquez <tab@snarc.org> ## Nikos Kouremenos <kourem@gmail.com> ## Dimitur Kirov <dkirov@gmail.com> ## Travis Shirk <travis@pobox.com> ## Norman Rasmussen <norman@rasmussen.co.za> ## Copyright (C) 2006 Travis Shirk <travis@pobox.com> -## Copyright (C) 2006 Geobert Quach <geobert@gmail.com> +## Geobert Quach <geobert@gmail.com> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject @@ -69,6 +75,17 @@ class MessageWindow: id = self.window.connect('focus-in-event', self._on_window_focus) self.handlers[id] = self.window + keys=['<Control>h', '<Control>i', '<Control><Shift>Tab', + '<Control>Tab', '<Control>F4', '<Control>w', + '<Alt>Right', '<Alt>Left', '<Alt>c', 'Escape'] +\ + ['<Alt>'+str(i) for i in xrange(10)] + accel_group = gtk.AccelGroup() + for key in keys: + keyval, mod = gtk.accelerator_parse(key) + accel_group.connect_group(keyval, mod, gtk.ACCEL_VISIBLE, + self.accel_group_func) + self.window.add_accel_group(accel_group) + # gtk+ doesn't make use of the motion notify on gtkwindow by default # so this line adds that self.window.add_events(gtk.gdk.POINTER_MOTION_MASK) @@ -240,6 +257,52 @@ class MessageWindow: elif event.keyval == gtk.keysyms.Page_Up: # CTRL + PAGE UP self.notebook.emit('key_press_event', event) + def accel_group_func(self, accel_group, acceleratable, keyval, modifier): + st = '1234567890' # alt+1 means the first tab (tab 0) + control = self.get_active_control() + if not control: + # No more control in this window + return + + # CTRL mask + if modifier & gtk.gdk.CONTROL_MASK: + if keyval == gtk.keysyms.h: + control._on_history_menuitem_activate() + elif control.type_id == message_control.TYPE_CHAT and \ + keyval == gtk.keysyms.i: + control._on_contact_information_menuitem_activate(None) + # Tab switch bindings + elif keyval == gtk.keysyms.ISO_Left_Tab: # CTRL + SHIFT + TAB + self.move_to_next_unread_tab(False) + elif keyval == gtk.keysyms.Tab: # CTRL + TAB + self.move_to_next_unread_tab(True) + elif keyval == gtk.keysyms.F4: # CTRL + F4 + self.remove_tab(control, self.CLOSE_CTRL_KEY) + elif keyval == gtk.keysyms.w: # CTRL + W + self.remove_tab(control, self.CLOSE_CTRL_KEY) + + # MOD1 (ALT) mask + elif modifier & gtk.gdk.MOD1_MASK: + # Tab switch bindings + if keyval == gtk.keysyms.Right: # ALT + RIGHT + new = self.notebook.get_current_page() + 1 + if new >= self.notebook.get_n_pages(): + new = 0 + self.notebook.set_current_page(new) + elif keyval == gtk.keysyms.Left: # ALT + LEFT + new = self.notebook.get_current_page() - 1 + if new < 0: + new = self.notebook.get_n_pages() - 1 + self.notebook.set_current_page(new) + elif chr(keyval) in st: # ALT + 1,2,3.. + self.notebook.set_current_page(st.index(chr(keyval))) + elif keyval == gtk.keysyms.c: # ALT + C toggles chat buttons + control.chat_buttons_set_visible(not control.hide_chat_buttons) + # Close tab bindings + elif keyval == gtk.keysyms.Escape and \ + gajim.config.get('escape_key_closes'): # Escape + self.remove_tab(control, self.CLOSE_ESC) + def _on_close_button_clicked(self, button, control): '''When close button is pressed: close a tab''' self.remove_tab(control, self.CLOSE_CLOSE_BUTTON) @@ -349,7 +412,6 @@ class MessageWindow: gajim.interface.msg_win_mgr._on_window_delete(self.window, None) gajim.interface.msg_win_mgr._on_window_destroy(self.window) # dnd clean up - self.notebook.disconnect(self.hid) self.notebook.drag_dest_unset() self.window.destroy() return # don't show_title, we are dead @@ -454,6 +516,20 @@ class MessageWindow: nth_child = notebook.get_nth_page(page_num) return self._widget_to_control(nth_child) + def change_key(self, old_jid, new_jid, acct): + '''Change the key of a control''' + try: + # Check if control exists + ctrl = self._controls[acct][old_jid] + except: + return + self._controls[acct][new_jid] = self._controls[acct][old_jid] + del self._controls[acct][old_jid] + if old_jid in gajim.last_message_time[acct]: + gajim.last_message_time[acct][new_jid] = \ + gajim.last_message_time[acct][old_jid] + del gajim.last_message_time[acct][old_jid] + def controls(self): for ctrl_dict in self._controls.values(): for ctrl in ctrl_dict.values(): @@ -520,49 +596,15 @@ class MessageWindow: self.show_title(control = new_ctrl) def _on_notebook_key_press(self, widget, event): - st = '1234567890' # alt+1 means the first tab (tab 0) - ctrl = self.get_active_control() - - # CTRL mask - if event.state & gtk.gdk.CONTROL_MASK: - # Tab switch bindings - if event.keyval == gtk.keysyms.ISO_Left_Tab: # CTRL + SHIFT + TAB - self.move_to_next_unread_tab(False) - elif event.keyval == gtk.keysyms.Tab: # CTRL + TAB - self.move_to_next_unread_tab(True) - elif event.keyval == gtk.keysyms.F4: # CTRL + F4 - self.remove_tab(ctrl, self.CLOSE_CTRL_KEY) - elif event.keyval == gtk.keysyms.w: # CTRL + W - self.remove_tab(ctrl, self.CLOSE_CTRL_KEY) - - # MOD1 (ALT) mask - elif event.state & gtk.gdk.MOD1_MASK: - # Tab switch bindings - if event.keyval == gtk.keysyms.Right: # ALT + RIGHT - new = self.notebook.get_current_page() + 1 - if new >= self.notebook.get_n_pages(): - new = 0 - self.notebook.set_current_page(new) - elif event.keyval == gtk.keysyms.Left: # ALT + LEFT - new = self.notebook.get_current_page() - 1 - if new < 0: - new = self.notebook.get_n_pages() - 1 - self.notebook.set_current_page(new) - elif event.string and event.string in st and \ - (event.state & gtk.gdk.MOD1_MASK): # ALT + 1,2,3.. - self.notebook.set_current_page(st.index(event.string)) - elif event.keyval == gtk.keysyms.c: # ALT + C toggles chat buttons - ctrl.chat_buttons_set_visible(not ctrl.hide_chat_buttons) - # Close tab bindings - elif event.keyval == gtk.keysyms.Escape and \ - gajim.config.get('escape_key_closes'): # Escape - self.remove_tab(ctrl, self.CLOSE_ESC) - else: - # If the active control has a message_textview pass the event to it - active_ctrl = self.get_active_control() - if isinstance(active_ctrl, ChatControlBase): - active_ctrl.msg_textview.emit('key_press_event', event) - active_ctrl.msg_textview.grab_focus() + control = self.get_active_control() + # Ctrl+PageUP / DOWN has to be handled by notebook + if event.state & gtk.gdk.CONTROL_MASK and event.keyval in ( + gtk.keysyms.Page_Down, gtk.keysyms.Page_Up): + return False + if isinstance(control, ChatControlBase): + # we forwarded it to message textview + control.msg_textview.emit('key_press_event', event) + control.msg_textview.grab_focus() def setup_tab_dnd(self, child): '''Set tab label as drag source and connect the drag_data_get signal''' @@ -781,6 +823,17 @@ class MessageWindowMgr: self._windows[key] = win return win + def change_key(self, old_jid, new_jid, acct): + win = self.get_window(old_jid, acct) + if self.mode == self.ONE_MSG_WINDOW_NEVER: + old_key = acct + old_jid + if old_jid not in self._windows: + return + new_key = acct + new_jid + self._windows[new_key] = self._windows[old_key] + del self._windows[old_key] + win.change_key(old_jid, new_jid, acct) + def _on_window_delete(self, win, event): self.save_state(self._gtk_win_to_msg_win(win)) gajim.interface.save_config() diff --git a/src/music_track_listener.py b/src/music_track_listener.py index 2b332ae5f4..7a64ad4b6f 100644 --- a/src/music_track_listener.py +++ b/src/music_track_listener.py @@ -4,15 +4,20 @@ ## Copyright (C) 2006 Gustavo Carneiro <gjcarneiro@gmail.com> ## Copyright (C) 2006 Nikos Kouremenos <kourem@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gobject if __name__ == '__main__': # install _() func before importing dbus_support @@ -46,6 +51,13 @@ class MusicTrackListener(gobject.GObject): bus = dbus.SessionBus() + ## MPRIS + bus.add_signal_receiver(self._mpris_music_track_change_cb, 'TrackChange', + 'org.freedesktop.MediaPlayer') + bus.add_signal_receiver(self._player_playing_changed_cb, 'StatusChange', + 'org.freedesktop.MediaPlayer') + + ## Muine bus.add_signal_receiver(self._muine_music_track_change_cb, 'SongChanged', 'org.gnome.Muine.Player') @@ -63,7 +75,7 @@ class MusicTrackListener(gobject.GObject): 'playingChanged', 'org.gnome.Rhythmbox.Player') bus.add_signal_receiver(self._player_playing_song_property_changed_cb, 'playingSongPropertyChanged', 'org.gnome.Rhythmbox.Player') - + ## Banshee banshee_bus = dbus.SessionBus() dubus = banshee_bus.get_object('org.freedesktop.DBus', @@ -111,6 +123,18 @@ class MusicTrackListener(gobject.GObject): if b == 'rb:stream-song-title': self.emit('music-track-changed', self._last_playing_music) + def _mpris_properties_extract(self, song): + info = MusicTrackInfo() + info.title = song['title'] + info.album = song['album'] + info.artist = song['artist'] + info.duration = int(song['length']) + return info + + def _mpris_music_track_change_cb(self, arg): + info = self._mpris_properties_extract(arg) + self.emit('music-track-changed', info) + def _muine_properties_extract(self, song_string): d = dict((x.strip() for x in s1.split(':', 1)) for s1 in \ song_string.split('\n')) @@ -136,6 +160,8 @@ class MusicTrackListener(gobject.GObject): return info def _rhythmbox_music_track_change_cb(self, uri): + if not uri: + return bus = dbus.SessionBus() rbshellobj = bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Shell') @@ -233,6 +259,8 @@ class MusicTrackListener(gobject.GObject): '/org/gnome/Rhythmbox/Player'), 'org.gnome.Rhythmbox.Player') rbshell = dbus.Interface(rbshellobj, 'org.gnome.Rhythmbox.Shell') uri = player.getPlayingUri() + if not uri: + return None props = rbshell.getSongProperties(uri) info = self._rhythmbox_properties_extract(props) self._last_playing_music = info diff --git a/src/negotiation.py b/src/negotiation.py new file mode 100644 index 0000000000..8cc4c9ad5f --- /dev/null +++ b/src/negotiation.py @@ -0,0 +1,87 @@ +import gtkgui_helpers +import dataforms_widget + +import dialogs + +from common import dataforms +from common import gajim +from common import xmpp + +def describe_features(features): + '''a human-readable description of the features that have been negotiated''' + if features['logging'] == 'may': + return _('- messages will be logged') + elif features['logging'] == 'mustnot': + return _('- messages will not be logged') + +def show_sas_dialog(session, jid, sas, on_success): + def success_cb(checked): + on_success(checked) + + def failure_cb(): + session.reject_negotiation() + + dialogs.ConfirmationDialogCheck(_('''OK to continue with negotiation?'''), + _('''You've begun an encrypted session with %s, but it can't be guaranteed that you're talking directly to the person you think you are. + +You should speak with them directly (in person or on the phone) and confirm that their Short Authentication String is identical to this one: %s + +Would you like to continue with the encrypted session?''') % (jid, sas), + + _('Yes, I verified the Short Authentication String'), + on_response_ok=success_cb, on_response_cancel=failure_cb, is_modal=False) + +class FeatureNegotiationWindow: + '''FeatureNegotiotionWindow class''' + def __init__(self, account, jid, session, form): + self.account = account + self.jid = jid + self.form = form + self.session = session + + self.xml = gtkgui_helpers.get_glade('data_form_window.glade', 'data_form_window') + self.window = self.xml.get_widget('data_form_window') + + config_vbox = self.xml.get_widget('config_vbox') + dataform = dataforms.ExtendForm(node = self.form) + self.data_form_widget = dataforms_widget.DataFormWidget(dataform) + self.data_form_widget.show() + config_vbox.pack_start(self.data_form_widget) + + self.xml.signal_autoconnect(self) + self.window.show_all() + + def on_ok_button_clicked(self, widget): + acceptance = xmpp.Message(self.jid) + acceptance.setThread(self.session.thread_id) + feature = acceptance.NT.feature + feature.setNamespace(xmpp.NS_FEATURE) + + form = self.data_form_widget.data_form + form.setAttr('type', 'submit') + + feature.addChild(node=form) + + gajim.connections[self.account].send_stanza(acceptance) + + self.window.destroy() + + def on_cancel_button_clicked(self, widget): + # XXX determine whether to reveal presence + + rejection = xmpp.Message(self.jid) + rejection.setThread(self.session.thread_id) + feature = rejection.NT.feature + feature.setNamespace(xmpp.NS_FEATURE) + + x = xmpp.DataForm(typ='submit') + x.addChild(node=xmpp.DataField('FORM_TYPE', value='urn:xmpp:ssn')) + x.addChild(node=xmpp.DataField('accept', value='false', typ='boolean')) + + feature.addChild(node=x) + + # XXX optional <body/> + + gajim.connections[self.account].send_stanza(rejection) + + self.window.destroy() diff --git a/src/network_manager_listener.py b/src/network_manager_listener.py index 5c5cba42d4..e6d42fee10 100644 --- a/src/network_manager_listener.py +++ b/src/network_manager_listener.py @@ -3,16 +3,22 @@ ## Copyright (C) 2006 Jeffrey C. Ollie <jeff at ocjtech.us> ## Copyright (C) 2006 Stefan Bethge <stefan at lanpartei.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## +import sys from common import gajim def device_now_active(self, *args): @@ -29,23 +35,26 @@ def device_no_longer_active(self, *args): supported = False -try: - from common.dbus_support import system_bus - - bus = system_bus.SystemBus() - - if 'org.freedesktop.NetworkManager' in bus.list_names(): - supported = True - bus.add_signal_receiver(device_no_longer_active, - 'DeviceNoLongerActive', - 'org.freedesktop.NetworkManager', - 'org.freedesktop.NetworkManager', - '/org/freedesktop/NetworkManager') - - bus.add_signal_receiver(device_now_active, - 'DeviceNowActive', - 'org.freedesktop.NetworkManager', - 'org.freedesktop.NetworkManager', - '/org/freedesktop/NetworkManager') -except: - pass +if sys.platform == 'darwin': + supported = True +else: + try: + from common.dbus_support import system_bus + + bus = system_bus.SystemBus() + + if 'org.freedesktop.NetworkManager' in bus.list_names(): + supported = True + bus.add_signal_receiver(device_no_longer_active, + 'DeviceNoLongerActive', + 'org.freedesktop.NetworkManager', + 'org.freedesktop.NetworkManager', + '/org/freedesktop/NetworkManager') + + bus.add_signal_receiver(device_now_active, + 'DeviceNowActive', + 'org.freedesktop.NetworkManager', + 'org.freedesktop.NetworkManager', + '/org/freedesktop/NetworkManager') + except: + pass diff --git a/src/notify.py b/src/notify.py index 36555b04c9..01974d688c 100644 --- a/src/notify.py +++ b/src/notify.py @@ -1,21 +1,27 @@ ## notify.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005-2006 Andrew Sayman <lorien420@myrealbox.com> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## ## 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 +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import os import time @@ -40,6 +46,14 @@ try: except ImportError: USER_HAS_PYNOTIFY = False +USER_HAS_GROWL = True +try: + import osx.growler + osx.growler.init() +except: + USER_HAS_GROWL = False + + def get_show_in_roster(event, account, contact): '''Return True if this event must be shown in roster, else False''' if event == 'gc_message_received': @@ -191,12 +205,12 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): transport_name = gajim.get_transport_name_from_jid(jid) img = None if transport_name: - img = os.path.join(gajim.DATA_DIR, 'iconsets', - 'transports', transport_name, '48x48', show_image) + img = os.path.join(helpers.get_transport_path(transport_name), + '48x48', show_image) if not img or not os.path.isfile(img): iconset = gajim.config.get('iconset') - img = os.path.join(gajim.DATA_DIR, 'iconsets', - iconset, '48x48', show_image) + img = os.path.join(helpers.get_iconset_path(iconset), '48x48', + show_image) path = gtkgui_helpers.get_path_to_generic_or_avatar(img, jid = jid, suffix = suffix) if event == 'status_change': @@ -206,7 +220,7 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): {'nick': gajim.get_name_from_jid(account, jid),\ 'status': helpers.get_uf_show(gajim.SHOW_LIST[new_show])} if status_message: - text = text + " : " + status_message + text = text + " : " + status_message popup(_('Contact Changed Status'), jid, account, path_to_image = path, title = title, text = text) elif event == 'contact_connected': @@ -338,6 +352,11 @@ def popup(event_type, jid, account, msg_type = '', path_to_image = None, except gobject.GError, e: # Connection to notification-daemon failed, see #2893 gajim.log.debug(str(e)) + # try os/x growl + if USER_HAS_GROWL: + osx.growler.notify(event_type, jid, account, msg_type, path_to_image, + title, text) + return # go old style instance = dialogs.PopupNotificationWindow(event_type, jid, account, @@ -484,8 +503,17 @@ class DesktopNotification: except AttributeError: version = [0, 3, 1] # we're actually dealing with the newer version if version > [0, 3]: - if version >= [0, 3, 2]: + if gajim.interface.systray_enabled and \ + gajim.config.get('attach_notifications_to_systray'): + x, y = gajim.interface.systray.img_tray.window.get_position() + x_, y_, width, height, depth = \ + gajim.interface.systray.img_tray.window.get_geometry() + pos_x = x + (width / 2) + pos_y = y + (height / 2) + hints = {'x': pos_x, 'y': pos_y} + else: hints = {} + if version >= [0, 3, 2]: hints['urgency'] = dbus.Byte(0) # Low Urgency hints['category'] = dbus.String(ntype) self.notif.Notify( @@ -507,7 +535,7 @@ class DesktopNotification: dbus.String(self.title), dbus.String(self.text), dbus.String(''), - {}, + hints, dbus.UInt32(timeout*1000), reply_handler=self.attach_by_id, error_handler=self.notify_another_way) diff --git a/src/osx/.deps/idle_la-idle.Plo b/src/osx/.deps/idle_la-idle.Plo new file mode 100644 index 0000000000..9ce06a81ea --- /dev/null +++ b/src/osx/.deps/idle_la-idle.Plo @@ -0,0 +1 @@ +# dummy diff --git a/src/osx/.deps/nsapp.Plo b/src/osx/.deps/nsapp.Plo new file mode 100644 index 0000000000..9ce06a81ea --- /dev/null +++ b/src/osx/.deps/nsapp.Plo @@ -0,0 +1 @@ +# dummy diff --git a/src/osx/Makefile.am b/src/osx/Makefile.am new file mode 100644 index 0000000000..1ccc8309a7 --- /dev/null +++ b/src/osx/Makefile.am @@ -0,0 +1,45 @@ +SUBDIRS = growl syncmenu + +ACLOCAL_AMFLAGS = -I ../m4 + +OBJC = gcc + +export MACOSX_DEPLOYMENT_TARGET=10.4 +INCLUDES = \ + $(PYTHON_INCLUDES) + +if BUILD_IDLE_OSX +idlelib_LTLIBRARIES = idle.la +idlelibdir = $(libdir)/gajim + +idle_la_LIBADD = $(CARBON_LIBS) + +idle_la_SOURCES = idle.c + +idle_la_LDFLAGS = \ + -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 + +idle_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES) +endif + +if BUILD_COCOA +nsapplib_LTLIBRARIES = nsapp.la +nsapplibdir = $(libdir)/gajim + +nsapp_la_LIBADD = $(COCOA_LIBS) + +nsapp_la_SOURCES = nsapp.m + +nsapp_la_LDFLAGS = \ + -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 + +nsapp_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES) + +AM_OBJCFLAGS = $(nsapp_la_CFLAGS) +endif + +DISTCLEANFILES = + +EXTRA_DIST = + +MAINTAINERCLEANFILES = Makefile.in diff --git a/src/osx/__init__.py b/src/osx/__init__.py new file mode 100644 index 0000000000..ee21386cbe --- /dev/null +++ b/src/osx/__init__.py @@ -0,0 +1,45 @@ +import sys, commands +from network_manager_listener import device_now_active, device_no_longer_active +import nsapp + + +if sys.platform != "darwin": + raise ImportError("System platform is not OS/X") + + +net_device_active = True + + +### +### Utility functions +### + +def checkPID(pid, procname): + out = commands.getstatusoutput("ps -wwp %d" % pid) + arr = out[1].split("\n") + if ((len(arr) == 2) and (arr[1].find(procname) >= 0)): + return True + return False + + +def init(): + nsapp.init() + nsapp.setNetworkCB(netDeviceChanged) + return + + +def shutdown(): + import dbus + dbus.shutdown() + return + + +def netDeviceChanged(): + global net_device_active + if net_device_active: + net_device_active = False + device_no_longer_active(None) + else: + net_device_active = True + device_now_active(None) + return diff --git a/src/osx/dbus.py b/src/osx/dbus.py new file mode 100644 index 0000000000..41f1e83c51 --- /dev/null +++ b/src/osx/dbus.py @@ -0,0 +1,131 @@ +### +### Internal dbus management. This can go away once native gtk+ is in fink or +### macports and we can require their dbus. +### + + + +import os, sys, commands, signal + +if sys.platform != "darwin": + raise ImportError("System platform is not OS/X") + +import osx, osx.nsapp +from common.configpaths import gajimpaths + + +_GTK_BASE = "/Library/Frameworks/GTK+.framework/Versions/Current" + + +def readEnv(): + gajimpaths.add_from_root(u'dbus.env', u'dbus.env') + try: + dbus_env = file(gajimpaths[u'dbus.env'], "r") + except: + return False + try: + line1 = dbus_env.readline() + line2 = dbus_env.readline() + dbus_env.close() + except: + print "Invalid dbus.env file" + return False + return parseEnv(line1, line2) + + +def parseEnv(line1, line2): + try: + if not line1 or not line2: + return False + if (not line1.startswith("DBUS_SESSION_BUS_ADDRESS=") or + not line2.startswith("DBUS_SESSION_BUS_PID=")): + return False + arr = line2.split("=") + pid = arr[1].strip().strip('"') + if not osx.checkPID(int(pid), "dbus-daemon"): + return False + line1 = line1.strip() + loc = line1.find("=") + address = line1[loc + 1:] + address = address.strip().strip('"') + return [address, pid] + except Exception, e: + print "Invalid dbus.env file", e + return False + return None + + +def setEnv(env): + os.environ['DBUS_SESSION_BUS_ADDRESS'] = env[0] + os.environ['DBUS_SESSION_BUS_PID'] = env[1] + return + + +def writeEnv(env): + gajimpaths.add_from_root(u'dbus.env', u'dbus.env') + try: + dbus_env = file(gajimpaths[u'dbus.env'], "w+") + dbus_env.write("DBUS_SESSION_BUS_ADDRESS=\"" + env[0] + "\"\n") + dbus_env.write("DBUS_SESSION_BUS_PID=\"" + env[1] + "\"\n") + dbus_env.close() + except Exception, e: + print "Failed to write file: %s" % gajimpaths[u'dbus.env'] + print str(e) + return + + +def checkUUID(): + if os.path.exists(_GTK_BASE + "/var/lib/dbus/machine-id"): + return + ret = commands.getstatusoutput(_GTK_BASE + "/bin/dbus-uuidgen --ensure") + if ret[0] != 0: + print "Failed to initialize dbus machine UUID:", ret[1] + return + + +def load(start): + # Look for existing external session and just use it if it exists + if (('DBUS_SESSION_BUS_ADDRESS' in os.environ) and + ('DBUS_SESSION_BUS_PID' in os.environ) and + osx.checkPID(int(os.environ['DBUS_SESSION_BUS_PID']), 'dbus-daemon')): + return True + + # Look for our own internal session + env = readEnv() + if env: + # We have a valid existing dbus session, yay + setEnv(env) + return True + + # Initialize the machine's UUID if not done yet + checkUUID() + + if start: + # None found, start a new session + print "Starting new dbus session" + #cmd = os.path.join(osx.nsapp.getBundlePath(), + # "Contents/Resources/bin/dbus-launch --exit-with-session") + cmd = _GTK_BASE + "/bin/dbus-launch --exit-with-session" + ret = commands.getstatusoutput(cmd) + arr = ret[1].split("\n") + if len(arr) != 2: + print "Failed to start internal dbus session:" + print ret[1] + return + env = parseEnv(arr[0].strip(), arr[1].strip()) + if not env: + print "Failed to start internal dbus session:" + print ret[1] + return + setEnv(env) + writeEnv(env) + return True + return False + + +def shutdown(): + env = readEnv() + if not env: + return + os.kill(int(env[1]), signal.SIGINT) + return diff --git a/src/osx/growl/.deps/_growlImage.Plo b/src/osx/growl/.deps/_growlImage.Plo new file mode 100644 index 0000000000..9ce06a81ea --- /dev/null +++ b/src/osx/growl/.deps/_growlImage.Plo @@ -0,0 +1 @@ +# dummy diff --git a/src/osx/growl/.deps/_growl_la-_growl.Plo b/src/osx/growl/.deps/_growl_la-_growl.Plo new file mode 100644 index 0000000000..9ce06a81ea --- /dev/null +++ b/src/osx/growl/.deps/_growl_la-_growl.Plo @@ -0,0 +1 @@ +# dummy diff --git a/src/osx/growl/Growl.py b/src/osx/growl/Growl.py new file mode 100644 index 0000000000..15e0376737 --- /dev/null +++ b/src/osx/growl/Growl.py @@ -0,0 +1,247 @@ +""" +A Python module that enables posting notifications to the Growl daemon. +See <http://growl.info/> for more information. +""" +__version__ = "0.7" +__author__ = "Mark Rowe <bdash@users.sourceforge.net>" +__copyright__ = "(C) 2003 Mark Rowe <bdash@users.sourceforge.net>. Released under the BSD license." +__contributors__ = ["Ingmar J Stein (Growl Team)", + "Rui Carmo (http://the.taoofmac.com)", + "Jeremy Rossi <jeremy@jeremyrossi.com>" + ] + +try: + import _growl +except: + _growl = False +import types +import struct +import md5 +import socket + +GROWL_UDP_PORT=9887 +GROWL_PROTOCOL_VERSION=1 +GROWL_TYPE_REGISTRATION=0 +GROWL_TYPE_NOTIFICATION=1 + +GROWL_APP_NAME="ApplicationName" +GROWL_APP_ICON="ApplicationIcon" +GROWL_NOTIFICATIONS_DEFAULT="DefaultNotifications" +GROWL_NOTIFICATIONS_ALL="AllNotifications" +GROWL_NOTIFICATIONS_USER_SET="AllowedUserNotifications" + +GROWL_NOTIFICATION_NAME="NotificationName" +GROWL_NOTIFICATION_TITLE="NotificationTitle" +GROWL_NOTIFICATION_DESCRIPTION="NotificationDescription" +GROWL_NOTIFICATION_ICON="NotificationIcon" +GROWL_NOTIFICATION_APP_ICON="NotificationAppIcon" +GROWL_NOTIFICATION_PRIORITY="NotificationPriority" + +GROWL_NOTIFICATION_STICKY="NotificationSticky" +GROWL_NOTIFICATION_CLICK_CONTEXT="NotificationClickContext" + +GROWL_APP_REGISTRATION="GrowlApplicationRegistrationNotification" +GROWL_APP_REGISTRATION_CONF="GrowlApplicationRegistrationConfirmationNotification" +GROWL_NOTIFICATION="GrowlNotification" +GROWL_SHUTDOWN="GrowlShutdown" +GROWL_PING="Honey, Mind Taking Out The Trash" +GROWL_PONG="What Do You Want From Me, Woman" +GROWL_IS_READY="Lend Me Some Sugar; I Am Your Neighbor!" + +GROWL_NOTIFICATION_CLICKED="GrowlClicked!" +GROWL_NOTIFICATION_TIMED_OUT="GrowlTimedOut!" +GROWL_KEY_CLICKED_CONTEXT="ClickedContext" + + +growlPriority = {"Very Low":-2,"Moderate":-1,"Normal":0,"High":1,"Emergency":2} + +class netgrowl: + """Builds a Growl Network Registration packet. + Defaults to emulating the command-line growlnotify utility.""" + + __notAllowed__ = [GROWL_APP_ICON, GROWL_NOTIFICATION_ICON, GROWL_NOTIFICATION_APP_ICON] + + def __init__(self, hostname, password ): + self.hostname = hostname + self.password = password + self.socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) + + def send(self, data): + self.socket.sendto(data, (self.hostname, GROWL_UDP_PORT)) + + def PostNotification(self, userInfo): + if userInfo.has_key(GROWL_NOTIFICATION_PRIORITY): + priority = userInfo[GROWL_NOTIFICATION_PRIORITY] + else: + priority = 0 + if userInfo.has_key(GROWL_NOTIFICATION_STICKY): + sticky = userInfo[GROWL_NOTIFICATION_STICKY] + else: + priority = False + data = self.encodeNotify(userInfo[GROWL_APP_NAME], + userInfo[GROWL_NOTIFICATION_NAME], + userInfo[GROWL_NOTIFICATION_TITLE], + userInfo[GROWL_NOTIFICATION_DESCRIPTION], + priority, + sticky) + return self.send(data) + + def PostRegistration(self, userInfo): + data = self.encodeRegistration(userInfo[GROWL_APP_NAME], + userInfo[GROWL_NOTIFICATIONS_ALL], + userInfo[GROWL_NOTIFICATIONS_DEFAULT]) + return self.send(data) + + def encodeRegistration(self, application, notifications, defaultNotifications): + data = struct.pack("!BBH", + GROWL_PROTOCOL_VERSION, + GROWL_TYPE_REGISTRATION, + len(application) ) + data += struct.pack("BB", + len(notifications), + len(defaultNotifications) ) + data += application + for i in notifications: + encoded = i.encode("utf-8") + data += struct.pack("!H", len(encoded)) + data += encoded + for i in defaultNotifications: + data += struct.pack("B", i) + return self.encodePassword(data) + + def encodeNotify(self, application, notification, title, description, + priority = 0, sticky = False): + + application = application.encode("utf-8") + notification = notification.encode("utf-8") + title = title.encode("utf-8") + description = description.encode("utf-8") + flags = (priority & 0x07) * 2 + if priority < 0: + flags |= 0x08 + if sticky: + flags = flags | 0x0001 + data = struct.pack("!BBHHHHH", + GROWL_PROTOCOL_VERSION, + GROWL_TYPE_NOTIFICATION, + flags, + len(notification), + len(title), + len(description), + len(application) ) + data += notification + data += title + data += description + data += application + return self.encodePassword(data) + + def encodePassword(self, data): + checksum = md5.new() + checksum.update(data) + if self.password: + checksum.update(self.password) + data += checksum.digest() + return data + +class _ImageHook(type): + def __getattribute__(self, attr): + global Image + if Image is self: + from _growlImage import Image + + return getattr(Image, attr) + +class Image(object): + __metaclass__ = _ImageHook + +class _RawImage(object): + def __init__(self, data): self.rawImageData = data + +class GrowlNotifier(object): + """ + A class that abstracts the process of registering and posting + notifications to the Growl daemon. + + You can either pass `applicationName', `notifications', + `defaultNotifications' and `applicationIcon' to the constructor + or you may define them as class-level variables in a sub-class. + + `defaultNotifications' is optional, and defaults to the value of + `notifications'. `applicationIcon' is also optional but defaults + to a pointless icon so is better to be specified. + """ + + applicationName = 'GrowlNotifier' + notifications = [] + defaultNotifications = [] + applicationIcon = None + _notifyMethod = _growl + _notify_cb = None + + def __init__(self, applicationName=None, notifications=None, defaultNotifications=None, applicationIcon=None, hostname=None, password=None, notify_cb=None): + assert(applicationName is not None, 'an application name is required') + self.applicationName = applicationName + + assert(notifications, 'a sequence of one or more notification names is required') + self.notifications = list(notifications) + if defaultNotifications is not None: + self.defaultNotifications = list(defaultNotifications) + else: + self.defaultNotifications = list(self.notifications) + + if applicationIcon is not None: + self.applicationIcon = self._checkIcon(applicationIcon) + + if hostname is not None and password is not None: + self._notifyMethod = netgrowl(hostname, password) + elif hostname is not None or password is not None: + raise KeyError, "Hostname and Password are both required for a network notification" + + if notify_cb is not None: + self._notify_cb = notify_cb + else: + self._notify_cb = self.notifyCB + + if hostname is None and password is None: + self._notifyMethod.Init(applicationName, self._notify_cb) + + def _checkIcon(self, data): + if isinstance(data, str): + return _RawImage(data) + else: + return data + + def register(self): + if self.applicationIcon is not None: + self.applicationIcon = self._checkIcon(self.applicationIcon) + + regInfo = {GROWL_APP_NAME: self.applicationName, + GROWL_NOTIFICATIONS_ALL: self.notifications, + GROWL_NOTIFICATIONS_DEFAULT: self.defaultNotifications, + GROWL_APP_ICON:self.applicationIcon, + } + self._notifyMethod.PostRegistration(regInfo) + + def notify(self, noteType, title, description, icon=None, sticky=False, priority=None, context=None): + assert noteType in self.notifications + notifyInfo = {GROWL_NOTIFICATION_NAME: noteType, + GROWL_APP_NAME: self.applicationName, + GROWL_NOTIFICATION_TITLE: title, + GROWL_NOTIFICATION_DESCRIPTION: description, + } + if sticky: + notifyInfo[GROWL_NOTIFICATION_STICKY] = 1 + + if priority is not None: + notifyInfo[GROWL_NOTIFICATION_PRIORITY] = priority + + if icon: + notifyInfo[GROWL_NOTIFICATION_ICON] = self._checkIcon(icon) + + if context: + notifyInfo[GROWL_NOTIFICATION_CLICK_CONTEXT] = context + + self._notifyMethod.PostNotification(notifyInfo) + + def notifyCB(self, userdata): + print "Got notify in pyland", userdata diff --git a/src/osx/growl/Makefile.am b/src/osx/growl/Makefile.am new file mode 100644 index 0000000000..df48b58d85 --- /dev/null +++ b/src/osx/growl/Makefile.am @@ -0,0 +1,41 @@ +OBJC = gcc + +export MACOSX_DEPLOYMENT_TARGET=10.4 +INCLUDES = \ + $(PYTHON_INCLUDES) + +if BUILD_CARBON +_growllib_LTLIBRARIES = _growl.la +_growllibdir = $(libdir)/gajim + +_growl_la_LIBADD = $(CARBON_LIBS) + +_growl_la_SOURCES = _growl.c + +_growl_la_LDFLAGS = \ + -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 + +_growl_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES) +endif + +if BUILD_COCOA +_growlImagelib_LTLIBRARIES = _growlImage.la +_growlImagelibdir = $(libdir)/gajim + +_growlImage_la_LIBADD = $(COCOA_LIBS) + +_growlImage_la_SOURCES = _growlImage.m + +_growlImage_la_LDFLAGS = \ + -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 + +_growlImage_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES) + +AM_OBJCFLAGS = $(_growlImage_la_CFLAGS) +endif + +DISTCLEANFILES = + +EXTRA_DIST = + +MAINTAINERCLEANFILES = Makefile.in diff --git a/src/osx/growl/__init__.py b/src/osx/growl/__init__.py new file mode 100644 index 0000000000..2f3c16e5d9 --- /dev/null +++ b/src/osx/growl/__init__.py @@ -0,0 +1 @@ +# No-op file that just helps python with the growl module directory. diff --git a/src/osx/growl/_growl.c b/src/osx/growl/_growl.c new file mode 100644 index 0000000000..11ac07e932 --- /dev/null +++ b/src/osx/growl/_growl.c @@ -0,0 +1,239 @@ +/* + * Copyright 2004-2005 The Growl Project. + * Created by Jeremy Rossi <jeremy@jeremyrossi.com> + * Released under the BSD license. + */ + +#include <Python.h> +#include <CoreFoundation/CoreFoundation.h> + +#define str(cfstr) CFStringGetCStringPtr(cfstr, kCFStringEncodingMacRoman) +#define cfstr(str) CFStringCreateWithCString(kCFAllocatorDefault, str, kCFStringEncodingMacRoman) + +static PyObject * _notify_cb = NULL; + + +static PyObject * growl_PostDictionary(CFStringRef name, PyObject *self, PyObject *args) { + int i, j; + + PyObject *inputDict; + PyObject *pKeys = NULL; + PyObject *pKey, *pValue; + + CFMutableDictionaryRef note = CFDictionaryCreateMutable(kCFAllocatorDefault, + /*capacity*/ 0, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + + if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &inputDict)) + goto error; + + pKeys = PyDict_Keys(inputDict); + for (i = 0; i < PyList_Size(pKeys); ++i) { + CFStringRef convertedKey; + + /* Converting the PyDict key to NSString and used for key in note */ + pKey = PyList_GetItem(pKeys, i); + if (!pKey) + // Exception already set + goto error; + pValue = PyDict_GetItem(inputDict, pKey); + if (!pValue) { + // XXX Neeed a real Error message here. + PyErr_SetString(PyExc_TypeError," "); + goto error; + } + if (PyUnicode_Check(pKey)) { + convertedKey = CFStringCreateWithBytes(kCFAllocatorDefault, + (const UInt8 *)PyUnicode_AS_DATA(pKey), + PyUnicode_GET_DATA_SIZE(pKey), + kCFStringEncodingUnicode, + false); + } else if (PyString_Check(pKey)) { + convertedKey = CFStringCreateWithCString(kCFAllocatorDefault, + PyString_AsString(pKey), + kCFStringEncodingUTF8); + } else { + PyErr_SetString(PyExc_TypeError,"The Dict keys must be strings/unicode"); + goto error; + } + + /* Converting the PyDict value to NSString or NSData based on class */ + if (PyString_Check(pValue)) { + CFStringRef convertedValue = CFStringCreateWithCString(kCFAllocatorDefault, + PyString_AS_STRING(pValue), + kCFStringEncodingUTF8); + CFDictionarySetValue(note, convertedKey, convertedValue); + CFRelease(convertedValue); + } else if (PyUnicode_Check(pValue)) { + CFStringRef convertedValue = CFStringCreateWithBytes(kCFAllocatorDefault, + (const UInt8 *)PyUnicode_AS_DATA(pValue), + PyUnicode_GET_DATA_SIZE(pValue), + kCFStringEncodingUnicode, + false); + CFDictionarySetValue(note, convertedKey, convertedValue); + CFRelease(convertedValue); + } else if (PyInt_Check(pValue)) { + long v = PyInt_AS_LONG(pValue); + CFNumberRef convertedValue = CFNumberCreate(kCFAllocatorDefault, + kCFNumberLongType, + &v); + CFDictionarySetValue(note, convertedKey, convertedValue); + CFRelease(convertedValue); + } else if (pValue == Py_None) { + CFDataRef convertedValue = CFDataCreate(kCFAllocatorDefault, NULL, 0); + CFDictionarySetValue(note, convertedKey, convertedValue); + CFRelease(convertedValue); + } else if (PyList_Check(pValue)) { + int size = PyList_Size(pValue); + CFMutableArrayRef listHolder = CFArrayCreateMutable(kCFAllocatorDefault, + size, + &kCFTypeArrayCallBacks); + for (j = 0; j < size; ++j) { + PyObject *lValue = PyList_GetItem(pValue, j); + if (PyString_Check(lValue)) { + CFStringRef convertedValue = CFStringCreateWithCString(kCFAllocatorDefault, + PyString_AS_STRING(lValue), + kCFStringEncodingUTF8); + CFArrayAppendValue(listHolder, convertedValue); + CFRelease(convertedValue); + } else if (PyUnicode_Check(lValue)) { + CFStringRef convertedValue = CFStringCreateWithBytes(kCFAllocatorDefault, + (const UInt8 *)PyUnicode_AS_DATA(lValue), + PyUnicode_GET_DATA_SIZE(lValue), + kCFStringEncodingUnicode, + false); + CFArrayAppendValue(listHolder, convertedValue); + CFRelease(convertedValue); + } else { + CFRelease(convertedKey); + PyErr_SetString(PyExc_TypeError,"The lists must only contain strings"); + goto error; + } + } + CFDictionarySetValue(note, convertedKey, listHolder); + CFRelease(listHolder); + } else if (PyObject_HasAttrString(pValue, "rawImageData")) { + PyObject *lValue = PyObject_GetAttrString(pValue, "rawImageData"); + if (!lValue) { + goto error; + } else if (PyString_Check(lValue)) { + CFDataRef convertedValue = CFDataCreate(kCFAllocatorDefault, + (const UInt8 *)PyString_AsString(lValue), + PyString_Size(lValue)); + CFDictionarySetValue(note, convertedKey, convertedValue); + CFRelease(convertedValue); + } else { + CFRelease(convertedKey); + PyErr_SetString(PyExc_TypeError, "Icon with rawImageData attribute present must ensure it is a string."); + goto error; + } + } else { + CFRelease(convertedKey); + PyErr_SetString(PyExc_TypeError, "Value is not of Str/List"); + goto error; + } + CFRelease(convertedKey); + } + + Py_BEGIN_ALLOW_THREADS + CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(), + /*name*/ name, + /*object*/ NULL, + /*userInfo*/ note, + /*deliverImmediately*/ false); + CFRelease(note); + Py_END_ALLOW_THREADS + + Py_DECREF(pKeys); + + Py_INCREF(Py_None); + return Py_None; + +error: + CFRelease(note); + + Py_XDECREF(pKeys); + + return NULL; +} + +static void growl_NotifyCB(CFNotificationCenterRef center, void *observer, + CFStringRef name, const void *object, + CFDictionaryRef userInfo) +{ + CFIndex size, len; + const void * keys[1]; + const void * values[1]; + CFArrayRef arr; + CFStringRef cfstr; + CFRange cfrange; + UInt8 *buff; + int i; + PyObject * pylist; + + cfrange.location = 0; + CFDictionaryGetKeysAndValues(userInfo, keys, values); + arr = (CFArrayRef)values[0]; + size = CFArrayGetCount(arr); + pylist = PyList_New(size); + for (i=0; i < size; ++i) + { + cfstr = (CFStringRef)CFArrayGetValueAtIndex(arr, i); + cfrange.length = CFStringGetLength(cfstr); + CFStringGetBytes(cfstr, cfrange, kCFStringEncodingUnicode, 0, false, + NULL, 0, &len); + buff = (UInt8*)malloc(len); + CFStringGetBytes(cfstr, cfrange, kCFStringEncodingUnicode, 0, false, + buff, len, &len); + PyList_SetItem(pylist, i, + PyUnicode_DecodeUTF16((char*)buff, len, NULL, NULL)); + free(buff); + } + + PyObject_CallObject(_notify_cb, Py_BuildValue("(O)", pylist)); + Py_DECREF(pylist); +} + +static PyObject * growl_Init(PyObject *self, PyObject *args) +{ + char* name = NULL; + + if (!PyArg_ParseTuple(args, "sO", &name, &_notify_cb)) + return NULL; + + Py_INCREF(_notify_cb); + + char* buff = (char*)malloc(strlen(name) + 14); + strcpy(buff, name); + strcat(buff, "GrowlClicked!"); + CFStringRef cfbuff = cfstr(buff); + CFNotificationCenterAddObserver( + CFNotificationCenterGetDistributedCenter(), NULL, &growl_NotifyCB, + cfbuff, NULL, CFNotificationSuspensionBehaviorDeliverImmediately); + free(buff); + CFRelease(cfbuff); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * growl_PostRegistration(PyObject *self, PyObject *args) { + return growl_PostDictionary(CFSTR("GrowlApplicationRegistrationNotification"), self, args); +} + +static PyObject * growl_PostNotification(PyObject *self, PyObject *args) { + return growl_PostDictionary(CFSTR("GrowlNotification"), self, args); +} + +static PyMethodDef GrowlMethods[] = { + {"Init", growl_Init, METH_VARARGS, "Initialize notifications with GrowlHelperApp"}, + {"PostNotification", growl_PostNotification, METH_VARARGS, "Send a notification to GrowlHelperApp"}, + {"PostRegistration", growl_PostRegistration, METH_VARARGS, "Send a registration to GrowlHelperApp"}, + {NULL, NULL, 0, NULL} /* Sentinel */ +}; + + +PyMODINIT_FUNC init_growl(void) { + Py_InitModule("_growl", GrowlMethods); +} diff --git a/src/osx/growl/_growlImage.m b/src/osx/growl/_growlImage.m new file mode 100644 index 0000000000..d4b2b72f9f --- /dev/null +++ b/src/osx/growl/_growlImage.m @@ -0,0 +1,274 @@ +/* + * Copyright 2004 Mark Rowe <bdash@users.sourceforge.net> + * Released under the BSD license. + */ + +#include "Python.h" +#import <Cocoa/Cocoa.h> + +typedef struct +{ + PyObject_HEAD + NSImage *theImage; +} ImageObject; + + +static PyTypeObject ImageObject_Type; + +#define ImageObject_Check(v) ((v)->ob_type == &ImageObject_Type) + +static ImageObject * +newImageObject(NSImage *img) +{ + ImageObject *self; + if (! img) + { + PyErr_SetString(PyExc_TypeError, "Invalid image."); + return NULL; + } + + self = PyObject_New(ImageObject, &ImageObject_Type); + if (! self) + return NULL; + + self->theImage = [img retain]; + return self; +} + +static void +ImageObject_dealloc(ImageObject *self) +{ + PyObject_Del(self); +} + +static PyObject * +ImageObject_getAttr(PyObject *self, PyObject *attr) +{ + char *theAttr = PyString_AsString(attr); + NSAutoreleasePool *pool = nil; + + if (strcmp(theAttr, "rawImageData") == 0) + { + pool = [[NSAutoreleasePool alloc] init]; + NSData *imageData = [((ImageObject *) self)->theImage TIFFRepresentation]; + PyObject *pyImageData = PyString_FromStringAndSize([imageData bytes], [imageData length]); + [pool release]; + return pyImageData; + } + else + return PyObject_GenericGetAttr(self, attr); +} + + +static PyObject * +ImageObject_imageFromPath(PyTypeObject *cls, PyObject *args) +{ + ImageObject *self; + char *fileName_ = NULL; + NSString *fileName = nil; + NSImage *theImage = nil; + NSAutoreleasePool *pool = nil; + + if (! PyArg_ParseTuple(args, "et:imageFromPath", + Py_FileSystemDefaultEncoding, &fileName_)) + return NULL; + + pool = [[NSAutoreleasePool alloc] init]; + + fileName = [NSString stringWithUTF8String:fileName_]; + theImage = [[[NSImage alloc] initWithContentsOfFile:fileName] autorelease]; + self = newImageObject(theImage); + + [pool release]; + return (PyObject *) self; +} + +static PyObject * +ImageObject_imageWithData(PyTypeObject *cls, PyObject *args) +{ + ImageObject *self; + char *imageData = NULL; + int imageDataSize = 0; + NSImage *theImage = nil; + NSAutoreleasePool *pool = nil; + + if (! PyArg_ParseTuple(args, "s#:imageWithData", + &imageData, &imageDataSize)) + return NULL; + + pool = [[NSAutoreleasePool alloc] init]; + + + theImage = [[[NSImage alloc] initWithData:[NSData dataWithBytes:imageData + length:imageDataSize]] autorelease]; + self = newImageObject(theImage); + + [pool release]; + return (PyObject *) self; +} + +static PyObject * +ImageObject_imageWithIconForFile(PyTypeObject *cls, PyObject *args) +{ + ImageObject *self; + char *fileName_ = NULL; + NSString *fileName = nil; + NSImage *theImage = nil; + NSAutoreleasePool *pool = nil; + + if (! PyArg_ParseTuple(args, "et:imageWithIconForFile", + Py_FileSystemDefaultEncoding, &fileName_)) + return NULL; + + pool = [[NSAutoreleasePool alloc] init]; + + fileName = [NSString stringWithUTF8String:fileName_]; + theImage = [[NSWorkspace sharedWorkspace] iconForFile:fileName]; + self = newImageObject(theImage); + + [pool release]; + return (PyObject *) self; +} + +static PyObject * +ImageObject_imageWithIconForFileType(PyTypeObject *cls, PyObject *args) +{ + ImageObject *self; + char *fileType = NULL; + NSImage *theImage = nil; + NSAutoreleasePool *pool = nil; + + if (! PyArg_ParseTuple(args, "s:imageWithIconForFileType", + &fileType)) + return NULL; + + pool = [[NSAutoreleasePool alloc] init]; + + theImage = [[NSWorkspace sharedWorkspace] iconForFileType:[NSString stringWithUTF8String:fileType]]; + self = newImageObject(theImage); + + [pool release]; + return (PyObject *) self; +} + +static PyObject * +ImageObject_imageWithIconForCurrentApplication(PyTypeObject *cls, PyObject *args) +{ + ImageObject *self; + NSAutoreleasePool *pool = nil; + + if (! PyArg_ParseTuple(args, ":imageWithIconForCurrentApplication")) + return NULL; + + pool = [[NSAutoreleasePool alloc] init]; + + self = newImageObject([NSApp applicationIconImage]); + + [pool release]; + return (PyObject *) self; +} + +static PyObject * +ImageObject_imageWithIconForApplication(PyTypeObject *cls, PyObject *args) +{ + ImageObject *self; + char *appName_ = NULL; + NSString *appName = nil; + NSString *appPath = nil; + NSImage *theImage = nil; + NSAutoreleasePool *pool = nil; + + if (! PyArg_ParseTuple(args, "et:imageWithIconForApplication", + Py_FileSystemDefaultEncoding, &appName_)) + return NULL; + + pool = [[NSAutoreleasePool alloc] init]; + + appName = [NSString stringWithUTF8String:appName_]; + appPath = [[NSWorkspace sharedWorkspace] fullPathForApplication:appName]; + if (! appPath) + { + PyErr_Format(PyExc_RuntimeError, "Application named '%s' not found", appName_); + self = NULL; + goto done; + } + theImage = [[NSWorkspace sharedWorkspace] iconForFile:appPath]; + self = newImageObject(theImage); + +done: + [pool release]; + return (PyObject *) self; +} + + +static PyMethodDef ImageObject_methods[] = { + {"imageFromPath", (PyCFunction)ImageObject_imageFromPath, METH_VARARGS | METH_CLASS}, + {"imageWithData", (PyCFunction)ImageObject_imageWithData, METH_VARARGS | METH_CLASS}, + {"imageWithIconForFile", (PyCFunction)ImageObject_imageWithIconForFile, METH_VARARGS | METH_CLASS}, + {"imageWithIconForFileType", (PyCFunction)ImageObject_imageWithIconForFileType, METH_VARARGS | METH_CLASS}, + {"imageWithIconForCurrentApplication", (PyCFunction)ImageObject_imageWithIconForCurrentApplication, METH_VARARGS | METH_CLASS}, + {"imageWithIconForApplication", (PyCFunction)ImageObject_imageWithIconForApplication, METH_VARARGS | METH_CLASS}, + {NULL, NULL} /* sentinel */ +}; + +static PyTypeObject ImageObject_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "_growlImage.Image", /*tp_name*/ + sizeof(ImageObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)ImageObject_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + ImageObject_getAttr, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_CLASS, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + ImageObject_methods, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + 0, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + +static PyMethodDef _growlImage_methods[] = { + {NULL, NULL} +}; + +PyMODINIT_FUNC +init_growlImage(void) +{ + PyObject *m; + + if (PyType_Ready(&ImageObject_Type) < 0) + return; + + m = Py_InitModule("_growlImage", _growlImage_methods); + + PyModule_AddObject(m, "Image", (PyObject *)&ImageObject_Type); +} diff --git a/src/osx/growl/setup.py b/src/osx/growl/setup.py new file mode 100644 index 0000000000..5a7235deee --- /dev/null +++ b/src/osx/growl/setup.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +from distutils.core import setup, Extension +import sys + +_growl = Extension('_growl', + extra_link_args = ["-framework","CoreFoundation"], + sources = ['libgrowl.c']) +_growlImage = Extension('_growlImage', + extra_link_args = ["-framework","Cocoa"], + sources = ['growlImage.m']) + +if sys.platform.startswith("darwin"): + modules = [_growl, _growlImage] +else: + modules = [] + +setup(name="py-Growl", + version="0.0.7", + description="Python bindings for posting notifications to the Growl daemon", + author="Mark Rowe", + author_email="bdash@users.sourceforge.net", + url="http://growl.info", + py_modules=["Growl"], + ext_modules = modules ) + diff --git a/src/osx/growler.py b/src/osx/growler.py new file mode 100644 index 0000000000..c3ea320cf4 --- /dev/null +++ b/src/osx/growler.py @@ -0,0 +1,63 @@ +import sys, os +from growl.Growl import GrowlNotifier +from common import gajim, helpers + + +if sys.platform != "darwin": + raise ImportError("System platform is not OS/X") + + +GENERIC_NOTIF = _('Generic') +notifications = [ + _('Contact Signed In'), _('Contact Signed Out'), _('New Message'), + _('New Single Message'), _('New Private Message'), _('New E-mail'), + _('File Transfer Request'), _('File Transfer Error'), + _('File Transfer Completed'), _('File Transfer Stopped'), + _('Groupchat Invitation'), _('Contact Changed Status'), + _('Connection Failed'), GENERIC_NOTIF + ] + +growler = None + + + +def init(): + global growler, notifications + icon = file(os.path.join(gajim.DATA_DIR, "pixmaps", "gajim.icns"), "r") + growler = GrowlNotifier(applicationName = "Gajim", + notifications = notifications, + applicationIcon = icon.read(), + notify_cb = notifyCB) + growler.register() + return + + +def notify(event_type, jid, account, msg_type, path_to_image, title, text): + global notifications + if not event_type in notifications: + event_type = GENERIC_NOTIF + if not text: + text = gajim.get_name_from_jid(account, jid) # default value of text + text = filterString(text) + if not title: + title = event_type + title = filterString(title) + 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 + icon = file(path_to_image, "r") + context = [account, jid, msg_type] + growler.notify(event_type, title, text, icon.read(), False, None, + context) + return + + +def notifyCB(data): + gajim.interface.handle_event(data[0], data[1], data[2]) + + +def filterString(string): + string = string.replace(""", "'") + return string + diff --git a/src/osx/idle.c b/src/osx/idle.c new file mode 100644 index 0000000000..c24c304383 --- /dev/null +++ b/src/osx/idle.c @@ -0,0 +1,174 @@ +/***** + This is a modified form of idler.c. The original copyright notice follows. + **/ + +/***************************************** + * idler.c + * + * Uses IOKit to figure out the idle time of the system. The idle time + * is stored as a property of the IOHIDSystem class; the name is + * HIDIdleTime. Stored as a 64-bit int, measured in ns. + * + * The program itself just prints to stdout the time that the computer +has + * been idle in seconds. + * + * Compile with gcc -Wall -framework IOKit -framework Carbon idler.c -o + * idler + * + * Copyright (c) 2003, Stanford University + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions +are + * met: + * Redistributions of source code must retain the above copyright +notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright +notice, + * this list of conditions and the following disclaimer in the +documentation + * and/or other materials provided with the distribution. + * + * Neither the name of Stanford University nor the names of its +contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <CoreFoundation/CoreFoundation.h> +#include <CoreServices/CoreServices.h> +#include <IOKit/IOKitLib.h> + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include <Python.h> + +/* 10^9 -- number of ns in a second */ +#define NS_SECONDS 1000000000 + + +static mach_port_t __idle_osx_master_port; +io_registry_entry_t __idle_osx_service; + + +static PyObject * idle_init(PyObject *self, PyObject *args) +{ + io_iterator_t iter; + CFMutableDictionaryRef hid_match; + + IOMasterPort(MACH_PORT_NULL, &__idle_osx_master_port); + + /* Get IOHIDSystem */ + hid_match = IOServiceMatching("IOHIDSystem"); + IOServiceGetMatchingServices(__idle_osx_master_port, hid_match, &iter); + if (iter == 0) { + printf("Error accessing IOHIDSystem\n"); + } + + __idle_osx_service = IOIteratorNext(iter); + if (__idle_osx_service == 0) { + printf("Iterator's empty!\n"); + } + + IOObjectRelease(iter); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * idle_getIdleSec(PyObject *self, PyObject *args) +{ + CFMutableDictionaryRef properties = 0; + CFTypeRef obj = NULL; + uint64_t tHandle = 0; + + if (IORegistryEntryCreateCFProperties(__idle_osx_service, &properties, + kCFAllocatorDefault, 0) == + KERN_SUCCESS && properties != NULL) + { + obj = CFDictionaryGetValue(properties, CFSTR("HIDIdleTime")); + CFRetain(obj); + } + else + { + printf("Couldn't grab properties of system\n"); + } + + if (obj) + { + CFTypeID type = CFGetTypeID(obj); + + if (type == CFDataGetTypeID()) + { + CFDataGetBytes((CFDataRef) obj, + CFRangeMake(0, sizeof(tHandle)), + (UInt8*) &tHandle); + } + else if (type == CFNumberGetTypeID()) + { + CFNumberGetValue((CFNumberRef)obj, + kCFNumberSInt64Type, + &tHandle); + } + else + { + printf("%d: unsupported type\n", (int)type); + } + + CFRelease(obj); + + // essentially divides by 10^9 + tHandle >>= 30; + } + else + { + printf("Can't find idle time\n"); + } + + CFRelease((CFTypeRef)properties); + return Py_BuildValue("L", tHandle); +} + +static PyObject * idle_close(PyObject *self, PyObject *args) +{ + /* Release our resources */ + IOObjectRelease(__idle_osx_service); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyMethodDef idleMethods[] = +{ + {"init", idle_init, METH_VARARGS, "init idle"}, + {"getIdleSec", idle_getIdleSec, METH_VARARGS, "Get idle time in seconds"}, + {"close", idle_close, METH_VARARGS, "close idle"}, + {NULL, NULL, 0, NULL} +}; + +PyMODINIT_FUNC initidle(void) +{ + (void) Py_InitModule("idle", idleMethods); +} diff --git a/src/osx/nsapp.h b/src/osx/nsapp.h new file mode 100644 index 0000000000..dd86960c2a --- /dev/null +++ b/src/osx/nsapp.h @@ -0,0 +1,19 @@ +#import <Cocoa/Cocoa.h> + + +@interface NSApplication (Gajim) + +- (void) initGajim; +- (void) initGUI; +- (BOOL) initNetNotify; +- (void) orderFrontStandardAboutPanel: (id)sender; +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; +- (BOOL) application:(NSApplication *)theApplication + openFile:(NSString *)filename; +- (void) application:(NSApplication *)sender openFiles:(NSArray *)filenames; +- (BOOL) applicationOpenUntitledFile:(NSApplication *)theApplication; +- (BOOL) applicationShouldOpenUntitledFile:(NSApplication *)sender; + ++ (void) netNotifyCB: (NSNotification*)notif; + +@end diff --git a/src/osx/nsapp.m b/src/osx/nsapp.m new file mode 100644 index 0000000000..4e7b6bde4c --- /dev/null +++ b/src/osx/nsapp.m @@ -0,0 +1,239 @@ +#import "nsapp.h" +#include <notify.h> + +#include <AppKit/NSSound.h> + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include <Python.h> + + +#define GAJIM_POOL_ALLOC \ + NSAutoreleasePool *gajim_pool = [[NSAutoreleasePool alloc] init]; +#define GAJIM_POOL_FREE [gajim_pool release]; + + +static PyObject *netChangedCB = NULL; +static NSFileHandle* netNotifyFH = nil; +static int netNotifyToken = -1; + + +@implementation NSApplication (Gajim) + +- (void) initGUI +{ + [NSBundle loadNibNamed:@"Gajim" owner:NSApp]; +} + ++ (void) netNotifyCB: (NSNotification*) notif +{ + NSLog(@"Network changed notification"); + + if (netChangedCB) + { + PyObject_CallObject(netChangedCB, NULL); + } + + [[notif object] readInBackgroundAndNotify]; +} + +- (BOOL) initNetNotify +{ + int fd = 0; + + if (notify_register_file_descriptor( + "com.apple.system.config.network_change", &fd, 0, + &netNotifyToken) != NOTIFY_STATUS_OK) + { + return FALSE; + } + + netNotifyFH = [[NSFileHandle alloc] initWithFileDescriptor: fd]; + [[NSNotificationCenter defaultCenter] addObserver: [self class] + selector: @selector(netNotifyCB:) + name: NSFileHandleReadCompletionNotification + object: netNotifyFH]; + [netNotifyFH readInBackgroundAndNotify]; + + return TRUE; +} + +- (void) initGajim +{ + GAJIM_POOL_ALLOC + + [self initGUI]; + [self initNetNotify]; + + [NSApp setDelegate:self]; + [NSApp finishLaunching]; + + GAJIM_POOL_FREE +} + +- (void) orderFrontStandardAboutPanel: (id)sender +{ + PyRun_SimpleString("\n\ +import gobject\n\ +import dialogs\n\ +def doAbout():\n\ + dialogs.AboutDialog()\n\ + return None\n\ +gobject.idle_add(doAbout)\n\ +"); +} + +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender +{ +/* + PyRun_SimpleString("\n\ +import gajim\n\ +import gobject\n\ +def doQuit():\n\ + gajim.interface.roster.on_quit_menuitem_activate(None)\n\ + return None\n\ +gobject.idle_add(doQuit)\n\ +"); +*/ + return NSTerminateNow; +} + +- (BOOL) application:(NSApplication *)theApplication + openFile:(NSString *)filename +{ + NSLog(@"openFile"); + NSLog(filename); + return YES; +} + +- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames +{ + NSLog(@"openFiles"); + + NSEnumerator* iter = [filenames objectEnumerator]; + NSString* str; + while ((str = [iter nextObject])) + { + NSLog(str); + } + return; +} + +- (BOOL)applicationOpenUntitledFile:(NSApplication *)theApplication +{ + NSLog(@"openUntitledFile"); + return YES; +} + +- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender +{ + NSLog(@"shouldOpenUntitledFile"); + return YES; +} + +@end + + +static PyObject * nsapp_init(PyObject *self, PyObject *args) +{ + [NSApp initGajim]; + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * nsapp_setNetworkCB(PyObject *self, PyObject *args) +{ + PyArg_UnpackTuple(args, "netcb", 1, 1, &netChangedCB); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * nsapp_requestUserAttention(PyObject *self, PyObject *args) +{ + GAJIM_POOL_ALLOC + [NSApp requestUserAttention:NSInformationalRequest]; + GAJIM_POOL_FREE + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * nsapp_playFile(PyObject *self, PyObject *args) +{ + GAJIM_POOL_ALLOC + + const char* cstr = NULL; + + if (!PyArg_ParseTuple(args, "s", &cstr)) + { + return NULL; + } + + NSSound* snd = [[NSSound alloc] initWithContentsOfFile: + [[NSString alloc] initWithUTF8String: cstr] + byReference: YES]; + if (!snd) + { + Py_INCREF(Py_None); + return Py_None; + } + + if (![snd play]) + { + Py_INCREF(Py_None); + return Py_None; + } + + GAJIM_POOL_FREE + + return Py_BuildValue("b", 1); +} + +static PyObject * nsapp_getBundlePath(PyObject *self, PyObject *args) +{ + GAJIM_POOL_ALLOC + + NSBundle* bundle = [NSBundle mainBundle]; + if (!bundle) + { + Py_INCREF(Py_None); + return Py_None; + } + + NSString* nspath = [bundle bundlePath]; + if (!nspath) + { + Py_INCREF(Py_None); + return Py_None; + } + + const char* path = [nspath UTF8String]; + PyObject* pypath = Py_BuildValue("s", path); + + GAJIM_POOL_FREE + + return pypath; +} + +static PyMethodDef nsappMethods[] = +{ + {"init", nsapp_init, METH_VARARGS, "init nsapp"}, + {"setNetworkCB", nsapp_setNetworkCB, METH_VARARGS, + "Callback to call when the network state changes"}, + {"getBundlePath", nsapp_getBundlePath, METH_VARARGS, + "Get the path to the bundle we were run from"}, + {"playFile", nsapp_playFile, METH_VARARGS, + "Play a sound file"}, + {"requestUserAttention", nsapp_requestUserAttention, METH_VARARGS, + "Sends a request for the users attention to the window manager"}, + {NULL, NULL, 0, NULL} +}; + +PyMODINIT_FUNC initnsapp(void) +{ + (void) Py_InitModule("nsapp", nsappMethods); +} diff --git a/src/osx/prep_py2app.py b/src/osx/prep_py2app.py new file mode 100644 index 0000000000..dfe087d400 --- /dev/null +++ b/src/osx/prep_py2app.py @@ -0,0 +1,23 @@ +### Adjust the sys.path so that the site-packages.zip is before the lib-dynload +### so that the osx/__init__.py in the .zip is read before looking for it in the +### lib-dynload/osx dir where the .so's are. + +import sys + +py = -1 +lib_dyn = -1 +site_zip = -1 +for index in xrange(len(sys.path)): + if 'Contents/Resources' in sys.path[index]: + if sys.path[index].endswith('lib/python2.5'): + py = index + if sys.path[index].endswith('lib-dynload'): + lib_dyn = index + elif sys.path[index].endswith('site-packages.zip'): + site_zip = index +if ((lib_dyn > -1) and (site_zip > -1)): + tmp = sys.path[lib_dyn] + sys.path[lib_dyn] = sys.path[site_zip] + sys.path[site_zip] = tmp +if py > -1: + del sys.path[py] diff --git a/src/osx/setup.py b/src/osx/setup.py new file mode 100644 index 0000000000..2eaeb1bb94 --- /dev/null +++ b/src/osx/setup.py @@ -0,0 +1,20 @@ +from distutils.core import setup, Extension + +setup( + name = 'Gajim', + version = '0.11', + description = 'A full featured Jabber client', + author = 'Gajim Development Team', + url = 'http://www.gajim.org/', + download_url = 'http://www.gajim.org/downloads.php', + license = 'GPL', + + ext_modules=[ + Extension('idle', ['idle.c'], + extra_compile_args=['-Wall'], + extra_link_args=['-framework', 'IOKit', '-framework', 'Carbon']), + Extension('nsapp', ['nsapp.m'], + extra_compile_args=['-Wall'], + extra_link_args=['-framework', 'AppKit', '-framework', 'Cocoa']), + ] +) diff --git a/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo b/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo new file mode 100644 index 0000000000..9ce06a81ea --- /dev/null +++ b/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo @@ -0,0 +1 @@ +# dummy diff --git a/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo b/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo new file mode 100644 index 0000000000..9ce06a81ea --- /dev/null +++ b/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo @@ -0,0 +1 @@ +# dummy diff --git a/src/osx/syncmenu/Makefile.am b/src/osx/syncmenu/Makefile.am new file mode 100644 index 0000000000..d8ff94861f --- /dev/null +++ b/src/osx/syncmenu/Makefile.am @@ -0,0 +1,21 @@ +GTKPATH="/Library/Frameworks/GTK+.framework/Versions/Current/bin" + +export MACOSX_DEPLOYMENT_TARGET=10.4 +INCLUDES = $(PYTHON_INCLUDES) + +GTKLDFLAGS=`$(GTKPATH)/pkg-config --libs gtk+-2.0 pygobject-2.0` +GTKCFLAGS=`$(GTKPATH)/pkg-config --cflags gtk+-2.0 pygobject-2.0` + +if BUILD_COCOA +syncmenulib_LTLIBRARIES = syncmenu.la +syncmenulibdir = $(libdir)/gajim +syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c +syncmenu_la_LDFLAGS = -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(GTKLDFLAGS) +syncmenu_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(GTKCFLAGS) -Wall -g $(INCLUDES) +endif + +DISTCLEANFILES = + +EXTRA_DIST = + +MAINTAINERCLEANFILES = Makefile.in diff --git a/src/osx/syncmenu/pysyncmenu.c b/src/osx/syncmenu/pysyncmenu.c new file mode 100644 index 0000000000..d2e304f9f9 --- /dev/null +++ b/src/osx/syncmenu/pysyncmenu.c @@ -0,0 +1,55 @@ +#include <errno.h> +#include <string.h> +#include <Python.h> +#include <pygobject.h> +#include "sync-menu.h" + + +PyDoc_STRVAR(pysync_menu_takeover_menu__doc__, +"Receives: a GtkMenuShell\n" +"Returns:\n"); + +static PyObject *pysync_menu_takeover_menu(PyObject *s, PyObject *args) +{ + PyObject *obj = NULL; + + if (!PyArg_ParseTuple(args, "O:GtkMenuShell", &obj)) + { + PyErr_SetString(PyExc_TypeError, "Failed to process parameter1"); + return NULL; + } + + Py_INCREF(obj); + + GtkMenuShell* menu = pyg_boxed_get(obj, GtkMenuShell); + if (!menu) + { + PyErr_SetString(PyExc_TypeError, "Failed to process parameter2"); + return NULL; + } + + sync_menu_takeover_menu(menu); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyMethodDef syncmenuModuleMethods[] = +{ + {"takeover_menu", (PyCFunction)pysync_menu_takeover_menu, + METH_VARARGS, pysync_menu_takeover_menu__doc__}, + {NULL} +}; + +PyDoc_STRVAR(modsyncmenu__doc__, + "GTK+ Integration for the Mac OS X Menubar.\n"); + +void initsyncmenu(void) +{ + if (!Py_InitModule3("syncmenu", syncmenuModuleMethods, modsyncmenu__doc__)) + { + PyErr_SetString(PyExc_ImportError, + "Py_InitModule3(\"syncmenu\") failed"); + return; + } +} diff --git a/src/osx/syncmenu/setup.py b/src/osx/syncmenu/setup.py new file mode 100644 index 0000000000..7b20709f94 --- /dev/null +++ b/src/osx/syncmenu/setup.py @@ -0,0 +1,27 @@ +from distutils.core import setup, Extension +import commands + + +retval, output = commands.getstatusoutput("pkg-config --cflags gtk+-2.0 pygtk-2.0") +if retval != 0: + print "Failed to find package details for gtk+-2.0" + print + print output + sys.exit(1) +cflags = output.strip().split() +retval, output = commands.getstatusoutput("pkg-config --libs gtk+-2.0 pygtk-2.0") +if retval != 0: + print "Failed to find package details for gtk+-2.0" + print + print output + sys.exit(1) +libs = output.strip().split() + + +setup(name='syncmenu', version='0.2', + author='James Newton', author_email='baron@codepunks.org', + ext_modules=[ + Extension('syncmenu', ['pysyncmenu.c', 'sync-menu.c'], + extra_link_args=libs + ['-framework', 'Carbon'], + extra_compile_args=['-Wall'] + cflags) + ]) diff --git a/src/osx/syncmenu/sync-menu.c b/src/osx/syncmenu/sync-menu.c new file mode 100644 index 0000000000..f29685c294 --- /dev/null +++ b/src/osx/syncmenu/sync-menu.c @@ -0,0 +1,728 @@ +/* GTK+ Integration for the Mac OS X Menubar. + * + * Copyright (C) 2007 Pioneer Research Center USA, Inc. + * + * 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. + */ + +#include <gtk/gtk.h> +#include <gdk/gdkkeysyms.h> + +#include <Carbon/Carbon.h> + +#include "sync-menu.h" + + +/* TODO + * + * - Setup shortcuts, possibly transforming ctrl->cmd + * - Sync menus + * - Create on demand? (can this be done with gtk+? ie fill in menu items when the menu is opened) + * - Figure out what to do per app/window... + * - Toggle/radio items + * + */ + +#define GTK_QUARTZ_MENU_CREATOR 'GTKC' +#define GTK_QUARTZ_ITEM_WIDGET 'GWID' + + +static void sync_menu_shell (GtkMenuShell *menu_shell, + MenuRef carbon_menu, + gboolean toplevel); + + +/* + * utility functions + */ + +static GtkWidget * +find_menu_label (GtkWidget *widget) +{ + GtkWidget *label = NULL; + + if (GTK_IS_LABEL (widget)) + return widget; + + if (GTK_IS_CONTAINER (widget)) + { + GList *children; + GList *l; + + children = gtk_container_get_children (GTK_CONTAINER (widget)); + + for (l = children; l; l = l->next) + { + label = find_menu_label (l->data); + if (label) + break; + } + + g_list_free (children); + } + + return label; +} + +static const gchar * +get_menu_label_text (GtkWidget *menu_item, + GtkWidget **label) +{ + *label = find_menu_label (menu_item); + if (!*label) + return NULL; + + return gtk_label_get_text (GTK_LABEL (*label)); +} + +static gboolean +accel_find_func (GtkAccelKey *key, + GClosure *closure, + gpointer data) +{ + return (GClosure *) data == closure; +} + + +/* + * CarbonMenu functions + */ + +typedef struct +{ + MenuRef menu; +} CarbonMenu; + +static GQuark carbon_menu_quark = 0; + +static CarbonMenu * +carbon_menu_new (void) +{ + return g_slice_new0 (CarbonMenu); +} + +static void +carbon_menu_free (CarbonMenu *menu) +{ + g_slice_free (CarbonMenu, menu); +} + +static CarbonMenu * +carbon_menu_get (GtkWidget *widget) +{ + return g_object_get_qdata (G_OBJECT (widget), carbon_menu_quark); +} + +static void +carbon_menu_connect (GtkWidget *menu, + MenuRef menuRef) +{ + CarbonMenu *carbon_menu = carbon_menu_get (menu); + + if (!carbon_menu) + { + carbon_menu = carbon_menu_new (); + + g_object_set_qdata_full (G_OBJECT (menu), carbon_menu_quark, + carbon_menu, + (GDestroyNotify) carbon_menu_free); + } + + carbon_menu->menu = menuRef; +} + + +/* + * CarbonMenuItem functions + */ + +typedef struct +{ + MenuRef menu; + MenuItemIndex index; + MenuRef submenu; + GClosure *accel_closure; +} CarbonMenuItem; + +static GQuark carbon_menu_item_quark = 0; + +static CarbonMenuItem * +carbon_menu_item_new (void) +{ + return g_slice_new0 (CarbonMenuItem); +} + +static void +carbon_menu_item_free (CarbonMenuItem *menu_item) +{ + if (menu_item->accel_closure) + g_closure_unref (menu_item->accel_closure); + + g_slice_free (CarbonMenuItem, menu_item); +} + +static CarbonMenuItem * +carbon_menu_item_get (GtkWidget *widget) +{ + return g_object_get_qdata (G_OBJECT (widget), carbon_menu_item_quark); +} + +static void +carbon_menu_item_update_state (CarbonMenuItem *carbon_item, + GtkWidget *widget) +{ + gboolean sensitive; + gboolean visible; + UInt32 set_attrs = 0; + UInt32 clear_attrs = 0; + + g_object_get (widget, + "sensitive", &sensitive, + "visible", &visible, + NULL); + + if (!sensitive) + set_attrs |= kMenuItemAttrDisabled; + else + clear_attrs |= kMenuItemAttrDisabled; + + if (!visible) + set_attrs |= kMenuItemAttrHidden; + else + clear_attrs |= kMenuItemAttrHidden; + + ChangeMenuItemAttributes (carbon_item->menu, carbon_item->index, + set_attrs, clear_attrs); +} + +static void +carbon_menu_item_update_active (CarbonMenuItem *carbon_item, + GtkWidget *widget) +{ + gboolean active; + + g_object_get (widget, + "active", &active, + NULL); + + CheckMenuItem (carbon_item->menu, carbon_item->index, + active); +} + +static void +carbon_menu_item_update_submenu (CarbonMenuItem *carbon_item, + GtkWidget *widget) +{ + GtkWidget *submenu; + + submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); + + if (submenu) + { + GtkWidget *label = NULL; + + carbon_item->submenu = NULL; + GetMenuItemHierarchicalMenu(carbon_item->menu, carbon_item->index, + &carbon_item->submenu); + if (!carbon_item->submenu) + { + const gchar *label_text; + CFStringRef cfstr = NULL; + + label_text = get_menu_label_text (widget, &label); + if (label_text) + cfstr = CFStringCreateWithCString (NULL, label_text, + kCFStringEncodingUTF8); + CreateNewMenu (0, 0, &carbon_item->submenu); + SetMenuTitleWithCFString (carbon_item->submenu, cfstr); + SetMenuItemHierarchicalMenu (carbon_item->menu, carbon_item->index, + carbon_item->submenu); + if (cfstr) + CFRelease (cfstr); + } + + sync_menu_shell (GTK_MENU_SHELL (submenu), carbon_item->submenu, FALSE); + } + else + { + SetMenuItemHierarchicalMenu (carbon_item->menu, carbon_item->index, + NULL); + carbon_item->submenu = NULL; + } +} + +static void +carbon_menu_item_update_label (CarbonMenuItem *carbon_item, + GtkWidget *widget) +{ + GtkWidget *label; + const gchar *label_text; + CFStringRef cfstr = NULL; + + label_text = get_menu_label_text (widget, &label); + if (label_text) + cfstr = CFStringCreateWithCString (NULL, label_text, + kCFStringEncodingUTF8); + + SetMenuItemTextWithCFString (carbon_item->menu, carbon_item->index, + cfstr); + + if (cfstr) + CFRelease (cfstr); +} + +static void +carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item, + GtkWidget *widget) +{ + GtkWidget *label; + + get_menu_label_text (widget, &label); + + if (GTK_IS_ACCEL_LABEL (label) && + GTK_ACCEL_LABEL (label)->accel_closure) + { + GtkAccelKey *key; + + key = gtk_accel_group_find (GTK_ACCEL_LABEL (label)->accel_group, + accel_find_func, + GTK_ACCEL_LABEL (label)->accel_closure); + + if (key && + key->accel_key && + key->accel_flags & GTK_ACCEL_VISIBLE) + { + GdkDisplay *display = gtk_widget_get_display (widget); + GdkKeymap *keymap = gdk_keymap_get_for_display (display); + GdkKeymapKey *keys; + gint n_keys; + + if (gdk_keymap_get_entries_for_keyval (keymap, key->accel_key, + &keys, &n_keys)) + { + UInt8 modifiers = 0; + + SetMenuItemCommandKey (carbon_item->menu, carbon_item->index, + true, keys[0].keycode); + + g_free (keys); + + if (key->accel_mods) + { + if (key->accel_mods & GDK_SHIFT_MASK) + modifiers |= kMenuShiftModifier; + + if (key->accel_mods & GDK_MOD1_MASK) + modifiers |= kMenuOptionModifier; + } + + if (!(key->accel_mods & GDK_CONTROL_MASK)) + { + modifiers |= kMenuNoCommandModifier; + } + + SetMenuItemModifiers (carbon_item->menu, carbon_item->index, + modifiers); + + return; + } + } + } + + /* otherwise, clear the menu shortcut */ + SetMenuItemModifiers (carbon_item->menu, carbon_item->index, + kMenuNoModifiers | kMenuNoCommandModifier); + ChangeMenuItemAttributes (carbon_item->menu, carbon_item->index, + 0, kMenuItemAttrUseVirtualKey); + SetMenuItemCommandKey (carbon_item->menu, carbon_item->index, + false, 0); +} + +static void +carbon_menu_item_accel_changed (GtkAccelGroup *accel_group, + guint keyval, + GdkModifierType modifier, + GClosure *accel_closure, + GtkWidget *widget) +{ + CarbonMenuItem *carbon_item = carbon_menu_item_get (widget); + GtkWidget *label; + + get_menu_label_text (widget, &label); + + if (GTK_IS_ACCEL_LABEL (label) && + GTK_ACCEL_LABEL (label)->accel_closure == accel_closure) + carbon_menu_item_update_accelerator (carbon_item, widget); +} + +static void +carbon_menu_item_update_accel_closure (CarbonMenuItem *carbon_item, + GtkWidget *widget) +{ + GtkAccelGroup *group; + GtkWidget *label; + + get_menu_label_text (widget, &label); + + if (carbon_item->accel_closure) + { + group = gtk_accel_group_from_accel_closure (carbon_item->accel_closure); + if (group) + g_signal_handlers_disconnect_by_func (group, + carbon_menu_item_accel_changed, + widget); + + g_closure_unref (carbon_item->accel_closure); + carbon_item->accel_closure = NULL; + } + + if (GTK_IS_ACCEL_LABEL (label)) + carbon_item->accel_closure = GTK_ACCEL_LABEL (label)->accel_closure; + + if (carbon_item->accel_closure) + { + g_closure_ref (carbon_item->accel_closure); + + group = gtk_accel_group_from_accel_closure (carbon_item->accel_closure); + + g_signal_connect_object (group, "accel-changed", + G_CALLBACK (carbon_menu_item_accel_changed), + widget, 0); + } + + carbon_menu_item_update_accelerator (carbon_item, widget); +} + +static void +carbon_menu_item_notify (GObject *object, + GParamSpec *pspec, + CarbonMenuItem *carbon_item) +{ + if (!strcmp (pspec->name, "sensitive") || + !strcmp (pspec->name, "visible")) + { + carbon_menu_item_update_state (carbon_item, GTK_WIDGET (object)); + } + else if (!strcmp (pspec->name, "active")) + { + carbon_menu_item_update_active (carbon_item, GTK_WIDGET (object)); + } + else if (!strcmp (pspec->name, "submenu")) + { + carbon_menu_item_update_submenu (carbon_item, GTK_WIDGET (object)); + } +} + +static void +carbon_menu_item_notify_label (GObject *object, + GParamSpec *pspec, + gpointer data) +{ + CarbonMenuItem *carbon_item = carbon_menu_item_get (GTK_WIDGET (object)); + + if (!strcmp (pspec->name, "label")) + { + carbon_menu_item_update_label (carbon_item, + GTK_WIDGET (object)); + } + else if (!strcmp (pspec->name, "accel-closure")) + { + carbon_menu_item_update_accel_closure (carbon_item, + GTK_WIDGET (object)); + } +} + +static CarbonMenuItem * +carbon_menu_item_connect (GtkWidget *menu_item, + GtkWidget *label, + MenuRef menu, + MenuItemIndex index) +{ + CarbonMenuItem *carbon_item = carbon_menu_item_get (menu_item); + + if (!carbon_item) + { + carbon_item = carbon_menu_item_new (); + + g_object_set_qdata_full (G_OBJECT (menu_item), carbon_menu_item_quark, + carbon_item, + (GDestroyNotify) carbon_menu_item_free); + + g_signal_connect (menu_item, "notify", + G_CALLBACK (carbon_menu_item_notify), + carbon_item); + + if (label) + g_signal_connect_swapped (label, "notify::label", + G_CALLBACK (carbon_menu_item_notify_label), + menu_item); + } + + carbon_item->menu = menu; + carbon_item->index = index; + + return carbon_item; +} + +/* + * carbon event handler + */ + +gboolean menuitem_activate_wrapper(gpointer data) +{ + gtk_menu_item_activate((GtkMenuItem*)data); + return FALSE; +} + +static OSStatus +menu_event_handler_func (EventHandlerCallRef event_handler_call_ref, + EventRef event_ref, + void *data) +{ + UInt32 event_class = GetEventClass (event_ref); + UInt32 event_kind = GetEventKind (event_ref); + MenuRef menu_ref; + + switch (event_class) + { + case kEventClassCommand: + /* This is called when activating (is that the right GTK+ term?) + * a menu item. + */ + if (event_kind == kEventCommandProcess) + { + HICommand command; + OSStatus err; + + //g_print ("Menu: kEventClassCommand/kEventCommandProcess\n"); + + err = GetEventParameter (event_ref, kEventParamDirectObject, + typeHICommand, 0, + sizeof (command), 0, &command); + + if (err == noErr) + { + GtkWidget *widget = NULL; + + if (command.commandID == kHICommandQuit) + { + gtk_main_quit (); /* Just testing... */ + return noErr; + } + + /* Get any GtkWidget associated with the item. */ + err = GetMenuItemProperty (command.menu.menuRef, + command.menu.menuItemIndex, + GTK_QUARTZ_MENU_CREATOR, + GTK_QUARTZ_ITEM_WIDGET, + sizeof (widget), 0, &widget); + if (err == noErr && widget) + { + g_idle_add(menuitem_activate_wrapper, + (gpointer)GTK_MENU_ITEM (widget)); + return noErr; + } + } + } + break; + + case kEventClassMenu: + GetEventParameter (event_ref, + kEventParamDirectObject, + typeMenuRef, + NULL, + sizeof (menu_ref), + NULL, + &menu_ref); + + switch (event_kind) + { + case kEventMenuTargetItem: + /* This is called when an item is selected (what is the + * GTK+ term? prelight?) + */ + //g_print ("kEventClassMenu/kEventMenuTargetItem\n"); + break; + + case kEventMenuOpening: + /* Is it possible to dynamically build the menu here? We + * can at least set visibility/sensitivity. + */ + //g_print ("kEventClassMenu/kEventMenuOpening\n"); + break; + + case kEventMenuClosed: + //g_print ("kEventClassMenu/kEventMenuClosed\n"); + break; + + default: + break; + } + + break; + + default: + break; + } + + return CallNextEventHandler (event_handler_call_ref, event_ref); +} + +static void +setup_menu_event_handler (void) +{ + EventHandlerUPP menu_event_handler_upp; + EventHandlerRef menu_event_handler_ref; + const EventTypeSpec menu_events[] = { + { kEventClassCommand, kEventCommandProcess }, + { kEventClassMenu, kEventMenuTargetItem }, + { kEventClassMenu, kEventMenuOpening }, + { kEventClassMenu, kEventMenuClosed } + }; + + /* FIXME: We might have to install one per window? */ + + menu_event_handler_upp = NewEventHandlerUPP (menu_event_handler_func); + InstallEventHandler (GetApplicationEventTarget (), menu_event_handler_upp, + GetEventTypeCount (menu_events), menu_events, 0, + &menu_event_handler_ref); + +#if 0 + /* FIXME: Remove the handler with: */ + RemoveEventHandler(menu_event_handler_ref); + DisposeEventHandlerUPP(menu_event_handler_upp); +#endif +} + +static void +sync_menu_shell (GtkMenuShell *menu_shell, + MenuRef carbon_menu, + gboolean toplevel) +{ + GList *children; + GList *l; + MenuItemIndex carbon_index = 1; + + carbon_menu_connect (GTK_WIDGET (menu_shell), carbon_menu); + + children = gtk_container_get_children (GTK_CONTAINER (menu_shell)); + + UInt16 carbon_item_count = CountMenuItems(carbon_menu); + + for (l = children; l; l = l->next) + { + GtkWidget *menu_item = l->data; + CarbonMenuItem *carbon_item; + + if (GTK_IS_TEAROFF_MENU_ITEM (menu_item)) + continue; + + if (toplevel && g_object_get_data (G_OBJECT (menu_item), + "gtk-empty-menu-item")) + continue; + + GtkWidget *label = NULL; + const gchar *label_text = NULL; + + label_text = get_menu_label_text (menu_item, &label); + if (label_text && strcmp(label_text, "_SKIP_") == 0) + { + carbon_index++; + continue; + } + else if (!label_text) + label_text = ""; + + MenuItemAttributes attributes = 0; + if (GTK_IS_SEPARATOR_MENU_ITEM (menu_item)) + attributes |= kMenuItemAttrSeparator; + if (!GTK_WIDGET_IS_SENSITIVE (menu_item)) + attributes |= kMenuItemAttrDisabled; + if (!GTK_WIDGET_VISIBLE (menu_item)) + attributes |= kMenuItemAttrHidden; + + CFStringRef cfstr = CFStringCreateWithCString (NULL, label_text, + kCFStringEncodingUTF8); + if (carbon_index > carbon_item_count) + AppendMenuItemTextWithCFString(carbon_menu, cfstr, attributes, 0, + NULL); + else if (!toplevel && (carbon_index > carbon_item_count)) + InsertMenuItemTextWithCFString (carbon_menu, cfstr, + carbon_index, attributes, 0); + else + SetMenuItemTextWithCFString(carbon_menu, carbon_index, cfstr); + CFRelease (cfstr); + + MenuItemAttributes c_attributes = kMenuItemAttrSectionHeader | + kMenuItemAttrAutoDisable; + if (!(attributes & kMenuItemAttrDisabled)) + c_attributes |= kMenuItemAttrDisabled; + if (!(attributes & kMenuItemAttrSeparator)) + c_attributes |= kMenuItemAttrSeparator; + if (!(attributes & kMenuItemAttrHidden)) + c_attributes |= kMenuItemAttrHidden; + ChangeMenuItemAttributes(carbon_menu, carbon_index, + attributes, c_attributes); + SetMenuItemProperty (carbon_menu, carbon_index, + GTK_QUARTZ_MENU_CREATOR, + GTK_QUARTZ_ITEM_WIDGET, + sizeof (menu_item), &menu_item); + + carbon_item = carbon_menu_item_connect (menu_item, label, + carbon_menu, + carbon_index); + + if (GTK_IS_CHECK_MENU_ITEM (menu_item)) + carbon_menu_item_update_active (carbon_item, menu_item); + + carbon_menu_item_update_accel_closure (carbon_item, menu_item); + + if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item))) + carbon_menu_item_update_submenu (carbon_item, menu_item); + + carbon_index++; + } + + while (carbon_index <= carbon_item_count) + { + DeleteMenuItem (carbon_menu, carbon_index); + carbon_index++; + } + + g_list_free (children); +} + +void +sync_menu_takeover_menu (GtkMenuShell *menu_shell) +{ + static MenuRef carbon_menubar = NULL; + + g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); + + if (carbon_menu_quark == 0) + carbon_menu_quark = g_quark_from_static_string ("CarbonMenu"); + + if (carbon_menu_item_quark == 0) + carbon_menu_item_quark = g_quark_from_static_string ("CarbonMenuItem"); + + if (!carbon_menubar) + { + carbon_menubar = AcquireRootMenu(); + setup_menu_event_handler (); + } + + sync_menu_shell (menu_shell, carbon_menubar, TRUE); +} diff --git a/src/osx/syncmenu/sync-menu.h b/src/osx/syncmenu/sync-menu.h new file mode 100644 index 0000000000..0715a31e29 --- /dev/null +++ b/src/osx/syncmenu/sync-menu.h @@ -0,0 +1,27 @@ +/* GTK+ Integration for the Mac OS X Menubar. + * + * Copyright (C) 2007 Pioneer Research Center USA, Inc. + * + * 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. + */ + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +void sync_menu_takeover_menu (GtkMenuShell *menu_shell); + +G_END_DECLS diff --git a/src/osx/syncmenu/test-menu.c b/src/osx/syncmenu/test-menu.c new file mode 100644 index 0000000000..102ec5287d --- /dev/null +++ b/src/osx/syncmenu/test-menu.c @@ -0,0 +1,107 @@ +#include <gtk/gtk.h> + +#include "sync-menu.h" + +GtkWidget *open_item; +GtkWidget *copy_item; + +static void +menu_item_activate_cb (GtkWidget *item, + gpointer user_data) +{ + gboolean visible; + gboolean sensitive; + + g_print ("Item activated: %s\n", (gchar *) user_data); + + g_object_get (G_OBJECT (copy_item), + "visible", &visible, + "sensitive", &sensitive, + NULL); + + if (item == open_item) { + gtk_widget_set_sensitive (copy_item, !sensitive); + /*g_object_set (G_OBJECT (copy_item), "visible", !visible, NULL);*/ + } +} + +static GtkWidget * +test_setup_menu (void) +{ + GtkWidget *menubar; + GtkWidget *menu; + GtkWidget *item; + + menubar = gtk_menu_bar_new (); + + item = gtk_menu_item_new_with_label ("File"); + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item); + menu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); + item = gtk_menu_item_new_with_label ("Open"); + open_item = item; + g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "open"); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + item = gtk_menu_item_new_with_label ("Quit"); + g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "quit"); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("Edit"); + + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item); + menu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); + item = gtk_menu_item_new_with_label ("Copy"); + copy_item = item; + g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "copy"); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + item = gtk_menu_item_new_with_label ("Paste"); + g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "paste"); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_label ("Help"); + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item); + menu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); + item = gtk_menu_item_new_with_label ("About"); + g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "about"); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + return menubar; +} + +int +main (int argc, char **argv) +{ + GtkWidget *window; + GtkWidget *vbox; + GtkWidget *menubar; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_default_size (GTK_WINDOW (window), 400, 300); + g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); + + vbox = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (window), vbox); + + menubar = test_setup_menu (); + gtk_box_pack_start (GTK_BOX (vbox), + menubar, + FALSE, TRUE, 0); + + gtk_box_pack_start (GTK_BOX (vbox), + gtk_label_new ("Some window content here"), + TRUE, TRUE, 0); + + gtk_widget_show_all (window); + + gtk_widget_hide (menubar); + + sync_menu_takeover_menu (GTK_MENU_SHELL (menubar)); + + gtk_main (); + + return 0; +} diff --git a/src/osx/syncmenu/test-menu.py b/src/osx/syncmenu/test-menu.py new file mode 100644 index 0000000000..b9c4471c8a --- /dev/null +++ b/src/osx/syncmenu/test-menu.py @@ -0,0 +1,78 @@ +import gtk, syncmenu + + +open_item = None +copy_item = None + + +def menu_item_activate_cb(item, user_data): + global open_item, copy_item + print "Item activated: %s" % user_data + + #g_object_get (G_OBJECT (copy_item), + # "visible", &visible, + # "sensitive", &sensitive, + # NULL) + + #if (item == open_item) { + #gtk_widget_set_sensitive (copy_item, !sensitive) + #/*g_object_set (G_OBJECT (copy_item), "visible", !visible, NULL)*/ + + +def test_setup_menu(): + global open_item, copy_item + menubar = gtk.MenuBar() + + item = gtk.MenuItem("File") + menubar.append(item) + menu = gtk.Menu() + item.set_submenu(menu) + item = gtk.MenuItem("Open") + open_item = item + item.connect("activate", menu_item_activate_cb, "open") + menu.append(item) + item = gtk.MenuItem("Quit") + item.connect("activate", menu_item_activate_cb, "quit") + menu.append(item) + + item = gtk.MenuItem("Edit") + + menubar.append(item) + menu = gtk.Menu() + item.set_submenu(menu) + item = gtk.MenuItem("Copy") + copy_item = item + item.connect("activate", menu_item_activate_cb, "copy") + menu.append(item) + item = gtk.MenuItem("Paste") + item.connect("activate", menu_item_activate_cb, "paste") + menu.append(item) + + item = gtk.MenuItem("Help") + menubar.append(item) + menu = gtk.Menu() + item.set_submenu(menu) + item = gtk.MenuItem("About") + item.connect("activate", menu_item_activate_cb, "about") + menu.append(item) + + return menubar + + +window = gtk.Window(gtk.WINDOW_TOPLEVEL) +window.set_default_size(400, 300) +window.connect("destroy", gtk.main_quit, None) + +vbox = gtk.VBox(False, 0) +window.add(vbox) + +menubar = test_setup_menu() +vbox.pack_start(menubar, False, True, 0) +vbox.pack_start(gtk.Label("Some window content here"), True, True, 0) + +window.show_all() +menubar.hide() + +syncmenu.takeover_menu(menubar) + +gtk.main() diff --git a/src/profile_window.py b/src/profile_window.py index 94a4cde4f1..8fa581d494 100644 --- a/src/profile_window.py +++ b/src/profile_window.py @@ -1,17 +1,22 @@ ## profile_window.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## # THIS FILE IS FOR **OUR** PROFILE (when we edit our INFO) @@ -23,35 +28,11 @@ import os import gtkgui_helpers import dialogs +import vcard 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''' @@ -66,6 +47,7 @@ class ProfileWindow: self.account = account self.jid = gajim.get_jid_from_account(account) + self.dialog = None self.avatar_mime_type = None self.avatar_encoded = None self.message_id = self.statusbar.push(self.context_id, @@ -94,6 +76,8 @@ class ProfileWindow: if self.remove_statusbar_timeout_id is not None: gobject.source_remove(self.remove_statusbar_timeout_id) del gajim.interface.instances[self.account]['profile'] + if self.dialog: # Image chooser dialog + self.dialog.destroy() def on_profile_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: @@ -156,6 +140,7 @@ class ProfileWindow: dialogs.ErrorDialog(_('Could not load image')) return self.dialog.destroy() + self.dialog = None button = self.xml.get_widget('PHOTO_button') image = button.get_image() image.set_from_pixbuf(pixbuf) @@ -173,10 +158,18 @@ class ProfileWindow: def on_clear(widget): self.dialog.destroy() + self.dialog = None self.on_clear_button_clicked(widget) - self.dialog = dialogs.AvatarChooserDialog(on_response_ok = on_ok, - on_response_clear = on_clear) + def on_cancel(widget): + self.dialog.destroy() + self.dialog = None + + if self.dialog: + self.dialog.present() + else: + self.dialog = dialogs.AvatarChooserDialog(on_response_ok = on_ok, + on_response_cancel = on_cancel, on_response_clear = on_clear) def on_PHOTO_button_press_event(self, widget, event): '''If right-clicked, show popup''' @@ -211,19 +204,19 @@ class ProfileWindow: except AttributeError: pass - def set_values(self, vcard): + def set_values(self, vcard_): button = self.xml.get_widget('PHOTO_button') image = button.get_image() text_button = self.xml.get_widget('NOPHOTO_button') - if not 'PHOTO' in vcard: + if not 'PHOTO' in vcard_: # set default image image.set_from_pixbuf(None) button.hide() text_button.show() - for i in vcard.keys(): + for i in vcard_.keys(): if i == 'PHOTO': pixbuf, self.avatar_encoded, self.avatar_mime_type = \ - get_avatar_pixbuf_encoded_mime(vcard[i]) + vcard.get_avatar_pixbuf_encoded_mime(vcard_[i]) if not pixbuf: image.set_from_pixbuf(None) button.hide() @@ -235,21 +228,21 @@ class ProfileWindow: text_button.hide() continue if i == 'ADR' or i == 'TEL' or i == 'EMAIL': - for entry in vcard[i]: + 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]) + 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) + vcard_[i], 0) else: - self.set_value(i + '_entry', vcard[i]) + 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) @@ -262,10 +255,10 @@ class ProfileWindow: self.progressbar.set_fraction(0) self.update_progressbar_timeout_id = None - def add_to_vcard(self, vcard, entry, txt): + def add_to_vcard(self, vcard_, entry, txt): '''Add an information to the vCard dictionary''' entries = entry.split('_') - loc = vcard + loc = vcard_ if len(entries) == 3: # We need to use lists if not loc.has_key(entries[0]): loc[entries[0]] = [] @@ -278,14 +271,14 @@ class ProfileWindow: e[entries[2]] = txt else: loc[entries[0]].append({entries[1]: '', entries[2]: txt}) - return vcard + 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 + return vcard_ def make_vcard(self): '''make the vCard dictionary''' @@ -296,11 +289,11 @@ class ProfileWindow: '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 = {} + 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) + vcard_ = self.add_to_vcard(vcard_, e, txt) # DESC textview buff = self.xml.get_widget('DESC_textview').get_buffer() @@ -308,14 +301,14 @@ class ProfileWindow: end_iter = buff.get_end_iter() txt = buff.get_text(start_iter, end_iter, 0) if txt != '': - vcard['DESC'] = txt.decode('utf-8') + vcard_['DESC'] = txt.decode('utf-8') # Avatar if self.avatar_encoded: - vcard['PHOTO'] = {'BINVAL': self.avatar_encoded} + vcard_['PHOTO'] = {'BINVAL': self.avatar_encoded} if self.avatar_mime_type: - vcard['PHOTO']['TYPE'] = self.avatar_mime_type - return vcard + vcard_['PHOTO']['TYPE'] = self.avatar_mime_type + return vcard_ def on_ok_button_clicked(self, widget): if self.update_progressbar_timeout_id: @@ -326,14 +319,14 @@ class ProfileWindow: _('Without a connection you can not publish your contact ' 'information.')) return - vcard = self.make_vcard() + vcard_ = self.make_vcard() nick = '' - if vcard.has_key('NICKNAME'): - nick = vcard['NICKNAME'] + 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) + gajim.connections[self.account].send_vcard(vcard_) self.message_id = self.statusbar.push(self.context_id, _('Sending profile...')) self.progressbar.show() diff --git a/src/remote_control.py b/src/remote_control.py index e6712e8b58..3bde37b729 100644 --- a/src/remote_control.py +++ b/src/remote_control.py @@ -1,21 +1,26 @@ ## remote_control.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005-2006 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2005-2006 Andrew Sayman <lorien420@myrealbox.com> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> ## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gobject import os @@ -434,11 +439,11 @@ class SignalObject(dbus.service.Object): 'accounts', con.name, 'resource'))) return result - @dbus.service.method(INTERFACE, in_signature='s', out_signature='av') + @dbus.service.method(INTERFACE, in_signature='s', out_signature='aa{sv}') def list_contacts(self, account): '''list all contacts in the roster. If the first argument is specified, then return the contacts for the specified account''' - result = dbus.Array([], signature='a{sv}') + result = dbus.Array([], signature='aa{sv}') accounts = gajim.contacts.get_accounts() if len(accounts) == 0: return result diff --git a/src/roster_window.py b/src/roster_window.py index 474f07dbc4..0ccc129670 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1,26 +1,33 @@ # -*- coding: utf-8 -*- ## roster_window.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2007 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005-2006 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> ## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> +## Copyright (C) 2007 Stephan Erb <steve-e@h3c.de> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import pango import gobject import os +import sys import time import urllib @@ -53,6 +60,12 @@ from common import dbus_support if dbus_support.supported: from music_track_listener import MusicTrackListener import dbus +from lastfm_track_listener import LastFMTrackListener + +import sys +if sys.platform == 'darwin': + from osx import syncmenu + #(icon, name, type, jid, account, editable, second pixbuf) ( @@ -272,7 +285,8 @@ class RosterWindow: if len(self.get_contact_iter(jid, account)): return if jid == gajim.get_jid_from_account(account): - self.add_self_contact(account) + if contact.resource != gajim.connections[account].server_resource: + 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 @@ -332,6 +346,7 @@ class RosterWindow: model.append(i, (None, name, 'contact', jid, account, None)) self.draw_contact(jid, account) self.draw_avatar(jid, account) + self.draw_account(account) # Redraw parent to change icon self.draw_contact(big_brother_jid, big_brother_account) return @@ -390,6 +405,7 @@ class RosterWindow: self.tree.expand_row(model.get_path(iterG), False) self.draw_contact(jid, account) self.draw_avatar(jid, account) + self.draw_account(account) # put the children under this iter for data in shown_family: contacts = gajim.contacts.get_contacts(data['account'], @@ -749,13 +765,14 @@ class RosterWindow: for iter in iters: model[iter][C_SECPIXBUF] = scaled_pixbuf - def join_gc_room(self, account, room_jid, nick, password, minimize = False): + def join_gc_room(self, account, room_jid, nick, password, minimize=False, + is_continued=False): '''joins the room immediatelly''' if gajim.interface.msg_win_mgr.has_window(room_jid, account) and \ gajim.gc_connected[account][room_jid]: - win = gajim.interface.msg_win_mgr.get_window(room_jid, account) + win = gajim.interface.msg_win_mgr.get_window(room_jid, account) win.window.present() - win.set_active_tab(room_jid, account) + win.set_active_tab(room_jid, account) dialogs.ErrorDialog(_('You are already in group chat %s') % room_jid) return minimized_control_exists = False @@ -778,7 +795,7 @@ class RosterWindow: return if not minimized_control_exists and \ not gajim.interface.msg_win_mgr.has_window(room_jid, account): - self.new_room(room_jid, nick, account) + self.new_room(room_jid, nick, account, is_continued=is_continued) if not minimized_control_exists: gc_win = gajim.interface.msg_win_mgr.get_window(room_jid, account) gc_win.set_active_tab(room_jid, account) @@ -821,13 +838,6 @@ class RosterWindow: gajim.interface.instances[account]['privacy_lists'] = \ dialogs.PrivacyListsWindow(account) - def on_blocked_contacts_menuitem_activate(self, widget, account): - if gajim.interface.instances[account].has_key('blocked_contacts'): - gajim.interface.instances[account]['blocked_contacts'].window.present() - else: - gajim.interface.instances[account]['blocked_contacts'] = \ - dialogs.BlockedContactsWindow(account) - def on_set_motd_menuitem_activate(self, widget, account): server = gajim.config.get_per('accounts', account, 'hostname') server += '/announce/motd' @@ -857,10 +867,7 @@ class RosterWindow: xml = gtkgui_helpers.get_glade('advanced_menuitem_menu.glade') advanced_menuitem_menu = xml.get_widget('advanced_menuitem_menu') - send_single_message_menuitem = xml.get_widget( - 'send_single_message_menuitem') xml_console_menuitem = xml.get_widget('xml_console_menuitem') - blocked_contacts_menuitem = xml.get_widget('blocked_contacts_menuitem') privacy_lists_menuitem = xml.get_widget('privacy_lists_menuitem') administrator_menuitem = xml.get_widget('administrator_menuitem') send_server_message_menuitem = xml.get_widget( @@ -874,25 +881,18 @@ class RosterWindow: if gajim.connections[account] and gajim.connections[account].\ privacy_rules_supported: - blocked_contacts_menuitem.connect('activate', - self.on_blocked_contacts_menuitem_activate, account) privacy_lists_menuitem.connect('activate', self.on_privacy_lists_menuitem_activate, account) else: - blocked_contacts_menuitem.set_sensitive(False) privacy_lists_menuitem.set_sensitive(False) if gajim.connections[account].is_zeroconf: - send_single_message_menuitem.set_sensitive(False) administrator_menuitem.set_sensitive(False) send_server_message_menuitem.set_sensitive(False) set_motd_menuitem.set_sensitive(False) update_motd_menuitem.set_sensitive(False) delete_motd_menuitem.set_sensitive(False) else: - send_single_message_menuitem.connect('activate', - self.on_send_single_message_menuitem_activate, account) - send_server_message_menuitem.connect('activate', self.on_send_server_message_menuitem_activate, account) @@ -909,11 +909,20 @@ class RosterWindow: return advanced_menuitem_menu - def make_menu(self): - '''create the main window's menus''' - if not self.actions_menu_needs_rebuild: + def set_actions_menu_needs_rebuild(self): + self.actions_menu_needs_rebuild = True + # Force the rebuild now since the on_activates on the menu itself does + # not work with the os/x top level menubar + if sys.platform == 'darwin': + self.make_menu(force = True) + return + + def make_menu(self, force = False): + '''create the main window\'s menus''' + if not force and not self.actions_menu_needs_rebuild: return new_chat_menuitem = self.xml.get_widget('new_chat_menuitem') + single_message_menuitem = self.xml.get_widget('send_single_message_menuitem') join_gc_menuitem = self.xml.get_widget('join_gc_menuitem') muc_icon = self.load_icon('muc_active') if muc_icon: @@ -951,11 +960,21 @@ class RosterWindow: self.pep_services_menuitem_handler_id) self.pep_services_menuitem_handler_id = None + if self.single_message_menuitem_handler_id: + single_message_menuitem.handler_disconnect( + self.single_message_menuitem_handler_id) + self.single_message_menuitem_handler_id = None + + if self.profile_avatar_menuitem_handler_id: + profile_avatar_menuitem.handler_disconnect( + self.profile_avatar_menuitem_handler_id) + self.profile_avatar_menuitem_handler_id = None # remove the existing submenus add_new_contact_menuitem.remove_submenu() service_disco_menuitem.remove_submenu() join_gc_menuitem.remove_submenu() + single_message_menuitem.remove_submenu() new_chat_menuitem.remove_submenu() advanced_menuitem.remove_submenu() profile_avatar_menuitem.remove_submenu() @@ -972,10 +991,14 @@ class RosterWindow: join_gc_menuitem.set_submenu(gc_sub_menu) connected_accounts = gajim.get_number_of_connected_accounts() + + connected_accounts_with_private_storage = 0 + if connected_accounts > 1: # 2 or more accounts? make submenus add_sub_menu = gtk.Menu() disco_sub_menu = gtk.Menu() new_chat_sub_menu = gtk.Menu() + single_message_sub_menu = gtk.Menu() accounts_list = gajim.contacts.get_accounts() accounts_list.sort() @@ -989,21 +1012,27 @@ class RosterWindow: False) new_chat_sub_menu.append(new_chat_item) new_chat_item.connect('activate', - self.on_new_chat_menuitem_activate, account) + self.on_new_chat_menuitem_activate, account) if gajim.config.get_per('accounts', account, 'is_zeroconf'): continue + + # single message + single_message_item = gtk.MenuItem(_('using account %s') % account, + False) + single_message_sub_menu.append(single_message_item) + single_message_item.connect('activate', + self.on_send_single_message_menuitem_activate, account) # join gc + if gajim.connections[account].private_storage_supported: + connected_accounts_with_private_storage += 1 gc_item = gtk.MenuItem(_('using account %s') % account, False) gc_sub_menu.append(gc_item) gc_menuitem_menu = gtk.Menu() self.add_bookmarks_list(gc_menuitem_menu, account) gc_item.set_submenu(gc_menuitem_menu) - # the 'manage gc bookmarks' item is shown - # below to avoid duplicate code - # add add_item = gtk.MenuItem(_('to %s account') % account, False) add_sub_menu.append(add_item) @@ -1015,20 +1044,24 @@ class RosterWindow: disco_item.connect('activate', self.on_service_disco_menuitem_activate, account) - 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() + single_message_menuitem.set_submenu(single_message_sub_menu) + single_message_sub_menu.show_all() gc_sub_menu.show_all() elif connected_accounts == 1: # user has only one account for account in gajim.connections: if gajim.account_is_connected(account): # THE connected account # gc + if gajim.connections[account].private_storage_supported: + connected_accounts_with_private_storage += 1 self.add_bookmarks_list(gc_sub_menu, account) + gc_sub_menu.show_all() # add if not self.add_new_contact_handler_id: self.add_new_contact_handler_id =\ @@ -1044,6 +1077,13 @@ class RosterWindow: self.new_chat_menuitem_handler_id = new_chat_menuitem.\ connect('activate', self.on_new_chat_menuitem_activate, account) + + # single message + if not self.single_message_menuitem_handler_id: + self.single_message_menuitem_handler_id = \ + single_message_menuitem.connect('activate', \ + self.on_send_single_message_menuitem_activate, account) + # new chat accel if not self.have_new_chat_accel: ag = gtk.accel_groups_from_object(self.window)[0] @@ -1056,26 +1096,39 @@ class RosterWindow: if connected_accounts == 0: # no connected accounts, make the menuitems insensitive for item in [new_chat_menuitem, join_gc_menuitem,\ - add_new_contact_menuitem, service_disco_menuitem]: + add_new_contact_menuitem, service_disco_menuitem,\ + single_message_menuitem]: item.set_sensitive(False) else: # we have one or more connected accounts for item in [new_chat_menuitem, join_gc_menuitem,\ - add_new_contact_menuitem, service_disco_menuitem]: + add_new_contact_menuitem, service_disco_menuitem,\ + single_message_menuitem]: item.set_sensitive(True) - # disable some fields if only local account is there if connected_accounts == 1: for account in gajim.connections: if gajim.account_is_connected(account) and \ gajim.connections[account].is_zeroconf: for item in [join_gc_menuitem,\ - add_new_contact_menuitem, service_disco_menuitem]: + add_new_contact_menuitem, service_disco_menuitem, + single_message_menuitem]: item.set_sensitive(False) + if connected_accounts_with_private_storage > 0: + # At least one account with private storage support # show the 'manage gc bookmarks' item newitem = gtk.SeparatorMenuItem() # separator gc_sub_menu.append(newitem) + 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) + gc_sub_menu.append(newitem) + gc_sub_menu.show_all() + connected_accounts_with_vcard = [] for account in gajim.connections: if gajim.account_is_connected(account) and \ @@ -1129,15 +1182,6 @@ class RosterWindow: profile_avatar_menuitem.set_sensitive(True) pep_services_menuitem.set_sensitive(True) - 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) - gc_sub_menu.append(newitem) - gc_sub_menu.show_all() - # Advanced Actions if len(gajim.connections) == 0: # user has no accounts advanced_menuitem.set_sensitive(False) @@ -1170,6 +1214,9 @@ class RosterWindow: advanced_menuitem.set_submenu(advanced_sub_menu) advanced_sub_menu.show_all() + if sys.platform == 'darwin': + syncmenu.takeover_menu(self.xml.get_widget('menubar')) + self.actions_menu_needs_rebuild = False def _add_history_manager_menuitem(self, menu): @@ -1237,10 +1284,15 @@ class RosterWindow: '''reads from db the unread messages, and fire them up''' for jid in gajim.contacts.get_jid_list(account): results = gajim.logger.get_unread_msgs_for_jid(jid) + + # XXX unread messages should probably have their session saved with them + if results: + session = gajim.connections[account].make_new_session(jid) + for result in results: tim = time.localtime(float(result[2])) self.on_message(jid, result[1], tim, account, msg_type = 'chat', - msg_id = result[0]) + msg_id = result[0], session = session) def fill_contacts_and_groups_dicts(self, array, account): '''fill gajim.contacts and gajim.groups''' @@ -1248,6 +1300,8 @@ class RosterWindow: gajim.contacts.add_account(account) if not gajim.groups.has_key(account): gajim.groups[account] = {} + # Empty contact list + gajim.contacts.clear_contacts(account) for jid in array.keys(): jids = jid.split('/') #get jid @@ -1350,6 +1404,11 @@ class RosterWindow: ctrl.print_conversation(_('%s is now %s') % (name, uf_show), 'status') + # unset custom status + if gajim.interface.status_sent_to_users.has_key(account) and \ + contact.jid in gajim.interface.status_sent_to_users[account]: + del gajim.interface.status_sent_to_users[account][contact.jid] + if not contact.groups: self.draw_group(_('General'), account) else: @@ -1468,9 +1527,10 @@ class RosterWindow: name = account_name, show = connection.get_status(), sub = '', status = connection.status, resource = connection.server_resource, - priority = connection.priority, - keyID = gajim.config.get_per('accounts', connection.name, - 'keyid')) + priority = connection.priority) + if gajim.connections[account].gpg: + contact.keyID = gajim.config.get_per('accounts', connection.name, + 'keyid') contacts.append(contact) # if we're online ... if connection.connection: @@ -1481,6 +1541,14 @@ class RosterWindow: resources = roster.getResources(jid) # ...get the contact info for our other online resources for resource in resources: + # Check if we already have this resource + found = False + for contact_ in contacts: + if contact_.resource == resource: + found = True + break + if found: + continue show = roster.getShow(jid+'/'+resource) if not show: show = 'online' @@ -1517,8 +1585,7 @@ class RosterWindow: gajim.contacts.remove_contact(account, contact) return - def remove(widget, list_): - self.dialog.destroy() + def remove(list_): for (contact, account) in list_: full_jid = contact.get_full_jid() gajim.connections[account].unsubscribe_agent(full_jid) @@ -1550,7 +1617,7 @@ class RosterWindow: 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, + dialogs.ConfirmationDialog(pritext, sectext, on_response_ok = (remove, list_)) def on_block(self, widget, iter, group_list): @@ -1564,7 +1631,7 @@ class RosterWindow: accounts.append(account) self.send_status(account, 'offline', msg, to = jid) new_rule = {'order': u'1', 'type': u'jid', 'action': u'deny', - 'value' : jid, 'child': [u'message', u'iq', u'presence-out']} + 'value' : jid, 'child': [u'message', u'iq', u'presence-out']} gajim.connections[account].blocked_list.append(new_rule) # needed for draw_contact: gajim.connections[account].blocked_contacts.append(jid) @@ -1578,8 +1645,8 @@ class RosterWindow: accounts.append(account) self.send_status(account, 'offline', msg, to=contact.jid) new_rule = {'order': u'1', 'type': u'jid', - 'action': u'deny', 'value' : contact.jid, - 'child': [u'message', u'iq', u'presence-out']} + 'action': u'deny', 'value' : contact.jid, + 'child': [u'message', u'iq', u'presence-out']} gajim.connections[account].blocked_list.append(new_rule) # needed for draw_contact: gajim.connections[account].blocked_contacts.append(contact.jid) @@ -1597,7 +1664,7 @@ class RosterWindow: self.send_status(account, 'offline', msg, to=contact.jid) self.draw_contact(contact.jid, account) new_rule = {'order': u'1', 'type': u'group', 'action': u'deny', - 'value' : group, 'child': [u'message', u'iq', u'presence-out']} + 'value' : group, 'child': [u'message', u'iq', u'presence-out']} gajim.connections[account].blocked_list.append(new_rule) for account in accounts: gajim.connections[account].set_privacy_list( @@ -1883,7 +1950,7 @@ class RosterWindow: try: pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) if filesize > 16384: # 16 kb - # get the image at 'notification size' + # get the image at 'tooltip size' # and hope that user did not specify in ACE crazy size pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'tooltip') except gobject.GError, msg: # unknown format @@ -1891,21 +1958,14 @@ class RosterWindow: msg = str(msg) dialogs.ErrorDialog(_('Could not load image'), msg) return - puny_jid = helpers.sanitize_filename(contact.jid) - path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + '_local.png' - pixbuf.save(path_to_file, 'png') + gajim.interface.save_avatar_files(contact.jid, pixbuf, local = True) dlg.destroy() self.update_avatar_in_gui(contact.jid, account) def on_clear(widget): dlg.destroy() # Delete file: - puny_jid = helpers.sanitize_filename(contact.jid) - path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + '_local.png' - try: - os.remove(path_to_file) - except OSError: - gajim.log.debug('Cannot remove %s' % path_to_file) + gajim.interface.remove_avatar_files(contact.jid, local = True) self.update_avatar_in_gui(contact.jid, account) dlg = dialogs.AvatarChooserDialog(on_response_ok = on_ok, @@ -1917,10 +1977,11 @@ class RosterWindow: def on_history(self, widget, contact, account): '''When history menuitem is activated: call log window''' - if gajim.interface.instances['logs'].has_key(contact.jid): - gajim.interface.instances['logs'][contact.jid].window.present() + if gajim.interface.instances.has_key('logs'): + gajim.interface.instances['logs'].window.present() + gajim.interface.instances['logs'].open_history(contact.jid, account) else: - gajim.interface.instances['logs'][contact.jid] = history_window.\ + gajim.interface.instances['logs'] = history_window.\ HistoryWindow(contact.jid, account) def on_disconnect(self, widget, jid, account): @@ -1950,7 +2011,8 @@ class RosterWindow: jid += '/' + contact.resource dialogs.SingleMessageWindow(account, jid, 'send') - def on_send_file_menuitem_activate(self, widget, account, contact): + def on_send_file_menuitem_activate(self, widget, contact, account, + resource=None): gajim.interface.instances['file_transfers'].show_file_send_request( account, contact) @@ -1958,7 +2020,7 @@ class RosterWindow: dialogs.AddSpecialNotificationDialog(jid) def make_contact_menu(self, event, iter): - '''Make contact's popup menu''' + '''Make contact\'s popup menu''' model = self.tree.get_model() jid = model[iter][C_JID].decode('utf-8') tree_path = model.get_path(iter) @@ -1967,7 +2029,8 @@ class RosterWindow: contact = gajim.contacts.get_contact_with_highest_priority(account, jid) if not contact: return - + + # Zeroconf Account 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( @@ -1976,8 +2039,6 @@ class RosterWindow: 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') @@ -1995,7 +2056,6 @@ class RosterWindow: 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') @@ -2024,10 +2084,9 @@ class RosterWindow: 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) + self.on_send_file_menuitem_activate, contact, account) + else: # if we do no have resource we cannot do much + send_file_menuitem.set_sensitive(False) rename_menuitem.connect('activate', self.on_rename, iter, tree_path) if contact.show in ('offline', 'error'): @@ -2046,18 +2105,16 @@ class RosterWindow: edit_groups_menuitem.connect('activate', self.on_edit_groups, [( contact,account)]) - if gajim.config.get('usegpg'): + if gajim.connections[account].gpg: assign_openpgp_key_menuitem.connect('activate', self.on_assign_pgp_key, contact, account) + else: + assign_openpgp_key_menuitem.set_sensitive(False) else: # contact is in group 'Not in Roster' - edit_groups_menuitem.hide() + edit_groups_menuitem.set_sensitive(False) 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) + assign_openpgp_key_menuitem.set_sensitive(False) # Remove many items when it's self contact row if our_jid: @@ -2098,8 +2155,6 @@ class RosterWindow: unblock_menuitem = xml.get_widget('unblock_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') @@ -2130,8 +2185,9 @@ class RosterWindow: jid in gajim.interface.status_sent_to_users[account]: send_custom_status_menuitem.set_image( self.load_icon(gajim.interface.status_sent_to_users[account][jid])) - else: - send_custom_status_menuitem.set_image(None) + else: + icon = gtk.image_new_from_stock(gtk.STOCK_NETWORK, gtk.ICON_SIZE_MENU) + send_custom_status_menuitem.set_image(icon) if not our_jid: # add a special img for rename menuitem @@ -2145,8 +2201,7 @@ class RosterWindow: if muc_icon: invite_menuitem.set_image(muc_icon) - above_subscription_separator = xml.get_widget( - 'above_subscription_separator') + # Subscription submenu subscription_menuitem = xml.get_widget('subscription_menuitem') send_auth_menuitem, ask_auth_menuitem, revoke_auth_menuitem =\ subscription_menuitem.get_submenu().get_children() @@ -2154,7 +2209,6 @@ class RosterWindow: 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') @@ -2169,7 +2223,7 @@ class RosterWindow: 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): - invite_to_new_room_menuitem.set_sensitive(False) + invite_menuitem.set_sensitive(False) invite_to_submenu.append(invite_to_new_room_menuitem) rooms = [] # a list of (room_jid, account) tuple for gc_control in gajim.interface.msg_win_mgr.get_controls( @@ -2201,7 +2255,7 @@ class RosterWindow: status_menuitems.append(status_menuitem) if len(contacts) > 1: # several resources def resources_submenu(action, room_jid = None, room_account = None): - ''' Build a submenu with contact's resources. + ''' Build a submenu with contact\'s resources. room_jid and room_account are for action self.on_invite_to_room ''' sub_menu = gtk.Menu() @@ -2229,6 +2283,8 @@ class RosterWindow: start_chat_menuitem.set_submenu(resources_submenu( self.on_open_chat_window)) + send_file_menuitem.set_submenu(resources_submenu( + self.on_send_file_menuitem_activate)) execute_command_menuitem.set_submenu(resources_submenu( self.on_execute_command)) invite_to_new_room_menuitem.set_submenu(resources_submenu( @@ -2242,15 +2298,8 @@ class RosterWindow: else: # one resource start_chat_menuitem.connect('activate', self.on_open_chat_window, contact, account) - # we cannot execute commands when the resource is unknown - # TODO: that's true only if the entity is a contact, - # TODO: we need to show this also for transports - if contact.resource: - execute_command_menuitem.connect('activate', - self.on_execute_command, contact, account, contact.resource) - else: - execute_command_menuitem.hide() - execute_command_menuitem.set_no_show_all(True) + execute_command_menuitem.connect('activate', self.on_execute_command, + contact, account, contact.resource) our_jid_other_resource = None if our_jid: @@ -2268,12 +2317,11 @@ class RosterWindow: our_jid_other_resource) invite_to_submenu.append(menuitem) - 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) + if contact.resource: + send_file_menuitem.connect('activate', + self.on_send_file_menuitem_activate, contact, account) + else: # if we do not have resource we cannot send file + send_file_menuitem.set_sensitive(False) send_single_message_menuitem.connect('activate', self.on_send_single_message_menuitem_activate, account, contact) @@ -2288,16 +2336,16 @@ class RosterWindow: 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) 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)]) - if gajim.config.get('usegpg'): + if gajim.connections[account].gpg: assign_openpgp_key_menuitem.connect('activate', self.on_assign_pgp_key, contact, account) + else: + assign_openpgp_key_menuitem.set_sensitive(False) if contact.sub in ('from', 'both'): send_auth_menuitem.set_sensitive(False) @@ -2319,45 +2367,39 @@ class RosterWindow: else: # contact is in group 'Not in Roster' add_to_roster_menuitem.set_no_show_all(False) - 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) - subscription_menuitem.hide() - subscription_menuitem.set_no_show_all(True) + edit_groups_menuitem.set_sensitive(False) + assign_openpgp_key_menuitem.set_sensitive(False) + subscription_menuitem.set_sensitive(False) add_to_roster_menuitem.connect('activate', self.on_add_to_roster, contact, account) set_custom_avatar_menuitem.connect('activate', self.on_set_custom_avatar_activate, contact, account) - # Remove many items when it's self contact row + # Hide items when it's self contact row if our_jid: menuitem = xml.get_widget('manage_contact') - menuitem.set_no_show_all(True) - menuitem.hide() + menuitem.set_sensitive(False) # Unsensitive many items when account is offline if gajim.connections[account].connected < 2: for widget in [start_chat_menuitem, send_single_message_menuitem, rename_menuitem, edit_groups_menuitem, send_file_menuitem, subscription_menuitem, add_to_roster_menuitem, - remove_from_roster_menuitem, execute_command_menuitem]: + remove_from_roster_menuitem, execute_command_menuitem, + send_custom_status_menuitem]: widget.set_sensitive(False) if gajim.connections[account] and gajim.connections[account].\ privacy_rules_supported: if jid in gajim.connections[account].blocked_contacts: - block_menuitem.set_no_show_all(True) - unblock_menuitem.connect('activate', self.on_unblock, iter, None) - block_menuitem.hide() + block_menuitem.set_no_show_all(True) + unblock_menuitem.connect('activate', self.on_unblock, iter, None) + block_menuitem.hide() else: - unblock_menuitem.set_no_show_all(True) - block_menuitem.connect('activate', self.on_block, iter, None) - unblock_menuitem.hide() + unblock_menuitem.set_no_show_all(True) + block_menuitem.connect('activate', self.on_block, iter, None) + unblock_menuitem.hide() else: unblock_menuitem.set_no_show_all(True) block_menuitem.set_sensitive(False) @@ -2505,15 +2547,23 @@ class RosterWindow: item = gtk.SeparatorMenuItem() # separator menu.append(item) + # Manage Transport submenu + item = gtk.ImageMenuItem(_('_Manage Contacts')) + icon = gtk.image_new_from_stock(gtk.STOCK_PROPERTIES, gtk.ICON_SIZE_MENU) + item.set_image(icon) + manage_contacts_submenu = gtk.Menu() + item.set_submenu(manage_contacts_submenu) + menu.append(item) + # Edit Groups edit_groups_item = gtk.ImageMenuItem(_('Edit _Groups')) icon = gtk.image_new_from_stock(gtk.STOCK_EDIT, gtk.ICON_SIZE_MENU) edit_groups_item.set_image(icon) - menu.append(edit_groups_item) + manage_contacts_submenu.append(edit_groups_item) edit_groups_item.connect('activate', self.on_edit_groups, list_) item = gtk.SeparatorMenuItem() # separator - menu.append(item) + manage_contacts_submenu.append(item) # Block if is_blocked and gajim.connections[account].privacy_rules_supported: @@ -2521,22 +2571,22 @@ class RosterWindow: icon = gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU) unblock_menuitem.set_image(icon) unblock_menuitem.connect('activate', self.on_unblock, None, list_) - menu.append(unblock_menuitem) + manage_contacts_submenu.append(unblock_menuitem) else: block_menuitem = gtk.ImageMenuItem(_('_Block')) icon = gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU) block_menuitem.set_image(icon) block_menuitem.connect('activate', self.on_block, None, list_) - menu.append(block_menuitem) + manage_contacts_submenu.append(block_menuitem) if not gajim.connections[account].privacy_rules_supported: block_menuitem.set_sensitive(False) # Remove - remove_item = gtk.ImageMenuItem(_('_Remove from Roster')) + remove_item = gtk.ImageMenuItem(_('_Remove')) icon = gtk.image_new_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_MENU) remove_item.set_image(icon) - menu.append(remove_item) + manage_contacts_submenu.append(remove_item) remove_item.connect('activate', self.on_req_usub, list_) # unsensitive remove if one account is not connected if one_account_offline: @@ -2565,7 +2615,17 @@ class RosterWindow: maximize_menuitem.connect('activate', self.on_groupchat_maximized, \ jid, account) menu.append(maximize_menuitem) - + + disconnect_menuitem = gtk.ImageMenuItem(_('_Disconnect')) + disconnect_icon = gtk.image_new_from_stock(gtk.STOCK_DISCONNECT, \ + gtk.ICON_SIZE_MENU) + disconnect_menuitem.set_image(disconnect_icon) + disconnect_menuitem .connect('activate', self.on_disconnect, jid, account) + menu.append(disconnect_menuitem) + + item = gtk.SeparatorMenuItem() # separator + menu.append(item) + history_menuitem = gtk.ImageMenuItem(_('_History')) history_icon = gtk.image_new_from_stock(gtk.STOCK_JUSTIFY_FILL, \ gtk.ICON_SIZE_MENU) @@ -2574,16 +2634,6 @@ class RosterWindow: contact, account) menu.append(history_menuitem) - item = gtk.SeparatorMenuItem() # separator - menu.append(item) - - disconnect_menuitem = gtk.ImageMenuItem(_('_Disconnect')) - disconnect_icon = gtk.image_new_from_stock(gtk.STOCK_DISCONNECT, \ - gtk.ICON_SIZE_MENU) - disconnect_menuitem.set_image(disconnect_icon) - disconnect_menuitem .connect('activate', self.on_disconnect, jid, account) - menu.append(disconnect_menuitem) - event_button = gtkgui_helpers.get_possible_button_event(event) menu.attach_to_widget(self.tree, None) @@ -2678,12 +2728,10 @@ class RosterWindow: if group in gajim.connections[account].blocked_groups: send_custom_status_menuitem.set_image(self.load_icon('offline')) send_custom_status_menuitem.set_sensitive(False) - elif gajim.interface.status_sent_to_groups.has_key(account) and \ - group in gajim.interface.status_sent_to_groups[account]: - send_custom_status_menuitem.set_image(self.load_icon( - gajim.interface.status_sent_to_groups[account][group])) else: - send_custom_status_menuitem.set_image(None) + icon = gtk.image_new_from_stock(gtk.STOCK_NETWORK, + gtk.ICON_SIZE_MENU) + send_custom_status_menuitem.set_image(icon) status_menuitems = gtk.Menu() send_custom_status_menuitem.set_submenu(status_menuitems) iconset = gajim.config.get('iconset') @@ -2698,8 +2746,13 @@ class RosterWindow: status_menuitem.set_image(icon) status_menuitems.append(status_menuitem) menu.append(send_custom_status_menuitem) + + # there is no singlemessage and custom status for zeroconf + if gajim.config.get_per('accounts', account, 'is_zeroconf'): + send_custom_status_menuitem.set_sensitive(False) + send_group_message_item.set_sensitive(False) - if not group in helpers.special_groups + (_('General'),): + if not group in helpers.special_groups: item = gtk.SeparatorMenuItem() # separator menu.append(item) @@ -2740,15 +2793,22 @@ class RosterWindow: block_menuitem.set_sensitive(False) # Remove group - remove_item = gtk.ImageMenuItem(_('_Remove from Roster')) + remove_item = gtk.ImageMenuItem(_('_Remove')) 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_remove_group_item_activated, group, account) + # unsensitive if account is not connected if gajim.connections[account].connected < 2: rename_item.set_sensitive(False) + + # General group cannot be changed + if group == _('General'): + rename_item.set_sensitive(False) + block_menuitem.set_sensitive(False) + remove_item.set_sensitive(False) event_button = gtkgui_helpers.get_possible_button_event(event) @@ -2758,7 +2818,7 @@ class RosterWindow: menu.popup(None, None, None, event_button, event.time) def make_transport_menu(self, event, iter): - '''Make transport's popup menu''' + '''Make transport\'s popup menu''' model = self.tree.get_model() jid = model[iter][C_JID].decode('utf-8') path = model.get_path(iter) @@ -2766,28 +2826,62 @@ class RosterWindow: contact = gajim.contacts.get_contact_with_highest_priority(account, jid) menu = gtk.Menu() - # Log on - item = gtk.ImageMenuItem(_('_Log on')) - icon = gtk.image_new_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_MENU) - item.set_image(icon) - menu.append(item) - show = contact.show + # Connect/Didconnect + show = contact.show 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) - - # Log off - item = gtk.ImageMenuItem(_('Log _off')) - icon = gtk.image_new_from_stock(gtk.STOCK_NO, gtk.ICON_SIZE_MENU) + # Log Off + item = gtk.ImageMenuItem(_('_Log off')) + icon = gtk.image_new_from_stock(gtk.STOCK_DISCONNECT, gtk.ICON_SIZE_MENU) + item.connect('activate', self.on_agent_logging, jid, 'unavailable', + account) + else: + # Log on + item = gtk.ImageMenuItem(_('_Log on')) + icon = gtk.image_new_from_stock(gtk.STOCK_CONNECT, gtk.ICON_SIZE_MENU) + item.connect('activate', self.on_agent_logging, jid, None, account) item.set_image(icon) menu.append(item) - if show in ('offline', 'error') or gajim.account_is_disconnected( - account): + if show == 'error': item.set_sensitive(False) - item.connect('activate', self.on_agent_logging, jid, 'unavailable', - account) + + item = gtk.SeparatorMenuItem() # separator + menu.append(item) + + # Send single message + item = gtk.ImageMenuItem(_('Send Single Message')) + icon = gtk.image_new_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_MENU) + item.set_image(icon) + item.connect('activate', + self.on_send_single_message_menuitem_activate, account, contact) + menu.append(item) + # Send Custom Status + send_custom_status_menuitem = gtk.ImageMenuItem(_('Send Cus_tom Status')) + # add a special img for this menuitem + if gajim.interface.status_sent_to_users.has_key(account) and \ + jid in gajim.interface.status_sent_to_users[account]: + send_custom_status_menuitem.set_image(self.load_icon( + gajim.interface.status_sent_to_users[account][jid])) + else: + icon = gtk.image_new_from_stock(gtk.STOCK_NETWORK, + gtk.ICON_SIZE_MENU) + send_custom_status_menuitem.set_image(icon) + status_menuitems = gtk.Menu() + send_custom_status_menuitem.set_submenu(status_menuitems) + iconset = gajim.config.get('iconset') + path = os.path.join(helpers.get_iconset_path(iconset), '16x16') + for s in ['online', 'chat', 'away', 'xa', 'dnd', 'offline']: + # icon MUST be different instance for every item + state_images = self.load_iconset(path) + status_menuitem = gtk.ImageMenuItem(helpers.get_uf_show(s)) + status_menuitem.connect('activate', self.on_send_custom_status, + [(contact, account)], s) + icon = state_images[s] + status_menuitem.set_image(icon) + status_menuitems.append(status_menuitem) + menu.append(send_custom_status_menuitem) + item = gtk.SeparatorMenuItem() # separator menu.append(item) @@ -2801,11 +2895,19 @@ class RosterWindow: if gajim.account_is_disconnected(account): item.set_sensitive(False) - # Edit - item = gtk.ImageMenuItem(_('_Edit')) - icon = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) + # Manage Transport submenu + item = gtk.ImageMenuItem(_('_Manage Transport')) + icon = gtk.image_new_from_stock(gtk.STOCK_PROPERTIES, gtk.ICON_SIZE_MENU) item.set_image(icon) + manage_transport_submenu = gtk.Menu() + item.set_submenu(manage_transport_submenu) menu.append(item) + + # Modify Transport + item = gtk.ImageMenuItem(_('_Modify Transport')) + icon = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) + item.set_image(icon) + manage_transport_submenu.append(item) item.connect('activate', self.on_edit_agent, contact, account) if gajim.account_is_disconnected(account): item.set_sensitive(False) @@ -2818,23 +2920,27 @@ class RosterWindow: img = gtk.Image() img.set_from_file(path_to_kbd_input_img) item.set_image(img) - menu.append(item) + manage_transport_submenu.append(item) item.connect('activate', self.on_rename, iter, path) if gajim.account_is_disconnected(account): item.set_sensitive(False) - item = gtk.SeparatorMenuItem() # sepator - menu.append(item) + item = gtk.SeparatorMenuItem() # separator + manage_transport_submenu.append(item) # Remove - item = gtk.ImageMenuItem(_('_Remove from Roster')) + item = gtk.ImageMenuItem(_('_Remove')) icon = gtk.image_new_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_MENU) item.set_image(icon) - menu.append(item) + manage_transport_submenu.append(item) item.connect('activate', self.on_remove_agent, [(contact, account)]) if gajim.account_is_disconnected(account): item.set_sensitive(False) + + item = gtk.SeparatorMenuItem() # separator + menu.append(item) + # Information information_menuitem = gtk.ImageMenuItem(_('_Information')) icon = gtk.image_new_from_stock(gtk.STOCK_INFO, gtk.ICON_SIZE_MENU) information_menuitem.set_image(icon) @@ -2893,6 +2999,7 @@ class RosterWindow: account_context_menu = xml.get_widget('account_context_menu') status_menuitem = xml.get_widget('status_menuitem') + start_chat_menuitem = xml.get_widget('start_chat_menuitem') join_group_chat_menuitem = xml.get_widget('join_group_chat_menuitem') muc_icon = self.load_icon('muc_active') if muc_icon: @@ -2971,6 +3078,9 @@ class RosterWindow: contact = gajim.contacts.create_contact(jid = hostname) # Fake contact execute_command_menuitem.connect('activate', self.on_execute_command, contact, account) + + start_chat_menuitem.connect('activate', + self.on_new_chat_menuitem_activate, account) gc_sub_menu = gtk.Menu() # gc is always a submenu join_group_chat_menuitem.set_submenu(gc_sub_menu) @@ -2979,8 +3089,8 @@ class RosterWindow: # 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, - execute_command_menuitem, pep_menuitem]: + join_group_chat_menuitem, execute_command_menuitem, pep_menuitem, + start_chat_menuitem]: widget.set_sensitive(False) else: xml = gtkgui_helpers.get_glade('zeroconf_context_menu.glade') @@ -3170,7 +3280,7 @@ class RosterWindow: 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': + elif type_ == 'contact': self.make_multiple_contact_menu(event, iters) elif type_ == 'account' and len(iters) == 1: self.make_account_menu(event, iters[0]) @@ -3195,6 +3305,21 @@ class RosterWindow: return True + def on_roster_treeview_button_release_event(self, widget, event): + try: + path, column, x, y = self.tree.get_path_at_pos(int(event.x), + int(event.y)) + except TypeError: + return False + + if event.button == 1: # Left click + if gajim.single_click and not event.state & gtk.gdk.SHIFT_MASK and \ + not event.state & gtk.gdk.CONTROL_MASK: + # Check if button has been pressed on the same row + if self.clicked_path == path: + self.on_row_activated(widget, path) + self.clicked_path = None + def on_roster_treeview_button_press_event(self, widget, event): # hide tooltip, no matter the button is pressed self.tooltip.hide_tooltip() @@ -3255,6 +3380,24 @@ class RosterWindow: type_ = model[path][C_TYPE] if gajim.single_click and not event.state & gtk.gdk.SHIFT_MASK and \ not event.state & gtk.gdk.CONTROL_MASK: + # Don't handle dubble click if we press icon of a metacontact + iter = model.get_iter(path) + if x < 27 and type_ == 'contact' and model.iter_has_child(iter): + 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) + return + # We just save on which row we press button, and open chat window on + # button release to be able to do DND without opening chat window + self.clicked_path = path + return self.on_row_activated(widget, path) else: if type_ == 'group' and x < 27: @@ -3278,12 +3421,11 @@ class RosterWindow: 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() + def on_ok(is_checked, list_): remove_auth = True if len(list_) == 1: contact = list_[0][0] - if contact.sub != 'to' and self.dialog.is_checked(): + if contact.sub != 'to' and is_checked: remove_auth = False for (contact, account) in list_: gajim.connections[account].unsubscribe(contact.jid, remove_auth) @@ -3305,18 +3447,22 @@ class RosterWindow: if _('Not in Roster') in contact.groups: gajim.events.remove_events(account, contact.jid) self.readd_if_needed(contact, account) + + def on_ok2(list_): + on_ok(False, list_) + 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, + 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_)) + on_response_ok = (on_ok2, list_)) else: - self.dialog = dialogs.ConfirmationDialogCheck(pritext, + dialogs.ConfirmationDialogCheck(pritext, _('By removing this contact you also by default remove ' 'authorization resulting in him or her always seeing you as ' 'offline.'), @@ -3331,14 +3477,9 @@ class RosterWindow: 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_)) - + dialogs.ConfirmationDialog(pritext, sectext, + on_response_ok = (on_ok2, list_)) - def forget_gpg_passphrase(self, keyid): - if self.gpg_passphrase.has_key(keyid): - del self.gpg_passphrase[keyid] - return False def set_connecting_state(self, account): model = self.tree.get_model() @@ -3377,61 +3518,10 @@ class RosterWindow: gajim.config.set_per('accounts', account, 'savepass', True) passwords.save_password(account, passphrase) - keyid = None - use_gpg_agent = gajim.config.get('use_gpg_agent') - # we don't need to bother with the passphrase if we use the agent - if use_gpg_agent: - save_gpg_pass = False - else: - save_gpg_pass = gajim.config.get_per('accounts', account, - 'savegpgpass') - keyid = gajim.config.get_per('accounts', account, 'keyid') - if keyid and not gajim.config.get('usegpg'): - #TODO: make this string translatable - dialog = dialogs.WarningDialog('GPG is not usable', _('You will be connected to %s without OpenPGP.') % account) - if keyid and gajim.connections[account].connected < 2 and \ - gajim.config.get('usegpg'): - - if use_gpg_agent: - self.gpg_passphrase[keyid] = None - else: - if save_gpg_pass: - passphrase = gajim.config.get_per('accounts', account, - 'gpgpassword') - else: - if self.gpg_passphrase.has_key(keyid): - passphrase = self.gpg_passphrase[keyid] - save = False - else: - password_ok = False - count = 0 - title = _('Passphrase Required') - second = _('Enter GPG key passphrase for account %s.') % \ - account - while not password_ok and count < 3: - count += 1 - w = dialogs.PassphraseDialog(title, second, - _('Save passphrase')) - passphrase, save = w.run() - if passphrase == -1: - passphrase = None - password_ok = True - else: - password_ok = gajim.connections[account].\ - test_gpg_passphrase(passphrase) - title = _('Wrong Passphrase') - second = _('Please retype your GPG passphrase or ' - 'press Cancel.') - if passphrase != None: - self.gpg_passphrase[keyid] = passphrase - gobject.timeout_add(30000, self.forget_gpg_passphrase, - keyid) - if save: - gajim.config.set_per('accounts', account, 'savegpgpass', - True) - gajim.config.set_per('accounts', account, 'gpgpassword', - passphrase) - gajim.connections[account].gpg_passphrase(passphrase) + keyid = gajim.config.get_per('accounts', account, 'keyid') + if keyid and not gajim.connections[account].gpg: + dialog = dialogs.WarningDialog(_('GPG is not usable'), + _('You will be connected to %s without OpenPGP.') % account) if gajim.account_is_connected(account): if status == 'online' and gajim.interface.sleeper.getState() != \ @@ -3465,6 +3555,8 @@ class RosterWindow: if was_invisible and status != 'offline': # We come back from invisible, join bookmarks for bm in gajim.connections[account].bookmarks: + if bm['autojoin'] not in ('1', 'true'): + continue room_jid = bm['jid'] if room_jid in gajim.gc_connected[account] and \ gajim.gc_connected[account][room_jid]: @@ -3491,24 +3583,21 @@ class RosterWindow: return False def change_status(self, widget, account, status): - def change(widget, account, status): - if self.dialog: - self.dialog.destroy() + def change(account, status): message = self.get_status_message(status) if message is None: # user pressed Cancel to change status message dialog return self.send_status(account, status, message) - self.dialog = None if status == 'invisible' and self.connected_rooms(account): - self.dialog = dialogs.ConfirmationDialog( + dialogs.ConfirmationDialog( _('You are participating in one or more group chats'), _('Changing your status to invisible will result in disconnection ' 'from those group chats. Are you sure you want to go invisible?'), on_response_ok = (change, account, status)) else: - change(None, account, status) + change(account, status) def on_send_custom_status(self, widget, contact_list, show, group=None): '''send custom status''' @@ -3543,8 +3632,9 @@ class RosterWindow: self.update_status_combobox() return status = model[active][2].decode('utf-8') - - if active == 7: # We choose change status message (7 is that) + statuses_unified = helpers.statuses_unified() + if (active == 7 and statuses_unified) or (active == 9 and not statuses_unified): + # We choose change status message (7 is that, or 9 if there is the "desync'ed" option) # do not change show, just show change status dialog status = model[self.previous_status_combobox_active][2].decode('utf-8') dlg = dialogs.ChangeStatusMessageDialog(status) @@ -3632,17 +3722,37 @@ class RosterWindow: self._music_track_changed_signal = None self._music_track_changed(None, None) + ## enable setting status msg from a Last.fm account + def enable_syncing_status_msg_from_lastfm(self, enabled): + '''if enabled is True, we start polling the Last.fm server, + and we update our status message accordinly''' + if enabled: + if self._music_track_changed_signal is None: + listener = LastFMTrackListener.get( + gajim.config.get('lastfm_username')) + 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 = LastFMTrackListener.get( + gajim.config.get('lastfm_username')) + listener.disconnect(self._music_track_changed_signal) + self._music_track_changed_signal = None + self._music_track_changed(None, None) + def _change_awn_icon_status(self, status): if not dbus_support.supported: # do nothing if user doesn't have D-Bus bindings return - bus = dbus.SessionBus() try: + bus = dbus.SessionBus() if not 'com.google.code.Awn' in bus.list_names(): # Awn is not installed return except: - pass + return iconset = gajim.config.get('iconset') prefix = os.path.join(helpers.get_iconset_path(iconset), '32x32') if status in ('chat', 'away', 'xa', 'dnd', 'invisible', 'offline'): @@ -3659,18 +3769,18 @@ class RosterWindow: pass def _music_track_changed(self, unused_listener, music_track_info, - account=''): - from common import pep - if account == '': - accounts = gajim.connections.keys() - if music_track_info is None: - artist = '' - title = '' - source = '' - track = '' - length = '' - else: - if hasattr(music_track_info, 'paused') and \ + account=''): + if gajim.config.get('use_pep'): + from common import pep + if account == '': + accounts = gajim.connections.keys() + if music_track_info is None: + artist = '' + title = '' + source = '' + track = '' + length = '' + elif hasattr(music_track_info, 'paused') and \ music_track_info.paused == 0: artist = '' title = '' @@ -3681,30 +3791,72 @@ class RosterWindow: artist = music_track_info.artist title = music_track_info.title source = music_track_info.album - print "change (%s - %s - %s) for %s" % (artist, source, title, account) - if account == '': - print "Multi accounts" - for account in accounts: - if not gajim.config.get_per('accounts', account, - 'sync_with_global_status'): - continue - if not gajim.connections[account].pep_supported: - continue + if account == '': + print "Multi accounts" + for account in accounts: + if not gajim.config.get_per('accounts', account, + 'sync_with_global_status'): + continue + if not gajim.connections[account].pep_supported: + continue + pep.user_send_tune(account, artist, title, source) + else: + print "Single account" pep.user_send_tune(account, artist, title, source) + return + # No PEP + accounts = gajim.connections.keys() + if music_track_info is None: + status_message = '' else: - print "Single account" - pep.user_send_tune(account, artist, title, source) - + if hasattr(music_track_info, 'paused') and \ + music_track_info.paused == 0: + status_message = '' + else: + status_message = '♪ ' + _('"%(title)s" by %(artist)s') % \ + {'title': music_track_info.title, + 'artist': music_track_info.artist } + ' ♪' + for account in accounts: + if not gajim.config.get_per('accounts', account, + 'sync_with_global_status'): + continue + if gajim.connections[account].connected < gajim.SHOW_LIST.index( + 'online') or gajim.connections[account].connected > gajim.SHOW_LIST.\ + index('invisible'): + continue + current_show = gajim.SHOW_LIST[gajim.connections[account].connected] + # Keep the last status message, replacing only the current song part + current_status_message = gajim.connections[account].status + song_offset = current_status_message.find('♪') + if song_offset >= 0: + current_status_message = current_status_message[0:song_offset] + current_status_message = current_status_message.strip() + '\n' + \ + status_message + self.send_status(account, current_show, current_status_message.strip()) 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, 'xa':3, 'dnd':4, 'invisible':5} + + # we check if there are more options in the combobox that it should + # if yes, we remove the first ones + while len(self.status_combobox.get_model()) > len(table)+2: + self.status_combobox.remove_text(0) + show = helpers.get_global_show() # temporarily block signal in order not to send status that we show # in the combobox self.combobox_callback_active = False - self.status_combobox.set_active(table[show]) + if helpers.statuses_unified(): + self.status_combobox.set_active(table[show]) + else: + uf_show = helpers.get_uf_show(show) + liststore = self.status_combobox.get_model() + liststore.prepend(['SEPARATOR', None, '', True]) + liststore.prepend([uf_show+" "+"(desync'ed)", self.jabber_state_images['16'][show], + show, False]) + self.status_combobox.set_active(0) self._change_awn_icon_status(show) self.combobox_callback_active = True if gajim.interface.systray_enabled: @@ -3734,21 +3886,27 @@ class RosterWindow: 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): - gajim.con_types[account] = None - for jid in gajim.contacts.get_jid_list(account): - lcontact = gajim.contacts.get_contacts(account, jid) - lcontact_copy = [] - for contact in lcontact: - lcontact_copy.append(contact) - for contact in lcontact_copy: - self.chg_contact_status(contact, 'offline', '', account) + else: + # No need to redraw contacts if we're quitting + if accountIter: + model[accountIter][C_SECPIXBUF] = None + if gajim.con_types.has_key(account): + gajim.con_types[account] = None + for jid in gajim.contacts.get_jid_list(account): + lcontact = gajim.contacts.get_contacts(account, jid) + lcontact_copy = [] + for contact in lcontact: + lcontact_copy.append(contact) + for contact in lcontact_copy: + self.chg_contact_status(contact, 'offline', '', account) self.actions_menu_needs_rebuild = True self.update_status_combobox() + # Force the rebuild now since the on_activates on the menu itself does + # not work with the os/x top level menubar + if sys.platform == 'darwin': + self.make_menu(force = True) - def new_private_chat(self, gc_contact, account): + def new_private_chat(self, gc_contact, account, session = None): contact = gajim.contacts.contact_from_gc_contact(gc_contact) type_ = message_control.TYPE_PM fjid = gc_contact.room_jid + '/' + gc_contact.name @@ -3756,24 +3914,25 @@ class RosterWindow: if not mw: mw = gajim.interface.msg_win_mgr.create_window(contact, account, type_) - chat_control = PrivateChatControl(mw, gc_contact, contact, account) + chat_control = PrivateChatControl(mw, gc_contact, contact, account, session) mw.new_tab(chat_control) 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(self, contact, account, resource = None): + def new_chat(self, contact, account, resource = None, session = None): # Get target window, create a control, and associate it with the window type_ = message_control.TYPE_CHAT fjid = contact.jid if resource: fjid += '/' + resource + mw = gajim.interface.msg_win_mgr.get_window(fjid, account) if not mw: mw = gajim.interface.msg_win_mgr.create_window(contact, account, type_) - chat_control = ChatControl(mw, contact, account, resource) + chat_control = ChatControl(mw, contact, account, session, resource) mw.new_tab(chat_control) @@ -3804,19 +3963,20 @@ class RosterWindow: mc = mw.get_control(fjid, account) mc.user_nick = gajim.nicks[account] - def new_room(self, room_jid, nick, account): + def new_room(self, room_jid, nick, account, is_continued=False): # Get target window, create a control, and associate it with the window contact = gajim.contacts.create_contact(jid = room_jid, name = nick) mw = gajim.interface.msg_win_mgr.get_window(contact.jid, account) if not mw: mw = gajim.interface.msg_win_mgr.create_window(contact, account, - GroupchatControl.TYPE_ID) - gc_control = GroupchatControl(mw, contact, account) + GroupchatControl.TYPE_ID) + gc_control = GroupchatControl(mw, contact, account, + is_continued=is_continued) mw.new_tab(gc_control) - def on_message(self, jid, msg, tim, account, encrypted = False, - msg_type = '', subject = None, resource = '', msg_id = None, - user_nick = '', advanced_notif_num = None, xhtml = None): + def on_message(self, jid, msg, tim, account, encrypted=False, msg_type='', + subject=None, resource='', msg_id=None, user_nick='', + advanced_notif_num=None, xhtml=None, session=None, form_node=None): '''when we receive a message''' contact = None # if chat window will be for specific resource @@ -3871,9 +4031,9 @@ class RosterWindow: 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, - action = 'receive', from_whom = jid, subject = subject, - message = msg, resource = resource) + dialogs.SingleMessageWindow(account, contact.jid, action='receive', + from_whom=jid, subject=subject, message=msg, resource=resource, + session=session, form_node=form_node) return # We print if window is opened and it's not a single message @@ -3881,6 +4041,8 @@ class RosterWindow: typ = '' if msg_type == 'error': typ = 'status' + if session: + ctrl.set_session(session) ctrl.print_conversation(msg, typ, tim = tim, encrypted = encrypted, subject = subject, xhtml = xhtml) if msg_id: @@ -3896,12 +4058,12 @@ class RosterWindow: 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, xhtml), show_in_roster = show_in_roster, - show_in_systray = show_in_systray) + encrypted, resource, msg_id, xhtml, session, form_node), + 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) + self.new_chat(contact, account, resource=resource_for_chat) if path and not self.dragging and gajim.config.get( 'scroll_roster_to_last_message'): # we curently see contact in our roster OR he @@ -3981,6 +4143,13 @@ class RosterWindow: gajim.interface.instances['file_transfers'].window.present() else: gajim.interface.instances['file_transfers'].window.show_all() + + def on_history_menuitem_activate(self, widget): + if gajim.interface.instances.has_key('logs'): + gajim.interface.instances['logs'].window.present() + else: + gajim.interface.instances['logs'] = history_window.\ + HistoryWindow() def on_show_transports_menuitem_activate(self, widget): gajim.config.set('show_transports_group', widget.get_active()) @@ -4132,8 +4301,9 @@ class RosterWindow: for ctrl in win.controls(): fjid = ctrl.get_full_jid() - if gajim.last_message_time[acct].has_key(fjid): - if time.time() - gajim.last_message_time[acct][fjid] < 2: + if gajim.last_message_time[ctrl.account].has_key(fjid): + if time.time() - gajim.last_message_time[ctrl.account][fjid]\ + < 2: recent = True break if unread: @@ -4165,8 +4335,8 @@ class RosterWindow: ft = gajim.interface.instances['file_transfers'] if event.type_ == 'normal': dialogs.SingleMessageWindow(account, jid, - action = 'receive', from_whom = jid, subject = data[1], - message = data[0], resource = data[5]) + action='receive', from_whom=jid, subject=data[1], message=data[0], + resource=data[5], session=data[8], form_node=data[9]) gajim.interface.remove_first_event(account, jid, event.type_) return True elif event.type_ == 'file-request': @@ -4203,14 +4373,14 @@ class RosterWindow: jid = jid + u'/' + resource adhoc_commands.CommandWindow(account, jid) - def on_open_chat_window(self, widget, contact, account, resource = None): + def on_open_chat_window(self, widget, contact, account, resource = None, session = None): # Get the window containing the chat fjid = contact.jid if resource: fjid += '/' + resource win = gajim.interface.msg_win_mgr.get_window(fjid, account) if not win: - self.new_chat(contact, account, resource = resource) + self.new_chat(contact, account, resource = resource, session = session) win = gajim.interface.msg_win_mgr.get_window(fjid, account) ctrl = win.get_control(fjid, account) # last message is long time ago @@ -4257,7 +4427,10 @@ class RosterWindow: jid = child_jid else: child_iter = model.iter_next(child_iter) + session = None if first_ev: + if first_ev.type_ in ('chat', 'normal'): + session = first_ev.parameters[8] fjid = jid if resource: fjid += '/' + resource @@ -4268,7 +4441,7 @@ class RosterWindow: 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) + self.on_open_chat_window(widget, c, account, resource = resource, session = session) def on_roster_treeview_row_activated(self, widget, path, col = 0): '''When an iter is double clicked: open the first event window''' @@ -4302,7 +4475,7 @@ class RosterWindow: self.tree.expand_row(pathG, False) self.draw_account(account) elif type_ == 'contact': - jid = model[iter][C_JID].decode('utf-8') + jid = model[iter][C_JID].decode('utf-8') account = model[iter][C_ACCOUNT].decode('utf-8') self.draw_contact(jid, account) @@ -4329,7 +4502,7 @@ class RosterWindow: self.collapsed_rows.append(account) self.draw_account(account) elif type_ == 'contact': - jid = model[iter][C_JID].decode('utf-8') + jid = model[iter][C_JID].decode('utf-8') account = model[iter][C_ACCOUNT].decode('utf-8') self.draw_contact(jid, account) @@ -4434,10 +4607,14 @@ class RosterWindow: # standard transport iconsets are loaded one time in init() t_path = os.path.join(gajim.DATA_DIR, 'iconsets', 'transports') folders = os.listdir(t_path) + if os.path.isdir(os.path.join(gajim.MY_ICONSETS_PATH, 'transports')): + t_path = os.path.join(gajim.MY_ICONSETS_PATH, 'transports') + folders += os.listdir(t_path) for transport in folders: if transport == '.svn': continue - folder = os.path.join(t_path, transport, '16x16') + folder = os.path.join(helpers.get_transport_path(transport), + '16x16') self.transports_state_images['opened'][transport] = \ self.load_iconset(folder, pixo, transport = True) self.transports_state_images['closed'][transport] = \ @@ -4474,6 +4651,8 @@ class RosterWindow: for account in gajim.connections: for addr in gajim.interface.instances[account]['disco']: gajim.interface.instances[account]['disco'][addr].paint_banner() + for ctrl in gajim.interface.minimized_controls[account].values(): + ctrl.repaint_themed_widgets() def on_show_offline_contacts_menuitem_activate(self, widget): '''when show offline option is changed: @@ -4758,16 +4937,15 @@ class RosterWindow: def on_drop_in_contact(self, widget, account_source, c_source, account_dest, c_dest, was_big_brother, context, etime): - if not gajim.connections[account_source].metacontacts_supported or not \ - gajim.connections[account_dest].metacontacts_supported: + if not gajim.connections[account_source].private_storage_supported or not\ + gajim.connections[account_dest].private_storage_supported: dialogs.WarningDialog(_('Metacontacts storage not supported by your ' 'server'), _('Your server does not support storing metacontacts information. ' - 'So those information will not be save on next reconnection.')) - def merge_contacts(widget = None): - if widget: # dialog has been shown - dlg.destroy() - if dlg.is_checked(): # user does not want to be asked again + 'So those information will not be saved on next reconnection.')) + def merge_contacts(is_checked=None): + if is_checked != None: # dialog has been shown + if is_checked: # user does not want to be asked again gajim.config.set('confirm_metacontacts', 'no') else: gajim.config.set('confirm_metacontacts', 'yes') @@ -4777,6 +4955,7 @@ class RosterWindow: # remove the source row self.remove_contact(c_source, account_source) # brother inherite big brother groups + old_groups = c_source.groups c_source.groups = [] for g in c_dest.groups: c_source.groups.append(g) @@ -4797,7 +4976,10 @@ class RosterWindow: self.draw_contact(_jid, _account) self.add_contact_to_roster(c_source.jid, account_source) self.draw_contact(c_dest.jid, account_dest) - + # FIXME: Why do groups have to be redrawn by hand? + for g in old_groups: + self.draw_group(g, account_source) + self.draw_account(account_source) context.finish(True, True, etime) confirm_metacontacts = gajim.config.get('confirm_metacontacts') @@ -4894,8 +5076,16 @@ class RosterWindow: uri = data.strip() uri_splitted = uri.split() # we may have more than one file dropped nb_uri = len(uri_splitted) - def _on_send_files(widget, account, jid, uris): - dialog.destroy() + # Check the URIs + bad_uris = [] + for a_uri in uri_splitted: + path = helpers.get_file_path_from_dnd_dropped_uri(a_uri) + if not os.path.isfile(path): + bad_uris.append(a_uri) + if len(bad_uris): + dialogs.ErrorDialog(_('Invalid file URI:'), '\n'.join(bad_uris)) + return + def _on_send_files(account, jid, uris): c = gajim.contacts.get_contact_with_highest_priority(account, jid) for uri in uris: path = helpers.get_file_path_from_dnd_dropped_uri(uri) @@ -4904,7 +5094,7 @@ class RosterWindow: account, c, path) # Popup dialog to confirm sending prim_text = 'Send file?' - sec_text = i18n.ngettext('Do you want to send that file to %s:', + sec_text = i18n.ngettext('Do you want to send this file to %s:', 'Do you want to send those files to %s:', nb_uri) %\ c_dest.get_shown_name() for uri in uri_splitted: @@ -4989,13 +5179,7 @@ class RosterWindow: return # Is the contact we drag a meta contact? - is_meta_contact = False - is_big_brother = False - tag = gajim.contacts.get_metacontacts_tag(account_source, jid_source) - if tag: - is_meta_contact = True - if model.iter_has_child(iter_source): - is_big_brother = True + is_big_brother = gajim.contacts.is_big_brother(account_source, jid_source) # Contact drop on group row or between two contacts if type_dest == 'group' or position == gtk.TREE_VIEW_DROP_BEFORE or \ @@ -5085,6 +5269,52 @@ class RosterWindow: self._last_selected_contact.append((jid, account)) self.draw_contact(jid, account, selected = True) + def setup_for_osx(self): + # Massage the GTK menu so it will match up to the OS/X nib style menu + # when passed to sync-menu and merged + main_menu = self.xml.get_widget('menubar') + app_item = gtk.MenuItem('Gajim') + main_menu.insert(app_item, 0) + win_item = gtk.MenuItem('Window') + main_menu.insert(win_item, 4) + actions_menu = self.xml.get_widget('actions_menu_menu') + quit_item = self.xml.get_widget('quit_menuitem') + actions_menu.remove(quit_item) + actions_menu.remove(self.xml.get_widget('separator1')) + edit_menu = self.xml.get_widget('edit_menu_menu') + #edit_menu.remove(self.xml.get_widget('preferences_menuitem')) + edit_menu.remove(self.xml.get_widget('separator2')) + help_menu = self.xml.get_widget('help_menu_menu') + about_item = self.xml.get_widget('about_menuitem') + help_menu.remove(about_item) + # Build up App menu + app_menu = gtk.Menu() + app_item.set_submenu(app_menu) + app_menu.append(about_item) + app_menu.append(gtk.MenuItem('__SKIP__')) + prefs_item = gtk.MenuItem('Preferences...') + prefs_item.connect('activate', self.on_preferences_menuitem_activate) + accels = gtk.AccelGroup() + self.xml.get_widget('roster_window').add_accel_group(accels) + prefs_item.add_accelerator('activate', accels, ord(','), + gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) + app_menu.append(prefs_item) + app_menu.append(gtk.MenuItem('__SKIP__')) + app_menu.append(gtk.MenuItem('__SKIP__')) + app_menu.append(gtk.MenuItem('__SKIP__')) + app_menu.append(gtk.MenuItem('__SKIP__')) + app_menu.append(gtk.MenuItem('__SKIP__')) + app_menu.append(gtk.MenuItem('__SKIP__')) + app_menu.append(gtk.MenuItem('__SKIP__')) + app_menu.append(quit_item) + app_menu.show_all() + # Do the merge baby! + syncmenu.takeover_menu(main_menu) + self.make_menu(force = True) + # Hide the GTK menubar itself and let the OS/X menubar do its thing + #self.xml.get_widget('menubar').hide() + return + def __init__(self): self.xml = gtkgui_helpers.get_glade('roster_window.glade') self.window = self.xml.get_widget('roster_window') @@ -5106,14 +5336,16 @@ class RosterWindow: 'closed': {}} self.last_save_dir = None - self.editing_path = None # path of row with cell in edit mode + self.editing_path = None # path of row with cell in edit mode self.add_new_contact_handler_id = False self.service_disco_handler_id = False self.new_chat_menuitem_handler_id = False + self.single_message_menuitem_handler_id = False self.profile_avatar_menuitem_handler_id = False self.pep_services_menuitem_handler_id = False self.actions_menu_needs_rebuild = True self.regroup = gajim.config.get('mergeaccounts') + self.clicked_path = None # Used remember on wich row we clicked if len(gajim.connections) < 2: # Do not merge accounts if only one exists self.regroup = False #FIXME: When list_accel_closures will be wrapped in pygtk @@ -5129,7 +5361,6 @@ class RosterWindow: self.popups_notification_height = 0 self.popup_notification_windows = [] - self.gpg_passphrase = {} #(icon, name, type, jid, account, editable, secondary_pixbuf) model = gtk.TreeStore(gtk.Image, str, str, str, str, gtk.gdk.Pixbuf) @@ -5143,13 +5374,16 @@ class RosterWindow: path = os.path.join(gajim.DATA_DIR, 'iconsets', 'transports') folders = os.listdir(path) + if os.path.isdir(os.path.join(gajim.MY_ICONSETS_PATH, 'transports')): + path = os.path.join(gajim.MY_ICONSETS_PATH, 'transports') + folders += os.listdir(path) for transport in folders: if transport == '.svn': continue - folder = os.path.join(path, transport, '32x32') + folder = os.path.join(helpers.get_transport_path(transport), '32x32') self.transports_state_images['32'][transport] = self.load_iconset( folder, transport = True) - folder = os.path.join(path, transport, '16x16') + folder = os.path.join(helpers.get_transport_path(transport), '16x16') self.transports_state_images['16'][transport] = self.load_iconset( folder, transport = True) @@ -5274,7 +5508,20 @@ class RosterWindow: self.tooltip = tooltips.RosterTooltip() self.draw_roster() - self.enable_syncing_status_msg_from_current_music_track(gajim.config.get('publish_tune')) + if gajim.config.get('use_pep'): + self.enable_syncing_status_msg_from_current_music_track(gajim.config.get('publish_tune')) + else: + ## Music Track notifications + ## FIXME: we use a timeout because changing status of + ## accounts has no effect until they are connected. + st = gajim.config.get('set_status_msg_from_current_music_track') + if st: + gobject.timeout_add(1000, + self.enable_syncing_status_msg_from_current_music_track, st) + else: + gobject.timeout_add(1000, + self.enable_syncing_status_msg_from_lastfm, + gajim.config.get('set_status_msg_from_lastfm')) if gajim.config.get('show_roster_on_startup'): self.window.show_all() @@ -5292,3 +5539,6 @@ class RosterWindow: # Create zeroconf in config file zeroconf = common.zeroconf.connection_zeroconf.ConnectionZeroconf( gajim.ZEROCONF_ACC_NAME) + + if sys.platform == 'darwin': + self.setup_for_osx() diff --git a/src/search_window.py b/src/search_window.py index ce40eb2829..df7af6ce77 100644 --- a/src/search_window.py +++ b/src/search_window.py @@ -1,21 +1,26 @@ # -*- coding: utf-8 -*- ## search_window.py ## -## Copyright (C) 2007 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2007 Yann Leboulanger <asterix@lagaule.org> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. import gobject import gtk -from common import xmpp, gajim, dataforms +from common import gajim, dataforms import gtkgui_helpers import dialogs @@ -191,6 +196,11 @@ class SearchWindow: return self.dataform = dataforms.ExtendForm(node = form) + if len(self.dataform.items) == 0: + # No result + self.label.set_text(_('No result')) + self.label.show() + return self.data_form_widget.set_sensitive(True) try: diff --git a/src/secrets.py b/src/secrets.py new file mode 100644 index 0000000000..a95f4cd0d6 --- /dev/null +++ b/src/secrets.py @@ -0,0 +1,194 @@ +from common.configpaths import gajimpaths + +from common import crypto +from common import exceptions + +import dialogs + +import os +import pickle + +import gtk + +import Crypto.Cipher.AES +import Crypto.Hash.SHA256 +import Crypto.PublicKey.RSA + +secrets_filename = gajimpaths['SECRETS_FILE'] +secrets_cache = None + +secrets_cipher = None +secrets_counter = None + +# strength of the encryption used on SECRETS_FILE +n = 256 + +class Counter: + def __init__(self, n, iv): + self.n = n + self.c = crypto.decode_mpi(iv) + + def __call__(self): + self.c = (self.c + 1) % (2 ** self.n) + return crypto.encode_mpi_with_padding(self.c) + +# return en/decrypter if it's cached, otherwise create it from the user's +# passphrase +def get_key(counter, passph=None): + global secrets_cipher, secrets_counter + + if secrets_cipher: + return secrets_cipher + + if not passph: + passph, checked = dialogs.PassphraseDialog(_('Passphrase Required'), + _('To continue, Gajim needs to access your stored secrets. Enter your passphrase') + ).run() + + if passph == -1: + raise exceptions.Cancelled + + sh = Crypto.Hash.SHA256.new() + sh.update(passph) + key = sh.digest() + + secrets_counter = counter + + secrets_cipher = Crypto.Cipher.AES.new(key, Crypto.Cipher.AES.MODE_CTR, + counter=secrets_counter) + + return secrets_cipher + +class Secrets: + def __init__(self, filename): + self.filename = filename + self.srs = {} + self.pubkeys = {} + self.privkeys = {} + + def _save(self): + global secrets_cipher, secrets_counter + + old_counter = secrets_counter.c + + # pickle doesn't appear to have problems with trailing whitespace + padded = crypto.pad_to_multiple(pickle.dumps(self), n / 8, ' ', False) + encrypted = secrets_cipher.encrypt(padded) + + f = open(secrets_filename, 'w') + f.write(crypto.encode_mpi_with_padding(old_counter) + encrypted) + f.close() + + def cancel(self): + raise exceptions.Cancelled + + def save(self): + passph1 = None + + def _cont1(passph, checked): + dialogs.PassphraseDialog(_('Confirm Passphrase'), + _('Enter your new passphrase again for confirmation'), + is_modal=False, ok_handler=(_cont2, passph), cancel_handler=self.cancel) + + def _cont2(passph, checked, passph1): + if passph != passph1: + dialogs.PassphraseDialog(_('Create Passphrase'), + _('Passphrases did not match.\n') + + _('Gajim needs you to create a passphrase to encrypt stored secrets'), + is_modal=False, ok_handler=_cont1, cancel_handler=self.cancel) + return + + counter = Counter(16, crypto.random_bytes(16)) + get_key(counter, passph1) + + self._save() + + if not os.path.exists(self.filename): + dialogs.PassphraseDialog(_('Create Passphrase'), + _('Gajim needs you to create a passphrase to encrypt stored secrets'), + is_modal=False, ok_handler=_cont1, cancel_handler=self.cancel) + else: + self._save() + + def retained_secrets(self, account, bare_jid): + try: + return self.srs[account][bare_jid] + except KeyError: + return [] + + # retained secrets are stored as a tuple of the secret and whether the user + # has verified it + def save_new_srs(self, account, jid, secret, verified): + if not account in self.srs: + self.srs[account] = {} + + if not jid in self.srs[account]: + self.srs[account][jid] = [] + + self.srs[account][jid].append((secret, verified)) + + self.save() + + def find_srs(self, account, jid, srs): + our_secrets = self.srs[account][jid] + return filter(lambda (x,y): x == srs, our_secrets)[0] + + # has the user verified this retained secret? + def srs_verified(self, account, jid, srs): + return self.find_srs(account, jid, srs)[1] + + def replace_srs(self, account, jid, old_secret, new_secret, verified): + our_secrets = self.srs[account][jid] + + idx = our_secrets.index(self.find_srs(account, jid, old_secret)) + + our_secrets[idx] = (new_secret, verified) + + self.save() + + # the public key associated with 'account' + def my_pubkey(self, account): + try: + pk = self.privkeys[account] + except KeyError: + pk = Crypto.PublicKey.RSA.generate(384, crypto.random_bytes) + + self.privkeys[account] = pk + self.save() + + return pk + +def load_secrets(filename): + f = open(filename, 'r') + + counter = Counter(16, f.read(16)) + + decrypted = get_key(counter).decrypt(f.read()) + + try: + secrets = pickle.loads(decrypted) + except: + f.close() + + global secrets_cipher + + secrets_cipher = None + + return load_secrets(filename) + else: + f.close() + + return secrets + +def secrets(): + global secrets_cache + + if secrets_cache: + return secrets_cache + + if os.path.exists(secrets_filename): + secrets_cache = load_secrets(secrets_filename) + else: + secrets_cache = Secrets(secrets_filename) + + return secrets_cache diff --git a/src/statusicon.py b/src/statusicon.py index 6610e0087e..2b26fd9990 100644 --- a/src/statusicon.py +++ b/src/statusicon.py @@ -3,23 +3,33 @@ ## Copyright (C) 2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> ## -## This program is free software; you can redistribute it and/or +## This file is part of Gajim. +## +## Gajim 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, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## +import sys import gtk import systray +import gobject from common import gajim from common import helpers +if sys.platform == 'darwin': + import osx + class StatusIcon(systray.Systray): '''Class for the notification area icon''' #FIXME: when we migrate to GTK 2.10 stick only to this class @@ -39,16 +49,18 @@ class StatusIcon(systray.Systray): self.on_status_icon_right_clicked) self.set_img() - self.status_icon.props.visible = True + self.status_icon.set_visible(True) + self.subscribe_events() 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 + self.status_icon.set_visible(False) + self.unsubscribe_events() def on_status_icon_left_clicked(self, widget): - self.on_left_click() + gobject.idle_add(self.on_left_click) def set_img(self): '''apart from image, we also update tooltip text here''' @@ -57,16 +69,18 @@ class StatusIcon(systray.Systray): text = helpers.get_notification_icon_tooltip_text() self.status_icon.set_tooltip(text) if gajim.events.get_nb_systray_events(): + if sys.platform == 'darwin': + osx.nsapp.requestUserAttention() state = 'event' - self.status_icon.props.blinking = True + self.status_icon.set_blinking(True) else: state = self.status - self.status_icon.props.blinking = False + self.status_icon.set_blinking(False) #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() + self.status_icon.set_from_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: diff --git a/src/systray.py b/src/systray.py index 84ae498772..2d6df9fd49 100644 --- a/src/systray.py +++ b/src/systray.py @@ -1,6 +1,6 @@ ## systray.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2003-2004 Vincent Hanquez <tab@snarc.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> @@ -8,15 +8,20 @@ ## Copyright (C) 2005 Norman Rasmussen <norman@rasmussen.co.za> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject @@ -285,7 +290,8 @@ class Systray: def on_left_click(self): win = gajim.interface.roster.window # toggle visible/hidden for roster window - if win.get_property('visible'): # visible in ANY virtual desktop? + if win.get_property('visible') and win.get_property('has-toplevel-focus'): + # visible in ANY virtual desktop? # we could be in another VD right now. eg vd2 # and we want to show it in vd2 @@ -326,7 +332,12 @@ class Systray: l = ['online', 'chat', 'away', 'xa', 'dnd', 'invisible', 'SEPARATOR', 'CHANGE_STATUS_MSG_MENUITEM', 'SEPARATOR', 'offline'] index = l.index(show) - gajim.interface.roster.status_combobox.set_active(index) + if not helpers.statuses_unified(): + gajim.interface.roster.status_combobox.set_active(index + 2) + return + current = gajim.interface.roster.status_combobox.get_active() + if index != current: + gajim.interface.roster.status_combobox.set_active(index) def on_change_status_message_activate(self, widget): model = gajim.interface.roster.status_combobox.get_model() diff --git a/src/tooltips.py b/src/tooltips.py index d1394357d1..ecc8741b8a 100644 --- a/src/tooltips.py +++ b/src/tooltips.py @@ -3,18 +3,23 @@ ## ## Copyright (C) 2005-2006 Dimitur Kirov <dkirov@gmail.com> ## Copyright (C) 2005-2007 Nikos Kouremenos <kourem@gmail.com> -## Copyright (C) 2005-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2005-2006 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2007 Julien Pivotto <roidelapluie@gmail.com> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## import gtk import gobject @@ -26,7 +31,6 @@ import gtkgui_helpers from common import gajim from common import helpers -from common import i18n class BaseTooltip: ''' Base Tooltip class; @@ -65,6 +69,8 @@ class BaseTooltip: self.win.set_border_width(3) self.win.set_resizable(False) self.win.set_name('gtk-tooltips') + if gtk.gtk_version >= (2, 10, 0) and gtk.pygtk_version >= (2, 10, 0): + self.win.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLTIP) self.win.set_events(gtk.gdk.POINTER_MOTION_MASK) self.win.connect_after('expose_event', self.expose) @@ -90,7 +96,7 @@ class BaseTooltip: half_width = requisition.width / 2 + 1 if self.preferred_position[0] < half_width: self.preferred_position[0] = 0 - elif self.preferred_position[0] + requisition.width > \ + elif self.preferred_position[0] + requisition.width > \ self.screen.get_width() + half_width: self.preferred_position[0] = self.screen.get_width() - \ requisition.width @@ -100,7 +106,7 @@ class BaseTooltip: if self.preferred_position[1] + requisition.height > \ self.screen.get_height(): # flip tooltip up - self.preferred_position[1] -= requisition.height + \ + self.preferred_position[1] -= requisition.height + \ self.widget_height + 8 if self.preferred_position[1] < 0: self.preferred_position[1] = 0 @@ -437,8 +443,8 @@ class RosterTooltip(NotificationAreaTooltip): transport = gajim.get_transport_name_from_jid( prim_contact.jid) if transport: - file_path = os.path.join(gajim.DATA_DIR, 'iconsets', - 'transports', transport , '16x16') + file_path = os.path.join(helpers.get_transport_path(transport), + '16x16') else: iconset = gajim.config.get('iconset') if not iconset: @@ -576,7 +582,7 @@ class RosterTooltip(NotificationAreaTooltip): if property[1]: label.set_markup(property[0]) vcard_table.attach(label, 1, 2, vcard_current_row, - vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0) + vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0) label = gtk.Label() label.set_alignment(0, 0) label.set_markup(property[1]) @@ -617,7 +623,7 @@ class FileTransfersTooltip(BaseTooltip): properties.append((_('Name: '), gobject.markup_escape_text(file_name))) if file_props['type'] == 'r': - type = _('Download') + type = _('Download') actor = _('Sender: ') sender = unicode(file_props['sender']).split('/')[0] name = gajim.contacts.get_first_contact_from_jid( @@ -639,18 +645,18 @@ class FileTransfersTooltip(BaseTooltip): properties.append((_('Transferred: '), helpers.convert_bytes(transfered_len))) status = '' if not file_props.has_key('started') or not file_props['started']: - status = _('Not started') + status = _('Not started') elif file_props.has_key('connected'): if file_props.has_key('stopped') and \ file_props['stopped'] == True: status = _('Stopped') elif file_props['completed']: - status = _('Completed') + status = _('Completed') elif file_props['connected'] == False: if file_props['completed']: status = _('Completed') else: - if file_props.has_key('paused') and \ + if file_props.has_key('paused') and \ file_props['paused'] == True: status = _('?transfer status:Paused') elif file_props.has_key('stalled') and \ @@ -660,8 +666,12 @@ class FileTransfersTooltip(BaseTooltip): else: status = _('Transferring') else: - status = _('Not started') + status = _('Not started') properties.append((_('Status: '), status)) + if 'desc' in file_props: + file_desc = file_props['desc'] + properties.append((_('Description: '), gobject.markup_escape_text( + file_desc))) while properties: property = properties.pop(0) current_row += 1 @@ -669,7 +679,7 @@ class FileTransfersTooltip(BaseTooltip): label.set_alignment(0, 0) label.set_markup(property[0]) ft_table.attach(label, 1, 2, current_row, current_row + 1, - gtk.FILL, gtk.FILL, 0, 0) + gtk.FILL, gtk.FILL, 0, 0) label = gtk.Label() label.set_alignment(0, 0) label.set_line_wrap(True) diff --git a/src/vcard.py b/src/vcard.py index 3e11a3cb6c..4784d9f0d0 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -1,19 +1,24 @@ ## vcard.py (has VcardWindow class and a func get_avatar_pixbuf_encoded_mime) ## -## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org> +## Copyright (C) 2003-2007 Yann Leboulanger <asterix@lagaule.org> ## Copyright (C) 2005-2006 Nikos Kouremenos <kourem@gmail.com> ## Copyright (C) 2006 Stefan Bethge <stefan@lanpartei.de> ## Copyright (C) 2007 Lukas Petrovicky <lukas@petrovicky.net> ## -## This program is free software; you can redistribute it and/or modify +## This file is part of Gajim. +## +## Gajim 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. +## by the Free Software Foundation; version 3 only. ## -## This program is distributed in the hope that it will be useful, +## Gajim 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 Gajim. If not, see <http://www.gnu.org/licenses/>. +## # THIS FILE IS FOR **OTHERS'** PROFILE (when we VIEW their INFO) @@ -258,18 +263,24 @@ class VcardWindow: connected_contact_list = contact_list # stats holds show and status message stats = '' - one = True # Are we adding the first line ? if connected_contact_list: + # Start with self.contact, as with resources + stats = helpers.get_uf_show(self.contact.show) + if self.contact.status: + stats += ': ' + self.contact.status + if self.contact.last_status_time: + stats += '\n' + _('since %s') % time.strftime('%c', + self.contact.last_status_time).decode( + locale.getpreferredencoding()) for c in connected_contact_list: - if not one: + if c.resource != self.contact.resource: 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 + 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()) else: # Maybe gc_vcard ? stats = helpers.get_uf_show(self.contact.show) if self.contact.status: -- GitLab