diff --git a/AUTHORS b/AUTHORS index 9c646612b..b57e57a65 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 e90dfed1a..94a9ed024 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. 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. +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. - 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. + 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. - 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. + 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. - 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. + 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 + TERMS AND CONDITIONS - 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". + 0. Definitions. -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. + "This License" refers to version 3 of the GNU General Public License. - 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. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. -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. + "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. - 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: + 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) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + A "covered work" means either the unmodified Program or a work based +on the Program. - 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. + 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. - 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.) + 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. -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. + 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. -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. + 1. Source Code. -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. + 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. - 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 "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. - 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, + 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. - 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, + 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. - 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 Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. -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. + The Corresponding Source for a work in source code form is that +same work. -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. + 2. Basic Permissions. - 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. + 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. - 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. + 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. - 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 + 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. +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. -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. + 13. Use with the GNU Affero General Public License. -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. + 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. -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. + 14. Revised Versions 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 + 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. + 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. - 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. + 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. - NO WARRANTY + 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. - 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. + 15. Disclaimer of Warranty. - 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. + 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. - END OF TERMS AND CONDITIONS + 16. Limitation of Liability. - How to Apply These Terms to Your New Programs + 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. Copyright (C) - 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 . 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'. + Copyright (C) + 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. +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 your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: + 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 +. - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 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. + 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 +. diff --git a/ChangeLog b/ChangeLog index a4fba5334..09d388784 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 50329095c..59a6d995d 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 c59ac15a9..f1f224896 100644 --- a/README.html +++ b/README.html @@ -16,7 +16,7 @@ Welcome to Gajim and thank you for trying out our client.

Runtime Requirements

  • python2.4 or higher
  • -
  • pygtk2.6 or higher
  • +
  • pygtk2.8 or higher
  • python-libglade
  • pysqlite2 (if you have python 2.5, you already have this)
@@ -29,6 +29,7 @@ Gajim is a GTK+ app that loves GNOME. You can do 'make' so you don't require gno

Optional Runtime Requirements

  • PyOpenSSL (python-pyopenssl package in Debian) for secure SSL/TLS. Python's default SSL is insecure, so this package is highly recommended!
  • +
  • python-crypto to enable End to end encryption
  • For zeroconf (bonjour), the "enable link-local messaging" checkbox, you need dbus-glib, python-avahi
  • dnsutils (or whatever package provides the nslookup binary) for SRV support; if you don't know what that is, you don't need it
  • gtkspell and aspell-LANG where lang is your locale eg. en, fr etc
  • @@ -37,6 +38,7 @@ Gajim is a GTK+ app that loves GNOME. You can do 'make' so you don't require gno
  • notification-daemon or notify-python (and D-Bus) to get cooler popups
  • D-Bus running to have gajim-remote working
  • python-dbus bindings
  • +
  • python-sexy to have clickable URLs in chat windows

diff --git a/README.osx b/README.osx new file mode 100644 index 000000000..64c45ad85 --- /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--.tbz2 +cd aspell-- +./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 4e1288a78..e00eaa901 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 000000000..b5c332299 --- /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 dbf2cc812..97eb8bbce 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 c4bdb142e..68f3e9ada 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 9b6abc349..c34b2916f 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 336124ee6..90d2c3011 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 50505816a..977ce6ff2 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 000000000..ae10ca7bf Binary files /dev/null and b/data/emoticons/static-big/lion.png differ diff --git a/data/emoticons/static/emoticons.py b/data/emoticons/static/emoticons.py index 50505816a..977ce6ff2 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 000000000..0ab9e7d05 Binary files /dev/null and b/data/emoticons/static/lion.png differ diff --git a/data/gajim-remote.1 b/data/gajim-remote.1 index 8b13ff1a8..9bbbc7214 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 55b50e3ec..858078e09 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 f853d133b..4316c5f0c 100644 --- a/data/glade/account_context_menu.glade +++ b/data/glade/account_context_menu.glade @@ -32,21 +32,31 @@ - + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True - _Open Gmail Inbox + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + _Start Chat... True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-jump-to + 1 + + True - _Group Chat + Join _Group Chat... True @@ -57,6 +67,25 @@ + + + True + + + + + True + _Add Contact... + True + + + True + gtk-add + 1 + + + + True @@ -74,7 +103,7 @@ True - _Execute Command + _Execute Command... True @@ -85,29 +114,22 @@ + + + True + _Open Gmail Inbox + True + + True - - - True - _Add Contact - True - - - True - gtk-add - 1 - - - - True - _Modify Account... + _Modify Account True diff --git a/data/glade/account_creation_wizard_window.glade b/data/glade/account_creation_wizard_window.glade index 93ba1cb8b..38997769f 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. True - 0 GTK_SHADOW_NONE @@ -51,7 +50,7 @@ to the Jabber network. True True - I already have an account I want to use + I already have an account I want to _use True 0 True @@ -99,9 +98,6 @@ to the Jabber network. - - False - @@ -109,7 +105,6 @@ to the Jabber network. tab - False False @@ -294,7 +289,6 @@ to the Jabber network. 1 - False @@ -304,7 +298,6 @@ to the Jabber network. tab 1 - False False @@ -526,7 +519,6 @@ to the Jabber network. 2 - False @@ -536,7 +528,69 @@ to the Jabber network. tab 2 - False + False + + + + + True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-dialog-warning + 5 + + + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 1 + + + + + False + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Add this certificate to the list of trusted certificates. +SHA1 fingerprint of the certificate: + + 0 + True + + + False + 1 + + + + + 3 + + + + + True + + + tab + 3 False @@ -548,8 +602,7 @@ to the Jabber network. - 3 - False + 4 @@ -558,8 +611,7 @@ to the Jabber network. tab - 3 - False + 4 False @@ -592,8 +644,7 @@ Please wait... - 4 - False + 5 @@ -602,8 +653,7 @@ Please wait... tab - 4 - False + 5 False @@ -671,8 +721,7 @@ Please wait... - 5 - False + 6 @@ -681,8 +730,7 @@ Please wait... tab - 5 - False + 6 False diff --git a/data/glade/accounts_window.glade b/data/glade/accounts_window.glade index ecd00cea6..4915193f9 100644 --- a/data/glade/accounts_window.glade +++ b/data/glade/accounts_window.glade @@ -780,42 +780,19 @@ - + True - 6 - - - True - False - True - If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you - Save _passphrase (insecure) - True - True - - - - False - False - - - - - True - False - True - False - * - - - - 1 - - + False + True + If checked, Gajim will get the password from a GPG agent like seahorse + Use GPG _Agent + True + True + False - 1 + False @@ -1218,40 +1195,18 @@ You might consider to change possible firewall settings. - + True - 6 - - - True - True - If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you - Save _passphrase (insecure) - True - True - - - - False - False - - - - - True - False - True - False - * - - - - 1 - - + True + If checked, Gajim will get the password from a GPG agent like seahorse + Use GPG _Agent + True + True + - 2 + False + False diff --git a/data/glade/add_new_contact_window.glade b/data/glade/add_new_contact_window.glade index cd10d283e..004d86963 100644 --- a/data/glade/add_new_contact_window.glade +++ b/data/glade/add_new_contact_window.glade @@ -206,6 +206,7 @@ True True + True A_llow this contact to view my status True 0 diff --git a/data/glade/advanced_menuitem_menu.glade b/data/glade/advanced_menuitem_menu.glade index b331dbb3e..f90116d81 100644 --- a/data/glade/advanced_menuitem_menu.glade +++ b/data/glade/advanced_menuitem_menu.glade @@ -1,142 +1,80 @@ - - - + + + - - - - - - _Send Single Message - True - - - - True - gtk-new - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - Show _XML Console - True - - - - - - True - _Blocked Contacts - True - - - - - True - gtk-stop - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - _Privacy Lists - True - - - - - - - - - - - _Administrator - True - - - - - - - Sends a message to users currently connected to this server - _Send Server Message - True - - - - True - gtk-new - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - - - - - - Sets Message of the Day - Set MOTD - True - - - - - - Updates Message of the Day - Update MOTD - True - - - - - - Deletes Message of the Day - Delete MOTD - True - - - - True - gtk-clear - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - + + + + Show _XML Console + True + + + + + Edit _Privacy Lists... + True + + + + + + + + + _Administrator + True + + + + + Sends a message to users currently connected to this server + _Send Server Message... + True + + + True + gtk-new + 1 + + + + + + + True + + + + + Sets Message of the Day + Set MOTD... + True + + + + + Updates Message of the Day + Update MOTD... + True + + + + + Deletes Message of the Day + Delete MOTD + True + + + True + gtk-clear + 1 + + + + + + + + + diff --git a/data/glade/chat_context_menu.glade b/data/glade/chat_context_menu.glade index 4bfa143a0..7a0179187 100644 --- a/data/glade/chat_context_menu.glade +++ b/data/glade/chat_context_menu.glade @@ -135,7 +135,7 @@ True - _Add to Roster + _Add to Roster... True diff --git a/data/glade/chat_control_popup_menu.glade b/data/glade/chat_control_popup_menu.glade index c3ebb1e24..36dd58801 100644 --- a/data/glade/chat_control_popup_menu.glade +++ b/data/glade/chat_control_popup_menu.glade @@ -1,90 +1,104 @@ - - - + + + - - - - - - True - Click to see past conversations with this contact - _History - True - - - - True - gtk-justify-fill - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - gtk-info - True - - - - - - True - Send _File - True - - - - - True - gtk-file - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Toggle Open_PGP Encryption - True - False - - - - - - - True - _Add to Roster - True - - - - - True - gtk-add - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - + + + + True + _Add to Roster + True + + + + True + gtk-add + 1 + + + + + + + True + Send _File + True + + + + True + gtk-save + 1 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Invite _Contacts + True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-missing-image + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + + True + Toggle Open_PGP Encryption + True + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Toggle End to End Encryption + True + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + + True + gtk-info + True + True + + + + + True + Click to see past conversations with this contact + _History + True + + + True + gtk-justify-fill + 1 + + + + + diff --git a/data/glade/chat_to_muc_window.glade b/data/glade/chat_to_muc_window.glade new file mode 100644 index 000000000..745b3d006 --- /dev/null +++ b/data/glade/chat_to_muc_window.glade @@ -0,0 +1,185 @@ + + + + + + True + 5 + Invite Friends ! + + + + + True + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + You are going to begin a Multi-User Chat. +Select the contacts you want to invite + GTK_JUSTIFY_CENTER + + + False + False + 4 + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + 300 + True + True + False + + + + + + + + 4 + 1 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + Please select a MUC server. + GTK_JUSTIFY_CENTER + True + + + False + False + 4 + + + + + True + + + + + + + False + 1 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + MUC server + + + label_item + + + + + False + 2 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + GTK_BUTTONBOX_END + + + True + True + gtk-cancel + True + 0 + + + + False + False + 3 + + + + + True + True + 0 + + + + True + 0 + 0 + + + True + 2 + + + True + gtk-jump-to + + + False + False + + + + + True + In_vite + True + + + False + False + 1 + + + + + + + + + False + False + 3 + 1 + + + + + False + 3 + + + + + + diff --git a/data/glade/filetransfers.glade b/data/glade/filetransfers.glade index 3106b3663..6f85e0e16 100644 --- a/data/glade/filetransfers.glade +++ b/data/glade/filetransfers.glade @@ -271,7 +271,7 @@ True - gtk-missing-image + gtk-directory 1 diff --git a/data/glade/gc_control_popup_menu.glade b/data/glade/gc_control_popup_menu.glade index 2c2e665e7..7ad038b06 100644 --- a/data/glade/gc_control_popup_menu.glade +++ b/data/glade/gc_control_popup_menu.glade @@ -5,7 +5,7 @@ - Change _Nickname + Change _Nickname... True @@ -28,7 +28,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Change _Subject + Change _Subject... True @@ -41,7 +41,7 @@ - Configure _Room + Configure _Room... True diff --git a/data/glade/gc_occupants_menu.glade b/data/glade/gc_occupants_menu.glade index 044a6bb4f..a8b4afbbc 100644 --- a/data/glade/gc_occupants_menu.glade +++ b/data/glade/gc_occupants_menu.glade @@ -17,6 +17,20 @@ + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Send _File + True + + + gtk-save + 1 + + + + True @@ -87,20 +101,6 @@ - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Send _File - True - - - gtk-save - 1 - - - - True diff --git a/data/glade/history_manager.glade b/data/glade/history_manager.glade index 2d7802f95..0ed565d08 100644 --- a/data/glade/history_manager.glade +++ b/data/glade/history_manager.glade @@ -43,18 +43,91 @@ True - + True - 0 - <big><b>Welcome to Gajim History Logs Manager</b></big> + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + <big><b>Welcome to Gajim History Logs Manager</b></big> + True + GTK_JUSTIFY_CENTER + True + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 1 + 0 + gtk-info + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + This log manager is not intended for log viewing. If you are looking for such functionality, use the history window instead. -You can select logs from the left and/or search database from below. - -<b>WARNING:</b> +Use this program to delete or export logs. You can select logs from the left and/or search database from below. + True + True + + + 1 + + + + + False + False + 20 + 1 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 1 + 0 + gtk-dialog-warning + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <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. - True - True + True + True + + + 1 + + + + + False + False + 20 + 2 + + + + False + @@ -115,7 +188,6 @@ If you plan to do massive deletions, please make sure Gajim is not running. Gene True True - * True diff --git a/data/glade/history_window.glade b/data/glade/history_window.glade index b475f03b4..ba74ec04c 100644 --- a/data/glade/history_window.glade +++ b/data/glade/history_window.glade @@ -1,346 +1,283 @@ - - - + + + - - - Conversation History - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 650 - 350 - True - False - history - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - - - - - 6 - True - False - 6 - - - - True - True - 165 - - - - True - False - 6 - - - - True - True - GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES - - - - - 0 - False - True - - - - - True - False - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_ETCHED_IN - GTK_CORNER_TOP_LEFT - - - - - - - True - True - - - - - 0 - True - True - - - - - - True - True - _Log conversation history - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - - True - True - False - 0 - - - - - True - False - 6 - - - - True - False - 6 - - - - True - True - True - True - 0 - - True - * - True - - - 0 - True - True - - - - - - True - True - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-find - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Search - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Build custom query - True - Query Builder... - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - True - False - True - False - False - False - - - - - - 0 - True - True - - - - - - - - True - _Search - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - GTK_BUTTONBOX_END - 6 - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - - - - - - 0 - False - False - - - - - - + + Conversation History + history + 650 + 350 + + + + + True + 6 + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 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. + + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>JID Selection</b> + True + + + label_item + + + + + False + False + 8 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + True + 165 + + + True + 6 + + + True + True + + + + + False + + + + + False + False + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_ETCHED_IN + + + + + + True + False + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>History Viewer</b> + True + + + label_item + + + + + 1 + + + + + True + True + _Log conversation history + True + 0 + True + True + + + False + False + 2 + + + + + True + True + + + + True + 6 + + + True + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Search + + + False + False + + + + + True + True + True + + + + 2 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + in + + + False + False + 3 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + Current History +All Chat Histories + + + + False + False + GTK_PACK_END + 1 + + + + + False + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + True + + + + + + 1 + + + + + + + True + _Search + True + + + label_item + + + + + False + 3 + + + + + True + 6 + GTK_BUTTONBOX_END + + + True + True + True + gtk-close + True + 0 + + + + + + False + False + 4 + + + + + diff --git a/data/glade/message_window.glade b/data/glade/message_window.glade index 77d9028b1..07d39763c 100644 --- a/data/glade/message_window.glade +++ b/data/glade/message_window.glade @@ -1,1216 +1,784 @@ - - - + + + - - - - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 480 - 440 - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - True - 0.5 - 0.5 - 1 - 1 - 2 - 0 - 0 - 0 - - - - True - True - True - True - GTK_POS_TOP - True - False - - - - 3 - True - False - 1 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 3 - 3 - - - - - - - 0 - False - False - - - - - - True - False - 0 - - - - 3 - 60 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - - - - 0 - True - True - - - - - - 3 - True - True - GTK_POLICY_NEVER - GTK_POLICY_NEVER - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 1 - - - - True - OpenPGP Encryption - True - False - - - - True - GTK_RELIEF_NONE - False - False - False - - - - True - gtk-dialog-authentication - 4 - 0.5 - 0.5 - 0 - 0 - - - - - - - 0 - False - True - - - - - - True - - - 0 - False - True - - - - - 0 - True - True - - - - - - 3 - True - False - 6 - - - - True - Click to insert an emoticon (Alt+M) - True - GTK_RELIEF_NORMAL - True - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 2 - 0 - - - 0 - True - True - - - - - - True - GTK_ARROW_DOWN - GTK_SHADOW_OUT - 0.5 - 0.5 - 0 - 0 - - - 0 - True - True - - - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-execute - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Actions - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - GTK_ARROW_DOWN - GTK_SHADOW_OUT - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-jump-to - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Send - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - True - - - - - False - True - - - - - - True - False - False - - - - True - False - 4 - - - - True - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_END - -1 - False - 0 - - - 0 - True - True - - - - - - 20 - 20 - True - True - GTK_RELIEF_NONE - True - - - - True - gtk-close - 1 - 0.5 - 0.5 - 0 - 6 - - - - - 0 - False - False - - - - - - - tab - - - - - - 3 - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 1 - 3 - 3 - - - - - - - 0 - False - False - - - - - - 3 - True - True - 495 - - - - 150 - True - False - 6 - - - - True - False - 6 - - - - 200 - 60 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - - - - 0 - True - True - - - - - - True - True - GTK_POLICY_NEVER - GTK_POLICY_NEVER - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - - - - 0 - False - True - - - - - 0 - True - True - - - - - False - False - - - - - - 100 - True - GTK_POLICY_NEVER - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - 1 - True - True - False - False - False - True - False - False - False - - - - - False - False - - - - - 0 - True - True - - - - - - 3 - True - False - 0 - - - - True - False - 0 - - - - - - - 0 - True - True - - - - - - True - False - 6 - - - - True - Click to insert an emoticon (Alt+M) - True - GTK_RELIEF_NORMAL - True - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 2 - 0 - - - 0 - True - True - - - - - - True - GTK_ARROW_DOWN - GTK_SHADOW_OUT - 0.5 - 0.5 - 0 - 0 - - - 0 - True - True - - - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-execute - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Actions - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - GTK_ARROW_DOWN - GTK_SHADOW_OUT - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - - - 2 - False - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-jump-to - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Send - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - True - - - - - False - True - - - - - - True - False - False - - - - True - False - 4 - - - - True - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 20 - 20 - True - True - GTK_RELIEF_NONE - True - - - - True - gtk-close - 1 - 0.5 - 0.5 - 0 - 6 - - - - - 0 - False - False - - - - - - - tab - - - - - - - - + + 480 + 440 + + + True + 2 + + + True + True + True + + + True + 3 + 1 + + + True + 3 + 3 + + + + + + False + False + + + + + True + + + 60 + True + True + 3 + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + + + + + + True + True + 3 + GTK_POLICY_NEVER + GTK_POLICY_NEVER + GTK_SHADOW_IN + + + + + + False + 1 + + + + + 1 + + + + + True + + + True + 1 + + + True + OpenPGP Encryption + + + True + GTK_RELIEF_NONE + False + 0 + + + True + gtk-dialog-authentication + + + + + + + False + + + + + True + + + False + 1 + + + + + + + True + 3 + 6 + + + True + True + Click to insert an emoticon (Alt+M) + 0 + + + True + + + True + 2 + None + + + + + True + GTK_ARROW_DOWN + + + 1 + + + + + + + False + False + + + + + True + True + 0 + + + True + 0 + 0 + + + True + 2 + + + True + gtk-execute + + + False + False + + + + + True + _Actions + True + + + False + False + 1 + + + + + True + GTK_ARROW_DOWN + + + False + False + 2 + + + + + + + + + False + False + 1 + + + + + True + + + False + False + 2 + + + + + True + True + 0 + + + True + 0 + 0 + + + True + 2 + + + True + gtk-jump-to + + + False + False + + + + + True + _Send + True + + + False + False + 1 + + + + + + + + + False + False + 3 + + + + + False + 1 + + + + + False + 2 + + + + + + + True + False + + + True + 4 + + + True + None + + + False + False + + + + + True + 0 + True + PANGO_ELLIPSIZE_END + + + 1 + + + + + 20 + 20 + True + True + GTK_RELIEF_NONE + 0 + + + True + 6 + gtk-close + 1 + + + + + False + False + 2 + + + + + + + tab + False + + + + + 3 + + + True + 1 + 3 + 3 + + + + + + False + False + + + + + True + True + 3 + 495 + + + 150 + True + 6 + + + True + 6 + + + 200 + 60 + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + + + + + + True + True + GTK_POLICY_NEVER + GTK_POLICY_NEVER + GTK_SHADOW_IN + + + + + + False + 1 + + + + + + + False + False + + + + + 100 + True + False + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + 1 + False + + + + + False + False + + + + + 1 + + + + + True + 3 + + + True + + + + + + + + True + 6 + + + True + True + Click to insert an emoticon (Alt+M) + 0 + + + True + + + True + 2 + None + + + + + True + GTK_ARROW_DOWN + + + 1 + + + + + + + False + False + + + + + True + True + 0 + + + True + 0 + 0 + + + True + 2 + + + True + gtk-execute + + + False + False + + + + + True + _Actions + True + + + False + False + 1 + + + + + True + GTK_ARROW_DOWN + + + False + False + 2 + + + + + + + + + False + False + 1 + + + + + True + + + False + 2 + 2 + + + + + True + True + 0 + + + True + 0 + 0 + + + True + 2 + + + True + gtk-jump-to + + + False + False + + + + + True + _Send + True + + + False + False + 1 + + + + + + + + + False + False + 3 + + + + + False + 1 + + + + + False + 2 + + + + + 1 + + + + + True + False + + + True + 4 + + + True + None + + + False + False + + + + + True + True + + + False + False + 1 + + + + + 20 + 20 + True + True + GTK_RELIEF_NONE + 0 + + + True + 6 + gtk-close + 1 + + + + + False + False + 2 + + + + + + + tab + 1 + False + + + + + + + diff --git a/data/glade/passphrase_dialog.glade b/data/glade/passphrase_dialog.glade index 6d42454b0..bc49f3475 100644 --- a/data/glade/passphrase_dialog.glade +++ b/data/glade/passphrase_dialog.glade @@ -19,6 +19,7 @@ True False True + diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index 8e5954841..831599d4b 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -1,3678 +1,2268 @@ - - - + + + - - - 6 - Preferences - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - preferences - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - - True - False - 6 - - - - True - True - True - False - GTK_POS_TOP - False - False - - - - 12 - True - False - 6 - - - - True - Use t_rayicon (aka. notification area icon) - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it - True - Save _position and size for roster and chat windows - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - If checked, Gajim will display avatars of contacts in roster window and in group chats - True - Display a_vatars of contacts in roster - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats - True - Display status _messages of contacts in roster - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - _Sort contacts by status - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 4 - 0 - 12 - 0 - - - - True - False - 12 - - - - True - False - 12 - - - - True - Default status _iconset: - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - iconset_combobox - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - True - - - - 0 - False - True - - - - - - True - 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...) - True - Use _transports iconsets - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - False - 12 - - - - True - T_heme: - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - theme_combobox - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - True - - - - 0 - False - True - - - - - - True - Configure color and font of the interface - True - Ma_nage... - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - - - - - - True - <b>Interface Customization</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 12 - False - True - - - - - False - True - - - - - - True - General - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 12 - True - False - 6 - - - - True - False - 5 - - - - True - One message _window: - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 1 - 0 - one_window_type_combobox - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Never + + 6 + Preferences + preferences + + + + + True + 6 + + + True + True + False + + + True + 12 + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + + + True + True + If checked, Gajim will display avatars of contacts in roster window and in group chats + Display a_vatars of contacts in roster + True + 0 + True + + + + False + False + + + + + True + True + If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats + Display status _messages of contacts in roster + True + 0 + True + + + + False + False + 1 + + + + + True + True + _Sort contacts by status + True + 0 + True + + + + False + False + 2 + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Roster Appearance</b> + True + + + label_item + + + + + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + 2 + 6 + 6 + + + True + If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons + + + True + 0 + 1 + Emoticons: + + + + + GTK_FILL + + + + + True + + + + 1 + 2 + GTK_FILL + + + + + True + _Highlight misspelled words + True + 0 + True + + + + 2 + 5 + 6 + GTK_FILL + + + + + True + True + Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text. + Ignore rich content in incoming messages + True + 0 + True + + + + 2 + 4 + 5 + GTK_FILL + + + + + True + Hides buttons in chatwindows to + _Make message windows compact + True + 0 + True + + + + 2 + 3 + 4 + GTK_FILL + + + + + True + Never Always Per account Per type - False - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - Hides buttons in chatwindows to - True - _Make message windows compact - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text. - True - Ignore rich content in incoming messages - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - _Highlight misspelled words - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - False - 4 - - - - True - Treat all incoming messages as: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 1 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Determined by sender + + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + True + Determined by sender Chat message Single message - False - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 5 - - - - True - If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons - True - False - - - - True - Emoticons: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 1 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - - True - False - True - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 12 - - - - True - False - 6 - - - - True - Print time: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - On every _message - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - Also known as iChat style - True - E_very 5 minutes - True - GTK_RELIEF_NORMAL - True - False - False - True - time_always_radiobutton - - - - 0 - False - False - - - - - - True - True - _Never - True - GTK_RELIEF_NORMAL - True - False - False - True - time_always_radiobutton - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - 4 - 4 - False - 6 - 12 - - - - True - True - Use system _default - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 2 - 4 - 3 - 4 - - - - - - - - True - False - 6 - - - - True - _Font: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - conversation_fontbutton - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - True - - - - - - True - True - True - True - False - False - True - - - - 0 - False - True - - - - - 0 - 2 - 3 - 4 - - - - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - False - - - - - - True - True - GTK_RELIEF_NORMAL - False - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-revert-to-saved - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Reset to Default Colors - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - 4 - 2 - 3 - - - - - - - True - True - False - True - - - - 3 - 4 - 1 - 2 - - - - - - - - True - _URL: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - url_msg_colorbutton - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - - - - True - True - False - True - - - - 1 - 2 - 1 - 2 - - - - - - - - True - _Status message: - True - False - GTK_JUSTIFY_CENTER - True - False - 0 - 0.5 - 0 - 0 - status_msg_colorbutton - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - True - False - True - - - - 3 - 4 - 0 - 1 - - - - - - - - True - _Outgoing message: - True - False - GTK_JUSTIFY_CENTER - True - False - 0 - 0.5 - 0 - 0 - outgoing_msg_colorbutton - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - True - True - True - True - False - True - - - - 1 - 2 - 0 - 1 - - - - - - - - True - _Incoming message: - True - False - GTK_JUSTIFY_CENTER - True - False - 0 - 0.5 - 0 - 0 - incoming_msg_colorbutton - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - 0 - False - True - - - - - - - - - - True - <b>Format of a line</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - False - True - - - - - - True - Chat - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 12 - True - False - 12 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 6 - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - 3 - True - False - 6 - - - - True - Gajim will notify you for new events via a popup in the bottom right of the screen - True - _Notify me about it - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - Gajim will automatically show new events by popping up the relevant window - True - _Pop it up - True - GTK_RELIEF_NORMAL - True - False - False - True - notify_on_new_message_radiobutton - - - - 0 - False - False - - - - - - True - Gajim will only change the icon of the contact that triggered the new event - True - Show only in _roster - True - GTK_RELIEF_NORMAL - True - False - False - True - notify_on_new_message_radiobutton - - - - 0 - False - False - - - - - - - - - - True - 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 - True - False - - - - True - When new event is received - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - label_item - - - - - 0 - False - False - - - - - - True - False - 6 - - - - True - Notify me about contacts that: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in - True - Sign _in - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out - True - Sign _out - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - True - Allow popup/notifications when I'm _away/na/busy/invisible - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-open - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Advanced Notifications Control... - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - - - - - 0 - True - True - - - - - - - - - - True - <b>Visual Notifications</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - True - 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 - True - _Ignore events from contacts not in the roster - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - False - 12 - - - - True - 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. - True - False - - - - True - Outgoing Chat state noti_fications: - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - - True - All chat states + + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + True + 0 + 1 + Use only one message _window: + True + one_window_type_combobox + + + 2 + 3 + GTK_FILL + + + + + True + 0 + 1 + Treat all incoming messages as: + + + 1 + 2 + GTK_FILL + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Chat Appearance</b> + True + + + label_item + + + + + False + 1 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 3 + 4 + 6 + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 3 + 4 + + + + + True + True + 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...) + Use _transports iconsets + True + 0 + True + + + + 4 + 2 + 3 + + + + + True + + + + 1 + 2 + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + 0 + Status _iconset: + True + iconset_combobox + + + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + + + + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + True + Configure color and font of the interface + Ma_nage... + True + 0 + + + + 2 + 3 + GTK_FILL + GTK_FILL + + + + + True + 0 + T_heme: + True + theme_combobox + + + GTK_FILL + GTK_FILL + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 2 + 4 + 1 + 2 + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Themes</b> + True + + + label_item + + + + + False + 2 + + + + + + + True + General + + + tab + False + + + + + True + 12 + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 3 + 2 + 6 + 6 + + + True + True + 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 + _Ignore events from contacts not in the roster + True + 0 + True + + + + 2 + 2 + 3 + GTK_FILL + + + + + True + All chat states Composing only Disabled - False - True - - - - 0 - False - True - - - - - 0 - False - False - - - - - - True - False - 12 - - - - True - 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. - True - False - - - - True - Displayed Chat state noti_fications: - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - - True - All chat states + + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + True + 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. + + + True + 0 + _Display chat state notifications: + True + + + + + 1 + 2 + GTK_FILL + + + + + True + 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. + + + True + 0 + _Send chat state notifications: + True + + + + + GTK_FILL + + + + + True + All chat states Composing only Disabled - False - True - - - - 0 - False - True - - - - - 0 - False - False - - - - - - True - True - False - 0 - - - - True - False - 6 - - - - True - True - 6 - - - - True - True - Play _sounds - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - True - True - - - - - - False - 5 - - - - True - _Player: - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - soundplayer_entry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - True - - - - - - True - True - True - True - 0 - - True - - False - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - False - False - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - - 0 - True - True - - - - - - True - False - 6 - - - - True - True - True - True - 0 - - True - - False - - - - 0 - True - True - - - - - - True - True - ... - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - gtk-media-play - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - - - True - <b>Sounds</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - False - True - - - - - - True - Events - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 12 - True - False - 12 - - - - True - 2 - 4 - False - 6 - 12 - - - - True - The auto not available status message - True - True - True - 0 - - True - - False - - - - 3 - 4 - 1 - 2 - - - - - - - True - The auto away status message - True - True - True - 0 - - True - - False - - - - 3 - 4 - 0 - 1 - - - - - - - True - 1 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - 50 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 20 1 1440 1 10 10 - - - - - - 1 - 2 - 1 - 2 - - - - - - - - True - 1 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - 50 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 12 1 720 1 10 10 - - - - - - 1 - 2 - 0 - 1 - - - - - - - - True - minutes - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - - - - True - minutes - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - True - Auto _not available after: - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - 1 - 1 - 2 - - - - - - - - True - True - Auto _away after: - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - 1 - 0 - 1 - - - - - - - 0 - False - True - - - - - - True - False - 6 - - - - True - Ask status message when I: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - 14 - - - - True - True - Sign _in - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Sign _out - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - 0 - False - False - - - - - 0 - False - False - - - - - - True - Works for Rhythmbox and Muine players. For more players, please visit http://trac.gajim.org/wiki/GajimAndMusicPlayer - True - Set status message to reflect currently playing _music track - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - An example: If you have enabled status message for away, Gajim won't ask you anymore for a status message when you change your status to away; it will use the default one set here - True - False - - - - True - True - False - 0 - - - - - 6 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - - - - True - Default Status Messages - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 6 - - - - True - False - 6 - - - - 5 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - False - True - False - False - False - - - - - - - 0 - True - True - - - - - - True - GTK_BUTTONBOX_START - 0 - - - - 5 - True - True - True - gtk-new - True - GTK_RELIEF_NORMAL - True - - - - - - - 5 - True - True - True - gtk-delete - True - GTK_RELIEF_NORMAL - True - - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - 5 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - False - False - - - - - - - - - - True - <b>Preset Status Messages</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - False - True - - - - - - True - Status - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 12 - True - False - 6 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 6 - - - - True - Autodetect on every Gajim startup + + + + 1 + 2 + GTK_FILL + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Privacy</b> + True + + + label_item + + + + + False + + + + + True + 0 + GTK_SHADOW_NONE + + + True + 6 + 12 + + + True + 12 + + + True + 4 + 4 + 12 + 6 + + + True + 0 + _Incoming message: + True + GTK_JUSTIFY_CENTER + True + incoming_msg_colorbutton + + + GTK_FILL + + + + + + True + True + True + True + True + 0 + + + + 1 + 2 + + + + + + + True + 0 + _Outgoing message: + True + GTK_JUSTIFY_CENTER + True + outgoing_msg_colorbutton + + + 2 + 3 + GTK_FILL + + + + + + True + True + 0 + + + + 3 + 4 + GTK_FILL + + + + + + True + 0 + _Status message: + True + GTK_JUSTIFY_CENTER + True + status_msg_colorbutton + + + 1 + 2 + GTK_FILL + + + + + + True + True + 0 + + + + 1 + 2 + 1 + 2 + + + + + + + True + 0 + _URL: + True + url_msg_colorbutton + + + 2 + 3 + 1 + 2 + GTK_FILL + + + + + + True + True + 0 + + + + 3 + 4 + 1 + 2 + GTK_FILL + + + + + + True + + + True + + + False + + + + + True + True + False + 0 + + + + True + 0 + 0 + + + True + 2 + + + True + gtk-revert-to-saved + + + False + False + + + + + True + _Reset to Default Colors + True + + + False + False + 1 + + + + + + + + + False + False + 1 + + + + + 4 + 2 + 3 + GTK_FILL + + + + + True + 6 + + + True + 0 + _Font: + True + conversation_fontbutton + + + + + True + True + 0 + + + + False + 1 + + + + + 2 + 3 + 4 + GTK_FILL + + + + + True + True + Use system _default + True + 0 + True + + + + 2 + 4 + 3 + 4 + GTK_FILL + + + + + + False + + + + + + + + + True + <b>Format of a line</b> + True + + + label_item + + + + + False + False + 1 + + + + + 1 + + + + + True + Privacy + + + tab + 1 + False + + + + + True + 12 + 12 + + + True + 0 + GTK_SHADOW_NONE + + + True + 6 + 12 + + + True + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + When new event is received: + + + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Pop it up +Notify me about it +Show only in roster + + + + False + 1 + + + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Notify me about contacts that sign _in + True + 0 + True + + + + 1 + + + + + True + True + Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out + Notify me about contacts that sign _out + True + 0 + True + + + + False + False + 2 + + + + + True + True + Allow popup/notifications when I'm _away/na/busy/invisible + True + 0 + True + + + + False + False + 3 + + + + + True + True + + + True + True + 0 + + + + True + 0 + 0 + + + True + 2 + + + True + gtk-open + + + False + False + + + + + True + _Advanced Notifications Control... + True + + + False + False + 1 + + + + + + + + + False + False + + + + + + + + 4 + + + + + + + + + True + <b>Visual Notifications</b> + True + + + label_item + + + + + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + 6 + + + True + 6 + True + + + True + True + Play _sounds + True + 0 + True + + + + + + 5 + + + True + _Player: + True + soundplayer_entry + + + + + True + True + + + + 1 + + + + + 1 + + + + + False + False + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + + + + + + 1 + + + + + True + 6 + + + True + True + + + + + + True + True + ... + True + 0 + + + + False + False + 1 + + + + + True + True + 0 + + + + True + gtk-media-play + + + + + False + False + 2 + + + + + False + 2 + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Sounds</b> + True + + + label_item + + + + + False + 1 + + + + + 2 + + + + + True + Events + + + tab + 2 + False + + + + + True + 12 + 12 + + + True + 2 + 4 + 12 + 6 + + + True + True + Auto _away after: + True + 0 + True + + + + GTK_FILL + + + + + + True + True + Auto _not available after: + True + 0 + True + + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + minutes + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + minutes + + + 2 + 3 + 1 + 2 + GTK_FILL + + + + + + True + 1 + 0 + + + 50 + True + True + 12 1 720 1 10 10 + 1 + + + + + + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + 1 + 0 + + + 50 + True + True + 20 1 1440 1 10 10 + 1 + + + + + + 1 + 2 + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + True + The auto away status message + + + + 3 + 4 + + + + + + True + True + The auto not available status message + + + + 3 + 4 + 1 + 2 + + + + + + False + + + + + True + 6 + + + True + Ask status message when I: + + + False + False + + + + + True + 14 + + + True + True + Sign _in + True + 0 + True + + + + False + False + + + + + True + True + Sign _out + True + 0 + True + + + + False + False + 1 + + + + + False + False + 1 + + + + + False + False + 1 + + + + + True + True + Works for Rhythmbox and Muine players. For more players, please visit http://trac.gajim.org/wiki/GajimAndMusicPlayer + Set status message to reflect currently playing _music track + True + 0 + True + + + + False + False + 2 + + + + + True + An example: If you have enabled status message for away, Gajim won't ask you anymore for a status message when you change your status to away; it will use the default one set here + + + True + True + + + + True + True + 6 + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + + + + + + + True + Default Status Messages + + + label_item + + + + + + + False + 3 + + + + + True + 0 + GTK_SHADOW_NONE + + + True + 6 + 12 + + + True + 6 + + + True + 6 + + + True + True + 5 + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + False + + + + + + + + + True + GTK_BUTTONBOX_START + + + True + True + True + 5 + gtk-new + True + 0 + + + + + + True + True + True + 5 + gtk-delete + True + 0 + + + + 1 + + + + + False + 1 + + + + + + + True + True + 5 + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + + + + + False + False + 1 + + + + + + + + + True + <b>Preset Status Messages</b> + True + + + label_item + + + + + 4 + + + + + 3 + + + + + True + Status + + + tab + 3 + False + + + + + True + 12 + 6 + + + True + 0 + GTK_SHADOW_NONE + + + True + 6 + 12 + + + True + 6 + + + True + 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 - False - True - - - - 0 - True - True - - - - - - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 3 - 2 - False - 6 - 12 - - - - True - True - True - True - 0 - - True - - False - - - - 1 - 2 - 2 - 3 - - - - - - - True - _File manager: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - custom_file_manager_entry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - - True - True - True - True - 0 - - True - - False - - - - 1 - 2 - 0 - 1 - - - - - - - True - True - True - True - 0 - - True - - False - - - - 1 - 2 - 1 - 2 - - - - - - - True - _Mail client: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - custom_mail_client_entry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - _Browser: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - custom_browser_entry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - - - - - True - <b>Custom</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - - - - - True - <b>Applications</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 6 - - - - True - True - Notify on new _GMail email - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - If checked, Gajim will also include information about the sender of the new emails - True - Display _extra email details - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - - - - - True - <b>GMail Options</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 6 - - - - True - True - _Log status changes of contacts - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Allow _OS information to be sent - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Always check to see if Gajim is the _default Jabber client on startup - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - - - - - True - <b>Miscellaneous</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 6 - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 12 - 335 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-open - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Open... - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - - - - True - <b>Advanced Configuration Editor</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - False - True - - - - - - True - Advanced - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 12 - True - False - 6 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - Publish Mood - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Publish Activity - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Publish Tune - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - - - - - True - <b>Publish Personal Events</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - Subscribe Mood - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Subscribe Activity - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - 0 - False - False - - - - - - True - True - Subscribe Tune - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - 0 - False - False - - - - - - - - - - True - <b>Subscribe Personal Events</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - False - True - - - - - - True - Personal Events - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.449999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - True - GTK_BUTTONBOX_END - 15 - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - - - - - - 0 - False - True - - - - - - + + + + + + 0 + GTK_SHADOW_NONE + + + True + 6 + 12 + + + True + 3 + 2 + 12 + 6 + + + True + 0 + _Browser: + True + custom_browser_entry + + + GTK_FILL + + + + + + True + 0 + _Mail client: + True + custom_mail_client_entry + + + 1 + 2 + GTK_FILL + + + + + + True + True + + + + 1 + 2 + 1 + 2 + + + + + + True + True + + + + 1 + 2 + + + + + + True + 0 + _File manager: + True + custom_file_manager_entry + + + 2 + 3 + GTK_FILL + + + + + + True + True + + + + 1 + 2 + 2 + 3 + + + + + + + + + + True + <b>Custom</b> + True + + + label_item + + + + + 1 + + + + + + + + + True + <b>Applications</b> + True + + + label_item + + + + + False + False + + + + + True + True + 0 + GTK_SHADOW_NONE + + + True + 6 + 12 + + + True + 6 + + + True + True + Notify on new _GMail email + True + 0 + True + + + + False + False + + + + + True + True + If checked, Gajim will also include information about the sender of the new emails + Display _extra email details + True + 0 + True + + + + False + False + 1 + + + + + + + + + True + <b>GMail Options</b> + True + + + label_item + + + + + False + False + 1 + + + + + True + 0 + GTK_SHADOW_NONE + + + True + 6 + 12 + + + True + 6 + + + True + True + _Log status changes of contacts + True + 0 + True + + + + False + False + + + + + True + True + Allow _OS information to be sent + True + 0 + True + + + + False + False + 1 + + + + + True + True + Always check to see if Gajim is the _default Jabber client on startup + True + 0 + True + + + + False + False + 2 + + + + + + + + + True + <b>Miscellaneous</b> + True + + + label_item + + + + + False + False + 2 + + + + + True + 0 + GTK_SHADOW_NONE + + + True + 6 + 0 + 12 + 335 + + + True + True + 0 + + + + True + 0 + 0 + + + True + 2 + + + True + gtk-open + + + False + False + + + + + True + _Open... + True + + + False + False + 1 + + + + + + + + + + + + + True + <b>Advanced Configuration Editor</b> + True + + + label_item + + + + + False + False + 3 + + + + + 4 + + + + + True + Advanced + + + tab + 4 + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Publish _Mood + True + 0 + True + + + + False + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Publish _Activity + True + 0 + True + + + + False + 1 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Publish _Tune + True + 0 + True + + + + False + 2 + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Publish Personal Events</b> + True + + + label_item + + + + + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Subscribe to M_ood + True + 0 + True + + + + False + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Subscribe to A_ctivity + True + 0 + True + + + + False + 1 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Subscribe to T_une + True + 0 + True + + + + False + 2 + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Subscribe to Personal Events</b> + True + + + label_item + + + + + False + 1 + + + + + 5 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Personal Events + + + tab + 5 + False + + + + + + + True + 15 + GTK_BUTTONBOX_END + + + True + True + True + gtk-close + True + 0 + + + + + + False + 1 + + + + + diff --git a/data/glade/roster_contact_context_menu.glade b/data/glade/roster_contact_context_menu.glade index 0d35d74a6..f873e7f77 100644 --- a/data/glade/roster_contact_context_menu.glade +++ b/data/glade/roster_contact_context_menu.glade @@ -20,7 +20,7 @@ True - Send Single _Message + Send Single _Message... True @@ -34,12 +34,12 @@ True - Send _File + Send _File... True True - gtk-floppy + gtk-save 1 @@ -103,7 +103,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - _Rename + _Rename... True @@ -116,7 +116,7 @@ - Edit _Groups + Edit _Groups... True @@ -130,13 +130,13 @@ - Assign Open_PGP Key + Assign Open_PGP Key... True True - gtk-missing-image + gtk-dialog-authentication 1 @@ -146,7 +146,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Set Custom _Avatar + Set Custom _Avatar... True @@ -160,9 +160,8 @@ - True True - Add Special _Notification + Add Special _Notification... True @@ -268,6 +267,19 @@ + + + _Add to Roster... + True + + + True + gtk-add + 1 + + + + _Remove @@ -281,19 +293,6 @@ - - - _Add to Roster - True - - - True - gtk-add - 1 - - - - diff --git a/data/glade/roster_window.glade b/data/glade/roster_window.glade index 1f1f10fb5..dc482bb8a 100644 --- a/data/glade/roster_window.glade +++ b/data/glade/roster_window.glade @@ -31,7 +31,7 @@ True - _Start Chat + _Start Chat... True @@ -42,10 +42,23 @@ + + + _Send Single Message... + True + + + True + gtk-new + 1 + + + + True - _Group Chat + Join _Group Chat... True @@ -64,7 +77,7 @@ True - Add _Contact + Add _Contact... True @@ -232,7 +245,24 @@ True - gtk-missing-image + gtk-save + 1 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + _History + True + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-justify-fill 1 @@ -341,6 +371,7 @@ + diff --git a/data/glade/service_discovery_window.glade b/data/glade/service_discovery_window.glade index 197b18a9a..5c0ff24d5 100644 --- a/data/glade/service_discovery_window.glade +++ b/data/glade/service_discovery_window.glade @@ -62,16 +62,22 @@ Agent JID - node - + True - _Address: - True - address_comboboxentry + + + + + + + - 3 - GTK_FILL - + 1 + 2 + 1 + 2 + GTK_FILL @@ -127,22 +133,16 @@ Agent JID - node - + True - - - - - - - + _Address: + True + address_comboboxentry - 1 - 2 - 1 - 2 - GTK_FILL + 3 + GTK_FILL + @@ -171,41 +171,6 @@ Agent JID - node 2 - - - True - True - 6 - - - True - _Filter: - True - filter_entry - - - False - False - - - - - True - True - * - - - - 1 - - - - - False - False - 3 - - True @@ -260,7 +225,7 @@ Agent JID - node False 2 - 4 + 3 diff --git a/data/glade/single_message_window.glade b/data/glade/single_message_window.glade index 6c3f06641..67feb0147 100644 --- a/data/glade/single_message_window.glade +++ b/data/glade/single_message_window.glade @@ -8,6 +8,7 @@ 280 + True diff --git a/data/glade/zeroconf_contact_context_menu.glade b/data/glade/zeroconf_contact_context_menu.glade index 4ad215baa..e69c42668 100644 --- a/data/glade/zeroconf_contact_context_menu.glade +++ b/data/glade/zeroconf_contact_context_menu.glade @@ -9,7 +9,7 @@ Start _Chat True - + True gtk-jump-to 1 @@ -18,74 +18,103 @@ - - _Rename + + True + Send _File True - + True - gtk-refresh + gtk-save 1 - - - Edit _Groups - True - - True - + True - Send _File + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + _Manage Contact True - - + + True - gtk-missing-image + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + _Rename + True + + + True + gtk-refresh + 1 + + + + + + + Edit _Groups + True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-edit + 1 + + + + + + + Assign Open_PGP Key + True + + + + True + gtk-dialog-authentication + 1 + + + + + + + True + Add Special _Notification + True + + + True + gtk-info + 1 + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-properties 1 - - Assign Open_PGP Key - True - - - - True - gtk-missing-image - 1 - - - - - - - True - True - Add Special _Notification - True - - - True - gtk-info - 1 - - - - - - + True @@ -101,7 +130,7 @@ _History True - + True gtk-justify-fill 1 diff --git a/data/glade/zeroconf_context_menu.glade b/data/glade/zeroconf_context_menu.glade index f2928cf04..349383017 100644 --- a/data/glade/zeroconf_context_menu.glade +++ b/data/glade/zeroconf_context_menu.glade @@ -1,49 +1,41 @@ - - - + + + - - - - - - True - _Status - True - - - - True - gtk-network - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _Modify Account... - True - - - - True - gtk-preferences - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - + + + + True + _Status + True + + + True + gtk-network + 1 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + + True + _Modify Account... + True + + + True + gtk-preferences + 1 + + + + + diff --git a/data/nibs/Gajim.nib/classes.nib b/data/nibs/Gajim.nib/classes.nib new file mode 100644 index 000000000..b9b4b09f6 --- /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 000000000..9cb6b534d --- /dev/null +++ b/data/nibs/Gajim.nib/info.nib @@ -0,0 +1,24 @@ + + + + + IBDocumentLocation + 82 255 356 240 0 0 1280 832 + IBEditorPositions + + 29 + 476 296 342 44 0 0 1280 832 + + IBFramework Version + 446.1 + IBOldestOS + 4 + IBOpenObjects + + 289 + 29 + + IBSystem Version + 8S165 + + diff --git a/data/nibs/Gajim.nib/keyedobjects.nib b/data/nibs/Gajim.nib/keyedobjects.nib new file mode 100644 index 000000000..f13f467bf Binary files /dev/null and b/data/nibs/Gajim.nib/keyedobjects.nib differ diff --git a/data/other/cacerts.pem b/data/other/cacerts.pem index 26a90f150..163f6c74c 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 000000000..37516d5e8 Binary files /dev/null and b/data/pixmaps/gajim.icns differ diff --git a/debian/changelog b/debian/changelog index 63c700cb2..e54512290 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 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 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 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 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 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 16602afc5..760ac7542 100644 --- a/debian/control +++ b/debian/control @@ -2,17 +2,20 @@ Source: gajim Section: net Priority: optional Maintainer: Yann Le Boulanger -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 f1efc22e2..cd7a318f3 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 5bab0137c..00ec90cc9 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 08b9110a0..7a3f8b5f6 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 0bf5641a2..476281bef 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 dcbedded6..f56c61c84 100644 --- a/po/cs.po +++ b/po/cs.po @@ -14,11 +14,15 @@ # Petr Mensik , 2005. # Pihhan , 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 \n" "Language-Team: \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 "" -"Account is being created\n" +"Connecting to server\n" "\n" "Please wait..." msgstr "" @@ -99,115 +110,131 @@ msgid "Please fill in the data for your new account" msgstr "Prosím vyplňte údaje pro Váš nový účet" #: ../data/glade/account_creation_wizard_window.glade.h:6 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Klikněte pro seznam vlastností (jako MSN, ICQ transporty) jabber serverů" +msgid "Please select a server" +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 "Miscellaneous" msgstr "Příslušenství" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "OpenPGP" msgstr "OpenPGP" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "Personal Information" msgstr "Osobní údaje" #: ../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 +#: ../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 +#: ../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/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:24 -msgid "Manage..." -msgstr "Spravovat..." - -#: ../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/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 "Popis" #: ../data/glade/advanced_configuration_window.glade.h:2 msgid "NOTE: You should restart Gajim for some settings to take effect" -msgstr "POZNÁMKA: Měl(a) by jste restartovat gajim, aby se projevila všechna nastavení" +msgstr "" +"POZNÁMKA: Měl(a) by jste restartovat gajim, aby se projevila všechna " +"nastavení" #: ../data/glade/advanced_configuration_window.glade.h:3 msgid "Advanced Configuration Editor" @@ -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 "Type your new status message" +msgstr "Napište nový popis stavu" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Uložené stavy:" + +# FIXME: not accurate +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Uložit stav..." + +#: ../data/glade/chat_context_menu.glade.h: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" "WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." msgstr "" "Vítejte do Gajimova Správce Historie\n" "\n" "Můžete zvolit záznamy nalevo a/nebo prohledat databázi dole.\n" "\n" "VAROVÁNÍ:\n" -"Pokud plánujete rozsáhlé promazání, ujistěte se, že Gajim neběží. Obecně se vyvarujte mazání historie kontaktu, se kterým si právě píšete." +"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 "Type your new status message" -msgstr "Napište nový popis stavu" - -#: ../data/glade/change_status_message_dialog.glade.h:2 -msgid "Preset messages:" -msgstr "Uložené stavy:" - -# FIXME: not accurate -#: ../data/glade/change_status_message_dialog.glade.h:3 -msgid "Save as Preset..." -msgstr "Uložit stav..." - -#: ../data/glade/chat_context_menu.glade.h:1 -msgid "Join _Group Chat" -msgstr "Vstoupit do _Diskuze" - -#: ../data/glade/chat_context_menu.glade.h: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 -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" - #: ../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" + +#: ../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 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 "When new event is received" msgstr "Když je přijata nová zpráva" -#: ../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" - #: ../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 +#: ../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 "_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" - -#: ../data/glade/roster_contact_context_menu.glade.h:15 +#: ../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 "Jabber Traffic" @@ -2216,11 +2505,6 @@ msgstr "Provoz Jabberu" msgid "XML Input" msgstr "Vstup XML" -#. XML Console enable checkbutton -#: ../data/glade/xml_console_window.glade.h:4 -msgid "Enable" -msgstr "Povolit" - #. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) #: ../data/glade/xml_console_window.glade.h:6 msgid "Info/Query" @@ -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" @@ -2320,285 +2582,487 @@ msgstr "(Žádný)" msgid "Hidden" msgstr "Skryté" -#: ../src/config.py:137 -#: ../src/config.py:586 +#. 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 , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Použití: /%s , 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" + +#. 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" + +#. %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\"" + +#: ../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: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 -msgid "OpenPGP is not usable in this computer" -msgstr "OpenPGP není použitelné na tomto počítači" - -#: ../src/config.py:1298 -msgid "You are currently connected to the server" -msgstr "Nejste přávě připojen(a) k serveru" - -#: ../src/config.py:1299 -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 -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 -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." -msgstr "Toto jméno je už použito pro jiný účet. Zvolte jiné, prosím." - -#: ../src/config.py:1312 -#: ../src/config.py:1316 -msgid "Invalid account name" -msgstr "Neplatné jméno účtu" - -#: ../src/config.py:1313 -msgid "Account name cannot be empty." -msgstr "Jméno účtu nemůže být prázdné." - -#: ../src/config.py:1317 -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 -msgid "Invalid Jabber ID" -msgstr "Neplatné Jabber ID" - -#: ../src/config.py:1332 -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 -msgid "Invalid entry" -msgstr "Neplatný záznam" - -#: ../src/config.py:1392 -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:1530 -msgid "Relogin now?" -msgstr "Připojit se teď znovu?" - -#: ../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:1557 -msgid "No such account available" -msgstr "Takový účet není dostupný" - -#: ../src/config.py:1558 -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 -msgid "You are not connected to the server" -msgstr "Nejste připojen(a) k serveru" - -#: ../src/config.py:1566 -msgid "Without a connection, you can not edit your personal information." -msgstr "Bez připojení nemůžete upravovat osobní údaje." - -#: ../src/config.py:1570 -msgid "Your server doesn't support Vcard" -msgstr "Váš server nepodporuje vizitky." - -#: ../src/config.py:1571 -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/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:1838 -msgid "Server" -msgstr "Server" +#: ../src/config.py:1460 ../src/common/config.py:373 +msgid "Be right back." +msgstr "Hned jsem zpět." -#: ../src/config.py:1902 +#: ../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: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:1939 +#: ../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:1940 +#: ../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?" +msgstr "" +"Všechna okna rozhovorů a diskuzí budou zavřena. Opravdu chceš pokračovat?" -#: ../src/config.py:1999 +#: ../src/config.py:1735 +msgid "You are currently connected to the server" +msgstr "Nejste přávě připojen(a) k serveru" + +#: ../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: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:1746 +msgid "Account Name Already Used" +msgstr "Jméno účtu už existuje" + +#: ../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:1751 ../src/config.py:1755 +msgid "Invalid account name" +msgstr "Neplatné jméno účtu" + +#: ../src/config.py:1752 +msgid "Account name cannot be empty." +msgstr "Jméno účtu nemůže být prázdné." + +#: ../src/config.py:1756 +msgid "Account name cannot contain spaces." +msgstr "Jméno účtu nesmí obsahovat mezery." + +#: ../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: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:2033 ../src/config.py:3177 +msgid "Invalid entry" +msgstr "Neplatný záznam" + +#: ../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:2055 +msgid "Failed to get secret keys" +msgstr "Selhalo získání privátního klíče" + +#: ../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: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:2117 +msgid "No such account available" +msgstr "Takový účet není dostupný" + +#: ../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: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:2126 +msgid "Without a connection, you can not edit your personal information." +msgstr "Bez připojení nemůžete upravovat osobní údaje." + +#: ../src/config.py:2130 +msgid "Your server doesn't support Vcard" +msgstr "Váš server nepodporuje vizitky." + +#: ../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: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 "" "Whom do you want to ban?\n" "\n" @@ -2606,37 +3070,37 @@ msgstr "" "Koho chcete zakázat?\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 "" "Whom do you want to make a member?\n" "\n" msgstr "Kdo se má stát členem?\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 "" "Whom do you want to make an owner?\n" "\n" msgstr "Kdo se má stát vlastníkem?\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 "" "Whom do you want to make an administrator?\n" "\n" msgstr "Kdo se má stát správcem?\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: %s" msgstr "Jméno kontaktu: %s" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:65 #, python-format msgid "Jabber ID: %s" msgstr "Jabber ID: %s" -#: ../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 -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:820 msgid "translator-credits" msgstr "Petr Menšík " -#: ../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 %s" 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 "Edit a rule" msgstr "Upravit pravidlo" -#: ../src/dialogs.py:2040 +#: ../src/dialogs.py:2284 msgid "Add a rule" msgstr "Přidat pravidlo" -#: ../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 +#: ../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:428 +msgid "Do you accept this request?" +msgstr "Chcete přijmout tuto žádost?" + +#: ../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:409 -msgid "Do you accept this request?" -msgstr "Chcete přijmout tuto žádost?" - -#: ../src/gajim.py:455 -#: ../src/notify.py:435 +#: ../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" +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 +#: ../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 +#: ../src/groupchat_control.py:1420 #, 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)" +msgid "" +"Usage: /%s [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 [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:1260 +#: ../src/groupchat_control.py:1427 #, python-format -msgid "Commands: %s" -msgstr "Příkazy: %s" +msgid "" +"Usage: /%s , opens a private chat window with the specified " +"occupant." +msgstr "" +"Použití: /%s , otevře okno soukromého rozhovoru uvedenému " +"nájemníkovi." -#: ../src/groupchat_control.py:1262 +#: ../src/groupchat_control.py:1433 #, python-format -msgid "Usage: /%s [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 [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." +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:1269 +#: ../src/groupchat_control.py:1439 #, python-format -msgid "Usage: /%s , opens a private chat window with the specified occupant." -msgstr "Použití: /%s , otevře okno soukromého rozhovoru uvedenému nájemníkovi." +msgid "" +"Usage: /%s [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "" +"Použití: /%s [důvod], pozve JID do této místnosti, případně s uvedeným " +"důvodem." -#: ../src/groupchat_control.py:1273 +#: ../src/groupchat_control.py:1443 #, python-format -msgid "Usage: /%s, clears the text window." -msgstr "Použití: /%s, smaže zprávy v okně." +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Použití: /%s @[/přezdívka], nabízí vstup do místnosti " +"místnost@server, případně s uvedenou přezdívkou." -#: ../src/groupchat_control.py:1275 +#: ../src/groupchat_control.py:1447 #, 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 [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 [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:1278 +#: ../src/groupchat_control.py:1456 #, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "Použití: /%s, skryje tlačítka rozhovoru." +msgid "" +"Usage: /%s [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"Použití: /%s [zpráva], otevře okno se soukromou zprávou a odešle " +"zprávu nájemníkovi určeném přezdívkou." -#: ../src/groupchat_control.py:1281 -#, python-format -msgid "Usage: /%s [reason], invites JID to the current group chat, optionally providing a reason." -msgstr "Použití: /%s [důvod], pozve JID do této místnosti, případně s uvedeným důvodem." - -#: ../src/groupchat_control.py:1285 -#, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Použití: /%s @[/přezdívka], nabízí vstup do místnosti místnost@server, případně s uvedenou přezdívkou." - -#: ../src/groupchat_control.py:1289 -#, python-format -msgid "Usage: /%s [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 [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:1294 -#, python-format -msgid "Usage: /%s , sends action to the current group chat. Use third person. (e.g. /%s explodes.)" -msgstr "Použití: /%s , pošle akci do aktuální místnosti. Použijte třetí osobu (například /%s explodoval.)" - -#: ../src/groupchat_control.py:1298 -#, python-format -msgid "Usage: /%s [message], opens a private message window and sends message to the occupant specified by nickname." -msgstr "Použití: /%s [zpráva], otevře okno se soukromou zprávou a odešle zprávu nájemníkovi určeném přezdívkou." - -#: ../src/groupchat_control.py:1303 +#: ../src/groupchat_control.py:1461 #, python-format msgid "Usage: /%s , changes your nickname in current group chat." msgstr "Použití: /%s , 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 , sends a message without looking for other commands." +msgid "" +"Usage: /%s , sends a message without looking for other commands." msgstr "Použití: /%s , odešle zprávu bez hledání jiných příkazů." -#: ../src/groupchat_control.py: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 +#: ../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 +#: ../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/history_window.py:262 -#: ../src/notify.py:199 +#: ../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/history_window.py:268 +#: ../src/history_window.py:276 #, 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 +#: ../src/history_window.py:279 #, 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/htmltextview.py:583 ../src/htmltextview.py:594 +#, fuzzy +msgid "Timeout loading image" +msgstr "Nezdařilo se načtení obrázku" -#: ../src/chat_control.py:52 -msgid "Belarusian" -msgstr "Běloruština" +#: ../src/htmltextview.py:604 +msgid "Image is too big" +msgstr "" -#: ../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/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/chat_control.py:856 +#: ../src/message_window.py:287 msgid "Chats" msgstr "Rozhovory" -#: ../src/chat_control.py:1038 -#, python-format -msgid "%(nickname)s from group chat %(room_name)s" -msgstr "%(nickname)s z diskuze %(room_name)s" +#: ../src/message_window.py:289 +msgid "Group Chats" +msgstr "Diskuze" -#. we talk about a contact here -#: ../src/chat_control.py:1127 -#, 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/message_window.py:291 +msgid "Private Chats" +msgstr "Soukromé rozhovory" -#: ../src/chat_control.py:1263 -msgid "Encryption enabled" -msgstr "Šifrování zapnuto" - -#: ../src/chat_control.py:1268 -msgid "Encryption disabled" -msgstr "Šifrování vypnuto" - -#. %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/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: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" -#: ../src/roster_window.py:2140 +#. 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: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" -#: ../src/roster_window.py:2311 -#: ../src/roster_window.py:2382 +#. 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: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: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: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: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: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: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: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 "" +"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 "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: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í." - #: ../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: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: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:166 +#: ../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: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ý." - -#: ../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." +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: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." +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: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 "" +"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 "Indentation when using merge consecutive nickname." msgstr "" -#: ../src/common/config.py:220 +#: ../src/common/config.py:221 +#, fuzzy +msgid "Smooth scroll message in conversation window" +msgstr "Odeslat zprávu a zavřít okno" + +#: ../src/common/config.py:222 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:221 +#: ../src/common/config.py:223 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: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." - -#: ../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." - #: ../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: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: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: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 +#: ../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:261 +msgid "Invalid answer" +msgstr "Neplatná odpověď" + +#: ../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" -#. wrong answer -#: ../src/common/connection.py:225 -msgid "Invalid answer" -msgstr "Neplatná odpověď" +#: ../src/common/connection.py:408 +#, fuzzy +msgid "Connection to proxy failed" +msgstr "Spojení selhalo" -#: ../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: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 -#, 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" +#: ../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:896 +#: ../src/common/helpers.py:926 #, 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 room %s" +msgstr "" -#: ../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] "%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 user %s" +msgstr "" -#: ../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] "%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 " from %s" +msgstr "" -#: ../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] "" +msgstr[1] "" +msgstr[2] "" + +#: ../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 000000000..fb22fe239 --- /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 , 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 \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 "" +"Connecting to server\n" +"\n" +"Please wait..." +msgstr "" +"Tilslutter til server\n" +"\n" +"Vent venligst..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Vælg en af mulighederne under:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Fyld ind data for din nye konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Please select a server" +msgstr "Vælg venligst en server" + +#: ../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 "Miscellaneous" +msgstr "Diverse" + +#: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:1 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:2 +msgid "Personal Information" +msgstr "Personlig Information" + +#: ../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 "An error has occurred:" +msgstr "En fejl er opstået:" + +#: ../data/glade/adhoc_commands_window.glade.h:2 +msgid "Choose command to execute:" +msgstr "Vælg kommando som skal udføres:" + +#: ../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 "Description" +msgstr "Beskrivelse" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart Gajim for some settings to take effect" +msgstr "" +"NOTE: 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 "Actions" +msgstr "Handlinger" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Betingelser" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:12 +msgid "Sounds" +msgstr "Lyde" + +#: ../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 "Type your new status message" +msgstr "Skriv din nye status besked" + +#: ../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 "List of possible features in Gajim:" +msgstr "Liste over mulige egenskaber i Gajim: " + +#: ../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 "Chatstate Tab Colors" +msgstr "Samtalestatus Fane Farver" + +#: ../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 "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Velkommen til Gajim Historie Log Håndterer\n" +"\n" +"Du kan vælge logger til venstre og/eller søge i databasen under.\n" +"\n" +"ADVARSEL:\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 "Properties" +msgstr "Egenskaber" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Opsætning" + +#: ../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 "Advanced Configuration Editor" +msgstr "Avanceret Konfigurations Behandler" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Programmer" + +#: ../data/glade/preferences_window.glade.h:3 +msgid "Chat Appearance" +msgstr "Samtale udseende" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:5 +msgid "Custom" +msgstr "Tilpasset Opsætning" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "Format of a line" +msgstr "Format for en linje" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "GMail Options" +msgstr "GMail Indstillinger" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Nuværende Status Beskeder" + +#: ../data/glade/preferences_window.glade.h:10 +msgid "Privacy" +msgstr "Privatliv" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "Kontaktvinduets Udseende" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Themes" +msgstr "Temaer" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "Visual Notifications" +msgstr "Synlige Påmindelser" + +#: ../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 "Add / Edit a rule" +msgstr "Tilføj / Ændre en regel" + +#: ../data/glade/privacy_list_window.glade.h:2 +msgid "List of rules" +msgstr "Liste af regler" + +#: ../data/glade/privacy_list_window.glade.h:3 +msgid "Privacy List" +msgstr "Privatlivs Liste" + +#: ../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 "What do you want to do?" +msgstr "Hvad vil du gøre?" + +#: ../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 "Jabber Traffic" +msgstr "Jabber Trafik" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Inddata" + +#. 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 , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Brug: /%s , 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 "" +"Whom do you want to ban?\n" +"\n" +msgstr "" +"Hvem vil du bandlyse?\n" +"\n" + +#: ../src/config.py:2410 +msgid "Adding Member..." +msgstr "Tilføj Medlem..." + +#: ../src/config.py:2411 +msgid "" +"Whom do you want to make a member?\n" +"\n" +msgstr "" +"Hvem vil du gøre til medlem?\n" +"\n" + +#: ../src/config.py:2413 +msgid "Adding Owner..." +msgstr "Tilføj Ejer..." + +#: ../src/config.py:2414 +msgid "" +"Whom do you want to make an owner?\n" +"\n" +msgstr "" +"Hvem vil du gøre til ejer?\n" +"\n" + +#: ../src/config.py:2416 +msgid "Adding Administrator..." +msgstr "Tilføj Administrator..." + +#: ../src/config.py:2417 +msgid "" +"Whom do you want to make an administrator?\n" +"\n" +msgstr "" +"Hvem vil du gøre til administrator?\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: %s" +msgstr "Kontakt navn: %s" + +#: ../src/dialogs.py:66 +#, python-format +msgid "Jabber ID: %s" +msgstr "Jabber ID: %s" + +#: ../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 +#: ../src/dialogs.py:821 +msgid "translator-credits" +msgstr "Niels Felsted Thorsen " + +#: ../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 %s" +msgstr "Privatlivs Liste %s" + +#: ../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 "Edit a rule" +msgstr "Rediger en regel" + +#: ../src/dialogs.py:2290 +msgid "Add a rule" +msgstr "Tilføj en regel" + +#: ../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 [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 [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 , opens a private chat window with the specified " +"occupant." +msgstr "Brug: /%s , å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 [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "Brug: /%s [begrundelse], inviter JID til den nuværende gruppe samtale, visende begrundelsen hvis specificeret" + +#: ../src/groupchat_control.py:1444 +#, python-format +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "Brug: /%s @[/kælenavn], tilbyder at deltage i rum@server eventuelt med det specificerede kælenavn." + +#: ../src/groupchat_control.py:1448 +#, python-format +msgid "" +"Usage: /%s [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 [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 [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "Brug: /%s [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 , changes your nickname in current group chat." +msgstr "" +"Brug: /%s , æ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 , sends a message without looking for other commands." +msgstr "" +"Brug: /%s , 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 ec658b229..2b640dfaa 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 , 2005, 2006. # Benjamin Drung , 2007. +# Fabian Fingerle , 2007. +# Sebastian Schäfer , 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 \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 \n" "Language-Team: German \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 "" -"Account is being created\n" +"Connecting to server\n" "\n" "Please wait..." msgstr "" @@ -85,49 +90,68 @@ msgid "Please fill in the data for your new account" msgstr "Bitte geben Sie die Daten für Ihr neues Konto ein" #: ../data/glade/account_creation_wizard_window.glade.h:6 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Klicken, um die Fähigkeiten (z.B. MSN-, ICQ-Transporte) auf Jabber-Servern zu sehen." +msgid "Please select a server" +msgstr "Bitte einen Server wählen" #: ../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 "Miscellaneous" msgstr "Verschiedenes" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "OpenPGP" msgstr "OpenPGP" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "Personal Information" msgstr "Persönliche Informationen" #: ../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 +#: ../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 +#: ../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:25 -msgid "Manage..." -msgstr "_Verwalten..." - -#: ../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 -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 "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 "" -"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)." +"Falls aktiviert, wird Gajim das Passwort von einem GnuPG-Agent wie seahorse " +"beziehen" -#: ../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: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 "" +"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: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 "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 "Description" msgstr "Beschreibung" #: ../data/glade/advanced_configuration_window.glade.h:2 msgid "NOTE: You should restart Gajim for some settings to take effect" -msgstr "HINWEIS: Sie sollten Gajim neu starten, damit alle Änderungen in Kraft treten" +msgstr "" +"HINWEIS: 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 "Conditions" msgstr "Ereignisse" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "Sounds" msgstr "Klänge" @@ -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 +#: ../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 msgid "Toggle Open_PGP Encryption" msgstr "Open_PGP-Verschlüsselung aktivieren" -#: ../data/glade/chat_control_popup_menu.glade.h:5 -#: ../data/glade/gc_control_popup_menu.glade.h:6 -msgid "_Compact View Alt+C" -msgstr "_Kompakte Ansicht Alt+C" - #: ../data/glade/chat_control_popup_menu.glade.h:6 -#: ../data/glade/gc_control_popup_menu.glade.h: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 "List of possible features in Gajim:" +msgstr "Liste möglicher Gajim-Features:" + +#: ../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" "WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." msgstr "" "Willkommen zum Gajim Verlaufsmanager\n" "\n" "Sie können Logs links auswählen und/oder unten die Datenbank durchsuchen.\n" "\n" "WARNUNG:\n" -"Wenn Sie massiv Daten löschen möchten, stellen Sie sicher, dass Gajim nicht läuft. Vermeiden Sie generell Löschungen von Kontakten, mit denen Sie gerade 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 "History Viewer" +msgstr "Verlauf ansehen" #: ../data/glade/history_window.glade.h:2 +msgid "JID Selection" +msgstr "JID Auswahl" + +#: ../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 "Erweiterter Konfigurations-Editor" msgid "Applications" msgstr "Anwendungen" +#: ../data/glade/preferences_window.glade.h:3 +#, fuzzy +msgid "Chat Appearance" +msgstr "Eine Regel bearbeiten" + #. 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 "Custom" msgstr "Benutzerdefiniert" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "Format of a line" msgstr "Format einer Zeile" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "GMail Options" msgstr "Gmail-Optionen" -#: ../data/glade/preferences_window.glade.h:7 -msgid "Interface Customization" -msgstr "Benutzerdefiniertes Aussehen" - #: ../data/glade/preferences_window.glade.h:9 msgid "Preset Status Messages" msgstr "Voreingestellte Status-Nachrichten" +#: ../data/glade/preferences_window.glade.h:10 +#, fuzzy +msgid "Privacy" +msgstr "Privatsphären-Liste" + #: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "Roster-Aussehen" + +#: ../data/glade/preferences_window.glade.h:13 +#, fuzzy +msgid "Themes" +msgstr "Eigenschaften" + +#: ../data/glade/preferences_window.glade.h:14 msgid "Visual Notifications" msgstr "Visuelle Benachrichtigungen" -#: ../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" +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" - -#: ../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:" - -#: ../data/glade/preferences_window.glade.h:41 -msgid "E_very 5 minutes" -msgstr "Alle 5 _Minuten" - -#: ../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 "Ereignisse" -#: ../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: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 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." +#: ../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 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 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" +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: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: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)" - -#: ../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:58 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:66 +#, fuzzy +msgid "Privacy" +msgstr "Privatliste" -#: ../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: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:92 +msgid "_Make message windows compact" +msgstr "Nachrichtenfenster _kompakt anzeigen" -#: ../data/glade/preferences_window.glade.h:99 -msgid "_Notify me about it" -msgstr "Be_nachrichtigen" - -#: ../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 +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../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" -#. 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" - -#: ../data/glade/roster_contact_context_menu.glade.h:15 +#: ../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 "Jabber Traffic" @@ -2213,11 +2543,6 @@ msgstr "Jabber Verkehrsdaten" msgid "XML Input" msgstr "XML Direkteingabe" -#. XML Console enable checkbutton -#: ../data/glade/xml_console_window.glade.h:4 -msgid "Enable" -msgstr "Einschalten" - #. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) #: ../data/glade/xml_console_window.glade.h:6 msgid "Info/Query" @@ -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:1259 +#: ../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 , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Bedienung: /%s , 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: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 "Benutzerdefiniert" + +#: ../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 -msgid "OpenPGP is not usable in this computer" -msgstr "OpenPGP kann auf diesem Computer nicht genutzt werden" - -#: ../src/config.py:1306 -msgid "You are currently connected to the server" -msgstr "Sie sind mit dem Server verbunden" - -#: ../src/config.py:1307 -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 -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 -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:1320 -#: ../src/config.py:1324 -msgid "Invalid account name" -msgstr "Ungültiger Kontoname" - -#: ../src/config.py:1321 -msgid "Account name cannot be empty." -msgstr "Kontoname darf nicht leer sein." - -#: ../src/config.py:1325 -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 -msgid "Invalid Jabber ID" -msgstr "Ungültige Jabber ID" - -#: ../src/config.py:1340 -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 -msgid "Invalid entry" -msgstr "Ungültiger Eintrag" - -#: ../src/config.py:1400 -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:1538 -msgid "Relogin now?" -msgstr "Jetzt neu einloggen?" - -#: ../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:1565 -msgid "No such account available" -msgstr "Account nicht verfügbar" - -#: ../src/config.py:1566 -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" - -#: ../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 -msgid "You are not connected to the server" -msgstr "Sie sind nicht mit dem Server verbunden" - -#: ../src/config.py:1574 -msgid "Without a connection, you can not edit your personal information." -msgstr "Sie müssen angemeldet sein, um Ihre persönlichen Informationen zu bearbeiten" - -#: ../src/config.py:1578 -msgid "Your server doesn't support Vcard" -msgstr "Ihr Server unterstützt vCard nicht" - -#: ../src/config.py:1579 -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 +#: ../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:1853 -#: ../src/dialogs.py:1341 -msgid "Server" -msgstr "Server" +#: ../src/config.py:1427 ../src/common/config.py:393 +msgid "Be right back." +msgstr "Bin gleich zurück." -#: ../src/config.py:1917 +#: ../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: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:1954 +#: ../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:1955 +#: ../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:2014 +#: ../src/config.py:1691 +msgid "You are currently connected to the server" +msgstr "Sie sind mit dem Server verbunden" + +#: ../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: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:1702 +msgid "Account Name Already Used" +msgstr "Kontoname wird bereits verwendet" + +#: ../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:1707 ../src/config.py:1711 +msgid "Invalid account name" +msgstr "Ungültiger Kontoname" + +#: ../src/config.py:1708 +msgid "Account name cannot be empty." +msgstr "Kontoname darf nicht leer sein." + +#: ../src/config.py:1712 +msgid "Account name cannot contain spaces." +msgstr "Kontoname darf keine Leerzeichen enthalten." + +#: ../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: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:1990 ../src/config.py:3121 +msgid "Invalid entry" +msgstr "Ungültiger Eintrag" + +#: ../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:2012 +msgid "Failed to get secret keys" +msgstr "Holen der geheimen Schlüssel fehlgeschlagen" + +#: ../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: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:2057 +msgid "No such account available" +msgstr "Account nicht verfügbar" + +#: ../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" + +#: ../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: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" + +#: ../src/config.py:2070 +msgid "Your server doesn't support Vcard" +msgstr "Ihr Server unterstützt vCard nicht" + +#: ../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: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 "" "Whom do you want to ban?\n" "\n" @@ -2790,11 +3158,11 @@ msgstr "" "Wen möchten Sie verbannen?\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 "" "Whom do you want to make a member?\n" "\n" @@ -2802,11 +3170,11 @@ msgstr "" "Wen möchten Sie zum Mitglied machen?\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 "" "Whom do you want to make an owner?\n" "\n" @@ -2814,11 +3182,11 @@ msgstr "" "Wen möchten Sie zum Besitzer machen?\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 "" "Whom do you want to make an administrator?\n" "\n" @@ -2826,7 +3194,7 @@ msgstr "" "Wen möchten Sie zum Administrator machen?\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." +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." - -#: ../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:2964 -msgid "Your new account has been created successfully" -msgstr "Ihr neues Konto wurde erfolgreich erstellt" +#: ../src/config.py:3097 +msgid "Invalid server" +msgstr "Ungültiger Server" -#: ../src/config.py:2982 +#: ../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: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: %s" msgstr "Kontaktname: %s" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: %s" msgstr "Jabber ID: %s " -#: ../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 -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:879 msgid "translator-credits" msgstr "" "Fridtjof Busse\n" -"Benjamin Drung " +"Benjamin Drung \n" +"Fabian Fingerle \n" +"Sebastian Schäfer " -#: ../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 %s" msgstr "Privatliste %s" -#: ../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 "Edit a rule" msgstr "Eine Regel bearbeiten" -#: ../src/dialogs.py:2230 +#: ../src/dialogs.py:2444 msgid "Add a rule" msgstr "Eine Regel hinzufügen" -#: ../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." -#. Don't translate $Contact -#: ../src/dialogs.py:2433 +#: ../src/dialogs.py:2650 +msgid "$Contact has invited you to join a discussion" +msgstr "$Contact hat Sie in den Gruppenchat %(room_jid)s eingeladen" + +#: ../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: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 heißt jetzt %s" + +#: ../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 "Bitte geben Sie einen neuen Benutzernamen für Ihr lokales Konto ein" +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:105 -msgid "Shows the chat dialog so that you can send messages to a contact" -msgstr "Zeige Chatfenster, so dass eine Nachricht an einen Kontakt gesendet werden kann" - #: ../src/gajim-remote.py: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: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" + +#: ../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 +#: ../src/gajim-remote.py:140 msgid "message subject" msgstr "Nachrichten-Betreff" -#: ../src/gajim-remote.py:141 +#: ../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: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 +#: ../src/groupchat_control.py:1459 #, python-format -msgid "%s does not appear to be a valid JID" -msgstr "%s scheint keine gültige JID zu sein" +msgid "" +"Usage: /%s [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 [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:1247 +#: ../src/groupchat_control.py:1466 #, 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)" +msgid "" +"Usage: /%s , opens a private chat window with the specified " +"occupant." +msgstr "" +"Verwendung: /%s , öffnet ein privates Nachrichtenfenster mit dem " +"Inhaber des angegebenen Spitznamens." -#: ../src/groupchat_control.py:1270 +#: ../src/groupchat_control.py:1472 #, python-format -msgid "Commands: %s" -msgstr "Kommandos: %s" +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:1273 +#: ../src/groupchat_control.py:1478 #, python-format -msgid "Usage: /%s [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 [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." +msgid "" +"Usage: /%s [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "" +"Bedienung: /%s [Grund], lädt die JID in den aktuellen Gruppenchat ein, " +"optional mit der Angabe eines Grundes." -#: ../src/groupchat_control.py:1280 +#: ../src/groupchat_control.py:1482 #, python-format -msgid "Usage: /%s , opens a private chat window with the specified occupant." -msgstr "Verwendung: /%s , öffnet ein privates Nachrichtenfenster mit dem Inhaber des angegebenen Spitznamens." +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Bedienung: /%s @ [/Spitzname], bietet den Beitritt zu " +"Raum@Server an, optional mit Spitznamen." -#: ../src/groupchat_control.py:1284 +#: ../src/groupchat_control.py:1486 #, python-format -msgid "Usage: /%s, clears the text window." -msgstr "Bedienung: /%s, leert das Textfenster." +msgid "" +"Usage: /%s [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 [Grund], verweist den Inhaber des Spitznamen des " +"Gruppenchats und zeigt optional einen Grund. Unterstützt KEINE Leerzeichen " +"im Spitznamen." -#: ../src/groupchat_control.py:1286 +#: ../src/groupchat_control.py:1495 #, 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 [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"Verwendung: /%s [Nachricht], öffnet ein privates " +"Nachrichtenfenster und sendet die Nachricht zum Inhaber des angegebenen " +"Spitznamens." -#: ../src/groupchat_control.py:1289 -#, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "Verwendung: /%s, versteckt die Chatbuttons." - -#: ../src/groupchat_control.py:1292 -#, python-format -msgid "Usage: /%s [reason], invites JID to the current group chat, optionally providing a reason." -msgstr "Bedienung: /%s [Grund], lädt die JID in den aktuellen Gruppenchat ein, optional mit der Angabe eines Grundes." - -#: ../src/groupchat_control.py:1296 -#, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Bedienung: /%s @ [/Spitzname], bietet den Beitritt zu Raum@Server an, optional mit Spitznamen." - -#: ../src/groupchat_control.py:1300 -#, python-format -msgid "Usage: /%s [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 [Grund], verweist den Inhaber des Spitznamen des Gruppenchats und zeigt optional einen Grund. Unterstützt KEINE Leerzeichen im Spitznamen." - -#: ../src/groupchat_control.py:1305 -#, python-format -msgid "Usage: /%s , sends action to the current group chat. Use third person. (e.g. /%s explodes.)" -msgstr "Bedienung: /%s , sendet die Aktion im aktuellen Gruppenchat. Verwende dritte Person, z.B. /%s explodiert)." - -#: ../src/groupchat_control.py:1309 -#, python-format -msgid "Usage: /%s [message], opens a private message window and sends message to the occupant specified by nickname." -msgstr "Verwendung: /%s [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 , changes your nickname in current group chat." -msgstr "Bedienung: /%s , ändert den Spitznamen im aktuellen Gruppenchat." +msgstr "" +"Bedienung: /%s , ä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." +msgstr "" +"Benutzung: /%s [topic], zeigt oder aktualisiert das derzeitige Gruppenchat-" +"Thema." -#: ../src/groupchat_control.py:1325 +#: ../src/groupchat_control.py:1511 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." -msgstr "Benutzung: /%s , sendet eine Nachricht ohne andere Befehle zu beachten." +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Benutzung: /%s , sendet eine Nachricht ohne andere Befehle zu " +"beachten." -#: ../src/groupchat_control.py:1328 -#, python-format -msgid "No help info for /%s" -msgstr "Keine Hilfe vorhanden für /%s" - -#: ../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:189 +#: ../src/history_manager.py:192 msgid "" -"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Möchten Sie die Datenbank aufräumen? (NICHT EMPFOHLEN, WENN GAJIM GERADE " +"LÄUFT)" + +#: ../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" "\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" -#: ../src/roster_window.py:2143 +#. 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: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" -#: ../src/roster_window.py:2314 -#: ../src/roster_window.py:2385 +#. Manage Transport submenu +#: ../src/roster_window.py:2866 +msgid "_Manage Transport" +msgstr "Transports" + +#. 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: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: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: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: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: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: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: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:4132 -#, python-format -msgid "Do you want to send that file to %s:" +#: ../src/roster_window.py:4989 +#, fuzzy +msgid "Invalid file URI:" +msgstr "Ungültige Datei" + +#: ../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:" +msgstr[1] "%s möchte ihnen diese Dateien senden:" -#: ../src/roster_window.py:4237 -#, python-format -msgid "Drop %s in group %s" -msgstr "Setze %s in Gruppe %s" - -#: ../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 -msgid "Use D-Bus and Notification-Daemon to show notifications" -msgstr "Verwende D-Bus und Notification-Daemon, um Benachrichtigungen zu zeigen" +#: ../src/common/commands.py:247 +msgid "Forward unread messages" +msgstr "Ungelesene Nachrichten weiterleiten" -#: ../src/common/config.py:61 +#: ../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" + +#: ../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: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: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: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: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: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: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: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." +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:199 +#: ../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: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: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: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: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: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: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: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: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:1873 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Sie sind von Gruppenchat %s gebannt." -#: ../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: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 , 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 , " +"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:632 +#: ../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: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 -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." +#: ../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:207 +#: ../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." + +#: ../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 "Interface Customization" +#~ msgstr "Benutzerdefiniertes Aussehen" + +#~ 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 "Romeo and Juliet" #~ msgstr "Romeo und Julia" + #~ 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 "Please modify your special notification below" #~ msgstr "Bitte wählen Sie eine der Optionen:" + #~ 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 "Changes in latest version" #~ msgstr "Änderungen in der neuesten Version" + #~ 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 "Log" #~ msgstr "Log" + #~ 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 "Please fill in the data for your existing account" #~ msgstr "Bitte tragen Sie die Daten für ihr bestehendes Konto ein" + #~ 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 7c2f28549..7149ff9ff 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 fbaf570e1..1cf26330b 100644 --- a/po/it.po +++ b/po/it.po @@ -5,17 +5,18 @@ # Mauro Brenna , 2005,2006. # Andrea Ratti , 2005. # Matteo Dell'Amico , 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 , 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 \n" +"POT-Creation-Date: 2007-09-14 21:09+0200\n" +"PO-Revision-Date: 2007-09-14 20:53+0100\n" +"Last-Translator: neoex \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 "" -"Account is being created\n" +"Connecting to server\n" "\n" "Please wait..." msgstr "" -"Creazione dell'account in corso\n" +"Connessione al server\n" "\n" "Attendere prego..." @@ -89,50 +90,68 @@ msgid "Please fill in the data for your new account" msgstr "Inserire i dati per il nuovo account" #: ../data/glade/account_creation_wizard_window.glade.h:6 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Cliccare per vedere i servizi (come i trasporti MSN o ICQ) dei server Jabber" +msgid "Please select a server" +msgstr "Selezionare un server" #: ../data/glade/account_creation_wizard_window.glade.h:7 -msgid "Connect when I press Finish" -msgstr "Collegati alla pressione di Fine" +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Clicca per vedere i servizi (come i trasporti MSN o ICQ) dei server Jabber" #: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Connect when I press Finish" +msgstr "Connettiti alla pressione di Fine" + +#: ../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 "Miscellaneous" msgstr "Varie" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "OpenPGP" msgstr "OpenPGP" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "Personal Information" msgstr "Informazioni personali" #: ../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/zeroconf_properties_window.glade.h:3 -msgid "C_onnect on Gajim startup" -msgstr "_Connetti all'avvio di Gajim" +#: ../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 "C_onnetti all'avvio di Gajim" + +#: ../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 -msgid "Click to change account's password" -msgstr "Cliccare per cambiare la password dell'account" - #: ../data/glade/account_modification_window.glade.h:12 +#: ../data/glade/accounts_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Clicca per cambiare la password dell'account" + +#: ../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" - -#: ../data/glade/account_modification_window.glade.h:41 -msgid "Use _SSL (legacy)" -msgstr "Usa _SSL (legacy)" - -#: ../data/glade/account_modification_window.glade.h:42 -msgid "Use custom hostname/port" -msgstr "Usa hostname/port personalizzati" +msgstr "Sinc_ronizza lo stato dell'account con lo stato globale" #: ../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:44 +#: ../data/glade/accounts_window.glade.h:52 +msgid "Use _SSL (legacy)" +msgstr "Usa _SSL (vecchio)" + +#: ../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 +#. 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: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 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 "" -"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." +"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: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 "" -"Se marcato e se sono presenti 2 o più account, Gajim mostrerà tutti i " -"contatti come se ci fosse un unico account" +#: ../data/glade/accounts_window.glade.h: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: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 "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 "An error has occurred:" -msgstr "È avvenuto un errore:" +msgstr "Si è verificato un errore:" #: ../data/glade/adhoc_commands_window.glade.h:2 msgid "Choose command to execute:" -msgstr "Scegliere il comando da eseguire:" +msgstr "Scegli il comando da eseguire:" #: ../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 "Description" @@ -573,7 +662,9 @@ msgstr "Descrizione" #: ../data/glade/advanced_configuration_window.glade.h:2 msgid "NOTE: You should restart Gajim for some settings to take effect" -msgstr "NOTA: È necessario riavviare Gajim perché alcune impostazioni abbiano effetto" +msgstr "" +"NOTA: È 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 "Edit _Privacy Lists..." +msgstr "Modifica liste _privacy..." + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 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:4 -msgid "Set MOTD" -msgstr "Imposta MOTD" - #: ../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 "Conditions" msgstr "Condizioni" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "Sounds" msgstr "Suoni" @@ -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 "Romeo and Juliet" -msgstr "Romeo e Giulietta" - -#: ../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 +#: ../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 msgid "Toggle Open_PGP Encryption" msgstr "Attiva cifratura Open_PGP" -#: ../data/glade/chat_control_popup_menu.glade.h:5 -#: ../data/glade/gc_control_popup_menu.glade.h:6 -msgid "_Compact View Alt+C" -msgstr "_Vista compatta Alt+C" - #: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_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 -msgid "_Admin" -msgstr "_Admin" +#: ../data/glade/gc_occupants_menu.glade.h:2 +msgid "Occupant Actions" +msgstr "Azioni partecipante" -#: ../data/glade/gc_occupants_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:5 +msgid "_Admin" +msgstr "_Amministratore" + +#: ../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 "" -"Benvenuti al gestore delle cronologie di Gajim\n" +"Benvenuto nel gestore della cronologia di Gajim\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" "ATTENZIONE:\n" -"Se si ha intenzione di cancellare molte cose, verificare che Gajim non sia " -"in esecuzione. Generalmente evitare di eliminare dati sui contatti con cui " -"si sta conversando." +"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 "History Viewer" +msgstr "Gestore cronologia" + +#: ../data/glade/history_window.glade.h:2 +msgid "JID Selection" +msgstr "Selezione JID" + +#: ../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 "Settings" msgstr "Impostazioni" #: ../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 "Editor di configurazione avanzata" msgid "Applications" msgstr "Applicazioni" +#: ../data/glade/preferences_window.glade.h:3 +msgid "Chat Appearance" +msgstr "Aspetto della chat" + #. 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 "Custom" msgstr "Personalizzato" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "Format of a line" msgstr "Formato di una linea" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "GMail Options" msgstr "Opzioni GMail" -#: ../data/glade/preferences_window.glade.h:7 -msgid "Interface Customization" -msgstr "Personalizzazione dell'interfaccia" - #: ../data/glade/preferences_window.glade.h:9 msgid "Preset Status Messages" msgstr "Messaggi di stato predefiniti" +#: ../data/glade/preferences_window.glade.h:10 +msgid "Privacy" +msgstr "Privacy" + #: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "Aspetto lista contatti" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Themes" +msgstr "Temi" + +#: ../data/glade/preferences_window.glade.h:14 msgid "Visual Notifications" msgstr "Notifiche visuali" -#: ../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" +"Personalizzate" -#: ../data/glade/preferences_window.glade.h:29 ../src/chat_control.py:852 -msgid "Chat" -msgstr "Chat" - -#: ../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." +"si vogliono inviare al contatto." -#: ../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" - -#: ../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:65 +#: ../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: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:66 +msgid "Privacy" +msgstr "Privacy" -#: ../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: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" +"Imposta il messaggio di stato in modo che rifletta la traccia _musicale in " +"riproduzione" -#: ../data/glade/preferences_window.glade.h:74 -msgid "Show only in _roster" -msgstr "Mostra solo nella lista _contatti" - -#: ../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:80 +msgid "When new event is received:" +msgstr "Quando si riceve un nuovo evento:" -#: ../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: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 -msgid "_File manager:" -msgstr "Gestore _file:" +#: ../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:92 +#: ../data/glade/preferences_window.glade.h:85 +msgid "_File manager:" +msgstr "_File manager:" + +#: ../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:" +msgstr "_Client di posta:" -#: ../data/glade/preferences_window.glade.h:98 -msgid "_Never" -msgstr "_Mai" +#: ../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:99 -msgid "_Notify me about it" -msgstr "_Notifica" - -#: ../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 "Add / Edit a rule" -msgstr "Aggiungi/ modifica una regola" +msgstr "Aggiungi/modifica una regola" #: ../data/glade/privacy_list_window.glade.h:2 msgid "List of rules" @@ -1832,15 +1911,15 @@ msgstr "Lista privacy" #: ../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 +#: ../data/glade/profile_window.glade.h:9 +#: ../data/glade/vcard_information_window.glade.h:14 msgid "Country:" msgstr "Paese:" -#: ../data/glade/profile_window.glade.h:9 -#: ../data/glade/vcard_information_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:10 +#: ../data/glade/vcard_information_window.glade.h:15 msgid "Department:" msgstr "Dipartimento:" -#: ../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:" - -#: ../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 "What do you want to do?" -msgstr "Cosa fare?" +msgstr "Cosa vuoi fare?" #: ../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 +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../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" -#. 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" - -#: ../data/glade/roster_contact_context_menu.glade.h:15 +#: ../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 "Jabber Traffic" @@ -2336,11 +2448,6 @@ msgstr "Traffico Jabber" msgid "XML Input" msgstr "Inserimento XML" -#. XML Console enable checkbutton -#: ../data/glade/xml_console_window.glade.h:4 -msgid "Enable" -msgstr "Abilita" - #. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) #: ../data/glade/xml_console_window.glade.h:6 msgid "Info/Query" @@ -2349,7 +2456,7 @@ msgstr "Info/Richiesta (Info/Query)" #. Info/Query: all(?) jabber xml start with , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Utilizzo: /%s , invia l'azione alla stanza corrente. Usare la terza " +"persona (esempio: /%s esplode)." + +#: ../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:1289 +#, python-format +msgid "Usage: /%s, send the message to the contact" +msgstr "Utilizzo: /%s, invia il messaggio al contatto" + +#: ../src/chat_control.py:1292 ../src/groupchat_control.py:1492 +#, python-format +msgid "No help info for /%s" +msgstr "Non esiste aiuto per /%s" + +#: ../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 -msgid "OpenPGP is not usable in this computer" -msgstr "Non è possibile usare OpenPGP su questo computer" +#. 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:1307 -msgid "You are currently connected to the server" -msgstr "Si è ora connessi al server" - -#: ../src/config.py:1308 -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 -msgid "To change the account name, you must read all pending events." -msgstr "Per cambiare nome account, è necessario leggere tutti gli eventi in attesa." - -#: ../src/config.py:1316 -msgid "Account Name Already Used" -msgstr "Nome account già in uso" - -#: ../src/config.py:1317 -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 -msgid "Invalid account name" -msgstr "Il nome account non è valido" - -#: ../src/config.py:1322 -msgid "Account name cannot be empty." -msgstr "Il nome account non può essere vuoto." - -#: ../src/config.py:1326 -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 -msgid "Invalid Jabber ID" -msgstr "ID Jabber non valido" - -#: ../src/config.py:1341 -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 -msgid "Invalid entry" -msgstr "Voce non valida" - -#: ../src/config.py:1401 -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 +#: ../src/config.py:1395 ../src/common/config.py:375 msgid "Be right back." msgstr "Torno subito." -#: ../src/config.py:1539 +#: ../src/config.py:1399 msgid "Relogin now?" msgstr "Effettuare un nuovo login?" -#: ../src/config.py:1540 +#: ../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:1566 -msgid "No such account available" -msgstr "Questo account non è disponibile" +#: ../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:1567 -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:1630 ../src/config.py:1674 +msgid "Unread events" +msgstr "Eventi non letti" -#: ../src/config.py:1574 ../src/dialogs.py:1130 ../src/dialogs.py:1316 -#: ../src/disco.py:419 ../src/profile_window.py:313 -msgid "You are not connected to the server" -msgstr "Non si è connessi al server" - -#: ../src/config.py:1575 -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 -msgid "Your server doesn't support Vcard" -msgstr "Il server non supporta Vcard" - -#: ../src/config.py:1580 -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 +#: ../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:1943 +#: ../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:1944 +#: ../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:2003 +#: ../src/config.py:1670 +msgid "You are currently connected to the server" +msgstr "Si è ora connessi al server" + +#: ../src/config.py:1671 +msgid "To change the account name, you must be disconnected." +msgstr "Per cambiare nome account, è necessario disconnettersi." + +#: ../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." + +#: ../src/config.py:1681 +msgid "Account Name Already Used" +msgstr "Nome account già in uso" + +#: ../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:1686 ../src/config.py:1690 +msgid "Invalid account name" +msgstr "Il nome account non è valido" + +#: ../src/config.py:1687 +msgid "Account name cannot be empty." +msgstr "Il nome account non può essere vuoto." + +#: ../src/config.py:1691 +msgid "Account name cannot contain spaces." +msgstr "Il nome account non può contenere spazi." + +#: ../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: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:1968 ../src/config.py:3119 +msgid "Invalid entry" +msgstr "Voce non valida" + +#: ../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:1990 +msgid "Failed to get secret keys" +msgstr "Fallimento nella ricezione delle chiavi segrete" + +#: ../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:1994 +msgid "OpenPGP Key Selection" +msgstr "Scelta chiave OpenPGP" + +#: ../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: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: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: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:2065 +msgid "Your server doesn't support Vcard" +msgstr "Il server non supporta Vcard" + +#: ../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: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 "" "Whom do you want to ban?\n" "\n" @@ -2904,11 +3054,11 @@ msgstr "" "Chi si vuole bloccare?\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 "" "Whom do you want to make a member?\n" "\n" @@ -2916,11 +3066,11 @@ msgstr "" "Chi si vuole rendere membro?\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 "" "Whom do you want to make an owner?\n" "\n" @@ -2928,11 +3078,11 @@ msgstr "" "Chi si vuole rendere proprietario?\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 "" "Whom do you want to make an administrator?\n" "\n" @@ -2940,7 +3090,7 @@ msgstr "" "Chi si vuole rendere amministratore?\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:3090 +#: ../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: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: %s" msgstr "Nome contatto: %s" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:66 #, python-format msgid "Jabber ID: %s" msgstr "ID Jabber: %s" -#: ../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 -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:821 msgid "translator-credits" msgstr "" "Mauro Brenna \n" "Andrea Ratti \n" -"Matteo Dell'Amico " +"Matteo Dell'Amico \n" +"Daniel Coppi " -#: ../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:1060 +#: ../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: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 %s" msgstr "Lista privacy %s" -#: ../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 "Edit a rule" msgstr "Modifica una regola" -#: ../src/dialogs.py:2040 +#: ../src/dialogs.py:2290 msgid "Add a rule" msgstr "Aggiungi una regola" -#: ../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 [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 [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 [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 , opens a private chat window with the specified " "occupant." msgstr "" -"Uso: /%s , apre una finestra di chat privata al partecipante " +"Utilizzo: /%s , 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 [reason], invites JID to the current group chat, optionally " "providing a reason." msgstr "" -"Uso: /%s [motivo], invita JID alla stanza corrente, opzionalmente " +"Utilizzo: /%s [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 @[/nickname], offers to join room@server optionally " "using specified nickname." msgstr "" -"Uso: /%s @[/nickname], offre la possibilità di entrare in " -"stanza@server, opzionalmente usando il nickname specificato." +"Utilizzo: /%s @[/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 [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 [motivo], rimuove il partecipante specificato per " +"Utilizzo: /%s [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 , sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"Uso: /%s , 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 [message], opens a private message window and sends " "message to the occupant specified by nickname." msgstr "" -"Uso: /%s [messaggio], apre una finestra di messaggi privati ed " -"invia il messaggio al partecipante specificato per nickname." +"Utilizzo: /%s [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 , changes your nickname in current group chat." -msgstr "Uso: /%s , cambia il tuo nickname nella stanza corrente." +msgstr "" +"Utilizzo: /%s , 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 , sends a message without looking for other commands." msgstr "" -"Uso: /%s , invia un messaggio senza considerare gli altri comandi." +"Utilizzo: /%s , 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" - -#: ../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" -#: ../src/roster_window.py:2312 ../src/roster_window.py:2383 +#. 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" + +#. 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 +#: ../src/roster_window.py:4949 #, python-format -msgid "Drop %s in group %s" -msgstr "Sposta %s nel gruppo %s" +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:4206 -#, python-format -msgid "Make %s and %s metacontacts" -msgstr "Rendi %s e %s metacontatti" - -#: ../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/config.py:56 +#: ../src/common/commands.py:242 +msgid "Forward unread messages" +msgstr "Inoltra messaggi non letti" + +#: ../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 -msgid "" -"Overrides the host we send 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." - #: ../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 "" +"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: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:217 +msgid "Hides the buttons in chat windows." +msgstr "Nascondi 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: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:237 +#: ../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: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:216 +msgid "Invalid local address? :-O" +msgstr "Indirizzo locale non valido? :-O" -#: ../src/common/connection_handlers.py:590 +#: ../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:1850 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Sei stato bandito dalla stanza %s." -#: ../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:1853 +#, python-format +msgid "Group chat %s does not exist." +msgstr "La stanza %s non esiste." -#: ../src/common/connection_handlers.py:1612 -msgid "Such group chat does not exist." -msgstr "Questa stanza 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 "Server %s answered wrongly to register request: %s" +msgstr "" +"Il server %s ha risposto in maniera errata alla richiesta di registrazione: %" +"s" + +#. wrong answer +#: ../src/common/connection.py:264 +msgid "Invalid answer" +msgstr "Risposta non valida" + +#: ../src/common/connection.py:265 #, python-format msgid "Transport %s answered wrongly to register request: %s" msgstr "" "Il trasporto %s ha risposto in maniera errata alla richiesta di " "registrazione: %s" -#. wrong answer -#: ../src/common/connection.py:220 -msgid "Invalid answer" -msgstr "Risposta non valida" +#: ../src/common/connection.py:411 +msgid "Connection to proxy failed" +msgstr "Connessione al proxy fallita" -#: ../src/common/connection.py:416 ../src/common/connection.py:515 -#: ../src/common/connection.py:973 -#: ../src/common/zeroconf/connection_zeroconf.py:217 +#: ../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 "Non ci si è potuti collegare a \"%s\"" +msgstr "Non è possibile connettersi a \"%s\"" -#: ../src/common/connection.py:430 +#: ../src/common/connection.py:479 #, 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." - -#: ../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:494 -#, python-format -msgid "Missing fingerprint in SSL connection to %s" -msgstr "Impronta digitale mancante nella connessione SSL a %s" - -#: ../src/common/connection.py:500 -#, python-format -msgid "Fingerprint mismatch for %s: Got %s, expected %s" -msgstr "Impronta digitale non corrispondente per %s: ottenuto %s, atteso %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 "List of possible features in Gajim:" +#~ msgstr "Lista delle possibili funzioni extra di Gajim:" + +#, 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 "Interface Customization" +#~ msgstr "Personalizzazione dell'interfaccia" + +#~ 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 "Romeo and Juliet" +#~ msgstr "Romeo e Giulietta" + +#~ 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 000000000..860a96392 --- /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 , 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 \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 "" +"Connecting to server\n" +"\n" +"Please wait..." +msgstr "" +"Prieiga kuriama\n" +"\n" +"Prašome palaukti..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Prašome pasirinkti vieną iš variantų žemiau:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Prašome užpildyti naujos Jūsų prieigos duomenis" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Please select a server" +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 "Miscellaneous" +msgstr "Įvairūs" + +#: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:1 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:2 +msgid "Personal Information" +msgstr "Asmeninė informacija" + +#: ../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 "An error has occurred:" +msgstr "Įvyko klaida:" + +#: ../data/glade/adhoc_commands_window.glade.h:2 +msgid "Choose command to execute:" +msgstr "Pasirinktie komandą vykdymui:" + +#: ../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 "Description" +msgstr "Aprašymas" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart Gajim for some settings to take effect" +msgstr "" +"PASTABA: 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 "Actions" +msgstr "Veiksmai" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Sąlygos" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:12 +msgid "Sounds" +msgstr "Garsai" + +#: ../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 "Type your new status message" +msgstr "Įveskite naują būklės žinutę" + +#: ../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 "Chatstate Tab Colors" +msgstr "Pokalbių būklės žymių spalvos" + +#: ../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 "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Gajim istorijos žurnalų valdymas\n" +"\n" +"Galite pasirinkti žurnalą kairėje ir/arba žemiau ieškoti duomenų bazę.\n" +"\n" +"ĮSPĖJIMAS:\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 "History Viewer" +msgstr "Taisyklių sąrašas" + +#: ../data/glade/history_window.glade.h:2 +#, fuzzy +msgid "JID Selection" +msgstr "Aprašymas" + +#: ../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 "Properties" +msgstr "Savybės" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Nustatymai" + +#: ../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 "Advanced Configuration Editor" +msgstr "Išplėstinis konfigūracijos redaktorius" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Programos" + +#: ../data/glade/preferences_window.glade.h:3 +#, fuzzy +msgid "Chat Appearance" +msgstr "Edit a rule" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:5 +msgid "Custom" +msgstr "Kitaip" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "Format of a line" +msgstr "Eilutės formatas" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "GMail Options" +msgstr "GMail nustatymai" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Nustatytosios būklės žinutės" + +#: ../data/glade/preferences_window.glade.h:10 +#, fuzzy +msgid "Privacy" +msgstr "Privatus Sąrašas" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:13 +#, fuzzy +msgid "Themes" +msgstr "Savybės" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "Visual Notifications" +msgstr "Vizualinis informavimas" + +#: ../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 "Add / Edit a rule" +msgstr "Pridėti / Keisti taisyklę" + +#: ../data/glade/privacy_list_window.glade.h:2 +msgid "List of rules" +msgstr "Taisyklių sąrašas" + +#: ../data/glade/privacy_list_window.glade.h:3 +msgid "Privacy List" +msgstr "Privatus Sąrašas" + +#: ../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 "What do you want to do?" +msgstr "Ką norėtumėte veikti?" + +#: ../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 "Jabber Traffic" +msgstr "Jabber Srautas" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Įvestis" + +#. 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 , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Usage: /%s , 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 "" +"Whom do you want to ban?\n" +"\n" +msgstr "" +"Whom do you want to ban?\n" +"\n" + +#: ../src/config.py:2410 +msgid "Adding Member..." +msgstr "Adding Member..." + +#: ../src/config.py:2411 +msgid "" +"Whom do you want to make a member?\n" +"\n" +msgstr "" +"Whom do you want to make a member?\n" +"\n" + +#: ../src/config.py:2413 +msgid "Adding Owner..." +msgstr "Adding Owner..." + +#: ../src/config.py:2414 +msgid "" +"Whom do you want to make an owner?\n" +"\n" +msgstr "" +"Whom do you want to make an owner?\n" +"\n" + +#: ../src/config.py:2416 +msgid "Adding Administrator..." +msgstr "Adding Administrator..." + +#: ../src/config.py:2417 +msgid "" +"Whom do you want to make an administrator?\n" +"\n" +msgstr "" +"Whom do you want to make an administrator?\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: %s" +msgstr "Contact name: %s" + +#: ../src/dialogs.py:66 +#, python-format +msgid "Jabber ID: %s" +msgstr "Jabber ID: %s" + +#: ../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 +#: ../src/dialogs.py:821 +msgid "translator-credits" +msgstr "Jeff Bailes " + +#: ../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 %s" +msgstr "Privacy List %s" + +#: ../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 "Edit a rule" +msgstr "Edit a rule" + +#: ../src/dialogs.py:2290 +msgid "Add a rule" +msgstr "Add a rule" + +#: ../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 [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 [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 , opens a private chat window with the specified " +"occupant." +msgstr "" +"Usage: /%s , 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 [reason], invites JID to the current group chat, optionally " +"providing a reason." +msgstr "" +"Usage: /%s [reason], invites JID to the current group chat, optionally " +"providing a reason." + +#: ../src/groupchat_control.py:1441 +#, python-format +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." + +#: ../src/groupchat_control.py:1445 +#, python-format +msgid "" +"Usage: /%s [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 [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 [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"Usage: /%s [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 , changes your nickname in current group chat." +msgstr "Usage: /%s , 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 , sends a message without looking for other commands." +msgstr "" +"Usage: /%s , 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 "Interface Customization" +#~ msgstr "Išvaizdos keitimas" + +#~ 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 "Romeo and Juliet" +#~ msgstr "Romeo and Juliet" + +#~ 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 39fab72d4..930265fa1 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 \n" +"Last-Translator: Maciej Chojnacki \n" "Language-Team: Polish \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 "" -"Account is being created\n" +"Connecting to server\n" "\n" "Please wait..." msgstr "" -"Konto jest tworzone\n" +"Łączenie z serwerem\n" "\n" "proszę czekać..." @@ -91,50 +90,67 @@ msgid "Please fill in the data for your new account" msgstr "Wpisz dane do swojego nowego konta" #: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Please select a server" +msgstr "Wybierz serwer" + +#: ../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 "Miscellaneous" msgstr "Różne" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "OpenPGP" msgstr "OpenPGP" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "Personal Information" msgstr "Informacje o sobie" #: ../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 "Description" msgstr "Opis" @@ -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 "Conditions" msgstr "Warunki" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "Sounds" msgstr "Dźwięki" @@ -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 +#: ../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 msgid "Toggle Open_PGP Encryption" msgstr "Włącz/wyłącz szyfrowanie Open_PGP" -#: ../data/glade/chat_control_popup_menu.glade.h:5 -#: ../data/glade/gc_control_popup_menu.glade.h:6 -msgid "_Compact View Alt+C" -msgstr "Widok _zwarty Alt+C" - #: ../data/glade/chat_control_popup_menu.glade.h:6 -#: ../data/glade/gc_control_popup_menu.glade.h: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 "List of possible features in Gajim:" +msgstr "Lista możliwych funkcjonalności Gajima:" + +#: ../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 "History Viewer" +msgstr "Przeglądanie historii" #: ../data/glade/history_window.glade.h:2 +msgid "JID Selection" +msgstr "Wybór JID-a" + +#: ../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 "Ustawienia" 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 "Edytor zaawansowanych konfiguracji" msgid "Applications" msgstr "Aplikacje" +#: ../data/glade/preferences_window.glade.h:3 +msgid "Chat Appearance" +msgstr "Tożsamość na czacie" + #. 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 "Custom" msgstr "Własne" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "Format of a line" msgstr "Format linii" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "GMail Options" msgstr "Opcje konta Gmail" -#: ../data/glade/preferences_window.glade.h:7 -msgid "Interface Customization" -msgstr "Własne ustawienia interfejsu" - #: ../data/glade/preferences_window.glade.h:9 msgid "Preset Status Messages" msgstr "Zapisane opisy" +#: ../data/glade/preferences_window.glade.h:10 +msgid "Privacy" +msgstr "

Prywatność" + #: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "Tożsamość na rosterze" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Themes" +msgstr "Tematy" + +#: ../data/glade/preferences_window.glade.h:14 msgid "Visual Notifications" msgstr "Powiadomienia wizualne" -#: ../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:66 +msgid "Privacy" +msgstr "Prywatność" -#: ../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: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:92 +msgid "_Make message windows compact" +msgstr "_Ukrywaj przyciski w oknach rozmowy" -#: ../data/glade/preferences_window.glade.h:99 -msgid "_Notify me about it" -msgstr "Powia_dom mnie o tym" - -#: ../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 "Add / Edit a rule" msgstr "Dodaj / Edytuj regułę" @@ -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 "Jabber Traffic" msgid "XML Input" msgstr "Wejście XML" -#. XML Console enable checkbutton -#: ../data/glade/xml_console_window.glade.h:4 -msgid "Enable" -msgstr "Włącz" - #. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) #: ../data/glade/xml_console_window.glade.h:6 msgid "Info/Query" @@ -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 , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Użycie: /%s wysyła działanie do aktualnego pokoju. Używaj w " +"trzeciej osobie (np. /%s eksploduje.)" + +#: ../src/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 -msgid "OpenPGP is not usable in this computer" -msgstr "Nie można używać OpenPGP na tym komputerze" +#. 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:1306 -msgid "You are currently connected to the server" -msgstr "Jesteś połączony z serwerem" - -#: ../src/config.py:1307 -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 -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 -msgid "Account Name Already Used" -msgstr "Konto o takiej nazwie już istnieje" - -#: ../src/config.py:1316 -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 -msgid "Invalid account name" -msgstr "Niepoprawna nazwa konta" - -#: ../src/config.py:1321 -msgid "Account name cannot be empty." -msgstr "Nazwa konta nie może być pusta." - -#: ../src/config.py:1325 -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 -msgid "Invalid Jabber ID" -msgstr "Niepoprawny Jabber ID" - -#: ../src/config.py:1340 -msgid "A Jabber ID must be in the form \"user@servername\"." -msgstr "Jabber ID musi być postaci \"użytkownik@nazwaserwera\"." - -#: ../src/config.py:1399 -msgid "Invalid entry" -msgstr "Niepoprawny wpis" - -#: ../src/config.py:1400 -msgid "Custom port must be a port number." -msgstr "Wybrany port musi być numerem portu." - -#: ../src/config.py:1528 ../src/common/config.py:368 +#: ../src/config.py:1400 ../src/common/config.py:379 msgid "Be right back." msgstr "Zaraz wracam." -#: ../src/config.py:1538 +#: ../src/config.py:1404 msgid "Relogin now?" msgstr "Czy zalogować się ponownie?" -#: ../src/config.py:1539 +#: ../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:1565 -msgid "No such account available" -msgstr "Takie konto nie jest dostępne" +#: ../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:1566 -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:1627 ../src/config.py:1668 +msgid "Unread events" +msgstr "Nieprzeczytane wiadomości" -#: ../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 -msgid "You are not connected to the server" -msgstr "Nie jesteś połączony z serwerem" - -#: ../src/config.py:1574 -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 -msgid "Your server doesn't support Vcard" -msgstr "Twój serwer nie akceptuje Vcard" - -#: ../src/config.py:1579 -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 +#: ../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:1954 +#: ../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:1955 +#: ../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:2014 +#: ../src/config.py:1664 +msgid "You are currently connected to the server" +msgstr "Jesteś połączony z serwerem" + +#: ../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: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:1675 +msgid "Account Name Already Used" +msgstr "Konto o takiej nazwie już istnieje" + +#: ../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:1680 ../src/config.py:1684 +msgid "Invalid account name" +msgstr "Niepoprawna nazwa konta" + +#: ../src/config.py:1681 +msgid "Account name cannot be empty." +msgstr "Nazwa konta nie może być pusta." + +#: ../src/config.py:1685 +msgid "Account name cannot contain spaces." +msgstr "Nazwa konta nie może zawierać spacji." + +#: ../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:1777 +msgid "A Jabber ID must be in the form \"user@servername\"." +msgstr "Jabber ID musi być postaci \"użytkownik@nazwaserwera\"." + +#: ../src/config.py:1962 ../src/config.py:3093 +msgid "Invalid entry" +msgstr "Niepoprawny wpis" + +#: ../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:1984 +msgid "Failed to get secret keys" +msgstr "Pobieranie kluczy prywatnych nie powiodło się" + +#: ../src/config.py:1985 +msgid "There was a problem retrieving your OpenPGP secret keys." +msgstr "" +"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: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: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: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: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:2042 +msgid "Your server doesn't support Vcard" +msgstr "Twój serwer nie akceptuje Vcard" + +#: ../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: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 "" "Whom do you want to ban?\n" "\n" @@ -2987,11 +3135,11 @@ msgstr "" "Którego użytkownika chcesz zablokować?\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 "" "Whom do you want to make a member?\n" "\n" @@ -2999,11 +3147,11 @@ msgstr "" "Status którego użytkownika chcesz zmienić?\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 "" "Whom do you want to make an owner?\n" "\n" @@ -3011,11 +3159,11 @@ msgstr "" "Którego użytkownika chcesz uczynić właścicielem pokoju?\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 "" "Whom do you want to make an administrator?\n" "\n" @@ -3023,7 +3171,7 @@ msgstr "" "Którego użytkownika chcesz uczynić administratorem?\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:2982 +#: ../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: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: %s" msgstr "Nazwa kontaktu: %s" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: %s" msgstr "JID : %s" -#: ../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 -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:877 msgid "translator-credits" msgstr "" -"Tłumaczenie na język polski: Witold Kieraś \n" -"Maciej Chojnacki " +"Tłumaczenie na język polski: Witold Kieraś\n" +"Maciej Chojnacki " -#: ../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 "" +"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 %s" msgstr "Lista prywatności %s" -#: ../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 "Edit a rule" msgstr "Edytuj regułę" -#: ../src/dialogs.py:2230 +#: ../src/dialogs.py:2434 msgid "Add a rule" msgstr "Dodaj regułę" -#: ../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 "Co chcesz zrobić?" -#: ../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,418 +4349,68 @@ 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-remote.py:73 -msgid "Shows or hides the roster window" -msgstr "Pokazuje lub ukrywa okno listy kontaktów" - -#: ../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-remote.py:81 -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: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" - -#. 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 "" -"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ść" - -#: ../src/gajim-remote.py:98 -msgid "status message" -msgstr "informacja o statusie" - -#: ../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 "" -"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" -msgstr "" -"jeśli jest podany, to kontakt jest pobierany z listy kontaktów tego konta" - -#: ../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 "" -"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ść" - -#: ../src/gajim-remote.py:119 ../src/gajim-remote.py:133 -msgid "message contents" -msgstr "zawartość wiadomości" - -#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 -msgid "pgp key" -msgstr "klucz pgp" - -#: ../src/gajim-remote.py:120 ../src/gajim-remote.py:134 -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: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" - -#: ../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 "" -"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:132 -msgid "subject" -msgstr "temat" - -#: ../src/gajim-remote.py:132 -msgid "message subject" -msgstr "temat wiadomości" - -#: ../src/gajim-remote.py:141 -msgid "Gets detailed info on a contact" -msgstr "Pobiera szczegółowe informacje o kontakcie" - -#: ../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-remote.py:147 -msgid "Gets detailed info on a account" -msgstr "Pobiera szczegółowe informacje o koncie" - -#: ../src/gajim-remote.py:149 -msgid "Name of the account" -msgstr "Nazwa konta" - -#: ../src/gajim-remote.py:153 -msgid "Sends file to a contact" -msgstr "Wysyła plik kontaktowi" - -#: ../src/gajim-remote.py:155 -msgid "file" -msgstr "plik" - -#: ../src/gajim-remote.py:155 -msgid "File path" -msgstr "Ścieżka do pliku" - -#: ../src/gajim-remote.py:157 -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 -msgid "Lists all preferences and their values" -msgstr "Wypisuje wszystkie opcje i ich wartości" - -#: ../src/gajim-remote.py:166 -msgid "Sets value of 'key' to 'value'." -msgstr "Ustawia wartość 'klucza' na 'wartość'." - -#: ../src/gajim-remote.py:168 -msgid "key=value" -msgstr "klucz=wartość" - -#: ../src/gajim-remote.py:168 -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 -msgid "Deletes a preference item" -msgstr "Usuwa opcję" - -#: ../src/gajim-remote.py:175 -msgid "key" -msgstr "klucz" - -#: ../src/gajim-remote.py:175 -msgid "name of the preference to be deleted" -msgstr "nazwa opcji do usunięcia" - -#: ../src/gajim-remote.py:179 -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 -msgid "Removes contact from roster" -msgstr "Usuwa kontakt z listy kontaktów" - -#: ../src/gajim-remote.py:193 -msgid "Adds contact to roster" -msgstr "Dodaje kontakt do listy kontaktów" - -#: ../src/gajim-remote.py:195 -msgid "jid" -msgstr "jid" - -#: ../src/gajim-remote.py:196 -msgid "Adds new contact to this account" -msgstr "Dodaje nowy kontakt do tego konta" - -#: ../src/gajim-remote.py:201 -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 -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 -msgid "Returns number of unread messages" -msgstr "Zwraca liczbę nieprzeczytanych wiadomości" - -#: ../src/gajim-remote.py:219 -msgid "Opens 'Start Chat' dialog" -msgstr "Otwiera okno dialogowe 'Rozpocznij rozmowę'" - -#: ../src/gajim-remote.py:221 -msgid "Starts chat, using this account" -msgstr "Rozpocznij rozmowę z tego konta" - -#: ../src/gajim-remote.py:225 -msgid "Sends custom XML" -msgstr "Wysyła własny XML" - -#: ../src/gajim-remote.py:227 -msgid "XML to send" -msgstr "XML do wysłania" - -#: ../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, na jaki zostanie wysłany XML. Jeżeli nie jest określone, Gajim wyśle " -"dane do wszystkich kont" - -#: ../src/gajim-remote.py:234 -msgid "Handle a xmpp:/ uri" -msgstr "Obsługuj URI xmpp:/" - -#: ../src/gajim-remote.py:236 -msgid "uri" -msgstr "URI" - -#: ../src/gajim-remote.py:241 -msgid "Join a MUC room" -msgstr "Dołącz do nowego pokoju" - -#: ../src/gajim-remote.py:243 -msgid "room" -msgstr "pokój" - -#: ../src/gajim-remote.py:244 -msgid "nick" -msgstr "nick" - -#: ../src/gajim-remote.py:245 -msgid "password" -msgstr "hasło" - -#: ../src/gajim-remote.py:268 -msgid "Missing argument \"contact_jid\"" -msgstr "Brak argumentu \"contact_jid\"" - -#: ../src/gajim-remote.py:287 -#, python-format -msgid "" -"'%s' is not in your roster.\n" -"Please specify account for sending the message." -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 -msgid "You have no active account" -msgstr "Żadne z twoich kont nie jest aktywne" - -#: ../src/gajim-remote.py:354 -#, python-format -msgid "" -"Usage: %s %s %s \n" -"\t %s" -msgstr "" -"Użycie: %s %s %s \n" -"\t %s" - -#: ../src/gajim-remote.py:357 -msgid "Arguments:" -msgstr "Argumenty:" - -#: ../src/gajim-remote.py:361 -#, python-format -msgid "%s not found" -msgstr "Nie znaleziono %s" - -#: ../src/gajim-remote.py:365 -#, python-format -msgid "" -"Usage: %s command [arguments]\n" -"Command is one of:\n" -msgstr "" -"Użycie: polecenie %s [argument]\n" -"Gdzie polecenie to jedna z następujący fraz:\n" - -#: ../src/gajim-remote.py:438 -#, 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" - -#: ../src/gajim-remote.py:442 -#, python-format -msgid "" -"Argument \"%s\" is not specified. \n" -"Type \"%s help %s\" for more info" -msgstr "" -"Argument \"%s\" nie jest określony. \n" -"Wpisz \"%s help %s\" aby uzyskać więcej informacji" - -#: ../src/gajim-remote.py:460 -msgid "Wrong uri" -msgstr "Błędny adres URI" - -#: ../src/gajim.py:47 +#: ../src/gajim.py:55 #, python-format msgid "%s is not a valid loglevel" msgstr "%s nie jest prawidłowym poziomem logowania" -#: ../src/gajim.py:122 +#: ../src/gajim.py:128 msgid "Gajim needs X server to run. Quiting..." msgstr "Gajim wymaga do działania serwera X. Zamykanie programu..." -#: ../src/gajim.py:126 +#: ../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.py:127 +#: ../src/gajim.py:156 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 +#: ../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.py:130 +#: ../src/gajim.py:159 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 +#: ../src/gajim.py:164 msgid "GTK+ runtime is missing libglade support" msgstr "W GTK+ brakuje wsparcia dla libglade" -#: ../src/gajim.py:137 +#: ../src/gajim.py:166 #, python-format msgid "" "Please remove your current GTK+ runtime and install the latest stable " @@ -4347,22 +4418,22 @@ msgid "" msgstr "" "Proszę usunąć obecną wersje GTK+ i zainstalować najnowszą stabilną wesję z %s" -#: ../src/gajim.py:139 +#: ../src/gajim.py:168 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 +#: ../src/gajim.py:173 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim wymaga do działania PySQLite2" -#: ../src/gajim.py:152 +#: ../src/gajim.py:181 msgid "Gajim needs pywin32 to run" msgstr "Gajim wymaga do działania pakietu pywin32" -#: ../src/gajim.py:153 +#: ../src/gajim.py:182 #, python-format msgid "" "Please make sure that Pywin32 is installed on your system. You can get it at " @@ -4372,11 +4443,11 @@ msgstr "" "spod adresu %s" #. set the icon to all newly opened wind -#: ../src/gajim.py:300 +#: ../src/gajim.py:324 msgid "Gajim is already running" msgstr "Gajim jest już uruchomiony" -#: ../src/gajim.py:301 +#: ../src/gajim.py:325 msgid "" "Another instance of Gajim seems to be running\n" "Run anyway?" @@ -4384,83 +4455,147 @@ msgstr "" "Wydaje się, że w tle działa już inna kopia Gajima.\n" "Czy mimo to chcesz uruchomić program?" -#: ../src/gajim.py:408 +#: ../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.py:411 +#: ../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.py:446 #, 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 +#: ../src/gajim.py:493 ../src/notify.py:453 msgid "Connection Failed" msgstr "Połączenie nie powiodło się" -#: ../src/gajim.py:778 +#: ../src/gajim.py:827 #, python-format msgid "Subject: %s" msgstr "Temat: %s" #. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time)) -#: ../src/gajim.py:823 ../src/gajim.py:836 +#: ../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:869 +#: ../src/gajim.py:920 msgid "Authorization accepted" msgstr "Autoryzacja przyjęta" -#: ../src/gajim.py:870 +#: ../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:878 +#: ../src/gajim.py:929 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakt \"%s\" cofnął Ci autoryzację" -#: ../src/gajim.py:879 +#: ../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:923 +#: ../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:924 ../src/common/connection.py:438 +#: ../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:1073 ../src/roster_window.py:1247 +#: ../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:1076 ../src/groupchat_control.py:968 -#: ../src/roster_window.py:1250 +#: ../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" -#: ../src/gajim.py:1173 +#. 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:1174 +#: ../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:1277 +#: ../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:1279 +#: ../src/gajim.py:1474 #, python-format msgid "You have %d new mail conversation" msgid_plural "You have %d new mail conversations" @@ -4471,7 +4606,7 @@ 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 +#: ../src/gajim.py:1483 #, python-format msgid "" "\n" @@ -4480,170 +4615,634 @@ msgstr "" "\n" "Od: %(from_address)s" -#: ../src/gajim.py:1444 +#: ../src/gajim.py:1661 #, python-format msgid "%s wants to send you a file." msgstr "%s chce przesłać ci plik." -#: ../src/gajim.py:1509 +#: ../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:1513 +#: ../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." +msgstr "Przesyłanie pliku %(filename)s od %(name)s zostało zatrzymane." -#: ../src/gajim.py:1526 +#: ../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:1530 +#: ../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." +msgstr "Przesyłanie pliku %(filename)s do %(name)s zostało zatrzymane." -#: ../src/gajim.py:1662 +#: ../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:1663 +#: ../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:1680 +#: ../src/gajim.py:2072 msgid "Ping?" msgstr "Ping?" -#: ../src/gajim.py:1688 +#: ../src/gajim.py:2080 #, python-format msgid "Pong! (%s s.)" msgstr "Pong! (%s s.)" -#: ../src/gajim.py:1694 +#: ../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:2048 +#: ../src/gajim.py:2474 msgid "Could not save your settings and preferences" msgstr "Nie można zapisać twoich ustawień i opcji" -#: ../src/gajim.py:2257 +#. 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:2336 +#: ../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_themes_window.py:60 +#: ../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:167 +msgid "Sends file to a contact" +msgstr "Wysyła plik kontaktowi" + +#: ../src/gajim-remote.py:169 +msgid "file" +msgstr "plik" + +#: ../src/gajim-remote.py:169 +msgid "File path" +msgstr "Ścieżka do pliku" + +#: ../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:176 +msgid "Lists all preferences and their values" +msgstr "Wypisuje wszystkie opcje i ich wartości" + +#: ../src/gajim-remote.py:180 +msgid "Sets value of 'key' to 'value'." +msgstr "Ustawia wartość 'klucza' na 'wartość'." + +#: ../src/gajim-remote.py:182 +msgid "key=value" +msgstr "klucz=wartość" + +#: ../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:187 +msgid "Deletes a preference item" +msgstr "Usuwa opcję" + +#: ../src/gajim-remote.py:189 +msgid "key" +msgstr "klucz" + +#: ../src/gajim-remote.py:189 +msgid "name of the preference to be deleted" +msgstr "nazwa opcji do usunięcia" + +#: ../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:198 +msgid "Removes contact from roster" +msgstr "Usuwa kontakt z listy kontaktów" + +#: ../src/gajim-remote.py:207 +msgid "Adds contact to roster" +msgstr "Dodaje kontakt do listy kontaktów" + +#: ../src/gajim-remote.py:209 +msgid "jid" +msgstr "jid" + +#: ../src/gajim-remote.py:210 +msgid "Adds new contact to this account" +msgstr "Dodaje nowy kontakt do tego konta" + +#: ../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: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:229 +msgid "Returns number of unread messages" +msgstr "Zwraca liczbę nieprzeczytanych wiadomości" + +#: ../src/gajim-remote.py:233 +msgid "Opens 'Start Chat' dialog" +msgstr "Otwiera okno dialogowe 'Rozpocznij rozmowę'" + +#: ../src/gajim-remote.py:235 +msgid "Starts chat, using this account" +msgstr "Rozpocznij rozmowę z tego konta" + +#: ../src/gajim-remote.py:239 +msgid "Sends custom XML" +msgstr "Wysyła własny XML" + +#: ../src/gajim-remote.py:241 +msgid "XML to send" +msgstr "XML do wysłania" + +#: ../src/gajim-remote.py:242 +msgid "" +"Account in which the xml will be sent; if not specified, xml will be sent to " +"all accounts" +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:248 +msgid "Handle a xmpp:/ uri" +msgstr "Obsługuj URI xmpp:/" + +#: ../src/gajim-remote.py:250 +msgid "uri" +msgstr "URI" + +#: ../src/gajim-remote.py:255 +msgid "Join a MUC room" +msgstr "Dołącz do nowego pokoju" + +#: ../src/gajim-remote.py:257 +msgid "room" +msgstr "pokój" + +#: ../src/gajim-remote.py:258 +msgid "nick" +msgstr "nick" + +#: ../src/gajim-remote.py:259 +msgid "password" +msgstr "hasło" + +#: ../src/gajim-remote.py:282 +msgid "Missing argument \"contact_jid\"" +msgstr "Brak argumentu \"contact_jid\"" + +#: ../src/gajim-remote.py:301 +#, python-format +msgid "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." +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:304 +msgid "You have no active account" +msgstr "Żadne z twoich kont nie jest aktywne" + +#: ../src/gajim-remote.py:368 +#, python-format +msgid "" +"Usage: %s %s %s \n" +"\t %s" +msgstr "" +"Użycie: %s %s %s \n" +"\t %s" + +#: ../src/gajim-remote.py:371 +msgid "Arguments:" +msgstr "Argumenty:" + +#: ../src/gajim-remote.py:375 +#, python-format +msgid "%s not found" +msgstr "Nie znaleziono %s" + +#: ../src/gajim-remote.py:379 +#, python-format +msgid "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" +msgstr "" +"Użycie: polecenie %s [argument]\n" +"Gdzie polecenie to jedna z następujący fraz:\n" + +#: ../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" + +#: ../src/gajim-remote.py:456 +#, python-format +msgid "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Argument \"%s\" nie jest określony. \n" +"Wpisz \"%s help %s\" aby uzyskać więcej informacji" + +#: ../src/gajim-remote.py:474 +msgid "Wrong uri" +msgstr "Błędny adres URI" + +#: ../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:961 +#: ../src/groupchat_control.py:1026 +msgid "affiliation changed" +msgstr "afiliacja została zmieniona " + +#: ../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 +#: ../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." -#. %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:1459 #, python-format msgid "" "Usage: /%s [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 , opens a private chat window with the specified " "occupant." msgstr "Użycie: /%s , 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 [reason], invites JID to the current group chat, optionally " @@ -4680,7 +5279,7 @@ msgstr "" "Użycie: /%s [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 @[/nickname], offers to join room@server optionally " @@ -4689,7 +5288,7 @@ msgstr "" "Użycie: /%s @[/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 [reason], removes the occupant specified by nickname " @@ -4699,16 +5298,7 @@ msgstr "" "Użycie: /%s [powód] usuwa podaną poprzez pseudonim osobę z " "pokoju i opcjonalnie wyświetla powód. NIE wspiera spacji w pseudonimie." -#: ../src/groupchat_control.py:1311 -#, python-format -msgid "" -"Usage: /%s , sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"Użycie: /%s wysyła działanie do aktualnego pokoju. Używaj w " -"trzeciej osobie (np. /%s eksploduje.)" - -#: ../src/groupchat_control.py:1315 +#: ../src/groupchat_control.py:1495 #, python-format msgid "" "Usage: /%s [message], opens a private message window and sends " @@ -4717,112 +5307,114 @@ msgstr "" "Użycie: /%s [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 , changes your nickname in current group chat." msgstr "Użycie: /%s 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 , sends a message without looking for other commands." msgstr "" "Użycie: /%s 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" -#: ../src/roster_window.py:2370 +#. Manage Transport submenu +#: ../src/roster_window.py:2488 +msgid "_Manage Contacts" +msgstr "_Zarządzaj kontaktami" + +#: ../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ść" -#: ../src/roster_window.py:2582 ../src/roster_window.py:2653 +#. Manage Transport submenu +#: ../src/roster_window.py:2836 +msgid "_Manage Transport" +msgstr "_Zarządzaj transportami" + +#. 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,101 +6954,101 @@ 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 +#: ../src/common/config.py:381 msgid "Do not disturb." msgstr "Nie przeszkadzać." -#: ../src/common/config.py:371 ../src/common/config.py:372 +#: ../src/common/config.py:382 ../src/common/config.py:383 msgid "Bye!" msgstr "Żegnaj!" -#: ../src/common/config.py:381 +#: ../src/common/config.py:392 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." @@ -6328,253 +7057,128 @@ msgstr "" "wyrazów ze zmiennej muc_highlight_words lub gdy wiadomość MUC zawierać " "będzie twój pseudonim." -#: ../src/common/config.py:382 +#: ../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." -#: ../src/common/config.py:391 ../src/common/optparser.py:195 +#: ../src/common/config.py:402 ../src/common/optparser.py:219 msgid "green" msgstr "zielony" -#: ../src/common/config.py:395 ../src/common/optparser.py:181 +#: ../src/common/config.py:406 ../src/common/optparser.py:205 msgid "grocery" msgstr "grocery" -#: ../src/common/config.py:399 +#: ../src/common/config.py:410 msgid "human" msgstr "human" -#: ../src/common/config.py:403 +#: ../src/common/config.py:414 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." - -#: ../src/common/connection.py:606 -msgid "Error while removing privacy list" -msgstr "Błąd usuwaniu listy prywatności" - -#: ../src/common/connection.py:607 -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:705 -#: ../src/common/zeroconf/connection_zeroconf.py:162 -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:862 -msgid "[This message is *encrypted* (See :JEP:`27`]" -msgstr "[Ta wiadomość jest zaszyfrowana (zobacz JEP '27']" - -#: ../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/connection.py:1058 -msgid "Not fetched because of invisible status" -msgstr "Nie wysłano z powodu statusu 'niewidoczny'" - -#: ../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:1872 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Zostałeś zabanowany w pokoju %s." -#: ../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:1875 +#, python-format +msgid "Group chat %s does not exist." +msgstr "Pokój %s nie istnieje." -#: ../src/common/connection_handlers.py:1629 -msgid "Such group chat does not exist." -msgstr "Taki pokój 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 -#, python-format -msgid "%s KiB" -msgstr "%s·KiB" - -#. KB means kilo bytes -#: ../src/common/helpers.py:187 -#, python-format -msgid "%s KB" -msgstr "%s·KB" - -#. B means bytes #: ../src/common/helpers.py:190 #, python-format -msgid "%s B" -msgstr "%s·B" +msgid "%s KiB" +msgstr "%s KiB" -#: ../src/common/helpers.py:219 +#. KB means kilo bytes +#: ../src/common/helpers.py:193 +#, python-format +msgid "%s KB" +msgstr "%s KB" + +#. B means bytes +#: ../src/common/helpers.py:196 +#, python-format +msgid "%s B" +msgstr "%s B" + +#: ../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:918 ../src/common/helpers.py:920 +#: ../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: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 "Interface Customization" +#~ msgstr "Własne ustawienia interfejsu" + +#~ 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 6be0cf0d5..7a0015489 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,17 +5,17 @@ # # junix , 2005. # Gajim , 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 \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 \n" "Language-Team: Português Brasileiro \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 "" -"Account is being created\n" +"Connecting to server\n" "\n" "Please wait..." msgstr "" -"Sua conta está sendo criada\n" +"Conectando ao servidor\n" "\n" "Por favor aguarde..." @@ -92,51 +92,68 @@ msgid "Please fill in the data for your new account" msgstr "Por favor preencha os dados da sua nova conta" #: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Please select a server" +msgstr "Por favor, selecione um servidor" + +#: ../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 "Miscellaneous" msgstr "Diversos" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "OpenPGP" msgstr "OpenPGP" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "Personal Information" msgstr "Informações Pessoais" #: ../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 +#. 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: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 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 "" -"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." +"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: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 "" -"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" +#: ../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 "Ú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 "Description" msgstr "Descrição" @@ -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 "Conditions" msgstr "Condições" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "Sounds" msgstr "Sons" @@ -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,33 +978,62 @@ 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/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 "List of possible features in Gajim:" +msgstr "Listas dos possíveis recursos do Gajim:" + +#: ../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 "History Viewer" +msgstr "Visualizador de Histórico" #: ../data/glade/history_window.glade.h:2 +msgid "JID Selection" +msgstr "Seleção de JID" + +#: ../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 "Editor de Configurações Avançadas" msgid "Applications" msgstr "Aplicações" +#: ../data/glade/preferences_window.glade.h:3 +msgid "Chat Appearance" +msgstr "Aparência da Conversa" + #. 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 "Custom" msgstr "Customizar" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "Format of a line" msgstr "Formato da linha" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "GMail Options" msgstr "Opções do Gmail" -#: ../data/glade/preferences_window.glade.h:7 -msgid "Interface Customization" -msgstr "Customização de interface" - #: ../data/glade/preferences_window.glade.h:9 msgid "Preset Status Messages" msgstr "Mensagens de Status Disponíveis" +#: ../data/glade/preferences_window.glade.h:10 +msgid "Privacy" +msgstr "Privacidade" + #: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "Aparência da Lista" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Themes" +msgstr "Tema" + +#: ../data/glade/preferences_window.glade.h:14 msgid "Visual Notifications" msgstr "Notificações Visuais" -#: ../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:66 +msgid "Privacy" +msgstr "Privacidade" -#: ../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: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:80 +msgid "When new event is received:" +msgstr "Quando novo evento é recebido:" -#: ../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: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:92 +msgid "_Make message windows compact" +msgstr "_Tornar a janela de mensagem compacta" -#: ../data/glade/preferences_window.glade.h:99 -msgid "_Notify me about it" -msgstr "_Notifique-me sobre isto" - -#: ../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 +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../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" -#. 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" - -#: ../data/glade/roster_contact_context_menu.glade.h:15 +#: ../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 "Jabber Traffic" msgstr "Trafégo do Jabber" @@ -2362,11 +2542,6 @@ msgstr "Trafégo do Jabber" msgid "XML Input" msgstr "Entrada XML" -#. XML Console enable checkbutton -#: ../data/glade/xml_console_window.glade.h:4 -msgid "Enable" -msgstr "Habilitar" - #. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) #: ../data/glade/xml_console_window.glade.h:6 msgid "Info/Query" @@ -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 , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Uso: /%s , emite a ação à sala atual. Use a terceira pessoa (por " +"exemplo: /%s explodes.)" + +#: ../src/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 -msgid "You are currently connected to the server" -msgstr "Você está atualmente conectado ao servidor" - -#: ../src/config.py:1307 -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 +#: ../src/config.py:1652 ../src/config.py:1693 msgid "Unread events" msgstr "Eventos não lidos" -#: ../src/config.py:1311 +#: ../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: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: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:1565 +#: ../src/config.py:2015 +msgid "Choose your OpenPGP key" +msgstr "Escolha sua chave OpenPGP" + +#: ../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 "" "Whom do you want to ban?\n" "\n" @@ -2926,11 +3162,11 @@ msgstr "" "Quem você quer banir?\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 "" "Whom do you want to make a member?\n" "\n" @@ -2938,11 +3174,11 @@ msgstr "" "Quem você quer fazer como membro?\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 "" "Whom do you want to make an owner?\n" "\n" @@ -2950,11 +3186,11 @@ msgstr "" "Quem você quer tornar um dono?\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 "" "Whom do you want to make an administrator?\n" "\n" @@ -2962,7 +3198,7 @@ msgstr "" "Quem você quer tornar um administrador?\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: %s" msgstr "Nome do Contato: %s" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: %s" msgstr "Jabber ID: %s" -#: ../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 -#: ../src/dialogs.py:778 +#: ../src/dialogs.py:879 msgid "translator-credits" msgstr "" "Alfredo Jr. - Junix e Juracy Filho " -#: ../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,270 +3650,290 @@ 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 %s" msgstr "Lista de Privacidade %s" -#: ../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 "Edit a rule" msgstr "Editar uma regra" -#: ../src/dialogs.py:2230 +#: ../src/dialogs.py:2444 msgid "Add a rule" msgstr "Adicionar uma regra" -#: ../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 +#: ../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:500 +#: ../src/disco.py:502 #, python-format msgid "Service Discovery using account %s" msgstr "Buscar Serviços usando conta %s" -#: ../src/disco.py:502 +#: ../src/disco.py:504 msgid "Service Discovery" msgstr "Buscar Serviços" -#: ../src/disco.py:642 +#: ../src/disco.py:644 msgid "The service could not be found" msgstr "O serviço não pode ser encontrado" -#: ../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." @@ -3647,180 +3941,435 @@ 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:647 ../src/disco.py:928 +#: ../src/disco.py:649 ../src/disco.py:930 msgid "The service is not browsable" msgstr "Serviço não navegável" -#: ../src/disco.py:648 +#: ../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:728 +#: ../src/disco.py:730 #, python-format msgid "Browsing %s using account %s" msgstr "Visualizando %s usando conta %s" -#: ../src/disco.py:767 +#: ../src/disco.py:769 msgid "_Browse" msgstr "_Navegar" -#: ../src/disco.py:929 +#: ../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:1147 -#, fuzzy +#: ../src/disco.py:1152 msgid "_Execute Command" msgstr "_Executar Comando" -#: ../src/disco.py:1157 ../src/disco.py:1355 +#: ../src/disco.py:1162 ../src/disco.py:1360 msgid "Re_gister" msgstr "Re_gistrar" -#: ../src/disco.py:1392 +#: ../src/disco.py:1397 #, python-format msgid "Scanning %d / %d.." msgstr "Buscando %d / %d" #. Users column -#: ../src/disco.py:1573 +#: ../src/disco.py:1579 msgid "Users" msgstr "Usuários" #. Description column -#: ../src/disco.py:1580 +#: ../src/disco.py:1587 msgid "Description" msgstr "Descrição" #. Id column -#: ../src/disco.py:1587 +#: ../src/disco.py:1595 msgid "Id" msgstr "Id" -#: ../src/disco.py:1810 +#: ../src/disco.py:1824 msgid "Subscribed" msgstr "Inscrito" -#: ../src/disco.py:1836 +#: ../src/disco.py:1832 +msgid "Node" +msgstr "Nó" + +#: ../src/disco.py:1889 msgid "New post" msgstr "Nova postagem" -#: ../src/disco.py:1842 +#: ../src/disco.py:1895 msgid "_Subscribe" msgstr "_Inscrever" -#: ../src/disco.py:1848 +#: ../src/disco.py:1901 msgid "_Unsubscribe" msgstr "_Desinscrever" -#: ../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 "" +"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/features_window.py:84 +msgid "Passive popups notifying for new events." +msgstr "Popups passivos notificando novos eventos." + +#: ../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/features_window.py:87 +msgid "Trayicon" +msgstr "Ícone da Bandeja" + +#: ../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 "" +"Requires python-gnome2-extras or compiled trayicon module from Gajim " +"sources." +msgstr "" +"Requer python-gnome2-extras ou módulo trayicon compilado a partir dos fontes " +"do Gajim." + +#: ../src/features_window.py:90 +msgid "Requires PyGTK >= 2.10." +msgstr "Requer PyGTK >= 2.10." + +#: ../src/features_window.py:91 +msgid "Idle" +msgstr "Ocioso" + +#: ../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/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/features_window.py:95 +msgid "LaTeX" +msgstr "LaTeX" + +#: ../src/features_window.py:96 +msgid "Transform LaTeX espressions between $$ $$." +msgstr "Tranforma expressões LaTeX entre $$ $$." + +#: ../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/features_window.py:99 +msgid "End to end encryption" +msgstr "Criptografia end to end" + +#: ../src/features_window.py:100 +msgid "Encrypting chatmessages." +msgstr "Criptografando mensagens." + +#: ../src/features_window.py:101 ../src/features_window.py:102 +msgid "Requires python-crypto." +msgstr "Requer python-crypto." + +#: ../src/features_window.py:103 +msgid "RST Generator" +msgstr "Gerador RST" + +#: ../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/features_window.py:105 ../src/features_window.py:106 +msgid "Requires python-docutils." +msgstr "Requer python-docutils." + +#: ../src/features_window.py:107 +msgid "libsexy" +msgstr "libsexy" + +#: ../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: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:961 +#: ../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: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 [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 , opens a private chat window with the specified " @@ -4602,12 +5343,7 @@ msgstr "" "Uso: /%s , 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 [reason], invites JID to the current group chat, optionally " @@ -4630,7 +5361,7 @@ msgstr "" "Uso: /%s [ 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 @[/nickname], offers to join room@server optionally " @@ -4639,7 +5370,7 @@ msgstr "" "Uso: /%s @[/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 [reason], removes the occupant specified by nickname " @@ -4649,16 +5380,7 @@ msgstr "" "Uso: /%s [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 , sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"Uso: /%s , emite a ação à sala atual. Use a terceira pessoa (por " -"exemplo: /%s explodes.)" - -#: ../src/groupchat_control.py:1315 +#: ../src/groupchat_control.py:1495 #, python-format msgid "" "Usage: /%s [message], opens a private message window and sends " @@ -4667,70 +5389,65 @@ msgstr "" "Uso: /%s [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 , changes your nickname in current group chat." msgstr "Uso: /%s , 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 , sends a message without looking for other commands." msgstr "" "Uso: /%s , 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" -#: ../src/roster_window.py:2143 +#. 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: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" -#: ../src/roster_window.py:2314 ../src/roster_window.py:2385 +#. 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: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:236 +msgid "Hides the buttons in chat windows." +msgstr "Esconder os botões nas janelas de conversa." -#: ../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: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:1873 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Você está banido da sala %s." -#: ../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:1876 +#, python-format +msgid "Group chat %s does not exist." +msgstr "A sala %s não existe." -#: ../src/common/connection_handlers.py:1622 -msgid "Such group chat does not exist." -msgstr "Tal sala 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 "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:263 +msgid "Invalid answer" +msgstr "Resposta inválida" + +#: ../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" -#. wrong answer -#: ../src/common/connection.py:232 -msgid "Invalid answer" -msgstr "Resposta inválida" - -#: ../src/common/connection.py:380 +#: ../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 "Save passphrase" +#~ msgstr "Salvar Frase de acesso" -#~ msgid "Select the contacts you want to synchronise" -#~ msgstr "Selecione os contatos que você quer sincronizar" +#~ msgid "_Discover Services..." +#~ msgstr "_Procurar Serviços..." -#~ msgid "Synchronise : select contacts" -#~ msgstr "Sincronizar: selecionar contatos" +#~ 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 "Interface Customization" +#~ msgstr "Customização de interface" + +#~ 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 3fc70b80d..bbd428766 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 # , 2005. # , 2005. # Yakov Bezrukov , 2005, 2006, 2007. # Yakov Bezrukov , 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 \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. \n" "Language-Team: Русский \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: KBabel 1.11.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 "" -"Account is being created\n" +"Connecting to server\n" "\n" "Please wait..." msgstr "" -"Была создана учетная запись \n" +"Соединение с сервером \n" "\n" "Пожалуйста подождите..." @@ -92,51 +96,74 @@ msgid "Please fill in the data for your new account" msgstr "Пожалуйста, заполните данные для вашей новой учетной записи" #: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Please select a server" +msgstr "Пожалуйста выберите сервер" + +#: ../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 "Miscellaneous" msgstr "Прочее" #: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 #: ../data/glade/zeroconf_properties_window.glade.h:1 msgid "OpenPGP" msgstr "OpenPGP" #: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 #: ../data/glade/zeroconf_properties_window.glade.h:2 msgid "Personal Information" msgstr "Личная информация" #: ../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 +#. 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: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 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 "" -"Если отмечено, то все локальные контакты, которые используют Bonjour-совместимый клиент (напр. iChat, Trillian или Gaim) будут показаны в ростере. Для этого не нужно подключаться к jabber-серверу.\n" -"Доступно только в том случае, когда установлен python-avahi и запущен avahi-daemon." +"Если порт по умолчанию, который используется для входящих сообщения вас не " +"устраивает, вы можете выбрать другой.\n" +"Так же возможно придется изменить некоторые настройки брандмауэра." -#: ../data/glade/accounts_window.glade.h:4 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Если у вас 2 и более учетных записей, то, отметив здесь, вы заставите Gajim " -"показывать вместе контакты из всех учетных записей" +#: ../data/glade/accounts_window.glade.h: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 "Фамилия:" + +#: ../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 "An error has occured:" +msgid "An error has occurred:" msgstr "Произошла ошибка:" #: ../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 "Description" msgstr "Описание" #: ../data/glade/advanced_configuration_window.glade.h:2 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "ПРИМЕЧАНИЕ: Вы должны перезапустить gajim, чтобы некоторые настройки вступили в силу" +msgid "NOTE: You should restart Gajim for some settings to take effect" +msgstr "" +"ПРИМЕЧАНИЕ: Вы должны перезапустить 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 "Updates Message of the Day" +msgstr "Обновляет сообщение дня" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 msgid "_Administrator" msgstr "_Администрирование" -#: ../data/glade/advanced_menuitem_menu.glade.h:10 -msgid "_Privacy Lists" -msgstr "_Списки доступа" - #: ../data/glade/advanced_menuitem_menu.glade.h:11 -msgid "_Send Server Message" +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 "Actions" @@ -646,7 +756,7 @@ msgid "Conditions" msgstr "Условия" #: ../data/glade/advanced_notifications_window.glade.h:4 -#: ../data/glade/preferences_window.glade.h:10 +#: ../data/glade/preferences_window.glade.h:12 msgid "Sounds" msgstr "Звуки" @@ -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:37 +msgid "and I " +msgstr "и у меня" #: ../data/glade/advanced_notifications_window.glade.h:38 -msgid "and I " -msgstr "и я" - -#: ../data/glade/advanced_notifications_window.glade.h:39 msgid "" "contact(s)\n" "group(s)\n" @@ -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 "Romeo and Juliet" -msgstr "Иван и Марья" - -#: ../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 "List of possible features in Gajim:" +msgstr "Список возможных функций Gajim:" + +#: ../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 "" -"Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" "WARNING:\n" "If you plan to do massive deletions, please make sure Gajim is not running. " "Generally avoid deletions with contacts you currently chat with." msgstr "" -"Добро пожаловать в менеджер истории Gajim'а\n" -"\n" -"Вы можете выбрать логи в левом поле и/или искать в базе данных в форме " -"внизу. \n" -"\n" "ВНИМАНИЕ:\n" "Если вы собираетесь устроить массовую чистку, пожалуйста удостоверьтесь что " "Gajim не запущен. Избегайте удалений из логов контактов с которыми вы " "разговариваете в этот момент." -#: ../data/glade/history_manager.glade.h:7 +#: ../data/glade/history_manager.glade.h:3 +msgid "Welcome to Gajim History Logs Manager" +msgstr "Добро пожаловать в менеджер истории Gajim'а" + +#: ../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 "History Viewer" +msgstr "Менеджер истории" #: ../data/glade/history_window.glade.h:2 +msgid "JID Selection" +msgstr "Выбор JID" + +#: ../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 "Settings" msgstr "Натройки" #: ../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 "Advanced Configuration Editor" -msgstr "Редактор настроек" +msgstr "Расширенный редактор настроек" #: ../data/glade/preferences_window.glade.h:2 msgid "Applications" msgstr "Приложения" +#: ../data/glade/preferences_window.glade.h:3 +msgid "Chat Appearance" +msgstr "Настройки окна чата" + #. 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 "Custom" msgstr "Пользовательские настройки" -#: ../data/glade/preferences_window.glade.h:5 +#: ../data/glade/preferences_window.glade.h:6 msgid "Format of a line" msgstr "Формат строки" -#: ../data/glade/preferences_window.glade.h:6 +#: ../data/glade/preferences_window.glade.h:7 msgid "GMail Options" msgstr "Настройки GMail" -#: ../data/glade/preferences_window.glade.h:7 -msgid "Interface Customization" -msgstr "Настройка интерфейса" - #: ../data/glade/preferences_window.glade.h:9 msgid "Preset Status Messages" msgstr "Предустановленные сообщения о статусе" +#: ../data/glade/preferences_window.glade.h:10 +msgid "Privacy" +msgstr "Уведомления" + #: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "Настройки ростера" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Themes" +msgstr "Настройки интерфейса" + +#: ../data/glade/preferences_window.glade.h:14 msgid "Visual Notifications" msgstr "Уведомления" -#: ../data/glade/preferences_window.glade.h:12 -msgid "A_fter nickname:" -msgstr "П_осле ника:" - -#: ../data/glade/preferences_window.glade.h:13 +#: ../data/glade/preferences_window.glade.h:15 msgid "Advanced" -msgstr "Расширенный" +msgstr "Расширенные" -#: ../data/glade/preferences_window.glade.h:14 +#: ../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:66 +msgid "Privacy" +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: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:80 +msgid "When new event is received:" +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: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:92 +msgid "_Make message windows compact" +msgstr "Компактное окно сообщений" -#: ../data/glade/preferences_window.glade.h:98 -msgid "_Notify me about it" -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 +#: ../data/glade/profile_window.glade.h:9 +#: ../data/glade/vcard_information_window.glade.h:14 msgid "Country:" msgstr "Страна:" -#: ../data/glade/profile_window.glade.h:9 -#: ../data/glade/vcard_information_window.glade.h:14 +#: ../data/glade/profile_window.glade.h:10 +#: ../data/glade/vcard_information_window.glade.h:15 msgid "Department:" 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 "Почта:" - -#: ../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 "What do you want to do?" msgstr "Что вы хотите сделать?" @@ -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 -#: ../data/glade/zeroconf_contact_context_menu.glade.h:5 -msgid "Start _Chat" -msgstr "Начать _чат" +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 "Начать _беседу" + +#: ../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 +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../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 "Запретить ему или ей видеть мой статус" -#. 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 "_Удалить из ростера" - -#: ../data/glade/roster_contact_context_menu.glade.h:15 +#: ../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 "Jabber Traffic" @@ -2327,11 +2553,6 @@ msgstr "Jabber Траффик" msgid "XML Input" msgstr "XML Ввод" -#. XML Console enable checkbutton -#: ../data/glade/xml_console_window.glade.h:4 -msgid "Enable" -msgstr "Включить" - #. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) #: ../data/glade/xml_console_window.glade.h:6 msgid "Info/Query" @@ -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:57 +#: ../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: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 , 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 "Пользовательские настройки" + +#: ../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 -msgid "You are currently connected to the server" -msgstr "Вы сейчас подсоединены к серверу" - -#: ../src/config.py:1336 -msgid "To change the account name, you must be disconnected." -msgstr "Для смены имени учетной записи необходимо отключиться." - -#: ../src/config.py:1339 ../src/config.py:1931 +#: ../src/config.py:1649 ../src/config.py:1690 msgid "Unread events" msgstr "Непросмотренные события" -#: ../src/config.py:1340 -msgid "To change the account name, you must read all pending events." -msgstr "Для смены имени учетной записи необходимо просмотреть ожидающие события." +#: ../src/config.py:1650 +msgid "Read all pending events before removing this account." +msgstr "Просмотрите все ожидающие события перед удалением учетной записи." -#: ../src/config.py:1344 +#: ../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:1687 +msgid "To change the account name, you must be disconnected." +msgstr "Для смены имени учетной записи необходимо отключиться." + +#: ../src/config.py:1691 +msgid "To change the account name, you must read all pending events." +msgstr "" +"Для смены имени учетной записи необходимо просмотреть ожидающие события." + +#: ../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:1592 +#: ../src/config.py:2012 +msgid "Choose your OpenPGP key" +msgstr "Выберите свой ключ OpenPGP" + +#: ../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 "" "Whom do you want to ban?\n" "\n" @@ -2859,11 +3182,11 @@ msgstr "" "Кого вы хотите забанить?\n" "\n" -#: ../src/config.py:2414 +#: ../src/config.py:2413 msgid "Adding Member..." msgstr "Добавляю участника..." -#: ../src/config.py:2415 +#: ../src/config.py:2414 msgid "" "Whom do you want to make a member?\n" "\n" @@ -2871,23 +3194,23 @@ msgstr "" "Кого вы хотите сделать участником?\n" "\n" -#: ../src/config.py:2417 +#: ../src/config.py:2416 msgid "Adding Owner..." msgstr "Добавляю владельца..." -#: ../src/config.py:2418 +#: ../src/config.py:2417 msgid "" -"Whom do you want to make a owner?\n" +"Whom do you want to make an owner?\n" "\n" msgstr "" "Кого вы хотите сделать владельцем?\n" "\n" -#: ../src/config.py:2420 +#: ../src/config.py:2419 msgid "Adding Administrator..." msgstr "Добавляю администратора..." -#: ../src/config.py:2421 +#: ../src/config.py:2420 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -2895,7 +3218,7 @@ msgstr "" "Кого вы хотите сделать администратором?\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 "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 "" +"Security Warning\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:3234 ../src/config.py:3273 +msgid "An error occurred during account creation" +msgstr "Произошла ошибка при создании учетной записи" + +#: ../src/config.py:3254 msgid "Your new account has been created successfully" msgstr "Ваша новая учетная запись успешно создана" -#: ../src/config.py:3118 -msgid "An error occured during account creation" -msgstr "Произошла ошибка при создании учетной записи" - -#: ../src/config.py:3176 +#: ../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: %s" msgstr "Имя контакта: %s" -#: ../src/dialogs.py:61 +#: ../src/dialogs.py:73 #, python-format msgid "Jabber ID: %s" msgstr "Jabber ID: %s" -#: ../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 -#: ../src/dialogs.py:776 +#: ../src/dialogs.py:879 msgid "translator-credits" msgstr "" "Яков Безруков \n" -"Александр Мыльцев " +"Александр Мыльцев \n" +"Олег Стадник \n" +"Денис Фомин " -#: ../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:1058 +#: ../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: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 %s" msgstr "Список доступа %s" -#: ../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 "Edit a rule" msgstr "Изменить правило" -#: ../src/dialogs.py:2019 +#: ../src/dialogs.py:2444 msgid "Add a rule" msgstr "Добавить правило" -#: ../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:51 -msgid "Gajim needs PyGTK 2.6 or above" -msgstr "Gajim требуется PyGTK 2.6 или выше" +#: ../src/gajim.py:129 +msgid "Gajim needs X server to run. Quiting..." +msgstr "Gajim для запуска требуется X-сервер. Выход..." -#: ../src/gajim.py:52 -msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." -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:54 -msgid "Gajim needs GTK 2.6 or above" -msgstr "Gajim требуется GTK 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:55 -msgid "Gajim needs GTK 2.6 or above to run. Quiting..." -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:60 +#: ../src/gajim.py:160 +msgid "Gajim needs GTK 2.8 or above to run. Quiting..." +msgstr "Gajim для запуска требуется GTK 2.8 или выше. Выход..." + +#: ../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 +#: ../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:448 +msgid "Do you accept this request?" +msgstr "Вы принимаете этот запрос?" + +#: ../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:347 -msgid "Do you accept this request?" -msgstr "Вы принимаете этот запрос?" - -#: ../src/gajim.py:393 ../src/notify.py:430 +#: ../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" -#: ../src/gajim.py:1097 +#. 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: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 +#: ../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:249 +#: ../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: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:936 +#: ../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: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:1062 ../src/groupchat_control.py:1080 -#: ../src/groupchat_control.py:1173 ../src/groupchat_control.py:1190 +#: ../src/groupchat_control.py:1258 ../src/groupchat_control.py:1537 +msgid "The nickname has not allowed characters." +msgstr "В Jabber ID комнаты или сервера содержатся недопустимые символы." + +#: ../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 [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 , opens a private chat window to the specified occupant." -msgstr "Использование: /%s <ник>, открывает окно привата с указанным посетителем." +msgid "" +"Usage: /%s , opens a private chat window with the specified " +"occupant." +msgstr "" +"Использование: /%s <ник>, открывает окно привата с указанным посетителем." -#: ../src/groupchat_control.py:1263 -#, python-format -msgid "Usage: /%s, clears the text window." -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 [причина], закрывает текущее окно или вкладку, приводя причину, если она указана." +msgstr "" +"Использование: /%s [причина], закрывает текущее окно или вкладку, приводя " +"причину, если она указана." -#: ../src/groupchat_control.py:1268 -#, python-format -msgid "Usage: /%s, hide the chat buttons." -msgstr "Использование: /%s, скрывает кнопки беседы." - -#: ../src/groupchat_control.py:1271 +#: ../src/groupchat_control.py:1482 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current group chat, optionally " @@ -4471,7 +5409,7 @@ msgstr "" "Использование: /%s [причина], приглашает JID в текущую комнату, с " "возможным указанием причины." -#: ../src/groupchat_control.py:1275 +#: ../src/groupchat_control.py:1486 #, python-format msgid "" "Usage: /%s @[/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 [reason], removes the occupant specified by nickname " @@ -4490,118 +5428,126 @@ msgstr "" "Использование: /%s <ник> [причина], удаляет посетителя с указанным ником из " "комнаты с возможным указанием причины. НЕ поддерживает пробелы в нике." -#: ../src/groupchat_control.py:1284 +#: ../src/groupchat_control.py:1499 #, python-format msgid "" -"Usage: /%s , sends action to the current group chat. Use third " -"person. (e.g. /%s explodes.)" -msgstr "" -"Использование: /%s <действие>, совершает действие в текущей комнате. " -"Используйте третье лицо (например, «/%s взрывается».)" - -#: ../src/groupchat_control.py:1288 -#, python-format -msgid "" -"Usage: /%s [message], opens a private message windowand sends " +"Usage: /%s [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 , 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 , sends a message without looking for other commands." +msgid "" +"Usage: /%s , sends a message without looking for other commands." msgstr "" "Использование: /%s <сообщение>, отсылает сообщение без поиска других команд " "в нем." -#: ../src/groupchat_control.py: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 "При публикации вашей личной информации произошла ошибка, попробуйте позже." +msgstr "" +"При публикации вашей личной информации произошла ошибка, попробуйте позже." -#: ../src/profile_window.py:374 -msgid "Without a connection, you can not get your contact information." -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 "_Новая комната" -#: ../src/roster_window.py:2058 +#. 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: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 "О_тправить одиночное сообщение" -#: ../src/roster_window.py:2229 ../src/roster_window.py:2300 +#. 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: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:4125 -#, python-format -msgid "Drop %s in group %s" -msgstr "Сбросить %s в группе %s" +#: ../src/roster_window.py:4993 +msgid "Invalid file URI:" +msgstr "Неверный файл:" -#: ../src/roster_window.py:4132 -#, python-format -msgid "Make %s and %s metacontacts" -msgstr "Сделать %s и %s метаконтактами" +#: ../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:4319 +#: ../src/roster_window.py:5332 msgid "Change Status Message..." msgstr "Изменить сообщение о статусе..." -#: ../src/systray.py:144 +#: ../src/search_window.py:91 +msgid "Waiting for results" +msgstr "" + +#: ../src/search_window.py:131 ../src/search_window.py:209 +msgid "Error in received dataform" +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/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) в комнате." +msgstr "" +"Символ, который нужно добавлять к нику, когда используется дополнение (tab) " +"в комнате." -#: ../src/common/config.py:109 +#: ../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 "Символ, который будет добавляться после ника, когда желаемый ник уже занят кем-нибудь в комнате." +msgstr "" +"Символ, который будет добавляться после ника, когда желаемый ник уже занят " +"кем-нибудь в комнате." -#: ../src/common/config.py:142 +#: ../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 "" +"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:157 +msgid "The username used to identify the Last.fm account." +msgstr "Имя пользователя на Last.fm." + +#: ../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:190 +#: ../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: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:235 +msgid "Hides the buttons in chat windows." +msgstr "Скрывает кнопки в окнах чата." -#: ../src/common/config.py:214 -msgid "Hides the buttons in two persons chat window." -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:1877 +#, python-format +msgid "You are banned from group chat %s." +msgstr "Вам запрещено входить в комнату %s." -#: ../src/common/connection_handlers.py:1589 -msgid "You are banned from this group chat." -msgstr "Вам запрещено входить в эту комнату." +#: ../src/common/connection_handlers.py:1880 +#, python-format +msgid "Group chat %s does not exist." +msgstr "Комнаты %s не существует." -#: ../src/common/connection_handlers.py:1592 -msgid "Such group chat does not exist." -msgstr "Такой комнаты нет." - -#: ../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/ чтобы " +"удалить его" -#: ../src/common/connection.py:175 -#: ../src/common/zeroconf/connection_zeroconf.py:196 +#. 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: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 "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:322 +msgid "Invalid answer" +msgstr "Неверный ответ" + +#: ../src/common/connection.py:323 #, python-format msgid "Transport %s answered wrongly to register request: %s" msgstr "Транспорт %s неверно ответил на запрос о регистрации: %s" -#. wrong answer -#: ../src/common/connection.py:213 -msgid "Invalid answer" -msgstr "Неверный ответ" +#: ../src/common/connection.py:469 +msgid "Connection to proxy failed" +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: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" +#: ../src/common/connection.py:656 +msgid "Error while removing privacy list" +msgstr "Ошибка при удалении списка приватности" -#. do not show I'm invisible! -#: ../src/common/connection.py:627 -msgid "invisible" -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 unread message" -msgid_plural " %d unread messages" -msgstr[0] " %d непрочитанное сообщение" -msgstr[1] " %d непрочитанных сообщения" -msgstr[2] " %d непрочитанных сообщений" +msgid "%d message pending" +msgid_plural "%d messages pending" +msgstr[0] "%d пропущенное сообщение" +msgstr[1] "%d пропущенных сообщения" +msgstr[2] "%d пропущенных сообщений" -#: ../src/common/helpers.py:887 +#: ../src/common/helpers.py:960 #, python-format -msgid " %d unread single message" -msgid_plural " %d unread single messages" -msgstr[0] " %d непрочитанное одиночное сообщение" -msgstr[1] " %d непрочитанных одиночных сообщения" -msgstr[2] " %d непрочитанных одиночных сообщений" +msgid " from room %s" +msgstr " в комнате %s" -#: ../src/common/helpers.py:893 +#: ../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 непрочитанное сообщение в комнате" -msgstr[1] " %d непрочитанных сообщения в комнате" -msgstr[2] " %d непрочитанных сообщений в комнате" +msgid " from user %s" +msgstr "" -#: ../src/common/helpers.py:899 +#: ../src/common/helpers.py:965 #, python-format -msgid " %d unread private message" -msgid_plural " %d unread private messages" -msgstr[0] " %d непрочитанное личное сообщение" -msgstr[1] " %d непрочитанных личных сообщения" -msgstr[2] " %d непрочитанных личных сообщения" +msgid " from %s" +msgstr " от %s" -#: ../src/common/helpers.py:909 ../src/common/helpers.py:911 +#: ../src/common/helpers.py:972 ../src/common/helpers.py:979 +#, python-format +msgid "%d event pending" +msgid_plural "%d events pending" +msgstr[0] "%d событие пропущено" +msgstr[1] "%d события пропущено" +msgstr[2] "%d событий пропущено" + +#: ../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 000000000..45007246e --- /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 , 2007. +# Branko Kokanovic , 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: \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 "" +"Connecting to server\n" +"\n" +"Please wait..." +msgstr "" +"Korisnički nalog je u procesu stvaranja\n" +"\n" +"Molimo pričekajte..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Molimo odaberite jednu od opcija ispod:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Molimo popunimo podatke za Vaš novi korisnički nalog" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Please select a server" +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 "Miscellaneous" +msgstr "Ostalo" + +#: ../data/glade/account_modification_window.glade.h:2 +#: ../data/glade/accounts_window.glade.h:2 +#: ../data/glade/zeroconf_properties_window.glade.h:1 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +#: ../data/glade/accounts_window.glade.h:3 +#: ../data/glade/zeroconf_properties_window.glade.h:2 +msgid "Personal Information" +msgstr "Lične informacije" + +#: ../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 "An error has occurred:" +msgstr "Dogodila se greška:" + +#: ../data/glade/adhoc_commands_window.glade.h:2 +msgid "Choose command to execute:" +msgstr "Odaberite komandu za izvršenje:" + +#: ../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 "Description" +msgstr "Opis" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart Gajim for some settings to take effect" +msgstr "" +"NAPOMENA: 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 "Actions" +msgstr "Akcije" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Uslovi" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:12 +msgid "Sounds" +msgstr "Zvukovi" + +#: ../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 "Type your new status message" +msgstr "Upišite Vašu novu statusnu poruku" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "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 "Chatstate Tab Colors" +msgstr "Boje jezičaka statusa razgovora" + +#: ../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 "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Dobrodošli u Gajimov menadžer dnevnika istorijata\n" +"\n" +"Sa leve strane možete odabrati dnevnike i/ili niže pretražiti bazu " +"podataka.\n" +"\n" +"UPOZORENJE:\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 "History Viewer" +msgstr "Lista pravila" + +#: ../data/glade/history_window.glade.h:2 +#, fuzzy +msgid "JID Selection" +msgstr "Opis" + +#: ../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 "Properties" +msgstr "Karakteristike" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Podešavanja" + +#: ../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 "Advanced Configuration Editor" +msgstr "Napredna izmena konfiguracije" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplikacije" + +#: ../data/glade/preferences_window.glade.h:3 +#, fuzzy +msgid "Chat Appearance" +msgstr "Izmeni pravilo" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:5 +msgid "Custom" +msgstr "Personalni" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "Format of a line" +msgstr "Format linije" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "GMail Options" +msgstr "Gmail Opcije" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Već postavljene statusne poruke" + +#: ../data/glade/preferences_window.glade.h:10 +#, fuzzy +msgid "Privacy" +msgstr "Lista privatnosti" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Roster Appearance" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:13 +#, fuzzy +msgid "Themes" +msgstr "Karakteristike" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "Visual Notifications" +msgstr "Vizualna obaveštenja" + +#: ../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 "Add / Edit a rule" +msgstr "Dodaj / Izmeni pravilo" + +#: ../data/glade/privacy_list_window.glade.h:2 +msgid "List of rules" +msgstr "Lista pravila" + +#: ../data/glade/privacy_list_window.glade.h:3 +msgid "Privacy List" +msgstr "Lista privatnosti" + +#: ../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 "What do you want to do?" +msgstr "Šta želite da uradite?" + +#: ../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 "Jabber Traffic" +msgstr "Džaber saobraćaj" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Unos" + +#. 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 , sends action to the current group chat. Use third " +"person. (e.g. /%s explodes.)" +msgstr "" +"Način korišćenja: /%s , š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 "" +"Whom do you want to ban?\n" +"\n" +msgstr "" +"Koga želite zabraniti?\n" +"\n" + +#: ../src/config.py:2410 +msgid "Adding Member..." +msgstr "Dodavanje člana..." + +#: ../src/config.py:2411 +msgid "" +"Whom do you want to make a member?\n" +"\n" +msgstr "" +"Koga želite da postavite članom?\n" +"\n" + +#: ../src/config.py:2413 +msgid "Adding Owner..." +msgstr "Dodavanje vlasnika..." + +#: ../src/config.py:2414 +msgid "" +"Whom do you want to make an owner?\n" +"\n" +msgstr "" +"Koga želite da postavite za vlasnika?\n" +"\n" + +#: ../src/config.py:2416 +msgid "Adding Administrator..." +msgstr "Dodavanje administratora..." + +#: ../src/config.py:2417 +msgid "" +"Whom do you want to make an administrator?\n" +"\n" +msgstr "" +"Koga želite da postavite za administratora?\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: %s" +msgstr "Ime kontakta: %s" + +#: ../src/dialogs.py:66 +#, python-format +msgid "Jabber ID: %s" +msgstr "Džaber ID: %s" + +#: ../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 +#: ../src/dialogs.py:821 +msgid "translator-credits" +msgstr "B. Kokanović. " + +#: ../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 %s" +msgstr "Lista privatnosti %s" + +#: ../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 "Edit a rule" +msgstr "Izmeni pravilo" + +#: ../src/dialogs.py:2290 +msgid "Add a rule" +msgstr "Dodaj pravilo" + +#: ../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 [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 [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 , opens a private chat window with the specified " +"occupant." +msgstr "" +"Način korišćenja: /%s , 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 [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 @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Način korišćenja: /%s @[/nadimak], nudi mogućnost spajanja na " +"soba@server koristeći navedeni nadimak." + +#: ../src/groupchat_control.py:1445 +#, python-format +msgid "" +"Usage: /%s [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 [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 [message], opens a private message window and sends " +"message to the occupant specified by nickname." +msgstr "" +"Način korišćenja: /%s [poruka], otvara prozor privatne poruke i " +"šalje poruku učesniku zadatim sa nadimkom." + +#: ../src/groupchat_control.py:1459 +#, python-format +msgid "Usage: /%s , changes your nickname in current group chat." +msgstr "" +"Način korišćenja: /%s , 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 , sends a message without looking for other commands." +msgstr "" +"Način korišćenja: /%s , š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 "Interface Customization" +#~ msgstr "Prilagođavanje interfejsa" + +#~ 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 000000000..748c07ffb --- /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 5deffb08d..92cc7fd81 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . 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 30eb995a9..27a734196 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 ecee22521..687a09bd5 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 +## Copyright (C) 2006 Yann Leboulanger ## Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . # 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 54ff57275..e7d9647ff 100644 --- a/src/advanced.py +++ b/src/advanced.py @@ -1,18 +1,23 @@ ## advanced.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Vincent Hanquez ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 3bab31fdf..25836c6dc 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 +## Copyright (C) 2006-2007 Yann Leboulanger ## Copyright (C) 2007 Nikos Kouremenos ## Copyright (C) 2006-2007 Liori (I think) put ur self here please ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## import gtk diff --git a/src/cell_renderer_image.py b/src/cell_renderer_image.py index aaf1f8cd1..a4e8386d0 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 9bf90ced9..3474895a4 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -1,21 +1,27 @@ ## chat_control.py ## -## Copyright (C) 2006 Yann Le Boulanger +## Copyright (C) 2006 Yann Leboulanger ## Copyright (C) 2006-2007 Nikos Kouremenos ## Copyright (C) 2006 Travis Shirk -## Copyright (C) 2006 Dimitur Kirov +## Dimitur Kirov ## Copyright (C) 2007 Lukas Petrovicky -## Copyright (C) 2007 Julien Pivotto +## Julien Pivotto +## Stephan Erb ## -## 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 . +## 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 '%s' % (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 = '%s%s' % \ (font_attrs, name, font_attrs_small, acct_info) + if status_escaped: - label_text += '\n%s' %\ - (font_attrs_small, status_escaped) + if gajim.HAVE_PYSEXY: + status_text = self.urlfinder.sub(self.make_href, status_escaped) + status_text = '%s' % (font_attrs_small, status_text) + else: + status_text = '%s' % (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 7d1a88e56..8870b6bd3 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 46fca86aa..b86786bb1 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 . 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 49179db64..080c28503 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 -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 b7f06046d..aba84008c 100644 --- a/src/common/check_paths.py +++ b/src/common/check_paths.py @@ -1,17 +1,22 @@ ## -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005-2006 Travis Shirk ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 802095873..2e4ad6e25 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 -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 5f5a8d29b..1570059ad 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2004-2005 Vincent Hanquez ## Copyright (C) 2005 Dimitur Kirov -## Copyright (C) 2005 Travis Shirk -## Copyright (C) 2005 Norman Rasmussen +## Travis Shirk +## Norman Rasmussen ## Copyright (C) 2006 Stefan Bethge ## Copyright (C) 2007 Julien Pivotto +## Stephan Erb ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## +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 da41fb8d7..516d849ef 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 393a7d741..91c89f220 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -2,26 +2,34 @@ ## ## ## Copyright (C) 2003-2004 Vincent Hanquez -## Copyright (C) 2003-2006 Yann Le Boulanger +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos -## Copyright (C) 2005-2006 Dimitur Kirov -## Copyright (C) 2005-2006 Travis Shirk +## Dimitur Kirov +## Travis Shirk ## Copyright (C) 2007 Julien Pivotto +## Stephan Erb ## -## 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 . +## 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 # 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 1451da0a8..6423d4154 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## - Dimitur Kirov ## - Travis Shirk ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 # 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 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 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) + 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) - if self.connection: - self.connection.send(p) - self.priority = priority - self.dispatch('STATUS', show) - # ask our VCard - self.request_vcard(None) + 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) - # Get bookmarks from private namespace - self.get_bookmarks() + if self.connection: + self.connection.send(p) + self.priority = priority + self.dispatch('STATUS', show) + # ask our VCard + self.request_vcard(None) - # Get annotations from private namespace - self.get_annotations() + # Get bookmarks from private namespace + self.get_bookmarks() - #Inform GUI we just signed in - self.dispatch('SIGNED_IN', ()) + # 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 65fe13fb7..ef02f43da 100644 --- a/src/common/contacts.py +++ b/src/common/contacts.py @@ -1,20 +1,25 @@ ## common/contacts.py ## -## Copyright (C) 2006 Yann Le Boulanger -## Copyright (C) 2006 Nikos Kouremenos +## Copyright (C) 2006 Yann Leboulanger +## Nikos Kouremenos ## Copyright (C) 2007 Lukas Petrovicky -## Copyright (C) 2007 Julien Pivotto +## Julien Pivotto +## Stephan Erb ## +## 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 . +## 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 000000000..190685f11 --- /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 +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 e46fcbfc2..0b59d7471 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 94b973c5d..71695036a 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 +## Copyright (C) 2005 Yann Leboulanger ## Copyright (C) 2005 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2005 Andrew Sayman ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## -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 d557e6912..3f776c43e 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 000000000..8dd73f669 --- /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 ddb7eef2e..f676ec7fc 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 +## - Yann Leboulanger ## -## Copyright (C) 2006 Yann Le Boulanger +## Copyright (C) 2006 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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 12d674535..7b19cddc2 100644 --- a/src/common/exceptions.py +++ b/src/common/exceptions.py @@ -1,17 +1,22 @@ ## exceptions.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 50d155af4..a1ed31e58 100755 --- a/src/common/fuzzyclock.py +++ b/src/common/fuzzyclock.py @@ -2,23 +2,28 @@ ## ## Contributors for this file: ## -## - Yann Le Boulanger +## - Yann Leboulanger ## - Christoph Neuroth ## ## Copyright (C) 2006 Christoph Neuroth -## Yann Le Boulanger +## Yann Leboulanger ## Dimitur Kirov ## Travis Shirk ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## ''' Python class to show a "fuzzy clock". diff --git a/src/common/gajim.py b/src/common/gajim.py index 09d837c4d..bfc7a555a 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005-2006 Dimitur Kirov ## Copyright (C) 2005-2006 Travis Shirk ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 c768d10f8..aed9e5280 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos -## Copyright (C) 2005 -## Dimitur Kirov +## Copyright (C) 2005 Dimitur Kirov ## Travis Shirk ## Copyright (C) 2007 Lukas Petrovicky +## Stephan Erb +## +## 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 . +## 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 8eae35621..450a73002 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## import locale import gettext diff --git a/src/common/logger.py b/src/common/logger.py index e5a36a8fe..489986faa 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -1,17 +1,22 @@ ## logger.py ## ## Copyright (C) 2005-2006 Nikos Kouremenos -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## -## 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 . +## ''' 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 484dc7f1d..ae535993e 100644 --- a/src/common/nslookup.py +++ b/src/common/nslookup.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Dimitur Kirov ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## import sys import os diff --git a/src/common/optparser.py b/src/common/optparser.py index c5aaede3e..86a86b5d7 100644 --- a/src/common/optparser.py +++ b/src/common/optparser.py @@ -1,16 +1,22 @@ ## -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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 79d83cb16..08514bbda 100644 --- a/src/common/passwords.py +++ b/src/common/passwords.py @@ -2,15 +2,20 @@ ## Copyright (C) 2006 Gustavo J. A. M. Carneiro ## Copyright (C) 2006 Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## __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 4dd508029..29627478f 100644 --- a/src/common/proxy65_manager.py +++ b/src/common/proxy65_manager.py @@ -4,15 +4,20 @@ ## Contributors for this file: ## - Dimitur Kirov ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 6b78828ef..978ca2b48 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 +## Copyright (C) 2006 Yann Leboulanger ## Copyright (C) 2006 Nikos Kouremenos ## Copyright (C) 2006 Santiago Gala ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## try: from docutils import io diff --git a/src/common/sleepy.py b/src/common/sleepy.py index 4ebf7ad24..bcc5f73c3 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 a4529b781..6d70266a8 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## - Dimitur Kirov ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## import socket diff --git a/src/common/stanza_session.py b/src/common/stanza_session.py new file mode 100644 index 000000000..d8625d6a7 --- /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 elements in stanzas @type = + # 'error' + # (except for 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 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 , minus , 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='' + plaintext + '') + except: + raise exceptions.DecryptionError, 'decrypted 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='' + plaintext + '') + + 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 = '%s%s' % 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 = '%s' % base64.b64encode(signature) + + if self.negotiated['send_pubkey'] == 'hash': + b64ed = base64.b64encode(self.hash(pubkey_s)) + pubkey_s = '%s' % 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 000000000..b58e0a1d6 --- /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 + "" + 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 db0c575bd..5ee73c987 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 3c160a62c..c09b9921f 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 86c9e8438..b90c30732 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 c5115cc1c..c4cda4636 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 f0cb473c9..9ce38e16f 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## ## Copyright (C) 2001-2005 Twisted Matrix Laboratories. ## Copyright (C) 2005 Gajim Team ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## import sys, warnings diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index c3de88a38..ff9308162 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -3,15 +3,20 @@ ## Copyright (C) 2006 Stefan Bethge ## 2006 Dimitur Kirov ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 eaa2f6a17..8ccc68d64 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## - Dimitur Kirov ## - Travis Shirk ## - Stefan Bethge ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 b218eab41..36f56a347 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## - Dimitur Kirov ## - Travis Shirk ## - Stefan Bethge ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2006 Yann Le Boulanger +## Copyright (C) 2006 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov @@ -17,15 +17,20 @@ ## Norman Rasmussen ## Stefan Bethge ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 1de058af7..2fb4123f8 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Stefan Bethge ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## from common.zeroconf import zeroconf diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index e34599da2..8d8e70185 100644 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Stefan Bethge ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 6ad768826..626d1be32 100644 --- a/src/common/zeroconf/zeroconf_avahi.py +++ b/src/common/zeroconf/zeroconf_avahi.py @@ -2,15 +2,20 @@ ## ## Copyright (C) 2006 Stefan Bethge ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 3b7207004..79d699ba4 100644 --- a/src/common/zeroconf/zeroconf_bonjour.py +++ b/src/common/zeroconf/zeroconf_bonjour.py @@ -2,19 +2,25 @@ ## ## Copyright (C) 2006 Stefan Bethge ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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('(? +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2003-2005 Vincent Hanquez ## Copyright (C) 2006 Stefan Bethge +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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() + def on_treat_incoming_messages_combobox_changed(self, widget): 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() - 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('Account is being created\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(_('Security Warning' + '\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 = '%s\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 = '%s\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 f4e06e1bb..53b3a68b1 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 +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005-2006 Travis Shirk ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 19fb91c18..95f60ab8b 100644 --- a/src/dataforms_widget.py +++ b/src/dataforms_widget.py @@ -1,42 +1,51 @@ ## dataforms.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2003-2005 Vincent Hanquez ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## +''' 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 element), -multiple - these which may contain more data (with element).""" +multiple - these which may contain more data (with 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 c264adbcd..e50b3abbd 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2003-2004 Vincent Hanquez ## Copyright (C) 2005-2007 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2005-2006 Travis Shirk ## Copyright (C) 2005 Norman Rasmussen ## Copyright (C) 2007 Lukas Petrovicky -## Copyright (C) 2007 Julien Pivotto +## Julien Pivotto +## Stephan Erb ## -## 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 . +## 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') - self.window.destroy() - return passphrase, save_passphrase_checkbutton.get_active() - def __init__(self, titletext, labeltext, checkbuttontext): + 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, checked + + 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 = '%s' % 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 7446447e5..28ff7b2a0 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 +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2007 Nikos Kouremenos ## Copyright (C) 2005-2006 Stéphan Kochen ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## # 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 f0f7c061b..eeb983a98 100644 --- a/src/features_window.py +++ b/src/features_window.py @@ -1,18 +1,25 @@ ## features_window.py ## -## Copyright (C) 2007 Yann Le Boulanger +## Copyright (C) 2007 Yann Leboulanger +## Stephan Erb ## -## 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 . +## 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 8de1e4a74..04253ee13 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2007 Nikos Kouremenos ## Copyright (C) 2005 ## Dimitur Kirov ## Travis Shirk ## Copyright (C) 2004-2005 Vincent Hanquez ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 91ff086a6..892375a39 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 +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## # 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 b9e12222c..33cd8a6b4 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -2,25 +2,48 @@ ## gajim.py ## ## -## Copyright (C) 2003-2006 Yann Le Boulanger +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos -## Copyright (C) 2005-2006 Dimitur Kirov +## Dimitur Kirov ## Copyright (C) 2005 Travis Shirk ## Copyright (C) 2007 Lukas Petrovicky -## Copyright (C) 2007 Julien Pivotto +## Julien Pivotto +## Stephan Erb ## -## 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 . +## + +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 os 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_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'(?= (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 3454ee79f..eea5fb651 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## - Dimitur Kirov ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## import gtk import pango diff --git a/src/groupchat_control.py b/src/groupchat_control.py index 1315f1442..1d975cf9c 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 +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Dimitur Kirov ## Travis Shirk @@ -10,17 +10,23 @@ ## Copyright (C) 2006 Travis Shirk ## Copyright (C) 2005-2007 Nikos Kouremenos ## Copyright (C) 2007 Julien Pivotto -## Copyright (C) 2007 Lukas Petrovicky +## Lukas Petrovicky +## Stephan Erb ## -## 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 . +## 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 = '%s' % (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 = '%s' % (font_attrs, title) + else: + text = '%s' % (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%s' % (font_attrs_small, subject) + if gajim.HAVE_PYSEXY: + subject_text = self.urlfinder.sub(self.make_href, subject) + subject_text = '%s' % (font_attrs_small, + subject_text) + else: + subject_text = '%s' % (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 7e398979d..34a1bd418 100644 --- a/src/gtkexcepthook.py +++ b/src/gtkexcepthook.py @@ -1,19 +1,24 @@ ## gtkexcepthook.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## ## Initially written and submitted by Gustavo J. A. M. Carneiro ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## import sys import os diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py index 3622adc8e..c69716460 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2004-2005 Vincent Hanquez ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov -## Copyright (C) 2005 Travis Shirk -## Copyright (C) 2005 Norman Rasmussen +## Travis Shirk +## Norman Rasmussen +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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 569d0e8bd..3ba50a8cb 100755 --- a/src/history_manager.py +++ b/src/history_manager.py @@ -3,22 +3,44 @@ ## ## Copyright (C) 2006-2007 Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## ## 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 19af94b73..45d6f68c6 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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 75fbccf0a..a274d7274 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 . ### ### 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 000000000..385407f13 --- /dev/null +++ b/src/lastfm.py @@ -0,0 +1,217 @@ +#!/bin/env python +""" +LastFM Python class +Copyright (C) 2007 Olivier Mehani + +$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 000000000..fe3d28240 --- /dev/null +++ b/src/lastfm_track_listener.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +## lastfmtracklistener.py +## +## Copyright (C) 2007 Olivier Mehani +## Heavily based on music_track_listener.py: +## Copyright (C) 2006 Gustavo Carneiro +## Copyright (C) 2006 Nikos Kouremenos +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +import gobject +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 1bc2ac0dd..b6b584eb2 100644 --- a/src/message_control.py +++ b/src/message_control.py @@ -1,16 +1,22 @@ ## message_control.py ## ## Copyright (C) 2006 Travis Shirk +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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 1c76173a3..ba93e6cd5 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 +## - Yann Leboulanger ## - Nikos Kouremenos ## -## Copyright (C) 2003-2004 Yann Le Boulanger +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## import gtk import gobject diff --git a/src/message_window.py b/src/message_window.py index 65d25968c..c2ebe2769 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 +## Copyright (C) 2003-2004 Yann Leboulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Yann Leboulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen ## Copyright (C) 2006 Travis Shirk -## Copyright (C) 2006 Geobert Quach +## Geobert Quach +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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=['h', 'i', 'Tab', + 'Tab', 'F4', 'w', + 'Right', 'Left', 'c', 'Escape'] +\ + [''+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 2b332ae5f..7a64ad4b6 100644 --- a/src/music_track_listener.py +++ b/src/music_track_listener.py @@ -4,15 +4,20 @@ ## Copyright (C) 2006 Gustavo Carneiro ## Copyright (C) 2006 Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 000000000..8cc4c9ad5 --- /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 + + 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 5c5cba42d..e6d42fee1 100644 --- a/src/network_manager_listener.py +++ b/src/network_manager_listener.py @@ -3,16 +3,22 @@ ## Copyright (C) 2006 Jeffrey C. Ollie ## Copyright (C) 2006 Stefan Bethge ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## +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 +if sys.platform == 'darwin': + supported = True +else: + try: + from common.dbus_support import system_bus - bus = system_bus.SystemBus() + 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') + 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 + 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 36555b04c..01974d688 100644 --- a/src/notify.py +++ b/src/notify.py @@ -1,21 +1,27 @@ ## notify.py ## -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2007 Nikos Kouremenos ## Copyright (C) 2005-2006 Andrew Sayman +## Copyright (C) 2007 Stephan Erb ## ## 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 -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 000000000..9ce06a81e --- /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 000000000..9ce06a81e --- /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 000000000..1ccc8309a --- /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 000000000..ee21386cb --- /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 000000000..41f1e83c5 --- /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 000000000..9ce06a81e --- /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 000000000..9ce06a81e --- /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 000000000..15e037673 --- /dev/null +++ b/src/osx/growl/Growl.py @@ -0,0 +1,247 @@ +""" +A Python module that enables posting notifications to the Growl daemon. +See for more information. +""" +__version__ = "0.7" +__author__ = "Mark Rowe " +__copyright__ = "(C) 2003 Mark Rowe . Released under the BSD license." +__contributors__ = ["Ingmar J Stein (Growl Team)", + "Rui Carmo (http://the.taoofmac.com)", + "Jeremy Rossi " + ] + +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 000000000..df48b58d8 --- /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 000000000..2f3c16e5d --- /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 000000000..11ac07e93 --- /dev/null +++ b/src/osx/growl/_growl.c @@ -0,0 +1,239 @@ +/* + * Copyright 2004-2005 The Growl Project. + * Created by Jeremy Rossi + * Released under the BSD license. + */ + +#include +#include + +#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 000000000..d4b2b72f9 --- /dev/null +++ b/src/osx/growl/_growlImage.m @@ -0,0 +1,274 @@ +/* + * Copyright 2004 Mark Rowe + * Released under the BSD license. + */ + +#include "Python.h" +#import + +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 000000000..5a7235dee --- /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 000000000..c3ea320cf --- /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 000000000..c24c30438 --- /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 +#include +#include + +#include +#include +#include + +#include + +/* 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 000000000..dd86960c2 --- /dev/null +++ b/src/osx/nsapp.h @@ -0,0 +1,19 @@ +#import + + +@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 000000000..4e7b6bde4 --- /dev/null +++ b/src/osx/nsapp.m @@ -0,0 +1,239 @@ +#import "nsapp.h" +#include + +#include + +#include +#include +#include + +#include + + +#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 000000000..dfe087d40 --- /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 000000000..2eaeb1bb9 --- /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 000000000..9ce06a81e --- /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 000000000..9ce06a81e --- /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 000000000..d8ff94861 --- /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 000000000..d2e304f9f --- /dev/null +++ b/src/osx/syncmenu/pysyncmenu.c @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#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 000000000..7b20709f9 --- /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 000000000..f29685c29 --- /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 +#include + +#include + +#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 000000000..0715a31e2 --- /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 + +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 000000000..102ec5287 --- /dev/null +++ b/src/osx/syncmenu/test-menu.c @@ -0,0 +1,107 @@ +#include + +#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 000000000..b9c4471c8 --- /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 94a4cde4f..8fa581d49 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. +## This file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## # 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 e6712e8b5..3bde37b72 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 +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005-2006 Dimitur Kirov ## Copyright (C) 2005-2006 Andrew Sayman ## Copyright (C) 2007 Lukas Petrovicky ## Copyright (C) 2007 Julien Pivotto ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 474f07dbc..0ccc12967 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2007 Nikos Kouremenos ## Copyright (C) 2005-2006 Dimitur Kirov ## Copyright (C) 2007 Lukas Petrovicky ## Copyright (C) 2007 Julien Pivotto +## Copyright (C) 2007 Stephan Erb ## -## 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 . +## 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')) + # 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) - menu.append(item) + 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,15 +3477,10 @@ 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() accountIter = self.get_account_iter(account) @@ -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 ce40eb282..df7af6ce7 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 +## Copyright (C) 2007 Yann Leboulanger ## -## 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 . 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 000000000..a95f4cd0d --- /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 6610e0087..2b26fd999 100644 --- a/src/statusicon.py +++ b/src/statusicon.py @@ -3,23 +3,33 @@ ## Copyright (C) 2006 Nikos Kouremenos ## Copyright (C) 2007 Lukas Petrovicky ## -## 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 . +## +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 84ae49877..2d6df9fd4 100644 --- a/src/systray.py +++ b/src/systray.py @@ -1,6 +1,6 @@ ## systray.py ## -## Copyright (C) 2003-2006 Yann Le Boulanger +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2003-2004 Vincent Hanquez ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov @@ -8,15 +8,20 @@ ## Copyright (C) 2005 Norman Rasmussen ## Copyright (C) 2007 Lukas Petrovicky ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 d1394357d..ecc8741b8 100644 --- a/src/tooltips.py +++ b/src/tooltips.py @@ -3,18 +3,23 @@ ## ## Copyright (C) 2005-2006 Dimitur Kirov ## Copyright (C) 2005-2007 Nikos Kouremenos -## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Yann Leboulanger ## Copyright (C) 2007 Julien Pivotto ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## 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 3e11a3cb6..4784d9f0d 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 +## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2006 Stefan Bethge ## Copyright (C) 2007 Lukas Petrovicky ## -## 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 file is part of Gajim. ## -## This program is distributed in the hope that it will be useful, +## 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 3 only. +## +## 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 . +## # 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: