sbackup-0.11.6/0000755000175000017500000000000012216122134011671 5ustar peerpeersbackup-0.11.6/COPYING0000644000175000017500000010463112216122126012732 0ustar peerpeer GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 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 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 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 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 pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it 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 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. Simple Backup : Backup Solution Suite for Desktop use Copyright (C) 2007-2010 Oumar Aziz OUATTARA Copyright (C) 2008-2010 Jean-Peer Lorenz Copyright (C) 2007 Aigars Mahinovs 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Simple Backup Copyright (C) 2007 Oumar Aziz OUATTARA 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . 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 . sbackup-0.11.6/data/0000755000175000017500000000000012216122126012603 5ustar peerpeersbackup-0.11.6/data/org.sbackupteam.SimpleBackup.conf0000644000175000017500000000112712216122126021116 0ustar peerpeer sbackup-0.11.6/data/ui/0000755000175000017500000000000012216122133013216 5ustar peerpeersbackup-0.11.6/data/ui/sbackup-restore.glade0000644000175000017500000024006412216122126017335 0ustar peerpeer GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Simple Backup Suite True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True True 6 12 12 12 True 12 True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 <b>Backup destination</b> True 0 gtk-help True True True True Displays the manual in Help browser. none True True ghelp:sbackup False False end 1 False 0 True 12 True 6 True Default profile's destination True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Set backup destination to the place specified in default configuration profile True True 0 True 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 n.a. True middle True 0 1 0 True Custom destination True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True Select a backup destination on your harddisk or at a remote site. Press Apply when ready. True defaultradiob 0 True 12 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 True 6 True gtk-open True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Choose a destination folder. For remote sites fill URI in text field True False False 0 gtk-apply True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Change destination to path specified in left text field True False False 1 False 1 1 1 1 False 0 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 328 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 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Select a bold printed date to get the list of backups for that date. True False 0 True 6 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 2010 6 7 1 False 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Available backups True False 0 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK automatic automatic out True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 1 1 False 0 250 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 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True 6 True 12 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 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Delete snapshot 0 True True 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 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-delete 0 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Delete 1 False False 0 False 1 False 0 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 0 <b>Snapshot History</b> True 0 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 Current base: True False 0 True 0 n.a. middle 1 0 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 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Select a snapshot on this list to rebase on it. False 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK automatic automatic out 103 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 1 0 1 True True True 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 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-convert 0 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Rebase 1 False False 0 False end 0 False 2 1 False 2 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK <b>Snapshot Management</b> True label_item False 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True True 6 True 12 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Snapshot details True False 0 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK automatic automatic out True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False 1 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 1 6 12 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 2 2 6 6 True Restore as... True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Restores files/directories from the selected snapshot 1 2 GTK_FILL GTK_FILL Restore True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Restores files/directories from the selected snapshot GTK_FILL GTK_FILL Revert as... True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Restores files/directories recursively starting from the base snapshot to the selected snapshot 1 2 1 2 GTK_FILL GTK_FILL Revert True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Restores files/directories recursively starting from the base snapshot to the selected snapshot 1 2 GTK_FILL GTK_FILL False end 0 False 2 0 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK <b>Restoration Management</b> True label_item 1 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK <b>Export Management</b> True label_item False False 2 1 1 0 0 True 6 True False True False 2 0 True 6 1 False 1 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 Simple Backup restoration True center-on-parent True dialog True False False True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 10 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Headline True True False 5 2 True Content True True False 5 3 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True 1 False 5 4 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK end gtk-cancel True True True False False 0 gtk-close True False True True True True True True True False False 1 False end 0 sbackup-0.11.6/data/ui/sbackup-legacy-restore.glade0000644000175000017500000005273712216122126020607 0ustar peerpeer True Restore files/directories GTK_WIN_POS_CENTER 350 300 gtk-preferences GDK_GRAVITY_CENTER True True 12 True 0 <b>Restore Source Folder</b> True False False False False True 12 4 3 12 True 0 1 2 2 3 GTK_FILL True 2 3 3 4 GTK_FILL GTK_FILL True Available backups: 1 2 3 4 GTK_FILL True True False True Type in this box text like that: /home/user/folder - To use a local folder ssh://user:password@machine:/remote/folder - To use a ssh location ftp://user:password@machine:/remote/folder - To use a ftp location True False True False 0 True gtk-open False False 1 True False True gtk-apply True 0 False False 2 2 3 1 2 GTK_FILL True 0 1 2 GTK_FILL True True Use custom: True 0 True True radiobutton1 1 2 1 2 GTK_FILL True True Use default: True 0 True True 1 2 GTK_FILL True 0 2 3 GTK_FILL False 1 True 12 True 0 <b>Files and Folders to restore</b> True False False False False 2 True True False False 200 250 True True GTK_SHADOW_IN True True False False 1 True False False 2 3 True 12 GTK_BUTTONBOX_END True False True True 0 True 0 0 True 2 True gtk-revert-to-saved False False True Restore True False False 1 True False True True 0 True 0 0 True 2 True gtk-floppy False False True Restore As... True False False 1 1 True True True gtk-close True 0 2 False False 4 5 True GTK_WIN_POS_CENTER_ON_PARENT True GDK_WINDOW_TYPE_HINT_DIALOG False True 2 True True 0.01 Restoring, this might take some time ... 1 True GTK_BUTTONBOX_END True True True gtk-cancel True 0 False GTK_PACK_END sbackup-0.11.6/data/ui/sbackup-config.glade0000644000175000017500000114571612216122126017130 0ustar peerpeer 320 False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 Configuration Profile Manager True dialog sbackupConfApp True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK end gtk-close True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 0 False True end 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 12 400 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 You can set up multiple configuration profiles which are processed when performing a backup. Each profile has its own set of settings including backup destination, backup format etc. True True 0 False False 0 True False 6 True False 0 <b>Configuration profiles</b> True False False 0 True False 12 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK automatic automatic in True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True True 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 start gtk-add True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 0 gtk-remove True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 1 gtk-edit True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 2 False False 1 True True 1 True True 1 True True 1 False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True dialog True ProfileManagerDialog True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK end gtk-cancel -6 True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 0 gtk-ok -5 True True True True True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 1 False True end 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 18 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 <b>Add new profile</b> Please enter the new profile name and set the according checkbox in order to enable resp. disable it. True True False True 0 True False 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Profile name False False 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True True True True 1 True True 0 Enabled True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False half True True False False 1 True True 1 False True 1 False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True True dialog True True True sbackupConfApp True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK end gtk-yes -8 True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 0 gtk-no -9 True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 1 gtk-cancel True True True True True True True False True False False 2 False True end 0 True False 6 True False 6 True False gtk-dialog-warning 6 False False 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 <b>Save changed configuration?</b> The configuration has changed. If you want to use the modified configuration, you have to save it. Do you want to save the configuration now? True True False False 1 True True 0 True True 1 False 5 Select destination folder... GtkFileChooserDialog True True dialog sbackupConfApp select-folder True False 2 True False end gtk-cancel -6 True True True False True False False 0 gtk-ok -10 True True True False True False False 1 False True end 0 False 6 Set remote target True True dialog False True False 2 True False end gtk-cancel -6 True True True True False True True False False 0 _Connect -10 True True True True False True False False 1 False True end 0 True False 6 12 True False 6 True False Type of service False False 0 True False 0 True True 1 False True 0 True False 12 True False 12 True False 6 True False 0 Hostname False True 0 True True False False True True True True 1 True True 0 True False 6 True False 0 <b>Details</b> True True True 0 True False 6 True False 6 True False 4 2 6 6 True False 0 Port GTK_FILL True False 0 Path 1 2 GTK_FILL True False 0 Username 2 3 GTK_FILL True True False False True True 1 2 True True False False True True 1 2 1 2 True True False False True True 1 2 2 3 True False 0 Password 3 4 GTK_FILL True True True False False True True 1 2 3 4 True True 0 True False 6 Show password True True False False True True True 1 True True 1 True True 1 True True 1 True True 1 False 6 Warning True center-on-parent True dialog True False True False 6 12 True False gtk-dialog-warning 6 False False 0 True False True False 0 Content here True True True 0 True False Help True True True Show help topic about default values. False none ghelp:sbackup#defaults False False 0 False False 1 True True 1 True True 0 True False end _Set -10 True True True False True False False 0 gtk-cancel -6 True True True True False True True False False 1 False True end 1 False 6 True center-on-parent True dialog True False True False 6 12 True False gtk-dialog-question 6 False False 0 True False 6 True False 0 <b>Create a backup now?</b> Initiates a backup process in the background. Each of the enabled profiles are executed. You can force the creation of a full snapshot by enabling the option below. Do want to create a backup now? True True True True 0 True False Make a full backup True True False False True False True 0 False False 1 True True 1 True True 0 True False end gtk-yes -10 True True True False True True False False 0 gtk-no -6 True True True True False True True False False 1 False True end 1 False 6 Exclude file type True center-on-parent dialog True True False True False end gtk-cancel -6 True True True False False True False False 0 gtk-ok -5 True True True True True False True False False 1 False True end 0 True False 6 Standard file types: True True False False True True False False 0 True False 0 mp3 avi mpeg mpg ogg False False 1 True False Custom defined file type with True True False False True True ftype_st False False 0 True False True False False True True True True 1 True False 5 file extension False False 2 False False 12 2 True True 2 False 6 Exclude by regex dialog True True False 6 True False end gtk-cancel -6 True True True False False True False False 0 gtk-ok -5 True True True True False False True False False 1 False True end 0 True False 6 6 True False 0 Enter a regular expression. Files and directories matching this expression will be excluded from backup. True False False 0 True True ^.*\.mp3$ False False True True True True 1 False False 2 False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 5 Enter the remote target to include center-on-parent dialog True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK end gtk-ok -5 True True True True False False True False False 0 gtk-cancel -6 True True True False False True False False 1 False True end 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Choose a plugin to get the format False False 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Choose your plugin : False False 0 True False True True 1 False False 1 False False 1 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 6 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True True True True 0 True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK gtk-apply True True 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Check True True 1 False False 1 False False 2 False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Simple Backup Suite False True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False _File True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Reload True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True False gtk-refresh True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK gtk-save True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True True Save as... True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True False gtk-save-as True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK gtk-quit True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False _Tools True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Set default settings... True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True False gtk-revert-to-saved True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Profile Manager... True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True False gtk-home True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Make backup now True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True False gtk-harddisk True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False _Help True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _View all help topics True False False True False True False gtk-help _About this program True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False True False gtk-about BONOBO_DOCK_ITEM_BEH_EXCLUSIVE | BONOBO_DOCK_ITEM_BEH_NEVER_VERTICAL | BONOBO_DOCK_ITEM_BEH_LOCKED True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Set default settings... False Defaults gtk-revert-to-saved False True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Reload configuration False Reload gtk-refresh False True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Save configuration False Save gtk-save False True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Make a backup now False Backup Now gtk-harddisk False True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Open the profile manager False Profiles gtk-copy False True False True 0 True False 0 3 3 True False 12 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 3 3 6 18 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 none gzip bzip2 1 2 1 2 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Compression format Default is set to uncompressed backups. True fill 1 2 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK You can split the snapshot to make backup on some filesystem that doesn't support large files. This functionality can not be used if the backup is compressed. 0 False False 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True True 0 0 20480 1 10 0 True False False 3 1 1 2 2 3 True False 2.2351741291171123e-10 Do a full backup at least once every True fill True True Unless a set number of days has passed since the last full backup, incremental backups will be done. False False True True 7 0 1000 1 10 0 1 1 2 True False 0 days 2 3 True False True False 0 True True 0 True False 0 MiB True True end 1 2 3 2 3 True False True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True You can split the snapshot to make backup on some filesystem that doesn't support large files. This functionality can not be used if the backup is compressed. 0 Split backup archives into several chunks True 0 False True 0 2 3 False True 0 False False 12 False False Help False True True Show help topic about configuration GUI. False none ghelp:sbackup#config-gtk False False end 0 False False 0 False True end 1 True False General False tab True False 12 18 True False 6 True False 0 <b>Included files and directories</b> True False False 0 True False 12 True False 12 True True automatic automatic in True True 2 False 1 horizontal True True 0 True False 6 end True True True True False True False 0 0 True False 6 True False gtk-remove False False 0 True False Remove True False False 1 False False 0 True True True True False True False 0 0 True False 6 True False gtk-add False False 0 True False Add File True False False 1 False False 1 True True True True True False True False 0 0 True False 6 True False gtk-add False False 0 True False Add Directory True False False 1 False False 2 False True 1 1 True True 1 True True 0 1 True False Include 1 False tab True False 12 18 True False 6 True False 0 <b>Excluded files and directories</b> True False False 0 True True left True True False 6 12 True True automatic automatic in 200 True True 2 False 1 horizontal True True 0 True False 6 end True True True True False True False 0 0 True False 6 True False gtk-remove False False 0 True False Remove True False False 1 False False 0 True True True True False True False 0 0 True False 6 True False gtk-add False False 0 True False Add File True False False 1 False False 1 True True True True True False True False 0 0 True False 6 True False gtk-add False False 0 True False Add Directory True False False 1 False False 2 False False end 1 True False Paths center False tab True False 6 12 True True automatic automatic in 200 True True False 1 horizontal True True 0 True False 6 end True True True True False True False 0 0 True False 6 True False gtk-remove False False 0 True False Remove True False False 1 False False 0 True True True True True False True False 0 0 True False 6 True False gtk-add False False 0 True False Add True False False 1 False False 1 False False 1 1 True False File types center 1 False tab True False 6 12 True True automatic automatic in 200 True True False 1 horizontal True True 0 True False 6 end True True True True False True False 0 0 True False 6 True False gtk-remove False False 0 True False Remove True False False 1 False False 0 True True True True True False True False 0 0 True False 6 True False gtk-add False False 0 True False Add True False False 1 False False 1 False False 1 2 True False Regular Expressions center 2 False tab True False 12 18 True False 6 Do not backup files bigger than True True False False True False True False False 0 True True False False True True 100 0 10240 1 10 0 1 True if-valid False False 1 True False MiB False False 2 False False 0 True False 6 Follow symbolic links True True False False False True False False 0 False False 1 3 True False Others center 3 False tab True True 1 True True 0 2 True False Exclude 2 False tab True False 12 True False 18 True False Use custom local backup directory True True False False True True True False True 0 True False 18 True False 12 True True False False False True True True True 0 True False end Browse... True True True False False False 0 False False 1 True True 1 True True 0 True False Use a remote site True True False False True True dest2 False True 0 True False 18 True False 12 True False gtk-dialog-warning 17 1 False False 0 True True False ssh://username:password@example.com/remote/dir/ False False True True True True 1 True False end Connect... True True True False False False 0 False False 2 True True 1 False True 1 False True 0 True False 12 False False Help False True True True Show help topic about configuration GUI. False none ghelp:sbackup#config-gtk False False end 0 False False 0 False 6 True False True gtk-dialog-error 1 False False 0 True False True 5 5 <i>The selected destination is not writeable with current permissions. Backups cannot be stored there.</i> True center True False False 1 True False 1 False True end 1 3 True False Destination 3 False tab True False 12 True False 3 3 6 18 _No scheduled backups True True False False True True True rdbtn_simple_schedule 3 _Simple True True False True This option will make a backup not at a precise time but when the computer is up. False True 1 True 1 2 _Custom True True False False True True rdbtn_simple_schedule 2 3 True False 1 4 Do backups right True 1 2 1 2 True False 1 4 Cron time definition True 1 2 2 3 True False True 10 0 4 * * * False False True True 2 3 2 3 True False 1 0 1 on hourly daily weekly monthly 2 3 1 2 False True 0 True False 12 False False Help False True True Show help topic about scheduled backups. False none ghelp:sbackup#schedule False False end 0 False True 0 True False 6 True False gtk-dialog-info 1 False False 0 True False 5 5 <small>You can configure scheduled (i.e. automated) backups either simply by choosing an interval or precisely by a custom cron definition. See "man 5 crontab" for cron time definition format.</small> True center True False False 1 True False 1 False True end 1 4 True False Schedule 4 False tab True False 12 True False 6 Enable purging of old backups True True False False True True False False 0 True False 18 True False 18 True False 6 Simple cut-off: Erase all backups older than True True False False True True True False False 0 True True 5 30 False False True True False True 1 True False days False False 2 False False 0 True False 12 True False Logarithmic True True False False True 0 True purgeradiobutton False False 0 False False 0 True False <small>Keep progressively less backups into the past: Keep all backups from yesterday Keep one backup per day from last week Keep one backup per week from last month Keep one backup per month from last year Keep one backup per quarter from 2nd last year Keep one backup per year further into past</small> True True False False 1 False False 1 True True 1 False False 0 True False 12 False False Help False True True True Show help topic about purging of backups. False none ghelp:sbackup#purge False False end 0 False True 0 True False 6 False gtk-dialog-info 1 False False 0 False 5 5 <small>Note: Additionally all incomplete and irrecoverable backups will be erased as long as there is a complete backup snapshot made later on.</small> True center True False False 1 True False 1 False True end 1 5 True False Purging Cleaning old backups 5 False tab True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 12 True False 3 True False 0 <b>Logging</b> True True True 0 True False 12 True False 12 True False 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK cursor True Debug is just for debbuging purpose.Info is the recommended setting 0 Log level False True 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True Debug is just for debbuging purpose. Info is the recommended setting. Debug Info Warning Error True True end 1 True True 0 True False 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Log file directory False True 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK select-folder True True end 1 True True 1 True True 1 False True 0 True False 3 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 <b>Report by mail</b> True False False 0 True False 12 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 2 4 6 6 True False 0 From GTK_FILL GTK_FILL True False 0 SMTP server 1 2 GTK_FILL GTK_FILL True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Port 2 3 1 2 GTK_FILL GTK_FILL True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 To 2 3 GTK_FILL GTK_FILL True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True True 1 2 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True True 3 4 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 19 False False True True 1 2 1 2 True False True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 4 False False True True False True 0 3 4 1 2 False True 0 True False Use a username and password True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False True 0 True False 18 True False False 12 True False 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Username False True 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False True True True True 1 True True 0 True False 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Password False True 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False False False True True True True 1 True True 1 False True 1 False True 1 True False Use secure connection True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False True 0 True False 18 True False False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 2 4 6 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Choose a certificate file 3 4 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Key 2 3 1 2 GTK_FILL True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Certificate 2 3 GTK_FILL True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Choose a key file 3 4 1 2 SSL True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True TLSradiobutton 1 2 6 TLS True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True True False False 1 False False 2 True False start Test _mail settings True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True False False 0 True True 3 True True 1 False True 1 6 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Report 6 False tab True True 1 True True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 4 True True 1 True True end sbackup-0.11.6/data/apps_sbackup_global-preferences.schemas0000644000175000017500000000147712216122126022453 0ustar peerpeer /schemas/apps/sbackup/global-preferences/fs_backend /apps/sbackup/global-preferences/fs_backend sbackup string GIO What filesystem backend to use for. If set to "GIO", then the GIO/GVFS backend is used for access of files and directories including remote destinations. If set to "FUSE", then Python's native filesystem functions in conjuction with FUSE plugins for access of remote destinations are used. sbackup-0.11.6/data/sbackup.conf.example0000644000175000017500000000732712216122126016545 0ustar peerpeer# Example of sbackup configuration file # valid for sbackup >= 0.11.5 [general] # basic settings # Maximal interval between two full backups (in days) maxincrement = 7 # format of snapshot archive # none - no compression (tar) # gzip - gzip compression (tar.gz) # bzip2 - bzip compression (tar.bz) format = gzip # Follow symbolic links and backup link target instead of link # 1 = enabled, 0 = disabled (do not follow symbolic links) followlinks = 0 # Backup destination (target) can be a local directory # or a GIO/GVFS compatible URI target = /media/externaldisk/backups #target = sftp://john.doe:passphrase@sftp.hidrive.strato.com/users/john.doe/ # remove backups # purge = log - use a logarithmic scheme of removals # purge = 0 - do not remove snapshots # any positive number - remove snapshots older than x days purge = 30 # mount point for userspace filesystems when using sbackup's fuse plugins mountdir = /home/johndoe/.local/share/sbackup/mountdir # where to put a lockfile (leave the default) lockfile = /var/lock/sbackup/sbackup.lock # Split snapshot archive into chunks of given size in MiB (1024*1024 bytes) # 0 = disabled (no splitting) # positive number = size of chunks in MiB splitsize = 0 # Set the package manager command to backup the package list packagecmd = [log] # level of details in logs and where to find them # log level : 10 = DEBUG, 20 = INFO, 30 = Warning, 40 = ERROR level = 20 # this is the base logfile name. It is extended by the current time # when a logfile is actually created. # the logfile will be copied to the snapshot dir at the end of the backup file = /home/jdoe/.local/share/sbackup/log/sbackup.log [report] # options for sending Backup reports via email #from = foo@foo.foo #to = foo@foo.foo #smtpserver = smtp.foo.com #smtpport = 25 #smtptls = 1 #smtpcert = user.crt #smtpkey = user.key #optional #smtpuser = foo #smtppassword = pass [schedule] # define automatic backups # only available for superuser/root # define auto-backups either the simple way using anacron #anacron = hourly|daily|weekly|monthly # or the exact way using a cron command (you should know how this looks when # using this option) #cron = ... [dirconfig] # In this section you describe, what directories to backup and what to skip # More precise commands override wider ones, for example: # /var=1 # This means that the whole /var directory is to be backed up # /var/cache=0 # This means the /var/cache and its sub-directories are not # # to be backed up # In this case all /var, except /var/cache will be backed up # It works the other way around too # by default nothing is backed up /etc/=1 /home/=1 /usr/local/=1 /var/=1 /var/cache/=0 /var/tmp/=0 /proc/=0 /dev/=0 /sys/=0 /tmp/=0 /var/tmp/=0 [exclude] # Define what files/paths to exclude from the backup # Comma-separated list of regular expressions to exclude from backup # use this to exclude certain types of files or directories # # Note: If any of these expressions matches within the whole pathname # of the file, it will NOT be backuped. Keep this list as specific # and as short as possible. regex=^/home/[^/]+?/\.gvfs(/|$),^/home/[^/]+?/\.thumbnails(/|$), ^/home/[^/]+?/\..+/[tT]rash(/|$), ^/home/[^/]+?/\.cache(/|$), ~$ # Do not backup files bigger then this (in bytes) # 0 = disabled maxsize=0 [hooks] # specify scripts that should run, just leave it out if not required # scripts must be executable (chmod +x) and will be run with same privileges # as your backup process. So, be careful! pre-backup = post-backup = [places] # Installation prefix for internal use only. Will be removed in future versions prefix = /usr sbackup-0.11.6/data/icons/0000755000175000017500000000000012216122126013716 5ustar peerpeersbackup-0.11.6/data/icons/sbackup32x32.png0000644000175000017500000000276112216122126016564 0ustar peerpeerPNG  IHDR szzsRGBbKGD pHYs oytIME(5ˬqIDATXMlW;o޼?;~yvq캐"UD DXdQՄM]颛uF VTH ؄"VBE&EC^~ܹx?6i88HWsg99{,^}ijCå>r7/rw?6<-CT@^;3;wyYP.خݸ;9DnS_D:}Q.^j}_/>(@y*&UJ>+ wAn`:*nwԃM}w:3ݪ8vo=n@4v8v]E$q~-[zޗXk }^m¦v zj7 ?eGy3X(`%e KKK.H\J7T_ٳg3N_G0]Q n:Wϑxٞ_c(:ӗIENDB`sbackup-0.11.6/data/icons/ubuntu-mono-dark/0000755000175000017500000000000012216122126017125 5ustar peerpeersbackup-0.11.6/data/icons/ubuntu-mono-dark/24/0000755000175000017500000000000012216122126017352 5ustar peerpeersbackup-0.11.6/data/icons/ubuntu-mono-dark/24/sbackup-panel.png0000644000175000017500000000142712216122126022611 0ustar peerpeerPNG  IHDRJ~ssRGB pHYs B(xtIME CIDAT8˝KHQ4z|XfcJ4"s`ZٓM r6E mQ׈ i5՘4wZAt6r?{CdIz*8"@"<z tt$ZYZ[&po 92$i6oh0.|p`vB.t6[䍌rO%9cUwScڜ|bGK}Ft`8iKzJ|?<Gg r*Kߓy!-ʣlC>(^TiV&&5*i rs%FI'y黵iQ t(}x#QLqp}{H\A2Ozkh/JVjts0"šEZ_?V$ oYC7w=l/'8)hK==~Bb)Zy]:!dYQU[U+W6*V2Q g Ar ]U8d7pxu=@D O6g# ,O@jKc0M,{)8\:^|>'J B߫3 `!ڵkr*Jxss@Isssg4JR|>_X=`:c ΝC*BWWW+_`2@)q( XUe5***ANg~rrSSS `0eY#p  ކwo؎ϏE^]RAp8l|>h<jZMBE:=5ZJt%X^1 `.+;Zhu:vkjj ewiH&FzcܕI,dn4v˟dBщi@E{1ͨD e@0tP ߇vA[JG"Rp8LA`:exG<@tiƏZҊ & Ѫ*8ŀ;w83[BgX˲Hcf{pRon hll!ٱcG @o @MkYkn;vMVrIENDB`sbackup-0.11.6/data/icons/hicolor/0000755000175000017500000000000012216122126015355 5ustar peerpeersbackup-0.11.6/data/icons/hicolor/24x24/0000755000175000017500000000000012216122126016140 5ustar peerpeersbackup-0.11.6/data/icons/hicolor/24x24/sbackup-panel.png0000644000175000017500000000251312216122126021374 0ustar peerpeerPNG  IHDRw=sRGB pHYs  tIME ;.IDATHǽklTEg޻˶viT"$F)X@H4H b/&~D Ijj򬺴׶{{{g/ 5I̜393sf YgQF*$%\1:q3BTŵ-*]cⷁK \?|֮^:)-Yd\:kc8p۾ / TjzE+ މFJ]9}ʗWG/.mOiN͍UeW25CgƸ%W^SPYQQU3J e8ӿ#_=>VDh""s kMx~ᣃz4M)ŔR?uuu f*BjFԖg)|/+FvQ)E"tgI8qZO3U׭[]oƻ~DC" @a>|gZ;#&zn}q۴׫K#DÑ5pC$. f`K ˛| on{>CSB|>7N;ScuVfY"Ʊ(/ xtu3aa,z·0Mht1g8o466BuH)YرaApZž~_E]]]4M|`A4X!~?KJ.; RZ"ǁamcULc;"C)5K΄DD4m堔kΞ= ض ]9c >`0`0L&3 a3c0M###f, A)"s8p8@ ua9a7YW) DII a̚S6BR BH))Y"rJD""BVJu]TVVB)o^׭>)nTJ)flnϩ+"y'z{{;GGG>n7?. 8G(ONhTIENDB`sbackup-0.11.6/data/icons/hicolor/24x24/sbackup-attention.png0000644000175000017500000000245712216122126022311 0ustar peerpeerPNG  IHDRw=sRGB pHYs  tIME%.?IDATHǽmlSU{{v][Vֲ%PbKY$ ~hH&_L Ah!ARc 8R`e/m9 1ۓ<}y~kc!vXwo`l<wH(eMmElҩ3O#@]^ϭS>ki" Eȕ :еq/ @6#{5o}CO_yvt|٢P}^(5P7ryrؙOvᮗ%ϛ_SP78yؤY"8=ro IJ%"..ER7j(]B%\Be!LF,XIU0F~wjc̯L&c}jMMMiBg7B ݴpi4sÓ+`I ]ni% WW IkX s邁=+Ɍ@  " Cx%QD/xhC@"hORi J)Jt]io}-uhy0ʨw6$D$|ۻi) sqs n mtXU JxvH$-[$fffDqXDMM ({سu9.fymlE!D[ގ@9iQURȲ 0nB8Twvm!Y֢X,FY=JiE-'9!$I TBLLLT!Ξ=|>bEQ I(qa|> sgwꋔRh|>UU(JT.r9|p0LRQɬBsQq\1VQB1M==XQ)e$.l.C21aF"BkvY"V@gg9IBH7yς˲N Od11 0! ` IENDB`sbackup-0.11.6/data/icons/hicolor/24x24/sbackup-success.png0000644000175000017500000000265012216122126021747 0ustar peerpeerPNG  IHDRw=sRGB pHYs  tIME3$ :IDATHǽklTE3m]*ICYVhCS!L$$AMh0!<"jZ+VZڵ-v{w;Z1k̙y 7gܔp;7 L2[,,ΫNsK"5~ve_;VU9lf$K@FcM/ @)d..&vC-]_ s3R"EI"Ɂ̡K' _8[6Hhp-<𲜡Dqw%@Ai@=e!kKV+[L7|ufeeqBQUX cUO^%c###cL1 s|ǂi%NwylpNsKuu5E!pR0`([S W 6Y#D#gn/@98J,>jl{E-H'w]|bbOm*V+@)a {1 6Bh>(+܊}A%֒s@Tx<يl61J)(@e@<u]vB%#(S 5<߂L)4M!a@$8=RJq;8lI Ý)"j s>x ֹ* $!s\|PB$J)(p q J@! ;CA1Xnɬܢ( B, dYl$Ip8ԡ\$$aDtx*ܿcccӮ%Psl6, $IdJWDbBe (M|z`Ea|>n1 c:Egwǃ\)jvqsD~+++͌9>ι0§)*B,yN;::'n8(1+hSIENDB`sbackup-0.11.6/data/icons/sbackup-conf.png0000644000175000017500000002651312216122126017006 0ustar peerpeerPNG  IHDR|nbKGD pHYs oytIME 9;p IDATx}i\Wvw[k}a7&)EjIe,4b{f #1`q4NÀ 8vb'1J'/DIB)Q&UWuUޓoWU&JK֡Կܵw׿'k$COe^{/Noe7OcГ?NSmơ&F6Uo~r7fW:C+pD ~Q*9O? 5iѿa"a>@㿮f86یɉßu@rY4$nn/ljK9mA =C9YPn,&!u$+ܧU 4)p=d@׍qDIp{Q7 2P+c㖭xyW~O挔y04˳ ;TtNw4D aî=p]4۱miE3Ȃa=޴Co;~6ڡ x$4d~o?dϿT`m1HxvQ휵xMM&p1yӦ?( ѡc:t]Iwuͽo|.­b|?8p`l`س ?lBq!]+f\s f8@SlnS+\E&u\gtF b-!2ZZBapes]hs Ǟ>TW]- ΂M>+ƒdo 9b@$I,c<$q~躾I[p38@|'5p[v EQ Tt94%da-Cz&%蘪D p Uo9v֯<|* !?'|n8'0wYW+k#{TPzQ H {哺0bS3聄 h 0Cˌcq~'4mq9䲩_ܾuW/\v70c i%UHnP3@ )@n[@-"=زkN:?\PS][~G}ҵƠK3gNkkҾJlT7i)í-' %K$ = D$֖ܽ7{!%enj.H;]w3[ƃO<0r @&%f,Bg88 w$BX8w(M› !=(5H=|c_x pΓ@cBlcl34C:smT'Kk V9,j2]yNÑbc =w24$I)(VJ52.,Zp<]tVQ"cPC 'p&IxGmSp<؇s!cl>f "BJYB{V&"]PⳭ|2GT0Ğ-Ѥ6 05~ji)EBJ>9r-a2$q3116ǠS8=ۊc=vȱ,ڮt+ʥժs8c;Q@Ieq˘ɏJc3W.}q%14$"nCm"F ÐF;$ XpM ߉ \HPjzKW_[}pǞ3ⶮ9\B6d%|/NԇMi3: RE4@ 6Gm`EH__eAyxL hA?k{Iq#qHHAI}Ϗ{zeY{Vk6% مr&I11"ZAT ј UxN ِ"G)=w:@J©~5=}\ BShք+jd%8Iq C?W "̯(0ez_:~0t7oUװмiY9r5߲/|ҧbmR RHYHH.A RN$Bpnnb7+y C8t~@Q|2<>G5q^D< F#xJUGRQuSLsv,@05M Ye1sQOR0;;g3.5j" $~ {A??.[\~̿ߙ^翭` S% 6h!I  mܱovZ+[w}R n vO0|2..`>UUKfZ3E` eX&ل 4`A\)UqbLa&{~g(dSm*=^xo7b&0 &@ָ !@uH֖!3@MJW6:΀2j%|1vA]jPPC 'P9Hs 2a2RNخeM,W\,-LuL* ]ۻw}ٟ睷vnVUlzD!Pv`g}!ís6S#$ ³V!#c#_JUMQ;i 8*.ciتK20G$o%E=>~a;lǃB )щ3 m9lömXVY,۶`: À ٳ{ϟ_Zo @ pbPM$仾FR1ݩAk!H%S *__*>"$@>qHH-35@y!rx=ߑjX(Ve' p !JCyhΝ+g֛b6&b:[Wa^S^"HDBʶ'(tP/&Kx`=X Lҷ,4aa,h"> T' $d9p9fhZIP5AH 8 9ibddDۼyA`'B `)4o۱J1!p$ H!?_z,@'yH@EZEf+@ A83,6;)dI8yb#<ϋCزo߾@fP 戀I"IbTpy=vKΈXfzhw&yGO8iDRgP'6LDs!!%z9;D{\Bzj1kq\Wn Կ-I1#FzC VaO{e=ZsՁP>>.cˡ{ ~è$\O@.P +A*dPCDBJ Dk-E}|c(ܼ-$Hx5F>5c{ϩ@/5vxLp.b!|R#8 D*U8M`6 5:* ať@u@Ar D?@`0guݎa58A3M3u3@ b`h( v=*xw=/E cYO;kulٻ$ZɂTLabp7L5 A=s0泇:'L1 4cUԮ $CF\bL`s2IU? G3{Zm;!dMW?)IU@J !cjx-ؾq lK s#|pNLα~A(*}]W9AfcMе}yyȷ/ b!E@mFyxs"e?q'2y /7+cc??jr.W\? TsbUHil#_.Il܈`9!o4$A }j:,5iy!P|#)Y1bԮT#f/{i #u@aTeM$'c*873&~s?<672`HU42!yLK4MS\j= BHt@!z鹐ƒZB$:zI BC _~s0f1fi:]<5-Bk*7r4SIFu`2obˆ0% 6@I7Bո3HAu'P !hۯ񼨺'.Vj%PD@9wL׾ r2ę񚃸.dM5ri5 ) R=71۪QBsIUU]7# hւ-021'PpA$گqyoq}Я{b>L$"43JltVW0883{vm xV4& 8j*J* /_9PTs}pִn%@}5= u.*U`*4??A$wTÙeÓp˾?dRSCѸqџrιi=[H YH̞?э{F=fn*k~eC%NM&\uS46 g`.QTn='q+%,ZWư11{vc k&诿nby+4@k@,VX]>~#gqaWK u"R`#~8:Q,P1cKBʪؤZv Q޿KNgs(麞jm玌 g_;v݁Mw#ηrg*P)-S'Oa`(aYlہPKvKܪ鬂q[qMPb1Txlj|0 3X{ٷlܿS]4eψ9a6S)?&#.9 dg€}!g2iv" (RjȿÖi̋< v$\_ٹ6]0,<3{@ąIjs$AsL GRpKzP҅ɉHcD4Ι 3)IĘHey(3J"5|!o8#I*cLH"s` )i/=G4|T.sMUxB;4ttCCu=|x㫨IiPo;=x Mi+f3 j0T V JEy斪rnq͖pxMҴo:6NRUGu EQ*6luZ )h@UU!*Rtֵ(Ŧ<ǨW.㗾pN@Sy*oݭ6@@nŸ{Kj;jE⚅WQMC7X;>'v611GFFd ' @T:3{=ϋsyu,*ݿ ?i|Ir JgAU5 z:tHf3emIe[9=~qʪu1_JSr)]a2 ] F9~NVt? # G۬a{'FPO<s{C*(D`EXZ\gKgR'tjRBaŋfja6,Ku}TQI!,{$r۶ZLש6"?;6\q!'>! HN iyw]IFJمBAӴ9c( P]CS\6\4-2԰|=kN>Mv ;M14]5qn E*) ( 6o!rWR&IK4-]wXfuT2ٿ`h Z:^xFy &KLFfzGx#-i{ &088&\m͵600u]X0jvfwûOlv^GxQ)? MӐ3TWWH)Yf܆f30994QyHR-SuF !uf;{,UR IDAT|ŧP԰ hDG !/<#x= EP>nJZ7\U5pa>]OHml6u9d>ua:?o& {)Z߫ v֨>-HT* s]7@JPk;U&wv3ɪp]4hhEQiz+B62LD{_&gÿk(s# 9NSFl34Nm(KaP(@׵Ÿk<BS-lٶkOK< ຮ 5kxoQOp-OjzFgTBRz*evyxx7oFX[o \׉8Ʈ]1>>uNYytj J8x3͔ɤu]155]B7: t|a||/_RWU<<[C4 P.avbPsd2 BӴl,co02Oi=Q:88ZmNBX 5iؽ{7"$كlVs@&ӧQ ג $R(|!D<Hf\:v׮]C%A*O>m۸p"v؁k׮AJQ?w¹sNLNLq]σB1 -qh_q84MkchhuukŽB61 2177ZAd*GU@M(! p%,--bbb(}4;w2 #OqG`B5yDAyBD4y^,;g^CžbXڨu4t:U_:FFN9iOɃRv I$3,|Tge:AR?-nOҜsT*ܴ1EQ" YR$}Te[h+KQ &}f/4Ua'H?J^ujfՂAN?n4]q{~s1D,ת?r]<;G1y?Gry,nvX "8ZjZ0{W^[ZZ'- d5h[r^5=5{&ܫ:6C 'JRd24 F4UUU r0MG$R0 PUU2*r2YY'bH?/KJee@OCAhhl٧N}[wOģ;vl7IJܽ >_q[QGacb|BgQ(06: M3?(ʗ]ӚV(kZ[_{P.z^(ɓ韾rĉ/l{9T \Ps};8Di\ *9]/K:|g;52<Ӛ ma/,.$W_㪣?Ejp{bw/sW,jsiN`4os`Y6Zx[ݤEZ8 C?9q Z(ϟ?텅 \1bӥ]Rضm/V*EKEDB`nnK@٫X^^F>e`i wXT*Jr1}0Cj<'zPj{2IUUifO ۂ7[V@6 W]]]Ƅl),y8D .JWo|>wiHD7yaN -+w `rxxΤ"ᇝcjZ>wǏT*^ "xBHiI@',/\v0==[4QdaOcp&q=d3cCĸ5񚸘GZ.\x_~W\uNjݸl gÚ im"du]3NSt5v^/ -$ݖ VeyDTT*gN8s 2~ .vt Qnrb6 `<ū]|&6jd %R @:?q:06n9;ooooooov-U IENDB`sbackup-0.11.6/data/icons/ubuntu-mono-light/0000755000175000017500000000000012216122126017313 5ustar peerpeersbackup-0.11.6/data/icons/ubuntu-mono-light/24/0000755000175000017500000000000012216122126017540 5ustar peerpeersbackup-0.11.6/data/icons/ubuntu-mono-light/24/sbackup-panel.png0000644000175000017500000000143712216122126023000 0ustar peerpeerPNG  IHDRJ~ssRGBbKGD̿ pHYs B(xtIME,IDAT8˝KHQwfGΘN6=3+M40(*].(""\6EQ_dEFWG|sZ|ٜ{.ǹ\΁cnΈSV:Qj#`e>ϥOlFY-P׼O lqG;)6+EYkfs硻p+'jL6Hd%97i98eŘw%1ddb!#n2wnE|a;ۊtq9kmJ_zS| iީt&ITJxޣwOCVu0Iu__6?l|=zXG|8/,ҷ}5QXax7I V\g 7j!mpf1$x綣[P@!11ι8/NWv1px"f S`?7*{I5zm4uFxO9W%%n`Ŷz.UI5+.D_s2VQ:h`vIgggxi( H&0Vl6PJAqttTonnf$1FFF̩)6>>^q:.?Ѵ;׮]vr9N/Kҧrٳ!4M^EN\.g[8r\O2̯L (< yd+JVb$I2J˗P(4nypx'0Ml(qw;::bivYV!N_0o8p@RC)RB)>s ìE"Fc7odҋ/(5zg{{``|cǎ%R LOO#Q`ܹsM/^(7Z<WD<* LD @0D"Cb.\;SNyEO8q7ϫdiBQ ȲMLNN@ xzSn߾IK͆l6a,,,|J@pSz.9Nloo_q]%m\YV\.E֭[GZ[,$H{AlT*%RA]ׯ" rWtsQ'իW_{nJ tRS}Jgff֫nJqJi;>*j4QQ$+\A,1UUG>|ӧOɓluu|U"мg'뺎d2~$ٳgxhmmEKK vvvmmm="B`{)r PJ)dY鄮oKXY^faV!)Baf *aDQDcc#t]G(wssal_w^0 [mkQix~Ȳ B @YYߏh4zr||=m>OPuWNؘ>55577#eY J~q444L쮦=a{/#n-v#t]0yܹ,&( d/V+4:::pȑ'UU]|Zס-տqKjjj< `vv'X,$EKP(3glUƞ~Pt7s+W_r_KKj6%I.L>\,虚ڳGlƎnnT I*>jipP >#mf\.W|߇m' =8^8[˪G@qr1}`~m9TUE<?dy^8(2iZbmDeljrBޮ?\# ~?*@wtPmgIx&c=ty[pSWN056Eq\+4|x[wh{Kw-G8tVMȯ4O8 _;T/~?g~lzК1r3#fJ~X*KF6`1}_ݯޯ3x0O[Oaa';^v_>6y8̙/7wopb^Rſ D+K^}1arG>p]ݝ;Tvo)1M 41-o&a ) )B-wꙿud{֐ a y}{wU~{ס"?sӴ*@ 63|ά>W7CY3ߛB2ehyu{w|V2wd2J9L <ݢý?>VnWL.ܰEL˪utf`c_nP4gրom|!"H2N7l"HaVs D;\tf`y >Z\4O*;H&cnTPaعi(F!E:h ,>Me%AqyՈ.)AO8Ew[ Sav1bk$[> .+P"ܸwS/t܍k0auS\Z3py, Mss%Kn,놁 gdt:|E2o$k?V 1^3p dYfs3)~cnM>%o۽g°?eVG0R Ж B@[y |&[.K,Ʋ5 :9Rog@iw>BZuh>״t$ĒƻԀ_|;O,C@7:z=qB߼f3)C* @ FZW"W"89b'oS@Y8ɦ2hMe5ߢٜ}|,؞k&mf;G;PZ[ H旒20L:o[ /{ף;Jܻ݇7#Rʹi4 [!nq/?)KF#h6y^cI0oW]1zQny_ ZW^HiU2%j9ſFk,B|lp3n͞:}3gG;`t-v?+.UEuolo]I3Y9/zT 6|S /r]MY*n*pD799.> z7?SFLkҭ\sē u ǿ0Yk֊񒦚tEYzq uKӲjY.+lۧ/<{0ghx+n8q5p%d [P w G&$Q}7?zz֍@!WZ k R.F VBL:+]w`7^%KF Kvz |AM'dLF tKpZM05(+A^ϯؾ+gߕM 7\͇qc ֘BtVTe)/ڡZ*nL!3K*{[B4b:aLX#o|N%\ؾ;,:pr6ENd?qջjt2)L!/sIPW MU:ĩW/26cp6[v,&V|!c(3/eA2{ʷѾۮv k~Xx5ӽ9{ F6KUh!Rr (Q}?A:lvA:N?=C֑e0);ˢr}),~C n}z/nv5%DjeLy(^ \%GS{ kh+]$(x5FDQoq/ ds4}igN^'X02ʳ[rzyeѷip>]H/Lef~~ci9w-q KLf:jM+ʱ)پJ)ֺQ>ő^^^c^gOki +5yמn E̔_U*.07}CuW-bpk=s}m;6c#UkM A<ۯWŵ&^)+k7"!S(R>Qyxc%===/ E{Tg|#̾uJ՘~y29vK<0҈~4y8һED0z=/7cdR2AqW ι`RkbI\;6˳g/N^n87{yRW%^AHMPАT{v4ƥ8[+ oKm+N|E&k}NM"="Xh-[$}/!Cj"Gd)\_c>sEޤmlظZ{(-U`E5/򱾮σ]$bQIkk A@Գn?E[L2⏾Wo_0F̢J.,bTe#(b޵`))VW7ƊuT|7MQ_`:ik&z{{F.(w8П K2 Qc2Sy?ǀ~Ȗ{Bp]6fFsUkh T%JR()D2#Glqw`%3iUۙmR9}^~zL˪0Se ~]!Bs.|Np-Qf 55TtԵ)|Nct!vmas0G2NIcHDX_OG)"I$S4&]AVI[}_.sO_fZ;g+%zd#teˊb4^ߤ Cij(ԃJDAďc\奱9 \WBs`ߛ T%:GTe*rNELIk6K,]})sOk 1ZKba4ʳq `B3uI_RL,h1<ظo/r YhHQCG<=yZ0EՔ %ZR55tkb/̇ۇ8t^qF)mE"bKDZɧ]U 4 mͳf+uKaHrt;_6WP|Cb|׵lVÅvr_Ü3jrGA:)gQ̺2{ ;aZPD yJ!F* M)2qR*EQԲQUVÈTb 3ySqn8GNM(/< \x+JG|(NXFLޫh2Y/S7|LX!Fvab6x4Z됙2;"m__u&"xsJ휫+kMڏϲ+ƺl/Ztڑ4g2raLō,AT n]jl^Ngz6c[9Ν6gٟ dsa;zeONQ@GՋԠk))FG)4)qjZ0ϤVP2#PX lip0Myu :pU}(U[?^/f53(. )IuNUszkkxXmXV 4, u1 )gώ}?JaKk Aƍ6D ~H+ն\.s/M!N~:RN9qR#ZO\ 1]G~d*QF ~U(uTTaFI6mIR(cnR%Fkr%5$t?2?qXXxٮY4֯8B?;vٙ-o.=JF¬X9([Vhj"ZW ^rdM>Sْ2Oy/)zrIDWt>nfT>3E&vZV#Qm#'Nsk"x< ٰa#aYֿрv[N( cl`?jX@O~@S;R41V]rW pms nq{ ct DdŎf׃Jꀣ`C-uAScPr|S{55*Xb`StHZ.8yJv1TM`G\?LnE/jf.d\aUZ]:"@T6Ug}"P{(߭m@X-v[)~'< dL4`pSխ hO aKvuҔ\٢C":$rWWq|ZTԈZm8N:"B_i243F8ԟ7f t$RUU(~:\DZ\=`*jESgJ/u-4 Vj|]kp]b+JLx<]w}=WU6t8YV_KO0/4B+@VA:sPPk&UT8g[L O]+ؚ7Knd]1b20*~R U'@~_ֳ*/0W6i4vѻy<"lDK -*rR*H4M#`:k";VRضmM[ww۷o*_T>/GnV@eEFԫ}-RJc"n"k w"ۗdWrVW&\)~#<8|yUJpAԺTf_L7(KE(Tu) zyGK,2<0"}JH6KՋ>䨖j}$_*DL 3i2Xdbr'-ݬ#>s<ݣ3TTLRUf(_51]o5-"xx8Diu1$J4h c6xR233^ T  ِ\B" oDU7ΔGFV))4꺺 W?̶]qݢuW÷%C;z IDAT3g8-ﻃ]iNڸJ#(OVxE$^Oh QcZY<: hAa"bE>E'iAn-Ooõﺑm\lAՠؐbdS )KaH)1 iH%b[KJb+=E.U+SP50P'nז2Xs=6^ѯSnDJd(Q]uE}lڡ*X^(_S먙sC{T}r&wJ x.;)̂@ ]( ?2vvT2T2{0 I2'۝!M2+gM",lf6~=KOL ~P(o[FmeH=ơ];Rha%bW"CAdՙy)QB7lQW\WWR Yz[H6ݧ/K/q29xūsvXk/v]\vٮ8zKc JHӤ'K@8n i3SyrE?R ɜ`t ; cS,ٿui9y""ED6O, YUh6*v(XiAB D +̤`۳§NM‡1S1~$f,57]M5!UDe5Pþkyä<2W+Be!_b.Wdlz^.xWvwqC\9 MÑXk\_UXJJH;Wb+ծH)xʃ",p1 ecf]ӀE6`7[nڇ֚y}gyc:MBנ 0oU SJ%r\c=]xϳ<02,ˢ73::zCՋ^HʣlWWmP?_ޔˆ{eFEX4F[.O#CE< 'y X4JG&h[ 3z13kɻ<ZTN̐$±K$Vd+bl6{%|( #2[N7(~jе)R:GхϴjLr+~ѫ?/1BZöuܳgrzO?OF_!/ ucre{m3Td26TY+S)R4 *6WT6/{h@{“ΡJyݘEϳ싯}6%6_Т8?@W-1,>eNG+^r|] ,fE5шʨ MŒJHQ9HV)wAmyAju'Vh^.'nAQ_98ShTCK0ѨAOyWʩW2q$I ؐspZf EQiL&W={梬Tu ~cTTY VXX<wӚvl~Vwd]1ȸ]+B4ԃIk=flbzj8> &`@ 6eۆ~K$KEU[1A2*͆шH5n4,BxN1(zK-z7L2.FDanWoo>v^DYK^֭4?$C;s#i,y?qMSN/Jl9( XÐbU36DDBso.2WJJ}@y)JMV7ZJh\k ud']Iǰ Ś׸єʌ8^ u#iKT@w$.\#f7ƜV+k·  YD5 =2[;W1p+/H{X51U@˓j8.RL&褦aR2Г*K{@j_`ZSrzB,:cInr}ÃMyU,e GkS C }AVVj&g3nqպ+&J8yFx; wkJ`jܵ"@vRГ0ƥk"#tuOmٲ,z4!H$+Ry\5yֽ sjTK ͝Uܡ<#/Օ4jB@W:+xOcšU\KaHxgYwz]jKNP[6M_ Ed eЗqE*aԃ&!,`yB+\(e]T*NڬʵO!HŒK2Rz^ˋ^ӭJ}w:HW(+eZ5[R䛁+t'fM禲͈"QRPo\5mV@hCoӌeɉI:yIJ,> ~R3 5c)_rqt: BRtΤ,Yinj+2e[ jtiת%ԛ[~@Es T_jRas`q=(355EOO7@ 9O[[(<zdi/33.y?dmNo5} 5WNFܯ~2)9ue2k0:W={|lb&mJ[|yrvqҨΩsl6xZQɐlꉓ xˏ~=隵[|vgfdži֛P\&B`YFX0b$Rsa\ZĩR 0U+ӻ| b1ư,L&{Hi Dz$'N>A{Z$R)<_ԃk سy FZ;N)$_+(Q9ᖿ蹗_+4lK/eJ[/ov'ϑ$ <"/wuSuݰF|\acP>#Pp*RYMl,LshZux'qX|ߩ?*+aY"E9KQ(93g^~6ᅪ-Dxs ""f]yWp@;Ɂw$d3/||!iR$B.UcM ]ʳY^!ӕ&I1SQalYWd_ 53ɾ|=ћMP.Z3o "Q-)6_>75}ٝF|IFOS #.yػe.z*b-һf+;TW;|iW Νu=<)Z9$ھ͖\-y|~qM{]0ԛnLz%߳=XLtwwgff4*kce_[fI|ڭװna@cd^)m˫c4 s<ѧ N:Zcd2im+'3:fd0: .xBH:] }&˲X` q("'ˉӓdb{IbCa5H)ԪH-"JL&_ۖɝ7Ԟ9_,ccܤ"0B|dl&ds}uφw_=Md/ozٔ]úR垽0]4 1S>ʩ@w8= N]sLȻ%z덾̓zyQuz[Η_=gb{Cò,Dz,6nHoo/SSS%l4d Ӵذa# b&$ fgH&lٲu!0M0Vټcj976ɦ2vin޿w߸1 (Z=bq`)aY&xbU+Qґ r%$?HR],OQ}"w#?7cZ 8M0۵7uۻKa^`0 Q<[ؾjEpJX$&-f!` eg:rqc0Ëg91Lb8Kɳ 3n;ԧ뇞NRdYq4Ų,f``gb&H))X ] ===ahl,/̽0>KoK.m{[$jhu`jX|xMPQ ݎ0V `aa!Fu+|=G#Y'R~w;kˆ _=ndV-Nďgsrؾ>Ɵ c |4s#q0H ]ĺήe{F ^̏ql$GOr>792nXWWu]o*w[ݳ)w^I$!"\) Rbt  ww1`2"Krx ~yc7;¡B]ojmaޔ U?4U/=11Q-麿^}-;E w4wrϦ%9#O0Y!+ L8A4 Eh!*(+Ҋ nK繐)Lif]rݛo~ ^?IK_Nx[3?5)2QJaQ JbJ<$|A/2$i\[mc',x.ZT},abef_'^4nE#К~Ut};=qkKsr67BE$dMݢKẳ"XTHa')#yB72Qb83/˰1][ }^[kZ>l1`lM1BkM&uS,ewӞ\!pKXZoyPKuek#܂ñ_{1 p{RkQ٢0{ފl|QJx> !C9TSp*"B1JU09Y!pX81{Nfgf;ىWxӼ8wQ3,*=?cdd\e;YŽZQ\iqo9`j&EMť@`u4p1?J+a?!d=~O'3Y8`/!BH*McxZd%?)si/0,n^w3\OyI8f&JR^@v8NǏ00`mY B@°8: |a%/OK vʿB+N"ĩRaH#"-xN"(y%.GX0Đu,4$)!gxV|e;6n#OO{?grg9>}GZ.:V=(QS;XiOy'.ϴlBs)og{~u IDAT:&ȻEƜ)9΍X;g꭬C3Q/V}V>sePRk|G9+!!/l]+fߒ+EL5wqNΞG eTDtI&ƔA̞!$ѸBbJŤA0[nVXsˊi x|ISݷ{ y9wҕ^a^kjd| 4x"|Dهa؂9IL*!G xA5Ż'c%쑟Ӝ].ZU쪲@& Q`g#Q9!+Q٢% b$aZ)"iY,eU3Vte Kǂ}1EҴHqibIY#~TA`J_⩩17oOO+Zf@bɿbB1L3eb|D 5ӹl5rčG6Omkwӗg\VtG8пO1cχqif=iJri!>d9 nĈI#Ä!HaT;CaFi?S%Urq|_*xv@JE7Χyq4[26mSJOy>wLY-7 iU[Tmk6iU ZW"Ͻ*nj!uӯuM+Nϟe[&~n|r.7A\G|/ t`_>^XpM ":IuQxeϴ=üL!9)000B a6dcY2)LOε/yצ9U.H -#a\$)+M0鋙$M_{T[蕰}/v/G*72 8K/} VWkU [.Vf)T\Pl&0!EhY{L۲\nDTO3_o m|{X_> [pt^!H/o"4hjKg*rETi[B`F fX3̕l1XaW1kz:\% ,i7-YR=tXG3g(xEs48N\H H<$J,J2X-Q+LTުC>d+T%(KCv7^){˖HJ\Y( )t4%v.t{?{w]K'%K9>oy۳4Uqԃ܃a<3NJc(* AB:zCg9;Dv)"1݀|>pIW!LR>hٿ? +2ʍr!3Hni3E"'ZزrM16c1ƳSdn= 3Wgas7 <^ͪR9-U./E9t]'{nm@9}>B sM]`cc'?~/s7\IU== OO"xvz(|۽XᑣLQ8ܯ!':K¹Ǥ9dv$C֊B`Mt5qrt#303-%4@CpX3%~̘lG3s!=ӹiӡף0MwáJ\Hm gO|X<D̛]ZmUi솪ֵ+x}7}yߍ MezCOS3!6\MNܶFv4u΃|@VUT^UcyR y%U0S&#E*x竌d+Vwe:Oq5s^SSNf, b!Y2GL1jVcF>{LRFLS3B›'RcXLQ,*cfӪfBẆnk汵]^6/79-kNޮhV;ztOPJ%-v EZ*F['DlIr4 Q3A)_i]+o5t&r|#!زr-AgsɈ z H撤"hTcCKHF9puRcFL3/$㏿x=E)sir[S\/[G˷|WnS,O##S~֮POC+}_T jT%@BKMvćo z㓳 / $keŪ 74Uh"#Q }s,_ѣh[&bʙZsv4EX4p.Zr{3+.MܻeiB.Y]Tײ-2eN>J(DTj ͨ ~ym.L" 8 %},ou=£|>^>gy5y-ZFK׈ *4@)q.JL;L~#y &'3W1=]h3Sdpf'%?zg&Yj!eIF;?]#qKcygfY%QP 55|W7,.U(\P:Aihp]ð%DҠBDk&CQuM<}1%}g\;+L>UU4YIԩ m]E95Ʉ V*]y>=6mڄeYDQ(V*~ѨaY"%!_F4(%]<3^ 0 Cшhd4/O2?|yvDD a1_KHbZlW},lI&&&*<SPn0ӭx5`BRLjJL+* zʯNQ)?~ڂH$5 CB4-2T š}rA\oS1g2Ξ=ƍM.7 cuq!qg{ߢyX$*+6^81}SWiQ)_OrIKKKi[Xe r`Z Xdfffֳ,~ ǜ*o/P7ڼ!IJA86zޅiH מƦɑJj!tjyaR)#TJ2e%333D"NTf*rUDE-m>9Gg^~wkSƆxccC)R:+V`ժU4779Pp1M\.ÅQmIsP%`lhƚGֻ$~ۿUO$b^a-cbwuu~zΞ=ؘӈCH @-$Dw5otnf0v/ve+W#UUŲ,vڅ\|'N0:2B&!˕tX8Wa}(󙢖Ra >EA4ذa===l۶>D"Ekk(QVfIh)^;h~Տ=ݽ>h4?pǎ 믓Nh]+KP!KςFp|s2]GJҙ ϟȑ#tMlٲqwo.c-jٺݛ6j9o:Dիtvtp7se<Ȏ;x"ϭm8s oecǎcb16tt0==iYy8l۲ ݷ߭w}eYf>eY}1L,qmmml Mʶm%bۖD<@jqƮw$-զ s@-5c K&ws4hQ]ΝciŲEZ ynO8ez[J((5TG/oɯ=oLari#XZr0MӰ,|yS^SN (C-MW4i,*bMl"=&Bҝ-&ݨ.stD& ٌ [NA@ ()s-X+9;{} SOsބ1ZP+EAU(wH+cCC)M8Ɣ9AV ֯o%'sJf9k4ikb^@MOOUU52j_c5޴beӅƴ9AN֯6m|~5U%bEEQ4MxLr0#(1en1'#.ݭp!C%B4TPdrfRցZp1Ml6[bV'izU& pi>tU'QrU(L"*o;SL b8˓>=g^5544oKpୗϲ2O[[[(XE:&ɔhZ`B0<<4@~#oY5OwNJGE~;I'^d$=,Oȫ?{.!H 0yҥKtA/c3“?Ŀѿ[~XkYx4MKTc$5BLkhܳ"Ҕ~yVd2{ 7<бa}V}=gcjK단D>۶bjjd2I2 \u]U]7::ƓO>y(L~4[k$'éI|5on uqj]hl_Zc-\'K"4G~OXA}ǏԾ_lMAo'`456r7uhY{v嶺kr7I6p}@ʹuVz6wwsu1LI)W Xwg[JXYbݱαɉ AuV\ISSS==j sjǎܹbAӟSǏ{"xjՏa@| ț~6a>F98fkvmg敷MU[ڿtw?yx|'gN0bay_{;!r,eU7}>}P>3gzwOr@l]u"Y8k$;,;1X.sTD>EmoaKSZ?p߯||%S}@`ŀmݛڹs]==[;::ho[C,+r$>b\lU',F ߧ RWsBǏ}Ν=)r,k-1'S1a9;Gw&nlށhśo~E~ ?Tz/^ݺiŚUZBUu f2ɑ+G~|IJOQ?LN^ E=Fʍ= 9 ylFP/:Ki @rh)b~K?%)LS-5f99:-}! Vafy+ $; `Qj -P)4Wy4H eTj RIZGx1@̲sp`ly6j^meپXB*̯!(lfVKXZKLZ2yl \R5Aw9*{?~}QiI˿O9`UZiTJ+W2j*f$$ESƑdL9I ƉC:P TXu(H<\ p{ )sA6xNB}IDAT 699s ":I$g?B2 I!I"pNU>U5Q HW' rmw>ي0%:^06zmD$&AG:8ٸ+dqI$g#b&$dayz"Ҋ2shV42elvf| YNpiYe#KWg,ցlpz !2e Q !ǔ2!i: C¯kЬ8A?KupE+C"Rr-ply5:bJ]y_Pv IPȵYL: +i/g?:L"T_$_ *x,+UFʁ`.+h0m#LJ( 0}@TU.pP+J4ǿ\Ƚ-D4UX嶪fT:-3w:aQʄ2TGZs WsZӑ:<:PCGap@۰PxE Q? 1>:$uZ 5+=V.uK]Rԥ.uK]Rԥ.uK]Rԥ.uK]R#SSIENDB`sbackup-0.11.6/data/icons/sbackup.png0000644000175000017500000002634112216122126016062 0ustar peerpeerPNG  IHDR|nsRGBbKGD pHYs oytIME (oN IDATx}yWz:g8CΐoH괤ձVZ[8u'ao;1'Y?w} w:W+%R(pG]]} 9JB?8U]}{ ڠ ڠ ڠ ڠ ڠ ڠ ڠ ڠ ڠ ڠ ڠ gE>$bT Àן~<k-5#c3yEQ'#$ ,\X^YZ=gC|`vz4@R~:s,\z Fc{nٵ_O.SށA Pucvs_*巾zx~볫Յ8"h٧ooTjiz*w?~S p~qstrF9_0L_D E`Q!",]gQ3RH.C7:R8F˨O2 &:Mr>5lg# i:haL-ԣ?\m1k;Ƨf& NCwrG4^ S-Aic#w'tuJBbQt Z[Cq:z0Q|0\9xb!E[Pxn$j ;c}g\s f‹ зT*+(P8;`t؏ ㌮XۻgHLQa\f7W9ѧiD:w*?%&a`~ b$[BzN,0Dk+Io~V~4>m Q/||c [w EQ Tt9&4%da@z%蘪D p U{o"l9;8o?ZAUB~NHԧ4l8"GnnYW kTPzY H{0bS3聄 :h 0CLciaǏ}0mq)䲩_ޱm_zŠ200sAui%HnP3@ )@X@m"=غ{?N<_TS[|/ՅK3gNkkѾJlTh©$ 4$K$ = ]D$֗Row=x爒2h74@$yk6(b#1ũ19k?`j*վbHخ[Kɭ[GUr9c [?^LAK“=qp(%I ױp>( o,_P#BH|"}~C+9OMcʰfkėkPϵQG.51~RX- K+y1#;Y# ?5~Jf O2_p@D$T(=Ȅn8dvm0X%)C)~7}I8799 MO!tCnj) )e] Y!*ZJDt @ O϶ Q\#{PD`2b5kE )k i|{fCNwLn/XrJH\!Dzkq\\WW/j;㾅O$>|FM$1>Ņc._3f2\@JbhHDN$6u-  )c#!Ox\?y0k;PΩab.6".BHOR`RR 0֖R鮥E⅏V_K)O>`Gsd$L]MyHY Fxj q#ҭv൳~ 0:3.pZ AJ±kݍ]sB4OB| HwZI@A @)*SFHjfŏs__}?1>-?ۺ JR ٔ RkP4$j *8炤Buۃ!qⲇmcJ@ "YKj(x3g>(8CBBBPr=(Իs>_{N˲?lJ7:+|&|Fƈ jPUDsj7s9UdS8>߅c) 'x C{#! ,WISR6)e )ll$p֖!)}'O.g7][ŶM 0qP_ QM76>cÿ[B] ]!=>ٷH*:I~}4 `5pni"al0x""UF0rub ff-fB$7^7£txhP5A`&y"F*Ih(3hoP1%+UnTU~D`Pju]O$Ȑ hu923A d돪(4V`EB_aC`ɑXt$V<8⊯|$$B@&$0 ōE(ǓR[sg/}imwZ1T_L) ;ۖ_u'ڒ>UpHAQj7.o }?NXc#@` L{Ƙ2@"mby'(4) F(2ٙ novQv l:_-4˶$W8 oۯo42BT9MZ@HRSBw좺>[`jD6Cߩm$zg= ߿*%}kj~A+" \,KalA >.װyrBa&~)dS*^|go/p7 .Lsy @| E{\NWT$@Dp+mS &'K]g2y8r/DzK.uYJDME(ҡ&Vq9W԰ h+'lW&V.*&G&QL۷? kp*>Öܹ' HJ*oI+uѝZ $J^BIY'+@}e?{P˗^¶4V'I@2 8ټ`UuOrUԤG8(>(2[(8GB@`Ia'Kc y^4(–cǎ}R7 zFL>O$@@̋ XrF2{ԧ@{S7r؃|$zEO܃3KI*|v @ jDDt8ܯq7 "x `1 Ic!'?O?ަO&̶QE4-u# T Z"&xn,|ZG\, Dm!no|~|wJj?MzBBAK7:~v2FLa 犢ZFb@%Dd" ~Foa:y^w#qHQ屄e<]SoP.7)O0}1Lꄭ9:miV/e;+T*s2;8:}>_@' F Sx@]z*p]¡* SsT[V" X0 M 㼆oۉN>@cǹɤ72u6Ŋ_}GO`F\_jo7yl*AHZUk`VZɷ!V:Cʱ%l ?~MIN 眛8 %s1y/8co-%b-|lRRУK.Ŷ-i~eeY3Z ~qGGgK\.u=&u ˠ(j$0aAyJo4|tv~a up<#رc\i^%-LOmx ƊA^|WleS.Q( …xw[oE3 #:ʄKڛO3#4㖙O6L\/~;w3HȢ{3pu}?JdDijsn"VVO>$* .\MdMDR5c%sJvklVImF8tK U(JUU%GE+p5Ԛz~ueŢcr LOoDTϓ'iy:hE\l:  Өf,EQT! Zkmhh8~N:;'o:#Hi^'Ћb'j򚦲0 <TMtn!.@ `7x훯5*2>}ּa-B6{I UIDATgoGH1:g;-PI]@{0ٚ.`#L u.?"rq҇Tz~C/KQ^UU`fN i@HRYX vzMI5Aoop]4ihEQiFl(ja( ub~*a׮] *bu]i 솯-|qXq84Mkcdd?tukŽBk61!21?zad*GUq@M(! pE,//ar0`y*MU 8[XXRiveu \a Nauua AQ>Zn:;CCCu L##Ñ'<|Cypż! Ms?(ʗ!]ZV(kY[_fP)z^(6ĉٟpjôi<NVpӸ+A |Х =_O#G|b}c9wv+VJm>ҒOru5m$qpV<N -..U{kϟ{ Jpa(ZAЧ 3NZXXe٘novR˨ꘜ,0tQ;w;?zW61¹bŧK3m^^]]\V/.>K\R8( FB+XYYA>q N4;WrZs>GL5qkqP=O1UUe,I;/HmǖnDSU۶mE>l6LEC1++h<88S(1]\.q1q LXD66yaN -+g `2|ͤ"ᇝDDu={ǎGZE "xBHiI@]', /z*fffu,a<[bm 3iZ586A^S;x /"/c6|I[nK H*N[1քG? -$<j04ؠy}}* AAۘ>#8LAAAAAAAAdx?7kIENDB`sbackup-0.11.6/data/desktop/0000755000175000017500000000000012216122126014254 5ustar peerpeersbackup-0.11.6/data/desktop/sbackup-config-su.desktop.in0000644000175000017500000000245712216122126021604 0ustar peerpeer[Desktop Entry] Type=Application # Name=Simple Backup-Configuration for admins Name[fr]=Configurateur de la Simple Backup pour les administrateurs Name[de]=Simple Backup-Einstellungen für Admins Name[pt_BR]=Configuração do Backup (for admins) Name[es]=Configuración de Simple Backup (for admins) Name[ja]=バックアップの設定 (for admins) # Comment=Simple Backup configuration tool for admins. Requires superuser rights. Comment[fr]=Outil de configuration de Simple Backup pour les administrateurs. Requiers les droits de superutilisateur. Comment[de]=Simple Backup Konfiguration für Administratoren. Erfordert Superuser-Rechte. Comment[pt_BR]=Configure como seus backups são feitos. Requires superuser rights. Comment[es]=Configuración de Simple Backup para administradores. Requiere privilegios de superusuario. Comment[ja]=バックアップの設定・実行ツールを起動します # GenericName=Backup configuration tool GenericName[fr]=Utilitaire de sauvegarde GenericName[de]=Backup Einstellungen GenericName[es]=Herramienta de copia de seguridad # Exec=gksu --description @prefix@/share/applications/sbackup-config-su.desktop @prefix@/bin/sbackup-config-gtk # Terminal=false Categories=GTK;GNOME;System; StartupNotify=true Icon=sbackup-conf # X-KDE-SubstituteUID=true X-Ubuntu-Gettext-Domain=sbackup sbackup-0.11.6/data/desktop/sbackup-config.desktop.in0000644000175000017500000000173612216122126021156 0ustar peerpeer[Desktop Entry] Type=Application # Name=Simple Backup-Configuration Name[fr]=Configurateur de la Simple Backup Name[de]=Simple Backup-Einstellungen Name[pt_BR]=Configuração do Backup Name[es]=Configuración de Simple Backup Name[ja]=バックアップの設定 # Comment=Simple Backup configuration tool for non-admins. Comment[fr]=Outil de configuration de Simple Backup pour les non-administrateurs. Comment[de]=Simple Backup Konfiguration für Nicht-Admins. Comment[pt_BR]=Configure como seus backups são feitos (non-admins). Comment[es]=Configuración de Simple Backup para no administradores. Comment[ja]=バックアップの設定・実行ツールを起動します # GenericName=Backup configuration tool GenericName[fr]=Utilitaire de sauvegarde GenericName[de]=Backup Einstellungen GenericName[es]=Herramienta de copia de seguridad # Exec=@prefix@/bin/sbackup-config-gtk # Terminal=false Categories=Utility; StartupNotify=true Icon=sbackup-conf X-Ubuntu-Gettext-Domain=sbackup sbackup-0.11.6/data/desktop/sbackup-restore.desktop.in0000644000175000017500000000172412216122126021371 0ustar peerpeer[Desktop Entry] Type=Application # Name=Simple Backup-Restoration Name[fr]=Simple Backup-Restauration Name[de]=Simple Backup-Wiederherstellung Name[pt_BR]=Restauração de Backup Name[es]=Restauración de copia de seguridad Name[ja]=バックアップの復元 # Comment=Simple Backup restoration tool for non-admins. Comment[fr]=Outil de Restauration de Simple Backup pour les non-administrateurs. Comment[de]=Simple Backup Wiederherstellung für Nicht-Admins. Comment[pt_BR]=Restaure seu backup feito anteriormente (non-admins). Comment[es]=Restauración de copia de seguridad para no administradores. Comment[ja]=バックアップの復元ツールを起動します # GenericName=Restoration tool GenericName[fr]=Utilitaire de restauration GenericName[de]=Backup Wiederherstellung GenericName[es]=Herramienta de restauración # Exec=@prefix@/bin/sbackup-restore-gtk # Terminal=false Categories=Utility; StartupNotify=true Icon=sbackup-restore X-Ubuntu-Gettext-Domain=sbackup sbackup-0.11.6/data/desktop/sbackup-restore-su.desktop.in0000644000175000017500000000243212216122126022013 0ustar peerpeer[Desktop Entry] Type=Application # Name=Simple Backup-Restoration for admins Name[fr]=Simple Backup-Restauration pour les administrateurs Name[de]=Simple Backup-Wiederherstellung für Admins Name[pt_BR]=Restauração de Backup (for admins) Name[es]=Restauración de copia de seguridad (for admins) Name[ja]=バックアップの復元 (for admins) # Comment=Simple Backup restoration tool for admins. Requires superuser rights. Comment[fr]=Outil de Restauration de Simple Backup pour les administrateurs. Requiers les droits de superutilisateur. Comment[de]=Simple Backup Wiederherstellung für Admins. Erfordert Superuser-Rechte. Comment[pt_BR]=Restaure seu backup feito anteriormente. Requires superuser rights. Comment[es]=Restauración de Simple Backup para administradores. Requiere privilegios de superusuario. Comment[ja]=バックアップの復元ツールを起動します # GenericName=Restoration tool GenericName[fr]=Utilitaire de restauration GenericName[de]=Backup Wiederherstellung GenericName[es]=Herramienta de restauración # Exec=gksu --description @prefix@/share/applications/sbackup-restore-su.desktop @prefix@/bin/sbackup-restore-gtk # Terminal=false Categories=GTK;GNOME;System; StartupNotify=true Icon=sbackup-restore # X-KDE-SubstituteUID = true X-Ubuntu-Gettext-Domain=sbackup sbackup-0.11.6/METAINFO0000644000175000017500000000036012216122126013016 0ustar peerpeer# # General datas # # Format: # VERSION=version number # PKGNAME=unique and short name of the application/package # # Attention: # Use exactly the prescribed format. Additional spaces are not allowed. # VERSION=0.11.6 PKGNAME=sbackup sbackup-0.11.6/help/0000755000175000017500000000000012216122126012622 5ustar peerpeersbackup-0.11.6/help/C/0000755000175000017500000000000012216122126013004 5ustar peerpeersbackup-0.11.6/help/C/default-values.page0000644000175000017500000000675012216122126016573 0ustar peerpeer Introduction to the Simple Backup application. Jean-Peer Lorenz peer.loz@gmx.net Default values

When selecting the menu entry 'Set default values' resp. clicking the according toolbar button, default values are applied for the current profile. You can consider these default values as a suggestion or recommendation suitable for many users. If these settings are appropriate for you - decide for yourself.

Mallard

Anas platyrhynchos

56-65cm

900-1200g

Eurasian Wigeon

Anas penelope

45-50cm

680g

Common Teal

Anas crecca

34-43cm

360g

Northern Pintail

Anas acuta

59-76cm

450-1360g

For normal users

For non-privileged users the following default values are applied.

Incremental backups

max. increment set to 7 days

For users with root-priviliges

For users with root-priviliges (administrators) the following default values are applied.

Incremental backups

max. increment set to 7 days

Compression

compression set to gzip

Splitting

no splitting of backups

Includes and excludes directories being included

directories being included: /var /home /usr/local /etc

paths being excluded

/media

/var/cache

/var/spool

/var/tmp

excluded file types

excluded file types: multimedia files (mp3, avi, mpeg, mkv, ogg) cd/dvd images (iso)

regular expressions

regular expressions: /home/[^/]+?/\.thumbnails/ /home/[^/]+?/\.Trash /home/[^/]+?/\..+/[cC]ache

files bigger than 100 MB are *not* backuped symbolic links are not followed Destination the backup target is set to the /var/backup
sbackup-0.11.6/help/C/structure.page0000644000175000017500000000412012216122126015677 0ustar peerpeer Explains the structure of the application. Jean-Peer Lorenz peer.loz@gmx.net Application structure and components

Basically, there are three main components which build up the Simple Backup Suite. These components are

Configuration Graphical User Interface

Restore Graphical User Interface

Backup daemon.

In the following sections these components and their usage are being described.

Configuration Graphical User Interface

The Configuration User Interface provides an easy way to access the configuration that are later used for the creation of backups.

Configuration GUI The Configuration GUI is a GTK+ application.

The Configuration GUI: a GTK+ application

Restore User Interface

The Restore User Interface provides a graphical way to access existing backup snapshots and restore data from them.

Backup daemon

The Backup daemon is the actual core application that creates backups using prior defined configurations.

sbackup-0.11.6/help/C/introduction.page0000644000175000017500000000677412216122126016401 0ustar peerpeer Introduction to the Simple Backup application. Jean-Peer Lorenz peer.loz@gmx.net Introduction

SBackup, shortform of Simple Backup suite, is a backup solution for common desktop use.

SBackup is basically using the same technology that Unix administrators have been used for decades but it adds some some intelligence for interaction with users within a graphical interface. This means dumps of files were created using the good old TAR but the usage is much more convenient than from a command line.

Feature overview Profiles Management

You can have multiple Backup Profiles in order to prepare different backups to be performed e.g. one for your photos, one for personal settings, and one more for your documents. A Backup Profile is a comprehensive configuration comprising of separate specified locations, includes and excludes etc.

Snapshots Management

A general management of backups is provided. Management of snapshots includes the change of the base of a backup, deleting a backup, and the transfer of backups.

Compression Options

Simple Backup allows to choose you from 3 different compressions: Gzip, Bzip2, and uncompressed. You can use uncompressed backups e.g. for making a backup of photos, which are already compressed, without wasting time and resources.

Split of the Archive

In order to make backups suitable for burning onto CD or DVD or just in the case of a harddisk formatted with FAT32, it is possible to make a backup with the resulting backup file divided into files of specified size.

If you want to use the split feature please consider its limitation: The snapshots are required to be uncompressed.

Logarithmic Purge

The removal of old backups in a logarithmic manner.

System Program Restore

On Debian based systems SBackup makes a backup of the list of software installed. You can use this list from an arbitrary backup(at the terminal) to restore the state of installed software.

Command line interface

Any core functionality can be accessed by plain text editors and shell commands. Therefore, SBackup can easily be installed on a server without X.

sbackup-0.11.6/help/C/legal.xml0000644000175000017500000000044212216122126014612 0ustar peerpeer

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.

sbackup-0.11.6/help/C/index.page0000644000175000017500000000170512216122126014754 0ustar peerpeer Jean-Peer Lorenz peer.loz@gmx.net Simple backup
Basics
Backup configuration
Data restoration
Known Limitations and Common Problems
sbackup-0.11.6/help/C/limits-probs.page0000644000175000017500000000127212216122126016270 0ustar peerpeer Diagnose common problems connecting to an instant messaging service. Jean-Peer Lorenz peer.loz@gmx.net Problems backing up your data. sbackup-0.11.6/help/C/figures/0000755000175000017500000000000012216122126014450 5ustar peerpeersbackup-0.11.6/help/C/figures/config-gtk.png0000644000175000017500000012500712216122126017213 0ustar peerpeerPNG  IHDR[}sRGBbKGD pHYs  tIME 8 Al IDATxwxEl=!ZhRwPQTg(+6@( (B @IHnBK*ݳ3g93{rp.nI-"LLLL.#ٻ(Ī v@%~/mLլ%gl# 8bD.oh dbbr!"Y HGD0(3$Z0 lHl9S%c02[/sX,?"P$p8 N9P J9鞣ljL U[U K21;%v?Uh%!:ꪛjaӹ69\6t況HNC"ހƫG4>Mg~|'8A"!OOWy3z>N.%!^ %:d>$NSUUM.nGy^;{z bҨQ#IR_/M.V{8z`GFiA**?:G?q٫yA}:誢(W_|H"@4zװYۤ)ܔ몢3&zZkжM\^a^bE/r{UE fQf5M AH!Wo,*N9!Ah'{)#:ٲs  Aj:Em6hX$!@ \AQIn۶^æm4,H=\A\UuC l_x =ʎ}D(:8Iy^ozzz{*_{EEE#G|6nܨ(ʙi&4^k $P<تG٫1*p"Q445pÝOnXyB9g=2W?L7ܸ7Hɥ4Jj:m'.h91(j0^L4݄#l>(@o_d[\=}1{Y̠a]L/`wWpc7 kiz=,:QN>Nަ; UMO.<K54`Ps^ܐ͂Ƶ9XXgM: l!_rĥ6nx737`|zo )### !>O$I_?x̙Ǐm߾?x0\%YRٟ[YhxyRf9&Eh"^5dz>qǘ9cnjD OܝWM:\ ƾomŒ+\82a E_=.ydΉ#M{;׍eja/8zE83_Y'sbElMj?KJDŽFïM話c2x[TB"B 3~l~zQTga> !f%W(Ӻ]L~WVu:m+ujׄ]σG.Zh͚5n;\z@u@AA3BCC%KqnBP2QhߙTPU5,,G6q-#$Fi2e'N O~{G˜(2WoI" QXZ46  :rWoH9省yaǯ~A̹cJ҂OM()\/vydC"J*L)p1<|ČϿ5 #`/ kr'̱e%qFѤw?"Dls(qEy:%Ԭ׾0YY~,`A\6B"H *>tO0Ν;7lė_^~;QG|ر#GBjPa!(JLLLƍVDyfzKXX({JK;6ɕn__X`jZ/3AH;Fݎ9;2GWy0}峅9nդ9S9x_U2G)+=sΙ[N= D1 Xl 4bطo7ˢd,u;rPk?5 q:J*0G=dd#l3ɷ dΡ_YtcQΩAz({*Db¸'7 A{3v2)϶9`rΐd L L{?͚+&R'dOAӴ={0R:o޼vP+;| c\PUu̘1 Zr fΜ9y䧟~: b;^qM72Ǝ=gϾïWqjdd}gX[hF$UUC%\SUʱ(KEY0`Tu $`*HϘ?{F 1Q&Z@Uu,ImԻ-i, W F5Mcq5K(KbaBfTt #jB,~}kHAjZPTQpiq$U*:EX% @y4M odYDO4iǎ;wyTӴ{G{u[gjz)rP+uG3RRR~׆2ʭ6[cIm̛7j??4N0f]EƷE)' NQgp zeSU+'ٳg0l9hӦjEݻO.IR 0׌G.ϝ 0u&5TgϞ(V*M\Du]8S|\mbbryv+011#㐐S1\kX+ebbbryEn8皦|>ELLLj9Eh6Ɏ$jbNQ"!ƀ+۶Nm"?-; Uԭ{^ @e Dق Mg EcLdbR j*l%7'kװA6z;||GN%-/-(roظeRFq!~c/743UO=ȏ0;~;cxo""d+U&ʈԦ@ze%n LS|nok\ekNʹ̓TpX =nJei##\˽ bs?ĩVW!R 骿`ri@MĤr:HؿzX'!/yp@` >{]Œ.rswk5q^cTQßN#В')`b1Ϛ5#8cnj5$n1jX5sg)דS7Z mF8V1rDkDLdbRGmSYwNRb%FBօ8זz70J CN_(Є$7l턨={M~lp[Z|:8K:sϸ믈u%"8tB^&(Ƭpw gIPk݈jĤŕ8B5HĖmJbU X{f[Ð+E¨јhD$ !E$Q` TfϪfgwxp䌨Ԧ+iJ8cmoVXRS7@9UU3FSʴAJ}Ͻxp⾘_QEnk%=b('닩өGYbLWq97TUUKD?΢,%/p*z]IשXĤ.JFdɒ3WQb LQ+""j'mzxFZA",b<3C5wJ5@";~8,>'hRÄ+0 3sʴzF9V_LcG('2rJ(k4Aj+4bG`ˋ#)^[tD.6 mq& dv4!.ĤbG]ӱcGI(SUG~~~tt$IϘ1#.1).hp@"&F4 aU/1kD1$jXάi<)2 Ć"˳:kd&&uVB+5h 2E 111qJRԯžajfjV*qKKKqjJYWML@)5 l %X@?ݽ2111\ ԯ_ߴLLLjwBpdbbbRZ *B:YzJi\WrwɖGm=XE$k8q".."KY==5Ѥ  ovV >rpeYE 8(~}eKsIsq G>]k:{etF?'zWT}'|Y%]ߟ:kUjjisTQx4l1:zO&NT 7nk|<Em%ιa9g2(cҩ}MlւRィNӍחlP] v$#\aM|ᕛX0gRص}(AQt`/5S̥%r5]|!A S^V֧OؘzՕ><~u'B@$h۶[t۶C^y);dȡ/ee#s (ɿD+HGa@:&9gpjILhޡ}uG6eT4/Nj:wI-U9ЌRU$[nl{*Bm_0DQt\subhֲu$@rX 4MJI9{ȑ==誫wߍՕ+ѣ,K\uz3d/J>9hPx$8\U߯lټemꚰFw0nбu~iؾ-or{0}g5<} Vn%%R q8Z(UΎUBH4EQJJJׯ_.W% 꺮nzerUyʸU'bm>n ǎ͛cǼǏ'ȂRsr+}HREaZV:A@# GbN#9|Ene~a{T?_ Z{zHxhWň[Z5.~ʧݻ|" _}j!"41;vժ(JyyzWb,r@rՂr8a`hfX Ng 'tsW|scv䜲Vd^c??xQV]O93kR7_ 27h LЃHXYa&!@3Ϻz#äkXkFx6gKLy?\rҢ 5w8NCl(`呚=>js !A d=1 ltVg ՠ/B\uUόȈ`Tvl6]~?Ȓ*bOKKkڤibW<8xتٙk lNFXiڤdn'R P LTM |7N;M c34Ak@} Ili[vUU C]b*CBB 4f@snXGDEWX]jÇSor=\O'<>_ll4 ȎvA']NfE38lv#$TmT:x} _~2?AV{M#rHo}fز2VBA]I (SETda`ujgX2nHb+֔SEUUIUU%4]*\FFAx<JCUH۶ٷ]6a\.JiPsQ1!ᐐM62~*Hwpڴ~ɚ'J P+~/grDD-,.fbZK\LpH >Y^ Ju X#5wx˒'XQfz(>yr7稺y(y(UD۫F;(fb "lQ!VQ5g)t:^XXddYqq ;1UU)c0Q~XXXiiil&Jٶm!222DQ|H Y`nJfz쳁/<'Bɧ~C $6ԲPɠfJPWN;_ku9[M2LpT>gڋ+aL0FCw8޴޳ˢ,sfht8nL7hKwyTpnlPy8tGڴj0 ʕ Mp|`!d x6ҒCAմЈ_RURZ:8MuspEE%Q11RFqJ R_ZZ./1O7t &tT (Ym]`Xd @/Y)jbRJPz%0t #BB(^qO7O*p${~itk^9㪍OQ6kӯb@8:.ncZd)"2&=?S4(5jP`#""GQA5Fqq0 J @,_Vi7b 6Rdddj6oZ]VLHC*PCO`BEAĢlqDPy fqK\'9+p蔐ȶw>7 o:~,|&[bb{-kZ v>O+ :5bq0IޛuЦ~[Huz1(V!j#c1zVH~1dRHYiA 0R^˂sĠW B%uhq@:E(AF5}$`ٙ3mW>=00x=_3&-0Yt*Кc][-Hht,`R8ȂyVFFW4 p01)))*A s!$b?9]٪i-xEsEQt\5SF\ 9c(rD-HAKf^;#~|\UWFGGsxՈO/6DQafcطye仍? , b{TBV+<y C(JmZ@9N޲YROqdIuX.C%QOu"DEE]dVA*HMSY݉c]QXPt] 93OޭG+61GR1XFtRWsE/:%]E<_i%wqNk=¥։L+`+!VӘ\NNgj%:hIxp PJ3228 jS[NfbojRJQ£^_>%=׶ā IDATCC[$I&&* B@5ܨqBW!j@A{R~z[zQZ9G1u A]G _$ .&cI֨qq%_@+zayeZȒ Q_m}ڒҠACy]@-(Ah޼yvvvBBBh%@) uB꒐\QC.oW i%J)!DӴ:+|0' RJ%I 69EvV  `Va;˯!0 {Q".VuVbY ݾW Qum#]7?^W+vIO ᱷOqPE "bQ*jx>Diz5 Yҿ՘_P%jH2U*J5/V:7l%8Un #^cl@|܄Y+gE4OK*;NT8Tq^J,b`5oNV!dc =E+$r8Aj/Tfϛ !Le8CBB\!NBcrf%ٜ6DiF~p\.*w^+[ƅC` .(AzRq )erxʸd^O.(rr5c" Q q8O;vsvk/Mn=%s k_!}obwn׮y,␎TN9ș77>n` ^=} 881:>{q;{n XNg}Pa9Ɯ3}Nr:fO;-멣:2jC'tgr})iaxuTz7NlvȂӊ\Mp.FC(2khN!&K!!⾫^,:9MwϫcUmӽ_>yE\3g,YTQg E35*vࢠit:Έ| s+Ͼջ_}ow-.\?r9#Z>]@μ2^͑R:vwf*E}.Γ3,!Mva|co _,Cg$n]bPע9]^٦5=!qvk?&ȡRYQcٹ94qC$ڰܴl/3ZeXܾ9n6S#rƥ6ǵڵylxZ܂b!Mn-eZٱv }w"m?'ۢѴ`9-]>dX&vեF^'E%k-`@0c7?<_.v1gN3СCPέE 'ZƭXH(B1RU,[1.*4΃qg9ozY'4K7.d/p`r>>BpƏOroST" |/|x9 _$Lj_^"pEmZY=qى\aN{t{Xc( sN:qNEJy'Vdec{~~ǔ؈?`~&QMVnrk|:]fo@/`3fh 'E,V3x~͋'\Kڕ9 7毘/$]!w8!ˇ?~vP?,,}I|oK F-3g,'ܱgy|pZ\0o<7zm,\Kn1f^d /OߵΘ_?\91~ ( 4D'L|5Y$gWOv^Nn)W.EWT,虏DNY9g4ܟ͘2?>Xi]SD=zт/Rn >|D|_͘.\oԗ XtBRܩh-Bwi[W>onWp8D?w]{7nP]nC}yᣇ}WMD`X >g*HUOh5Mա] ̒_|g>xxIj@3 ]4" p!w]md'z 97 {1Ä>yU5FTTC}ae}{^XsoiRVmި(`ߣgVDXL @hg{mܺbƯ0!v|A9>۹CZRo;[mXmvS+pϊhF5&J6?_ wxU0 wov1n .vpU$ʸ93RpABrJ5EFy9bB @^v&:~{8wwZ!M"ϫzUl!!~@(8yec&XezGZHE 2sU9VD !LR3SSsl0+0}[;֧_w;ŰUgpS71Ļ}T f J"4V`!(B=ۖmt>Z|]S:#g@B$5#TV@cpA!$o^z{éz[E8G" 80m},D1ql2==8,] Pg8palf4vP˪VU7moA?1hXSZQvpSK.P`,,(6U>icLW+s oI¶QoZPTQ2F'/V6(+S *HK8Hp5WjHΨ#a쥓0ΩUǀkR܀ek1↦wsp̟oƌR)o?GUUJs ^EZ)~ՠj>>šPn07e՛L (&k{kԐmM[S o }WUvSfM0R]FS,th/-DMi;q"{i qa~/z:znscYrԮߐ3_kal\;pZިarh׻U(Bma=+'5̙s33ЩgG^ಀqnh) Q%]DڽǷt 71^WO{׫2㇍}>72Q 7(rnԦ />i\$W[iϧ1~ kffܔI%]ӗNf`\R@{o:߲  tM酫~lIϔI]t+t8ee%1yX;6{(ϫR+=I: `ϧ1tկh5@@х7\mz̀Wa1A>wYI n5ܺensYLkAI{OĈp-1O[y7{=:!4knz7TQf4hА_ӦeBY#Ͽ)8igBgg,8(_Qe@ӿrBߦM|lYe!hq:pp(g<1G`,ivEEE$97_<۩?[9:brgL+vϫHЪ +il[@n3嬞Pa`\Η*u^H`JOPۼ^+|$LN.ON!nwn5sb߮];zqi{3w/tGأۘq~j0pѢE4Ve+}z홙˚jK{+iXB$63J)TySZ ;[Z\E) V֛Ssp9k' \93t]vE9i5|3CtZ4y8lgd7FeZJ\;\ĵZz|im 0o\̠ňt-Z6ݕњ:':$Rju݇uAJjQPpqLh"jK HMM]|#VZITˉ4):2|>_-۹### $bvk6rȿ]E塛RQеĤOOOWV72fE1LLLj3#HV211[LLLV2111LLLLdbbbG&0194Rc8ƒL ej%'H0d)%z^#U3\ڱcZ_lj%sMnڞ.f1yKF~ny533sݺu7xcnj%m%^;6G^`I1M=_'!$^I&9r$))+]`fptfCZ@͂>"6v|]Η(n><8(uev-=QoȿSO=c0\.Wu\8ƕJ_=ŌO WҽT=ҟa4}89dsNދD;7vX\0>C&_?h-QeyR=' KcQJ}YB-ܢ(Jy8 "l%$׽3mW;mʭ-0E34]PXXeqnN9 lb#SN}sg?%G?*T6=ܾ`}ΎK1ę_<ͱ{ŁB=k>`s [|uCgv##wu*D =6V(}qlXd_~c4eUF1_?}MYR O~iTIH֞XyttСCEiҤI߾}.^M5`ߧ!?5OǼ|$}&.*Y~cY_ύ /KUT~V/F!G˼Jx|_}]"o$眺[e^|ъp]txaӦB @R D!/zΑw|XZ?~p1틹hw=0Q`ڊ9|anr+bه+3Ƈ;ON+8=`-^n/6^ ]v+Q?ݢJOg|jw6B[Wwۻw>~ ڻ6oVϞ:( $ ?3?7ᒴum6. }n~o~~u^C?=;;YA_lV˾]֮p]]カ@J)&suصmZ_f#wg(y软/BzƖqLms BhD擺Zt9f.zsPUc+7|#rʃ*+)Э ȤI+[gXԕo~lM/:!$"1g3^s4x.ٯcY*@DnyW0m2D\j+X7u;vSW&0Bc1 IDAT wnO=}!&wܹmL(!-Pу8}zo0ey%z=asMz7iq\>ʎ]aKבW Ȩ7tYDC?$!֭SU,˃ݻ#lI5N@Կ@-:8cܘ5FKFLK G?2g솸^#UX/YVKUR_gR"깣-9oY[u%|MJgk˦6?u^ۥݖYK[W"MT)ݹsgŊ9r䫯u38BVc [ۆ w45Vq<z ζuZϸR&t-kLaQeZ^hR;P˖-.\XP_ã1CZ=KW PxQ0PMQl8IYJ!JeP&I+y)M1/;8ȹ!v-Y4Nf"93or:d)2`+n rW‚`"QrdG:d{eu6#"˻955 `7a/W $"y=K! 3bQ`y"Obre%jXq.^w'kY\GRmρ 2{կ_&ώdaXA/Xߤ]+W+WR~˲<{lBHZZZJJJʕbiG, كQ 4?Hx{  t ߴڵkSN})!`jwvRszA(o55 @vvt1T3 ZL(0du/r늮D\j! zl(F} dKE' XW D)?[^%5'b ۓ)]` %#~ZQg:6Q leK)ӧO4h9B=C@sz4о)Sc/N(5jPR‹W/$:۩fA!nݺ9w=x@w5Gsf`9-Ȅ^~smK0+ձ1n#H|k@_j.}Vl!_s; 3w>"WuŹ.75v[>sV~3t|+z d.Y 6r>G_rj[-ַn:mZ>#~޵kɫmLqb>;<䝣ɧ>{W=~~" aGZC0ekʷv9wYfƙ%SfLҧk3&c#@g?7Pf]?jo|pEc$.sK2o>/wVۥ_^I3oh痆l ,#qS:unߵ߼RUKjn=f=%X;%[6/حǬǢvz݆!QGn߾ǠҲOY>ݶSB>K#,韏xN}>[ӐHf<7ѥ>rvQ-svޓIu|i:}Qc%M ԙgj%b/҃gG|:&~'yjI;6;YUA̓ VO |~1U\R +);(!%% )[ଆmY4v@;JDP\t-NҦ7?%%X?'&$$]2_|7(1!HKKUWNel;r= IJjɟ~{"-&^w݁>~v\,խ[:\ۿwzFujCwxoYUKw~ݾĺmlhDN]lpDfnѴ;_9V/*}tpϺ툖=>Y}Iyoiɩ.vkČZՍ_T,%nwVFfzzڙl8$n).E>~QeG,tU}B-wӤ msfXnU0ռm7]W_}e&}e˖ϳaF!F-V+Y]>ү_o ޚyjc$m:6E]jҦq#M(ڪiWkwoXy$Y=vb)2u &RXJػp,HcY]aeuFj:Q;oأRqo8!4eR• 2r|"UVq&P!/ݴV1uZti_So޽ztk5^7ZCѨ)Gݕ#dk3h>yZQP){ɝ*YErU봮W`νnh޷4$Fp+Zog7VCeޝۿh ƀ*Zu ۻrv/O8P7רPɀ}Ǐ>8!KN+:A6 jWqJYFre˶-9$NI`1Pjָ ]rƝ[WUz^_J ) ǫa,`\RQ}:Yeڌ:)ZEI?%cϲ XN繉ڕҸpMl,SovYbqeТe6^ݤImiD5t`j -qqu"`(_{:ISxޖMcq(ZX%/OEݷDIrĜ᧤, ĦڶM.ovt׃W!# ༱__ewڽ;6wD0*0,Jl d0޽iv)@tm7ep:wf.:|@m!POD{C}@I1J<~%zw޽s߯!fJ,^&~om mٴOԩ61X$RB)z6]-Qyu[9n`P),XzBE?x9$3 D-;$'JMڄH>N=S)r[,#Cn;Co5VmxtWZnڢ(3U*UGt4HM,Ӳ _UԙH º vI'~}!ڪUqr_7jڐPE:8i^jTu:Vq~X ƆWLĀ6MK+ k:elL!<geERȘ6 vUlR*'" -rTW٬ ߡVC- $CY&b@pC>sJcė2&T]6 +ߨy4S%TS4d{@Qޭ/ԨFVsp_MHھ`Uxz|O{a79XtҔ#Fhl`Nylj),Bfx+H).\&5Pjَ]M_}&\ Snӯ-ع6Rp_2(2'?y6nouPҽ1.(ꀁ]~uQ@J70cRфM:,Os̙3/{c\Md`7hhd>M5cD|?:j sr8{:ӟU 2\%nEwO0MS0-ܺiL~sdק6'jiYf)舵h/ t]G麮iacƌI& _M;[}=1i Zw}VE-MXObBv@qʢXd~꧟&ۤ!GzB 4E!'~@u)Pjvpj%l"A 14մ}^>)U6,ۭn$\]ٞ|_E{5ztvWם=ѭ,#bŊ۷oݺ;&Mbn}3XaQ'7GP E,8ysU$BH.9GS~ԷbCDr 1}+?Df| *"\]\/#c6ey] ¼u{)Vp8t^0 GUF>6s:.컇pwb6!†aZ&<_rΛ,ѢE#7ΰֈXy4hMnjyQbYVnfϞt+Vkβ_fXlsHC5囆 IDATnAf]s&Um޼~fkMKAtYQ%mjh}Ԥaդb'xr1XǟEe+6ttw@βV^o^PI *`lMS\i;ދ,s|]g2صf|j}۩? Pf1s % 8 um^z˗19xAvS@ pNP2ĥgK_i^1m  ~D*y Ds ƹ,WK7tUw<ǰZa?rGźL}1کG˗pǵjz?~P sl'Lk 7J9NK6_RPUygukn![ -m?S뿓p`+r1t`=E߾nfiϔ1&YLxj~| ̪ԮwF4k8cѢq׎=wLhr^>rw:{g;_*1.W\%0<=r\(廎}K> g||V|Y%|U|V|g|U|Y%|g||V|Y%|!?Aw҃dNs~FC)p,ðQGR ̕Y >#byѿ%RU` a2{6L;*@AmU9(E j0y>O5M4=B,q*Q jf4b98X1בL7dPq'cT4{LtW7/9Ifx9X FxdܙX |2_n@ۃ{7?aK5=d-vRx($׊56f[`l>G#a?Z.Rw$\<~!d}_,_8!o^AK{0B˓/osjǁ:AAaO{QBB A"##֞*!\3vzr@`:qPAK5`eC'+V93Vɧa`wӆV JN^x wx4Ta?'I2U eݚ;5/c $YG[Eda% M]Q,CMUyĭY!-۪^rnRp/];r=@IHH0 ~Æ!Vv߸q#++K?ĸ.ƈuX`]=<0> 떎(eK76 /;F1Ro6__#?[k^+(UaFn,Ex2ùOpj;Nf#9MX20l$YW"sۂO=TmYNAn\pCQ23d9đͻ͘-=иIa MA # ~^z[~j38dǎ:]"͝΀:$y{2$:iؿ[I*:q_{K.6K׌~w=y);ȖN^If56(70񪝻; ,hʲu X2ܳvήkW/^cOe#e%;e1V|eI@ikGs<'iꁗ!w9DNB99 ΆBh=LM!tw|q e,WlwIl6o8E̶n:J>BT D8uǧ3y~6 h>yEivbd>mWdVfA?{}`ƯūhSLwoPsI_T)u4q\RSS+YAO^f^bdJE(ةqΒ}ޝ2b{ jnBߛcco(us=aG7+[uǝJ 5|9⠗>YR;wϽ 6{jeEbS3}QZ|nB+m`&3=-Đ\ç&ǃC}CvS_V^lH8J\H|~hd+jfbEךazթsGdv^մ,$٨a3N ^;`rA{Ukmz澵oxk=:5k[R<ĮͱU'܌iD8Dԋc//;d}_9mU$5:0֗IhQ@m|q„d·8hcKX*Qtfos;vsۏe%S?/9q'nvZV1LG01!sgG3I_e;L}s¤/t*cHfJJg jPcMe-AsL? />\.WBBBIq33c_9RY[0Kf_^0^ҳ?{QO+%+ A!Dj2U)P0jz ~|$Zvp<[VZ轉`zWl> W._xadz(2֥+oڽe(fm;uŭغ2Ni˪d)75cFN; '2(pm[jWa :x3dFcaӷ'zk3??hWb.Xn? Qb_|!ox{\aN0lNIIH>S6K,% ڀC,qx^y(-zw|eԪ$YȱM;S@%ѧHpaA` qLpc!aIJ)PB(K mϜ6^9@t7Yu!H޳Zq2 2ƍGu,;8,7NY/ߕ/34{gN{c-{D,~/eKc=B`[[(0EIfg؞KvLRu&вo@Z0_hYp蜹j$ef=lFEpŹ96-ԻgNYJĦqگ|YPJBlB(@l]=A# zskLϯ^VuWLa׏.^%E;U u;ӭ- t7?]rRy+Lvg"J+oiCU~Ԩ0pΘ pΐuk :4A*[U[jm=<Ûe>~ZVfWWnhPHkYғYDIM.\V^^;YP8OdQJFp&(/CC@~?<+~P`CɗF̪rv)>YCy Fp y"(W!-_YvgpNAV Rÿֺ@rӫuSb9,,S)EA6P4^IpLQHp/(PsGTPT&6/}OysہDYG¬TU!`ސ:XBۖwݬXx^rϑ `elI8-U ue-f nT:&a(۸KWdh e&-gMzA# FpI AaғLy90O/<,Q."*#qƽV)V)Ʊ[4}>iM|DŽƕc'b42M[S{Oc=-_Iܑ=5}uR<nɓ;vLU_^= sHMŠW>~cOF @4E)+˂VEa(n,Pխ@Y!`6 ݢ2ݦ,' CSL"<+n589S]q[GLJdY.I4E;q2HC%2M)w QHu+,ۤ"FlE8AĶa!bU.QY[UD4U=pMI5NAYRT! kp =kpDSUn XEֳ in%KqSNd6B7vun㏋bR)m#FDO5*AWLM5l lPTz}T`8iw`d K%2MC7, &!Y5ɒ*&AU̮XYd revتJa=/ʰnf!ӵjq3&%Qj8s9f W\brff Pܩc՚V<23&BFrQ0I(S +`i*An݌uɛ/d1qn +"Yo7DGJ]n>_Q]׃=… %Jȓ'ϣG?~\B?+++===**/1Oyɳ*),j)흺ڊUQ؆^x"M]8vB`+{nL-Mr@ (0d}3K{)B`빟y$G`yeh~,E }r@MUȖЫB`9>Q=*?KU@49bP jj}s.0"1\u'rR0 2n*@6WiMJ)`DI."zRq #B4;߶tO2XOubA`gOCc WҵXF' CAJGe<(VX͋g\+BT@xտh|KU(o)UĸqRl 'OTLmS-brغ˕+q 1+ 0Q b89(Љ~o 1 m8J)1;>Wf&70I~s}vYw)ocouA7ڧ&!ŽLQzAO DIKl˵wdJ)y@)P -U0wbz9T*]H(_y:}ǭ&,&o!uZ>_q0l9zo5~Qclgˌ/d}19k~zb",0?EpN^ϊ7T2.u-m]?xg+.<="l| O΂P]OzpqߞHa@)'e^̟)eY9y ";3]LMj& "j[Jmp5&[lM  Z ټS15hi;-mZ6%lVBxbJJgOիWmYK+.la8pLB^9Ҝ<"gp3Cr ?0bp]sLrJRJQL0/0`dy,qxH=RÞFa*Vn5aV3d&5 R.̌3kDT?ew6/]}s1;Mp7wkYs]~F P;..s1w׆&ڎ>AMʈM9gQ眉=?=v戁^y^)S,Ptˊ.9`X{˴wuG2lOJ6M) w߁Q}3/CBzH HAł> Q;GQEG DARTmMB@yK.sߛeo\`h:3Cau&#ZMyyyE):T^^^q`ʚ0;N;ҼsrO3L%YcDEm}# Eh]0+6!+.ݢ}@ Dgu!M葐:!}4N8@j6N",j5MUoye)#+L LHOJ&H7Vi0 *T;iSFة^?&m1g2PoS ,%=&B^pj +,&P @ M>g2OShBԄBU#j  κIOk*,-T͗*`uK'Mz?w7vUQcf=T#Q] ik^3-9x]A 8b2ϟҽ#_7M&e4A'8=nGL" pU2{trjWv-&2j$dA)M-:z P )RNAfx{߼ޯh>2S Gu-QƋ!!UЀrƍ5~ɖ+t&tu7W,u4,m&{ h>OT}] 8p!\d+/n]gZ䫗_ܬv p.$Xd߾JS $Zw4q}> V.8ƕ0ơQpՐ\Ve5uCGgHw5kְc&_xcY+?t݂kYl Y 41٨7t 7۽;Y6 2%o{"pvicOEUbR+VQCpnBcf.1ynn5n\йIW~c[=#t}Cܜ5~gA_~Mwݚu`VHgѸBXoIW|Ͳw'M%] tjN2rKnMS|*m[.V|:gIVv{u7a'd.syfiW'Z$j@d߭&~G!䧧NR#ל#ڴisg6 H=w!%#נ>>l~f'qX1I!CJ>n(3R=undtjSaԋ\.o*W^>0DLBgtķ7cVfjзww.3Pr {QhNazv=ܢ5̽g9ҥkۯl\ۮGvvV,^dJ#.SCs .ѳH-ZezJna Wr ;Q23>le츑inXYNSxLQE>{ym첤nT0h[йu`;u=ǘ=+wn ){t/n'o[&pAZH@\jfVZց>Xsgun!7W'9];H9_ru{P ,ܻg~7q~NOǦL @lrfVJF^A߯h=owr@A{1gƗRvǶ)1 e)Tݻ}͠>m[:vo208)c^CX %xf<`=Y>1"Mr,^%'5fݼzN`ZVJJ۽$nؔ{΍={6 \ޜe.S=rT*++^$I4&$5b{>@ pocD1dſvjq s^]5 Rj_˹w ;5:be83N 6,oJ)KiEsEiU ΄hXBq- C>GI8B-l: eo'@%gPbD)!燷qa`_ƙmZ.LD/_>(o6[7Ҷq59.OILE&wD g\ K^Y،.@J/ _J%B\DiØ[΄h,u#ΎG*qkjjnڡCEQOCӴ۷ʲ|B6t1h:'q`i b5jpwΑH@OlHӂM/n}^ PvWPدc/~"g$"i<:4nѯsvlf٘& J[= Uk6^-i9AEGY6o"?5Q3#`%_Dt{{bM]5O!p97JiRR^~1OI[PPr!N'pc5@qM ѢVU򅫌g:dx u}o<ۯL`qǯ~q%L/]}YLT8';MJ?j?Գ@ pyǵt]?%!Y;=P+yY'w$}Q8nx!f8yՕme8io_rŕK?罓`YeY}?kRjUb<UTB\wN$d{{ VL`R%5/!R+˫uˑ&V}uejyb~ښaqzÇj &%%L)nj*Q'1ɩ>٨, %!9'n+juF܁` ~:3HL^Ȟ`R7#u^oHG\@%-/54ObR)`5+¦p$$" &݊RZWe(>buVl8fDWVF E?TxT{UM6.[A N[?zu|vxeԭɛVo[-Ǯ~O^~ uW73!W?w9肾ۖE70.+?;֣}Wݱ[ztA[P.87g|myB){bȹ9}Zαq4t;̼oC^%!R .YGt6$ s7M%o mxEх<g&@8 @r/M~[ǟ/ɿ顇g>?e+.s'o|*sٺ'2?zi^\lO_hzOMv7Ȱ^ BU&J9;V\ǝ#2ܺ4׏>3^;0G*fu.@$L@d Ah}@HW(xAld*ILt,#u\z'%5o]7-Ǫ#ۖ~iq{o:z"o]%Qcޫ= QM$Y@(!zL:Py` %f5Nj6:˾!N@ڊ(3HTp7ϝ\r\bFJ>׺"cvL᰸Zr7<e_8蛚hUjT ^{|i̛M GL,JvCCU@t˿zoK*8v$.gNd'۶]k ;س 07 F_+ymuY?Xvޗvs]-[z\Ac΁V]? |!#K+aY-2<aeMqnGrvie{woULF:WV&;V'V2Ҳ[%ԚQ.2\CUsIi2ğRJ)er(_J$]~aKy7POυW_)>96o߾ݻwkvJƮ=OvvvFFu#?dYVHth1 >Is~bq`( B:t8*Bڵk~_4+IӬ'A}Ro<:Sun/INuՁ@8ŏ B?=h쏚 Kt]_pa$4e'=9xমYfn6iS ߽k))U8eNv$ڵ}{쩯oQwW2!ݺh,>`9h?n޶s玒~XǤq(!L%~RdΈ7VK)!J, !$IjժUlllNN`Y~k,^D}umq‚z!8񸁝<~HiꕙAۿv x GB4X\\{dJ&tioP:]IY?MH- LTB_3b:`! B#RZ^^~m>& [}(㜎%OZn1ye%jQ>JBmᑭ@t6i(1ֱ?Qˤ&B?[S"oq@QY~hZpMw)&,K8PS᫾ܢ>1԰3Ӯ{FIɾh\a8{SfeYeee555/e 8`3OP]-35Khc*!K N\]Z@ÝOLj$%%e˖-yyyc;ۋi@1|q( L%~VM);8dg=&zn7=: S )bOo50aIGN}B`*!tt ++kƍݻwzʲL)$R|;O5JJn{ժUHT۷C_XXh_|RSc,>>~BDQ4Ox#S cT%L4MO'vޘJ`B8QpBa*!0BS !BJ!L%TBa*!Ba*!0BS !BJ!L%TBa*!Ba*!0BS !BJ!L%TBa*!BS !0BS !BJ!L%TBa*!BS !0BS !BJ!L%TBa*!BS !0BJ!BJ!L%TBa*!BS !0BJ!BJ!L%TBa*!BS !0BJ!TB!L%TBa*!BS !0BJ!TB!L%TBa*!BS !0BJ!TB!L%Ba*!BS !0BJ!TB!L%Ba*!BS !0BJ!TB!L%Ba*!0BS !0BJ!TB!L%Ba*!0B菐J, $8"Lda N ˲$I"ȊD`0:QjjjpȲ,\r՜slZ~,#BHBBBqq@Ӵʊ <~cT!, ,uy!sTU7oak׮ -[!?Zn:i)rR%T%58]p$*N$aU8>p8^Vo^Xz8qrPMbbblap855rIE)D|>1t{Li!eT~:m_+MaM,MuyYp+D+]0)0`'Zo^@!y 7nQox$jՋpa5ҏXtKl)P\fX1_~=5&\ik:250 )Bι'#kFgGŹ))ɱl#@$90^y/WGtuUuDeJ$I JRJ^B$J%I@RB%I"kHpK-}Ó_uh$5Ƨ$5BW1uEONNi{g3;jUH@u9+gE B}B@赇J5Xػ(Ÿ6&ܛf mz8ЫrkտC FC7:, 5|=MAoĢɏ~qllzNVz%IAL8dtCŎ;nUܿ2%m7v,_7 KIDAT1WSDُ^|cQr3ҘagB])5v_|8yosZV0mR1l8R]P 2.PpMҧw3!8[ZCǟs39[,i%?3٫w$>w냝κic !F ٻnN/e;Y@^Y({캛/e wLŕ he=cHY[vO&j {}nWX6ʦ?m1a_:~%-[T FyOVѽLz9|TgNyR^2#g<22|¸]bfxU_}Suj{wMD"@USo=yD5@/*an,; <*^8fX8riOs_to;q#FY{dE^6*ʷ.[im]tS)0>̑O1][j\I1879J9WBjZ0PF)IïK^6ݻljwA= -4v+?9~}̳ ;!ُO=G9tŧ~B{Ehտޙ%spGCKѕm DpAe+.x]Z/&fhvnX*Ii5n / YzD'=v]~:Mo/͘9.=q)٘<2UW޿.Kμ-#u%tø (sRx~p4}Uz"p$B:̯rIDw)F6-/ &HY!Km{V葍Kr$~&:'JJn,]:d{BPoKh C]־wzF}_ thyRPIS?}ߞ6H(WxȞGt/,(2[Ꚛ BK 7ђU%~..]gܿrҵ=?L%t4|`ps7:c  ƌjk.OWF-&aq 0 վYDu~rKotST53WG7v߼7T5U], .7]%KI.*bnp9)-BUk|qJ]j҄S]BwY,>Hr-K@ǢwyeSTMrR7@ r!¡zU:]LB3>b|_{2MU4K0T-0tpuzZ 'GxdtΝ;[n"I҂ c=. Y/ˊr05\Z}LCPjF"BqIMp:)7uQ5 -v{t, +{LV]p`s[) z$H_Q{A8\tIq(0MU B@/# N |1 z*t-Xj Ad$ "!$:$`eYF$^59%]DM w>lTXc0Iz2051nWa(O*cǎ1#ZkGZ5=T L?!`:7,4G-n,m]WZ=36 5Vu~հph5 ;\UofYZ^kDU7L뇟+ 5=P#¢f."M+%Dfr+_ %E A]xޤ&v],[/DL*BX58 PJ&@`Df_Sp&B'{*)xLӌ$ ?3BH$4r!s,~!ϟb ,Ȟ3N%zsU{BW;!Df| Information on restoration of data from backups. Jean-Peer Lorenz peer.loz@gmx.net Restoration of data

SBackup configuration window.

sbackup-0.11.6/help/C/config-gui.page0000644000175000017500000000702612216122126015676 0ustar peerpeer The Simple Backup Configuration user interface. Jean-Peer Lorenz peer.loz@gmx.net Configuration User Interface

SBackup, shortform of Simple Backup suite, is a backup solution for common desktop use.

SBackup is basically using the same technology that Unix administrators have been used for decades but it adds some some intelligence for interaction with users within a graphical interface. This means dumps of files were created using the good old TAR but the usage is much more convenient than from a command line.

Feature overview Profiles Management

You can have multiple Backup Profiles in order to prepare different backups to be performed e.g. one for your photos, one for personal settings, and one more for your documents. A Backup Profile is a comprehensive configuration comprising of separate specified locations, includes and excludes etc.

Snapshots Management

A general management of backups is provided. Management of snapshots includes the change of the base of a backup, deleting a backup, and the transfer of backups.

Compression Options

Simple Backup allows to choose you from 3 different compressions: Gzip, Bzip2, and uncompressed. You can use uncompressed backups e.g. for making a backup of photos, which are already compressed, without wasting time and resources.

Split of the Archive

In order to make backups suitable for burning onto CD or DVD or just in the case of a harddisk formatted with FAT32, it is possible to make a backup with the resulting backup file divided into files of specified size.

If you want to use the split feature please consider its limitation: The snapshots are required to be uncompressed.

Logarithmic Purge

The removal of old backups in a logarithmic manner.

System Program Restore

On Debian based systems SBackup makes a backup of the list of software installed. You can use this list from an arbitrary backup(at the terminal) to restore the state of installed software.

Command line interface

Any core functionality can be accessed by plain text editors and shell commands. Therefore, SBackup can easily be installed on a server without X.

sbackup-0.11.6/Makefile0000644000175000017500000002544212216122126013341 0ustar peerpeer################################################################################ # # Simple Backup - GNU Makefile # # Copyright (c)2008-2011,2013: Jean-Peer Lorenz # Copyright (c)2007-2010: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # ################################################################################ # grab name and current version METAFILE="METAINFO" VERSION=$(shell grep "^VERSION=" $(METAFILE)|cut -d "=" -f 2 -) PKGNAME=$(shell grep "^PKGNAME=" $(METAFILE)|cut -d "=" -f 2 -) # retrieve/determine used applications (version of Python interpreter...) PYTHON=$(shell which python) servicetool=$(shell which service) gconftool=$(shell which gconftool-2) export GCONF_CONFIG_SOURCE=$(shell if test -x "$(gconftool)"; then $(gconftool) --get-default-source; fi) # available languages UI PO=ar bg ca cs de en_AU en_CA en_GB es fi fo fr gl he hu id it lv ms nb nl oc pl pt pt_BR ru sv tr uk zh_CN zh_TW da el fa is ja kk ko kw ro sr sw # available languages Help/Manual HELPLANG=C # definition of paths and filenames # installation into /usr/local to be compliant to GNU standards PREFIX=/usr/local DESTDIR=/usr/local datadir=$(DESTDIR)/share bindir=$(DESTDIR)/bin sbindir=$(DESTDIR)/sbin libdir=$(datadir)/$(PKGNAME) helpdir=$(datadir)/gnome/help/$(PKGNAME) langdir=$(datadir)/locale icondir=$(datadir)/icons gconf_schema_file_dir=$(datadir)/gconf/schemas sysconf_dir=/etc dbus_system_conf_dir=$(sysconf_dir)/dbus-1/system.d gconf_schema_file=apps_sbackup_global-preferences.schemas dbus_system_conf_file=org.sbackupteam.SimpleBackup.conf iconslst=sbackup-panel.png sbackup-attention.png sbackup-success.png gtk_update_icon_cache=if test "$(DISABLE_MAKEFILE_GTK_UPDATE_ICON_CACHE)" = ""; then \ gtk-update-icon-cache -f -t $(icondir)/hicolor; \ gtk-update-icon-cache -f -t $(icondir)/ubuntu-mono-light; \ gtk-update-icon-cache -f -t $(icondir)/ubuntu-mono-dark; fi # distutils options SETUP.PY_OPTS=--root=/ --install-lib $(libdir) -O0 default: build-po fill-templates $(PYTHON) setup.py build build-po: set -e; for lang in $(PO); do install -d po/$$lang/LC_MESSAGES/ ; done set -e; for lang in $(PO); do msgfmt po/$$lang.po -o po/$$lang/LC_MESSAGES/sbackup.mo ; done #TODO: use intltool and scan *.desktop... po-gen: set -e; xgettext -o po/sbackup.pot src/sbackup/*.py src/sbackup/*/*.py data/ui/*.glade scripts/*.py set -e; for lang in $(PO); do msgmerge -U po/$$lang.po po/sbackup.pot; done fill-templates: set -e; sed s+@prefix@+$(PREFIX)+ src/sbackup/resources.in > src/sbackup/resources set -e; sed s+@prefix@+$(PREFIX)+ data/desktop/sbackup-config.desktop.in > data/desktop/sbackup-config.desktop set -e; sed s+@prefix@+$(PREFIX)+ data/desktop/sbackup-config-su.desktop.in > data/desktop/sbackup-config-su.desktop.tmp set -e; sed s+@prefix@+$(PREFIX)+ data/desktop/sbackup-config-su.desktop.tmp > data/desktop/sbackup-config-su.desktop set -e; sed s+@prefix@+$(PREFIX)+ data/desktop/sbackup-restore.desktop.in > data/desktop/sbackup-restore.desktop set -e; sed s+@prefix@+$(PREFIX)+ data/desktop/sbackup-restore-su.desktop.in > data/desktop/sbackup-restore-su.desktop.tmp set -e; sed s+@prefix@+$(PREFIX)+ data/desktop/sbackup-restore-su.desktop.tmp > data/desktop/sbackup-restore-su.desktop set -e; sed s+@version@+$(VERSION)+ setup.py.in > setup.py.tmp set -e; sed s+@pkgname@+$(PKGNAME)+ setup.py.tmp > setup.py set -e; sed s+@version@+$(VERSION)+ src/sbackup/metainfo.in > src/sbackup/metainfo.tmp set -e; sed s+@pkgname@+$(PKGNAME)+ src/sbackup/metainfo.tmp > src/sbackup/metainfo rm -f data/desktop/*.tmp src/sbackup/*.tmp *.tmp check: @echo "Check for another installation of sbackup" @set -e; for lang in $(DESTDIR)/sbin/sbackupd $(DESTDIR)/bin/sbackup $(DESTDIR)/../sbin/sbackupd $(DESTDIR)/../bin/sbackup; do echo " checking: $$lang"; if [ -e $$lang ]; then echo "Another installation of sbackup is present. Please uninstall first."; exit 1; fi ; done @set -e; for lang in $(DESTDIR)/bin/nssbackupd $(DESTDIR)/../bin/nssbackupd; do echo " checking: $$lang"; if [ -e $$lang ]; then echo "Another installation of nssbackup is present. Please uninstall first."; exit 1; fi ; done install: check install-package install-po install-help install-bin install-data chmod +x $(libdir)/multipleTarScript chmod +x $(libdir)/sbackup-launch chmod +x $(libdir)/sbackup-dbusservice chmod +x $(libdir)/sbackup-indicator chmod +x $(libdir)/sbackup-progress chmod +x $(libdir)/sbackup-terminate chmod +x $(libdir)/sbackup-run chmod +x $(libdir)/sbackup-config-gtk chmod +x $(libdir)/sbackup-restore-gtk chmod +x $(libdir)/sbackupconfig.py chmod +x $(libdir)/sbackup-legacy-restore # application's binaries install-bin: install -d $(bindir) $(sbindir) ln -sf ../share/sbackup/sbackup-run $(bindir)/sbackup ln -sf ../share/sbackup/sbackup-config-gtk $(bindir)/sbackup-config-gtk ln -sf ../share/sbackup/sbackup-restore-gtk $(bindir)/sbackup-restore-gtk ln -sf ../share/sbackup/sbackup-legacy-restore $(bindir)/sbackup-legacy-restore ln -sf ../share/sbackup/sbackupconfig.py $(sbindir)/sbackupconfig # python package install-package: $(PYTHON) setup.py install ${SETUP.PY_OPTS} --prefix=$(PREFIX) # localization install-po: set -e; for lang in $(PO); do install -d $(langdir)/$$lang/LC_MESSAGES/ ; done set -e; for lang in $(PO); do install -m 644 po/$$lang/LC_MESSAGES/* $(langdir)/$$lang/LC_MESSAGES/ ; done # help/manual install-help: install -d $(helpdir) set -e; for lang in $(HELPLANG); do \ install -d $(helpdir)/$$lang/; \ install -d $(helpdir)/$$lang/figures; \ install -m 644 help/$$lang/*.page $(helpdir)/$$lang/; \ install -m 644 help/$$lang/*.xml $(helpdir)/$$lang/; \ install -m 644 help/$$lang/figures/*.png $(helpdir)/$$lang/figures; \ done # additional data/configuration install-data: install-icons install-dbus install-gconf @if test "$(DISABLE_MAKEFILE_DESKTOP_DATABASE_RELOAD)" = ""; then \ update-desktop-database; fi install-icons: install -d $(icondir)/hicolor/24x24/apps/ $(icondir)/ubuntu-mono-light/apps/24/ $(icondir)/ubuntu-mono-dark/apps/24/ set -e; for icon in $(iconslst); do install -m 644 data/icons/hicolor/24x24/$$icon $(icondir)/hicolor/24x24/apps/ ; done set -e; for icon in $(iconslst); do install -m 644 data/icons/ubuntu-mono-light/24/$$icon $(icondir)/ubuntu-mono-light/apps/24/ ; done set -e; for icon in $(iconslst); do install -m 644 data/icons/ubuntu-mono-dark/24/$$icon $(icondir)/ubuntu-mono-dark/apps/24/ ; done $(gtk_update_icon_cache) install-dbus: install -d $(dbus_system_conf_dir) install -m 644 data/$(dbus_system_conf_file) $(dbus_system_conf_dir) @if test "$(DISABLE_MAKEFILE_DBUS_RELOAD)" = ""; then \ if [ -x $(servicetool) ]; then \ $(servicetool) dbus force-reload; \ else if [ -r /etc/init.d/dbus ]; then \ invoke-rc.d dbus force-reload; fi; fi; \ fi install-gconf: install -d $(gconf_schema_file_dir) install -m 644 data/$(gconf_schema_file) $(gconf_schema_file_dir) @if test "$(GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL)" = ""; then \ gconf-schemas --register $(gconf_schema_file_dir)/$(gconf_schema_file); \ fi # targets for un-installation uninstall: uninstall-package uninstall-bin uninstall-data uninstall-help clean-data uninstall-bin: rm -f $(bindir)/sbackup rm -f $(bindir)/sbackup-config-gtk rm -f $(bindir)/sbackup-restore-gtk rm -f $(bindir)/sbackup-legacy-restore rm -f $(sbindir)/sbackupconfig uninstall-package: rm -rf $(libdir) uninstall-data: uninstall-icons uninstall-dbus uninstall-gconf rm -f $(datadir)/pixmaps/sbackup-restore.png rm -f $(datadir)/pixmaps/sbackup-conf.png rm -f $(datadir)/pixmaps/sbackup.png rm -f $(datadir)/pixmaps/sbackup32x32.png rm -f $(datadir)/applications/sbackup-config*.desktop rm -f $(datadir)/applications/sbackup-restore*.desktop rm -rf $(datadir)/doc/sbackup set -e; find $(langdir) -name sbackup.mo -exec rm -f '{}' \; uninstall-icons: set -e; for icon in $(iconslst); do rm -f $(icondir)/hicolor/24x24/apps/$$icon ; done set -e; for icon in $(iconslst); do rm -f $(icondir)/ubuntu-mono-light/apps/24/$$icon ; done set -e; for icon in $(iconslst); do rm -f $(icondir)/ubuntu-mono-dark/apps/24/$$icon ; done $(gtk_update_icon_cache) uninstall-dbus: rm -f $(dbus_system_conf_dir)/$(dbus_system_conf_file) #FIXME: treat gconf schema file as proper conffile? uninstall-gconf: @if test "$(GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL)" = ""; then \ if test -r "$(gconf_schema_file_dir)/$(gconf_schema_file)"; then \ gconf-schemas --unregister $(gconf_schema_file_dir)/$(gconf_schema_file); fi; \ fi rm -f $(gconf_schema_file_dir)/$(gconf_schema_file) uninstall-help: rm -rf $(helpdir) clean-data: clean-crondata clean-tmpdata # remove script/symlinks from cron directory clean-crondata: @if test "$(DISABLE_MAKEFILE_CLEAN_DATA)" = ""; then \ rm -f /etc/cron.d/sbackup; \ rm -f /etc/cron.hourly/sbackup; \ rm -f /etc/cron.daily/sbackup; \ rm -f /etc/cron.weekly/sbackup; \ rm -f /etc/cron.monthly/sbackup; fi clean-tmpdata: @if test "$(DISABLE_MAKEFILE_CLEAN_DATA)" = ""; then \ rm -rf /var/log/sbackup; \ rm -f /var/log/sbackup-*.log; \ rm -f /var/log/sbackup-*.log.*.gz; \ rm -rf /tmp/sbackup; fi purge-user-config: rm -f /etc/sbackup.conf rm -rf /etc/sbackup.d reinstall: uninstall install # clean source code directory clean: set -e; find . -name '*.py[co]' -exec rm -f '{}' \; set -e; find . -name '*~' -exec rm -f '{}' \; set -e; find . -name '*.bak' -exec rm -f '{}' \; rm -rf build dist setup.py rm -f data/desktop/sbackup-config*.desktop rm -f data/desktop/sbackup-restore*.desktop rm -f src/sbackup/resources rm -f src/sbackup/metainfo rm -rf src/sbackup.egg-info set -e; for lang in $(PO); do rm -rf po/$$lang ; done # Purpose of this target is to print some informational data show-infos: @echo "Summary of parameters" @echo " Metafile : "$(METAFILE) @echo " Version : "$(VERSION) @echo " Package name : "$(PKGNAME) @echo " Python : "$(PYTHON) @echo " setup.py opts: "$(SETUP.PY_OPTS) @echo @echo "Directories" @echo " PREFIX : "$(PREFIX) @echo " DESTDIR : "$(DESTDIR) @echo " datadir : "$(datadir) @echo " helpdir : "$(helpdir) @echo " langdir : "$(langdir) @echo " bindir : "$(bindir) @echo " sbindir : "$(sbindir) sbackup-0.11.6/ChangeLog0000644000175000017500000003731212216122126013452 0ustar peerpeersbackup (0.11.6) * Add XFCE4 to list of supported desktop environments to enable status indicator on xfce4 * [Fix] LP: #1174124 Catch invalid path selections to avoid TypeErrors when coercing to Unicode. Replace FileChooserButton with text entry to avoid problems when selecting destination paths. * [Fix] LP: #1159705 set default setting for log level as string, not as integer in order to fix a KeyError if no log level is defined in config file. Also make sure, a string is processed when setting GUI widgets using the log level value. * [Fix] LP: #1190224 Restore behaviour of GioOperations.path_exists. This caused a regression which let the backup fail. * merge fix for bug 632605. Thanks to Mascha * merge from trunk: add french desktop entry * fix internal helper tool script sbackup (0.11.5) * translations updated * [Fix] LP: #1000171 make it backwards compatible because upgrade-backups is incredibly slow and not reliable: added restore utility which provides legacy support using the 0.10.5 algorithm. Command must be executed from terminal: 'sbackup-legacy-restore BACKUP_PATH FILE_OR_DIR_TO_RESTORE [TARGET_DIR]' or for more ease of use with GTK gui: 'sbackup-legacy-restore --gui'. * remove 'backup upgrade' feature and 'rebase snapshot' feature since it is not reliable and can cause severe user data loss * [Fix] LP: #1097465 Regular expressions defined in default configuration can be improved: -do not exclude specific types of files e.g. mp3, avi -fix regex for .gvfs, trash, cache etc. so these apply to 'top-level' directories -add a default regex for lock directories (e.g. $HOME/.mozilla/lock) -add a default regex for $HOME/.cache directory * [Fix] LP: #785512 Backup files are not protect from local user access: make the snapshot directories RWX only by owner (existing snapshots are not affected by this fix). * Apply patch from Simon Déziel to make the temp directory RWX only by owner instead of by all. (LP: #785495) * [Fix] LP: #330680 fails if target path contains #: fixed by not allowing fragments when parsing target path and using quote/unquote to escape # properly (FIXME: this fix does not cover target paths containing special chars ; or ?) * [Fix] LP: #980786 Don't complain about non-accessable excluded files: order of checks when inspecting file system revised. It is now first checked whether a file is excluded before it is actually accessed. Thanks for Bernd Wurst for the suggestion. * [Fix] LP: #670646 sbackup-gtk crashes while starting: invalid literal for int(): ignore ValueError from urlparse when parsing port * [Fix] LP: #888367 TypeError: argument of type 'int' is not iterable: Try to fix type error by not using interpolation when getting items From ConfigParser. * [Fix] LP: #173490 Pre/Post backup script hooks: applied patch suggested by Derek Ditch * [Fix] LP: #918099 System menu names should include 'admin' or similar: applied patch suggested by Anton (feenstra) * [Fix] LP: #875634 sbackup's tar very slow due to erroneous backup size calculation: Sometimes the calculation of the space required goes badly wrong and we could end-up With _checkp=1 for 30GB to save, making tar VERY slow. Fixed by setting minimum value to 100. Thanks to Thibault Godouet for the patch. * added exception handling in case of not implemented 'attach_to_status_icon' method (e.g. Debian Wheezy) * [Fix] LP: #768080 incremental snapshots store more files than needed: add TAR option '--no-check-device'. Thanks to Rogach (platon7pronko) and Felix Griewald (tiiunder) for the patch. * Correctly set package format to 3.0 (quilt). Thanks to Marc Deslauriers. sbackup (0.11.4) * [Fix] LP: #714916 Unhandled error in gio backend when looking up verbose error message * [Fix] LP: #662613 sbackup crashes with 'NonValidOptionException' * [Fix] LP: #709338 Restore/revert of non-toplevel items produces only empty folders * [Fix] LP: #689016 Uncaught error 'invalid literal for int() when processing invalid configuration files * [Fix] LP: #697386 RemoteMountFailedError 'Max. number of password inputs reached' not handled properly * [Fix] LP: #697654 No desktop session found: no notification icon: * [Fix] LP: #701403 Unable to use remote target without giving a password: * [Fix] LP: #588578 Email notification/reporting doesn't work with GMAIL * [Fix] LP: #706037 Email reports not working; enable debug output for sending mail * [Fix] LP: #683990 Uncaught 'NoSectionError' when adding report settings (SMTP server etc.) * [Fix] LP: #695613 Empty notification popup due to invalid markup * [Fix] LP: #671785 Parsing remote URIs fails when username or password contains special characters; quote special characters to comply with RFC 1738 sec. 3.1 * [Fix] LP: #675361 Restore process fails with error 'is not a file' while copying * [Fix] LP: #696183 Failed to set GID to `admin`; improved handling of non-existent user groups * refer to dependent packages 'gconf2', 'desktop-file-utils' in install file * translations updated * translations added: fo sbackup (0.11.3) * [Fix] LP: #645543 "Cannot concatenate str and error object" error prevents incremental backups * [Fix] LP: #648754 Can't mount ftp location: don't fail when gvfs-fuse is not available; use it only if really required * [Fix] LP: #653577 Error 'iter should be a GtkTreeIter' when clicking on Restore with no file selected * refer to dependend package 'gvfs-fuse' in install and readme file * translations updated * translations added: da,el,fa,is,ja,kk,ko,kw,ro,sr,sw sbackup (0.11.2) * [Fix] LP: #638072 Exclude rules not working on some dirs * [Fix] LP: #634356 Exception on reading snapshots in restore ui * [Fix] LP: #634031 Default behavior incorrectly set to `Cancel` instead of `Retry` * [Fix] LP: #632605 catch error while closing snapshot file over FTP * [Fix] LP: #642087 Log. purge not working under certain circumstances * Workaround for LP #640034 Setting status to attention does not change to specified icon (indicator-application) * Fix: don't block restore gui on long running tasks * Fix: don't touch snapshots being upgraded from backup process sbackup (0.11.1) * [Fix] LP #587911: Logarithmic purge does not work * [Fix] LP #622095: catch error when listing directory contents fails * [Fix]: revamped packaging: use distutils and pysupport sbackup (0.11.0) * [Fix] LP #618730: Merge sbackup and nssbackup (see enclosed file nssbackup.ChangeLog for further information) * [Fix] LP #604558: 'abort backup' on exernal drives not possible * [Fix] LP #412934: sbackup/nssbackup fails if exclude-path contains an equal-sign * [Fix] LP #277137: crashed with NoSpaceError: No space left on device * [Fix] LP #328902: Spelling and wording errors * [Fix] LP #130856: Show remaining time till backup is finished in UI * [Fix] LP #267759: Simple Backup should display a progress bar * [Fix] LP #137293: empty dialog when restoring with sbackup * [Fix] LP #176838: Incremental backups should not appear incremental when restoring * [Fix] LP #254464: Password for SSH Do Not URI Encode * [Fix] LP #489107: sbackup crahses: stop_if_no_target is not an option in general * [Fix] LP #504990: Mb used instead of MB in the application dialogs * [Fix] LP #507175: libgnomevfs2-extra required for FTP backups * [Fix] LP #310306: Error: no space left * [Fix] LP #383383: restore crashes when the destination path or file is non existent * [Fix] LP #331551: Wrong original English text in sbackup po-file * [Fix] LP #585769: default backup directory doesn't exist in ubuntu * translations updated sbackup (0.10.5ubuntu2) * Replace depends on gksu and sudo with menu for su-to-root (LP: #260203) - Thanks to Marcel Stimberg for the fix sbackup (0.10.5ubuntu1) * Add Japanese translation. (LP: #280788) Thanks to Hajime Mizuno . sbackup (0.10.5) * Update to use su-to-root (Closes: #479826) * Revert the group of all files to 'root' as there is no common admin group (Closes: #427697) * Save partition information (Closes: #431068) * Remove *.pyc files on purge (Closes: #428022) * Exclude /home/*/.gvfs/ folders by default (Launchpad: #222898) * Fix a typo preventing logarithmic cleanup from working (Closes: #447252) (Launchpad: #126278, #71698) * Fix a popup help type for SSH target recovery (Launchpad: #183650) * Check regex before adding it (Launchpad: #191127) * Add stop_if_no_target option to abort backups if the taget is on a removable drive that is not currently connected * Fully draw the "Restoring ..." info box before restoring a file sbackup (0.10.4) * Official release. * fix a bug preventing simple-backup-config to resolve anacron monthly * Ubuntu Bug #67814 - fixed permission problems with remote backups * gksu is used instead of gksudo (Closes: #327222) * Cron job is removed on package purge (Closes: #346097) * Should not crash on non-dirs in backup target (Closes: #391948) * Fixed typo in About (Closes: #414783) * Included Franch translation (Closes: #396059) * Updated all translations sbackup (0.10.4~beta9) * Gnomevfs doesn't close directory handler. * Hope this is the last beta * Resolved a bug when using ssh * change some errors printing * admin GID is now get dynamically . * Changed the right on the flist file to set read access to admin * Fixes a problem with incremental backups * Avoid usage of current dir for the lock file * Version on about window is set to 0.10.4 * Bug #112540 fix : sbackup now runs under root:admin. directories are created with read access for admins * Bug #102577 fix : optimizing the backup process ( thanks to Oliver Gerlich ) * A lot of bug fixes, This is just for testers sbackup (0.10.3-0.2) * Enhancement. applied patch proposed by Oliver Gerlich. See: Bug #110113 * Code cleaned to prevent warnings about non existing GTK components : see Bug #106818 * Ensure that daily backups are not skipped if the system is off at the scheduled backup time * Created a sbackup script to install in /usr/share/sbackup/sbackup (this script is almost the same created by sbackup in /etc/cron.d/ * Makefile : * add a flag to create non existing dirs * install the "sbackup" script in "/usr/share/sbackup/sbackup" * the python files have been renamed in *.py and the Makefile has been changed to be compliant -links are created into BIN without the py extention- * The About dialog now indicates Version 0.10.3 : Closes Bug #74963 * French language support added sbackup (0.10.3-0.1) * remove /usr/etc. Closes: #399762 sbackup (0.10.3) * Fix an Ubuntu-izm that creeped into the permissions (Closes: #391539) sbackup (0.10.2) * "Simple fixes for simple but annoying bugs" release - intended to go into Etch and Edgy. * Manage /etc/sbackup.conf and /etc/cron.d/sbackup as config files, but not as conffiles, to remove unneeded "config changes upstream" prompt on upgrade. SBackup can handle old config gracefuly. * Brown paperbag one-liner fix on incremental backup time not being counted properly causing incremental backups to be done all the time. * Reduce nice level of sbackup process to lowest possible priority (+19) * An empty regex matches everything, so avoid those sbackup (0.10-1) * Added i18n support from Jonh Wendell * Added Portuguese translation by Jonh Wendell * Adjusts in Makefile, support to uninstall and another prefix, rather than /usr (SF:1376603) - wendell * fix problem with spaces in target dir (SF:1508991) - wendell * Add command-line option parsing support from Andreas Sliwka * Improve parsing of cron timelines with added custom option (Ubuntu: #5720) * Separate filenames in metadata with NULL instead of a newline (Closes: #349700) * Critical pseydofilesystems are explicitly excluded (Closes: #340115) * Command line tar is used and is trying to be robust agaist race conditions (Closes: #328824) * Ability to edit filenames, paths and regexp directly in the cells - wendell * Purge old backup snapshots in smart and simple way (Yay!) * Really test the writability of a directory by writing into it. Solves several permission related errors, especially in remote backups. * Improved restore window interface - wendell * Rewriten restore backend fixes bugs while restoring files beyond 2Gb limit and speeds up the restore 2-3 times sbackup (0.9-1) * document all the TODOs and plans * backup all files if maxsize=-1 (SF:1324065) * fixed many bugs with the root directory enabled for backup * fixed an exception with remote target testing (Closes: #329341) * secure backup permissions - now all files are 0600 (Ubuntu: #3177) * also rename remote directories to get rid of ":" in filename * upgrade backup directories before each backup run sbackup (0.8-1) * Fix binary paths in .menu entries to sbin (Closes: #324781) * Use "." instead of ":" in all directory names (Closes: #325431) * Fix a bug with first item of file format exclusion list (Closes: #325426) sbackup (0.7-2) * Also fix the config applet to work in sarge * Move the restore icon to System->Administration menu too * First upload to Debian unstable :) sbackup (0.7-1) * Fix and reenable remote restore. It is still heal of a slow, but it works * Add empty directories to a full backup * Stop using pythons tarfile module on backup * Interface to systems 'tar' tool - double speedup, 10 times less memory used * Reduce memory usage by factor of 3 on restore and restore GUI * target directories are checked for validity, so interrupted backup no longer breaks other backups * Cache all files locally on remote backup - gnomevfs is very slow on small updates * A new tool added to upgrade backup directory formats * Gnome Restore tool now automatically asks to upgrade old backup directories sbackup (0.5-1) * Added the restore GUI: simple-restore-gnome * Added the command-line: srestore.py (Also a python module for restoring) * Only backup directories if there are files inside * Minimize usage of /tree file (planned for removal, with compartibility) * Usability adjustments to the config gui * Improved configuration defaults * Improved backup algorithm - now only folders with changes are included in the backup archive * NOTE: remote restore is *not* supported in this version sbackup (0.4-1) * Adjustments to Gnome capplets Target tab * Write username to cron.d file (was breaking automatic backups) sbackup (0.3-1) * Initial release sbackup-0.11.6/NEWS0000644000175000017500000000334312216122126012374 0ustar peerpeersbackup NEWS - User visible changes. Please report bugs at https://bugs.launchpad.net/sbackup sbackup (0.11.6), 2013-07-14 * bug fixes * Replace FileChooserButton with text entry to avoid problems when selecting destination paths. This issue is related to GTK, for reference see: http://askubuntu.com/questions/159413/gtkfilechooserbutton-select-folder-mode-returns-no-path sbackup (0.11.5), 2013-01-21 * bug fixes * remove 'backup upgrade' feature and 'rebase snapshot' feature since it is not reliable and can cause severe user data loss and added restore utility which provides legacy support using the 0.10.5 algorithm. Command must be executed from terminal: 'sbackup-legacy-restore BACKUP_PATH FILE_OR_DIR_TO_RESTORE [TARGET_DIR]' or for more ease of use with GTK gui: 'sbackup-legacy-restore --gui'. * Pre/Post backup script hooks: I've applied patch suggested by Derek Ditch and added this feature to sbackup series 0.11 (sorry for the delay...) It is completely optional. To use it, please add following options to your configuration file: ... [hooks] pre-backup = post-backup = ... You only need to specify scripts that should run, just leave it out if not required! Please note, the script must be executable (chmod +x) and will be run with same privileges as your backup process. So, be careful! * improved regular expressions defined in default configuration -do not exclude specific types of files e.g. mp3, avi -fix regex for .gvfs, trash, cache etc. so these apply to 'top-level' directories -add a default regex for lock directories (e.g. $HOME/.mozilla/lock) -add a default regex for $HOME/.cache directory sbackup-0.11.6/setup.py.in0000644000175000017500000000522312216122126014013 0ustar peerpeer#!/usr/bin/env python from distutils.core import setup setup(name = '@pkgname@', version = '@version@', description = 'SBackup, shortform of Simple Backup suite, is a backup solution for common desktop use.', maintainer = 'Simple Backup Maintainers', maintainer_email = 'nssbackup-team@lists.launchpad.net', url = 'http://launchpad.net/sbackup', packages = ['sbackup', 'sbackup.core', 'sbackup.util', 'sbackup.fs_backend', 'sbackup.ar_backend', 'sbackup.fuse_plugins', 'sbackup.ui'], package_dir = {'' : 'src'}, package_data = {'' : ['resources', 'metainfo']}, data_files = [('share/sbackup', ['data/ui/sbackup-restore.glade', 'data/ui/sbackup-legacy-restore.glade', 'data/ui/sbackup-config.glade', 'scripts/sbackup-run', 'scripts/sbackup-config-gtk', 'scripts/sbackup-restore-gtk', 'scripts/sbackup-legacy-restore', 'scripts/sbackupconfig.py', 'scripts/multipleTarScript', 'scripts/sbackup-launch', 'scripts/sbackup-dbusservice', 'scripts/sbackup-indicator', 'scripts/sbackup-progress', 'scripts/sbackup-terminate']), ('share/pixmaps/', ['data/icons/sbackup-conf.png', 'data/icons/sbackup32x32.png', 'data/icons/sbackup.png', 'data/icons/sbackup-restore.png']), ('share/applications', ['data/desktop/sbackup-config.desktop', 'data/desktop/sbackup-config-su.desktop', 'data/desktop/sbackup-restore.desktop', 'data/desktop/sbackup-restore-su.desktop']), ('share/doc/sbackup', ['data/sbackup.conf.example', 'AUTHORS', 'ChangeLog', 'COPYING', 'HACKING', 'INSTALL', 'NEWS', 'README', 'TODO', ]) ] ) sbackup-0.11.6/HACKING0000644000175000017500000001603112216122127012663 0ustar peerpeer***************************** How to hack on Simple Backup ***************************** Style guide ----------- When writing code for SBackup please follow the style guide for Python code, PEP 8. See http://www.python.org/dev/peps/pep-0008/. Tools to ease you writing good style code are: Eclipse IDE Pydev Pylint - checks the code style, imports, unused variables etc. Commit messages should have the same format as changelog entries * [FIX] LP Bug #577296: Crash, a number is required, not str * [Fix] regression: avoid backup of circular symlinks * [Fix]: implemented a work-around to enable notifications * [Change]: Logarithmic purge disabled since it still has issues * [Enhancement]: improvements to the release script Summary of style guide ---------------------- * Use 4 spaces per indentation level. * Never mix tabs and spaces. * Use spaces instead of tabs (set this in your IDE). * Limit line length to 80-120 characters. * Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. * Function names, method names and instance variables should be lowercase, with words separated by underscores as necessary to improve readability. * Top level functions and classes are separated by 2 lines, method definitions within classes by a single line Branches and versions ===================== Development takes place in the trunk version. At a certain point in time, a version branch is forked and a release is prepared. Fixes and modifications made to a specific branch are then re-merged into the trunk. How to run from source code --------------------------- Attention: For the current version, it is not recommended to install Simple Backup for productive use and to code on it beside at the same time. The reason is that there are 2 packages for import in that case, it might occur name conflicts: in your development environment and in the Python site-packages directory. ALTERNATIVE A - recommended ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Use helper scripts shipped with sbackup (based on fresh wheezy installation) 0. Install bazaar and set your Launchpad ID ~$ sudo apt-get install bzr You have not informed bzr of your Launchpad ID, and you must do this to write to Launchpad or access private data. See "bzr help launchpad-login". -> inform bzr of ID install bzrtools and bzr-gtk (if you want to) see: bzr help gtk bzr whoami "Firstname Lastname " bzr launchpad-login see: https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair add ssh key (or copy .ssh from another machine) 1. create a directory for your local branch ~$ mkdir Dokumente/sbackup ~$ cd Dokumente/sbackup 2. checkout branch ~/Dokumente/sbackup$ bzr branch lp:sbackup/0.11 Branched 244 revisions. ~/Dokumente/sbackup$ cd 0.11/ ~/Dokumente/sbackup/0.11$ ls AUTHORS COPYING debian HACKING INSTALL METAINFO nssbackup.ChangeLog README setup.py.in tests tools ChangeLog data doc help Makefile NEWS po scripts src TODO ~/Dokumente/sbackup/0.11$ bzr log -r-2.. ------------------------------------------------------------ revno: 244 committer: Jean-Peer Lorenz branch nick: 0.11 timestamp: Thu 2012-01-05 18:03:14 +0100 message: * updated changelog ------------------------------------------------------------ revno: 243 committer: Jean-Peer Lorenz branch nick: 0.11 timestamp: Thu 2012-01-05 18:02:50 +0100 message: * [Fix] LP: #768080 incremental snapshots store more files than needed: add TAR option '--no-check-device'. Thanks to Rogach (platon7pronko) and Felix Griewald (tiiunder) for the patch. 3. You have successfully branched sbackup to your local harddrive! 4. Before actually running scripts in order to test modifications, please setup your development environment by means of following script: ~/Dokumente/sbackup/0.11$ source tools/setup-dev.sh =SBACKUP DEVELOPMENT= user@host:~/Dokumente/sbackup/0.11/scripts$ 5. You are now in a dedicated environment (note the leading '=SBACKUP DEVELOPMENT= ' in front of your prompt). It is changed into the 'script' directory of your branch. Execute scripts as you like, e.g. run a backup with ./sbackup-run --no-dbus --config-file= or full backups with ./sbackup-run --no-dbus --full --config-file= or restore with ./sbackup-restore --config= 6. To finish hacking, just exit the development environment by typing 'exit' 7. optional: you can also call './tools/teardown-dev.sh' at any time in order to clean up your branch and remove temporary files and installed language files. 8. push changes bzr bind lp:~nssbackup-dev/sbackup/0.11 in case the checkout was done before bzr launchpad-login call; be sure your SSH keys are in place bzr push when getting error "http does not support mkdir()", try: bzr push --remember bzr+ssh://bazaar.launchpad.net/~nssbackup-dev/sbackup/0.11 ALTERNATIVE B ~~~~~~~~~~~~~ Prepare setup manually. If you know what you are doing you can run development code for testing as follows: 1. Add your development directory to the Python path. Do this in a shell, so it does not affect the whole system! You can use the following commands: declare -x PYTHONPATH="/Path-to-development/sbackup/src:"$PYTHONPATH 2. Manually create a file `resources` with appropriate content based on the template file `resources.in` and place it in the package's top level directory (src/sbackup). This file is usually created during installation and therefore it is required to tweak it by hand for development. 3. Analogous to step 2) create a file `metainfo` with appropriate content based on the template file `metainfo.in` and place it in the package's top level directory (src/sbackup). 4. Go to the source directory to run the application you wish cd /Path-to-development/0.2/sripts python sbackup-config-gtk python sbackup-restore-gtk python sbackup Limitations ~~~~~~~~~~~ When running solely from a development environment it is currently not possible to perform/test any D-Bus related actions including the indicator application. Reason for this is the missing/not installed policy file in /etc/dbus-1/system.d. When installing sbackup properly from source or deb this file will be installed and D-Bus communication is possible. Translations ============ First, some links related to translations using Launchpad/Rosetta: * http://blog.launchpad.net/general/trying-out-launchpad-translations * https://help.launchpad.net/Translations/YourProject * https://help.launchpad.net/Translations/YourProject/ImportingTranslations * https://help.launchpad.net/Translations/YourProject/ImportPolicy * https://help.launchpad.net/Translations/YourProject/Exports Testing ======= Following test must be executed (automated or manually) before publishing a new version on each target distribution. Use the spreadsheet to document your efforts and results. sbackup-0.11.6/nssbackup.ChangeLog0000644000175000017500000003475712216122127015455 0ustar peerpeernssbackup (0.3.1) * [Fix] LP #576030: nssbackup-upgrade-backups and nssbackupd crashes when starting nssbackup-restoration-gui * [Fix] LP #616667: Unable to save configuration as superuser: OSError-File exists (broken links were not removed before overwriting) * [Fix] LP #616497: Misleading option label: nssbackup is not cleaning up incomplete/corrupt backups * translations updated nssbackup (0.3.0) * [Fix] LP #130856: Show remaining time till backup is finished in UI * [Fix] LP #146619: Make a full backup now button * [Fix] LP #412934: escape local filename containing an equal sign * [Fix] LP #584294: Restoration GUI revamped * [Fix] LP #599865: Link to launchpad start root firefox * [Fix] LP #604479: Thanks to Florian Achleitner (value returned is a string and was not converted before comparison) * [Fix] LP #613746: added commandline option to force full backup * [Fix] LP #601574: Changes to the "Do a full backup" text box are not noticed * [Change]: do purge after backup * [Change]: delete snapshots from restoration gui only if standalone * [Change]: default value for backup compression set to `none` * [Enhancement]: improved error handling * [Enhancement]: added support for GIO backend (Fuse backend can be enabled by gconf setting) * [Enhancement]: module structure re-organized * [Enhancement]: code formatting and clean-up * [Enhancement]: D-Bus notification service implemented * [Enhancement]: Indicator application using libappindicator (for Ubuntu) and legacy status icon implemented * [Enhancement]: GUI features implemented: cancel backup, progress of backup, retry if target is not accessible, make full backup * Launchpad translations merged nssbackup (0.2.1) * [FIX] LP Bug #588878: Backup unsuccessful due to wrong exit code handling nssbackup (0.2.0) * [Fix] LP Bug #573733: nssbackup does not prevent itself from running in parallel. * [Fix] LP Bug #526544: was re-opened, missing newline at eof * [FIX] LP Bug #577296: Crash, with "%d format: a number is required, not str" * [Fix] LP Bug #258542 from Mascha's branch: adding a $ add the end of new file types; old file type regexps must be edited by hand to add the $; prior defined file types are handled as "normal" regular expression, display file type regular expressions also under regular expression tab to make this clear * [Fix] regression of LP #146618: The file size limitation should not be a recommendation * [Fix] regression: avoid backup of circular symlinks in the case of link dereferencing (follow symlinks) * [Fix]: implemented a work-around to enable notifications when running as root from cron/anacron * [Fix]: avoid merge of snapshots when purging snapshots by only removing stand-alone snapshots * [Fix]: minor changes in file collection codes (counting symlinks as included files) * [Fix]: execution of tar within empty environment; this avoids manipulation of tar options by leaked in environment variables and fixes a performance bug related to non-englisch languages (LANG) and tar (tar was much (6x) slower when running localized) * [Fix]: make uninstall and removal of debian package did not removed written cron entries * [Fix]: when starting another instance of nssbackupd or GUI tools previous log files were overwritten (introduces rotating log file handling) * [Fix]: skip excluded paths when merging snar files (see also LP #567965) * [Fix]: issues with non-translated strings due to incorrect import order of modules * [Fix]: typos and minor issues with translatable strings corrected * [Fix]: avoid system locks when running scheduled backups by decreasing priority of backup process (nice/ionice) * [Fix]: disable timeout (Signal ALARM) after exception handling * [Change]: Logarithmic purge disabled since it still has issues * [Enhancement]: improvements to the release script * [Enhancement]: improved handling of tar output * [Enhancement]: added support for compressed log files * [Enhancement]: Exclude process pid files as recommendation * [Enhancement]: added Regex for exclusion of backup files '*~' to the default recommendations * [Enhancement]: create a log directory exclusively for nssbackup as default recommendation in order not to mess up /var/log (no changes are made on existing configurations) * Launchpad translations merged nssbackup (0.2-0~rc9) * [FIX] LP Bug #526544: cron servicefile was not found * [FIX] LP Bug #512007: add fuse allow_other option to ssh plugin * [FIX] LP Bug #382753: NSSBackup doesn't exclude folders with special characters * [FIX] not translatable strings added * [FIX] avoid definition of exclude expressions containing a comma (delimiter in config) from GUI * [FIX] avoid multiple definition of exclude expressions (filetypes, regex) * [FIX] enable 'Save as...' of configuration always * [FIX] default backup target is created if it does not exist * [FIX] unified behaviour on close (using the menu, the window close button etc.) * [FIX] added check before test mail settings * [FIX] split size corrected (1 GiB = 1024 MiB) * [FIX] Application of Gnome HIG to the configuration GUI * [FIX] place nssbackup (admin mode) in Gnome main menu under Applications->System instead of the System->Settings tool (see http://library.gnome.org/devel/menu-spec/) * [FIX] set Freedesktop base directory if missing (required for Help/yelp in some shells) * [FIX] improve startup behaviour from Gnome main menu * [FIX] minor issues with Scheduling fixed (removal, updating) * [FIX] make the backup splitting configuration language independent * [FIX] when the log level is set to ERROR, the config gui couldn't start. * [FIX] moved max. incr. interval in configuration GUI to main page * [FIX] Scheduling only for default-profiles * [FIX] some issues with Scheduling fixed (removal, updating) * [Change] add info to statusbar when running in 'Administrator mode' * [Change] unified storage of name and version of package (in file METAINFO) * [Change] added possibility to cancel the closing if config has changed * [Change] behaviour changed for 'Add profile' when entering non-valid names - dialog remains open * [Change] Removal of the 'main' options from the general page. Each setup is now considered as custom setup that was started from a default configuration. Menu entry is added in order to restore default values configuration (works with profiles) if a user wants to. * [Change] schedule page simplified (precise option removed) * [Enhancement] Help implemented nssbackup (0.2-0~rc8) * Update translation. Added RU translation. * Support more complex Regex in SSH plugin (fixes LP #511398) * Fix LP #328902: Spelling fixes * patch the config UI to fit with UNR (LP Bug #364833). (thanks to Pierre Boazo) * [FIX]LP #400145 : Add a warning in the Log when TAR returns status code 1. * [CHANGE] LP #428863 : Added packagecmd to config to allow backing up of different distributions (Thanks to Andrew West) * [FIX] LP #428341 Maximum specific time is 13:49? * [FIX] LP #425101: show the default profile on the profile UI * [FIX] LP #346285: backup destination is not created; backup is aborted if the target does not exist. * [FIX] Makefile wasn't working on Jaunty (introduced dep on lsb-release) * [FIX] Creates the logfile parent directory is it doesn't exist. nssbackup (0.2-0~rc7) * [FIX] 'nssbackupconfig' was writing back the configuration changing the case to lower case, which can cause a invalidation of dirconfig paths. * [FIX] LP Bug #Bug 334580: store temporary files of non-privileged users in /home directory * [FIX] LP Bug #337921: import error fixed; thanks to Martin Schaaf * added Japanese menu entries (taken from sbackup; thanks to Hajime Mizuno) * [CHANGE] Use python setup.py to avoid installing ourselves in a specific python version directory. * [FIX] LP bug #338280 : findResource were returning a directory in place of a file. Now we can precise the type of file we are searching for. * [FIX] LP Bug #176838: deactivate "restore" and "restore as" button when a non included file is selected. * [FIX] LP Bug #181131: removed option "backuplinks" and make it the default behavior add option "followlinks" to follow symbolic links. nssbackup (0.2-0~rc6) * Re-upload due to errors in packaging binary packages nssbackup (0.2-0~rc5) * [FIX] LP Bug #331507: GUI fails, if configuration file does not exist * [FIX] LP Bug #331349: Backup into target directory containing spaces fails nssbackup (0.2-0~rc4) * [FIX] LP Bug #331282: Installation fails due to configuration error nssbackup (0.2-0~rc3) * Arabic translation file added and German and Spanish translation updated * Spanish translation of menu entries added: Thanks to Luis J. Claros * [CHANGE]: 'upgrade-backups' renamed into 'nssbackup-upgrade-backups' * [CHANGE]: 'nssbackupconfig' added for modification of configuration files during the installation * [CHANGE]: existing backups are no longer upgraded automatically * [FIX]: re-base was not working: due to errorneous merging of snapshot files and missing variable assignment -> fixed * [FIX]: converting an incremental snapshot to a full one was errorneous: base references of child snapshots was not updated with *.ful name -> fixed * [FIX] LP Bug #319294: catch execptions raised by notification daemon * [FIX]: logger issue (hopefully) finally solved: log messages were not printed and log files couldn't copied after backups: problem was the use of log files with equal names, the use of some static variables in ConfigManager and errors in logger implementation: now profiles use their own log files, some minor problems were fixed, code simplifications * [FIX]: not all messages were displayed in notification pop-ups: reason was an unescaped character: this character is now replaced, the notification code is extracted into a mix-in class to avoid multiple code definitions * [FIX]: pathnames to log files were incorrect and copying failed: fixed by centralized path determination * [FIX]: LogFactory was re-setting log level and log file when calling for a prior created logger: check if a logger was already created and don't overwrite previous settings if so * [FIX]: UpgradeManager used not existing FAM function: function 'rename' added * [FIX]: SnapshotManager tried to rebase a snapshot on itself: reason was an IndexError if only 1 snapshot was left -> check length of snapshots list nssbackup (0.2-0~rc2) * [FIX] LP Bug #299967: the regular expressions from the configuration file were checked before they are added to any lists in UI; if found regular expression are invalid they were removed from the configuration and the users gets informed * [FIX] LP Bug #299964: erroneous string formatting fixed * [FIX] LP Bug #303648: if the target directory isn't accessible, execution of backup daemon and restoration GUI fails. * [FIX] LP Bug #303661: * the target directory is not longer recursively created (within the configuration GUI) * [FIX] in FuseFAM.py: logger issue solved * [FIX] FTP plug-in: problems related to FTP solved * [FIX] Bug LP #137293: display of restoration dialog fixed nssbackup (0.2-0~rc1) * [FIX] LP Bug #191127: Check the regular expression before adding it to the configuration. * [FIX] LP Bug #285927: Change the format of the mail sent to be compliant with the standards nssbackup (0.2-0~beta8) * [FIX] LP Bug #284013: Fixed I18N when making customized installs. Thanks a lot to Jean-Peer Lorenz (https://bugs.edge.launchpad.net/~peer.loz) * [Tech] Get rid of GnomeVFS dependancy nssbackup (0.2-0~beta6) * [FIX] LP Bug #281852: Restoration GUI crashes on exception in some plug-ins nssbackup (0.2-0~beta5) * Add the backup links option in the GUI * Send an email by profile * One profile backup can fail and not the others so, we don't fail completely nssbackup (0.2-0~beta3) * [FIX] LP Bug #240000: looping in symbolic links * Log refactoring : we now have a proper logger by profile. nssbackup (0.2-0~beta2) * Logarithm purge implemented * Installing nssbackup will install FTP and SSH plugins nssbackup (0.2-0~alpha3) * Snapshot management functionality implemented nssbackup (0.2-0~alpha2) * [FIX] LP Bug #189879: NSSbackup cannot find files.snar -> crash nssbackup (0.2-0~alpha1) * First alpha of version 0.2 * New multi binaries strategy * [FIX] LP Bug #181998: typo in an error message * [FIX] LP Bug #181987: DEL key is now usable to remove some entries * avoid an exception in regex tab of configGUI when adding the first regexp * [FIX] LP Bug #153605: Prefill the 'From' text entry in the report tab * add necessary import in upgrade-backup script * Upgrade backus scripts takes relative path * [FIX] LP BUG #184713: nssbackup doesn't backup * [FIX] LP BUG #184713: add a backuplinks option to backup link nssbackup (0.1-5) * [FIX] LP BUG #184713: nssbackup doesn't backup nssbackup (0.1-4) * [FIX] LP Bug #181998: typo in an error message * [FIX] LP Bug #181987: DEL key is now usable to remove some entries * avoid an exception in regex tab of configGUI when adding the first regexp * [FIX] LP Bug #153605: Prefill the 'From' text entry in the report tab * add necessary import in upgrade-backup script * Upgrade backus scripts takes relative path nssbackup (0.1-3) * removed build dependancy on pyGTK * [FIX] LP Bug #157250: simple-backup-config has incorrect example exclusion regex * [FIX] LP Bug #177385: Maxincrement option is not working nssbackup (0.1-2) * GNU packaging standardization * Deleted unuseful documentation * We don't exclude anything as a recommendation (Closes LP Bug #152861) * Changed nssbackup icons * changed the whole revert process ( closes LP Bug #146617 ) * base was always set as the last full snapshot * [FIX] LP Bug #146618: remove the file size limit recommendation * [FIX] LP Bug #138750 * [FIX] LP Bug #138749 nssbackup (0.1-1) * Ubuntu Initial release sbackup-0.11.6/src/0000755000175000017500000000000012216122127012462 5ustar peerpeersbackup-0.11.6/src/sbackup/0000755000175000017500000000000012216122133014107 5ustar peerpeersbackup-0.11.6/src/sbackup/fuse_plugins/0000755000175000017500000000000012216122127016615 5ustar peerpeersbackup-0.11.6/src/sbackup/fuse_plugins/ftpFuseFAM.py0000644000175000017500000001673112216122127021137 0ustar peerpeer# Simple Backup - FTP fuse plugin # # Copyright (c)2009-2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import subprocess import re import os from tempfile import mkstemp from sbackup.fuse_plugins import pluginFAM from sbackup.util.exceptions import FuseFAMException from sbackup.util import local_file_utils ftp_re = "^ftp://" ftpUrlRegex = ftp_re + "(([^:]+):([^@]+)@)?" + "([^/^:^@]+?)" + "(:([0-9]+))?" + "/(.*)" class ftpFuseFAM (pluginFAM) : """The fuseFAM plugin for ftp @requires: curlftpfs @todo: Dependency on 'curlftpfs' must be taken into account for packaging! """ def __init__(self): pluginFAM.__init__(self) def match_scheme(self, remoteSource): _res = False _search_res = re.compile(ftp_re).search(remoteSource) if _search_res is not None: _res = True return _res def match_scheme_full(self, remoteSource): """This method checks for the scheme (the protocol) of the given remote source, i.e. it should not check the validity of the URL. This behavior is necessary since otherwise no plugin is found to handle a FTP address if this address is not valid. The user would be confused. The validity of a given FTP address must be checked separate. @todo: The plugins ssh, sftp do not behave if the suggested way! Fix them! """ _res = False _search_res = re.compile(ftpUrlRegex).search(remoteSource) if _search_res is not None: _res = True return _res def mount(self, source, mountbase): """Mount the source into the mountbase dir . This method should create a mount point to mount the source. The name of the mount point should be very expressive so that we avoid collision with other mount points @param source: The remote path @param mountbase: The mount points base dir @return: The mount point complete path """ #make the mount point spliturl = SplittedURL(source) mountpoint = self.__get_mount_dir(mountbase, spliturl) if not os.path.exists(mountpoint): os.mkdir(mountpoint) # check if it is already mounted first if not self.checkifmounted(source, mountbase) : # Create output log file outptr, outFile = mkstemp(prefix = "ftpFuseFAMmount_output_") # Create error log file errptr, errFile = mkstemp(prefix = "ftpFuseFAMmount_error_") # the option 'allow_root' is necessary to grant access # if the script is invoked as superuser curl_cmd = ["curlftpfs", "-o", "direct_io"] if spliturl.user and spliturl.password: curl_cmd.append("-o") opts = "user=%s:%s" % (spliturl.user, spliturl.password) curl_cmd.append(opts) if os.getuid() == 0: curl_cmd.append("-o") curl_cmd.append("allow_root") server = spliturl.server if spliturl.port: server += ":" + spliturl.port curl_cmd.append(server) curl_cmd.append(mountpoint) # Call the subprocess using convenience method try: retval = subprocess.call(curl_cmd, 0, None, None, outptr, errptr) except OSError, _exc: os.rmdir(mountpoint) raise FuseFAMException(_("Couldn't found external application 'curlftpfs' needed for handling of ftp sites: %s") % _exc) # Close log handles os.close(errptr) os.close(outptr) outStr, errStr = local_file_utils.readfile(outFile), local_file_utils.readfile(errFile) local_file_utils.delete(outFile) local_file_utils.delete(errFile) if retval != 0: os.rmdir(mountpoint) raise FuseFAMException(_("Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s") % {'server' : spliturl.server , 'mountpoint': mountpoint, 'error':errStr}) else: pass # it is already mounted, do nothing remote_site = "ftp://" + spliturl.server if spliturl.port: remote_site += ":" + spliturl.port return (remote_site, mountpoint, spliturl.pathinside) def getdoc(self): """Returns a short documentation of this plugin. """ doc = _("FTP schema is: ftp://user:pass@server/anything") return doc def checkifmounted(self, source, mountbase): """Checks if the given source is already mounted in given directory. @return: True if mounted, False if not """ spliturl = SplittedURL(source) mountpoint = self.__get_mount_dir(mountbase, spliturl) return os.path.ismount(mountpoint) def __defineMountDirName(self, spliturl): """ Helper method that builds the name of the mount directory. """ dirname = "ftp_" if spliturl.user : dirname += spliturl.user + "@" dirname += spliturl.server if spliturl.port: dirname += "_%s" % spliturl.port return dirname def __get_mount_dir(self, mountbase, spliturl): """Helper method that builds the full path to the mountpoint. """ mountpoint = os.path.join(mountbase, self.__defineMountDirName(spliturl)) return mountpoint class SplittedURL: """This will match the RE and give us a group like ('ftp://', 'test:pass@', 'wattazoum-vm.ft.nn', 'ddd/kjlh/klhkl/vvvv') @param remote: the remote site address @type remote: String @return: the address split into protocol, user, password, server and path on server @rtype: Tuple of Strings """ def __init__(self, url): exp = re.compile(ftpUrlRegex) match = exp.search(url) if match is None: raise FuseFAMException(_("Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The '/' after server is mandatory)") % url) self.user = match.group(2) self.password = match.group(3) self.server = match.group(4) self.port = match.group(6) self.pathinside = match.group(7) def __str__(self): _res = [ "User: %s" % self.user, "Password: %s" % self.password, "Server: %s" % self.server, "Port: %s" % self.port, "Path: %s" % self.pathinside ] _res_str = "\n".join(_res) return _res_str sbackup-0.11.6/src/sbackup/fuse_plugins/sshFuseFAM.py0000644000175000017500000001403412216122127021135 0ustar peerpeer# Simple Backup - SSH fuse plugin # # Copyright (c)2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import re from sbackup.fuse_plugins import pluginFAM from sbackup.util.exceptions import FuseFAMException, SBException from sbackup.util import local_file_utils from sbackup.util import system try: import pexpect except ImportError: raise FuseFAMException("Unable to import required module `pexpect`") ssh_re = "^ssh://" ssh_url_re = ssh_re + "([^:]+?)(:([^@]+?))?@([^/^:^@]+?)(:([0-9]+?))?/(.*)" class sshFuseFAM (pluginFAM) : """ The fuseFAM plugin for ssh @requires: sshfs, python-pexpect @author: Oumar Aziz Ouattara """ def __init__(self): pluginFAM.__init__(self) def match_scheme(self, remoteSource): """ SSH schema is like : ssh://user:pass@example.com/home/user/backup/ (user,pass, the first '/' ) are mandatory """ _res = False _search_res = re.compile(ssh_re).search(remoteSource) if _search_res is not None: _res = True return _res def match_scheme_full(self, remoteSource): """ SSH schema is like : ssh://user:pass@example.com/home/user/backup/ (user,pass, the first '/' ) are mandatory """ _res = False _search_res = re.compile(ssh_url_re).search(remoteSource) if _search_res is not None: _res = True return _res def mount(self, source, mountbase): """ Mount the source intor the mountbase dir . This method should create a mount point to mount the source. The name of the mount point should be very expressive so that we avoid collision with other mount points @param source: The remote path @param mountbase: The mount points base dir @return: The mount point complete path """ exp = re.compile(ssh_url_re) match = exp.search(source) if not match : raise FuseFAMException(_("Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The '/' after server is mandatory)") % source) else : remoteSource = "ssh://" + match.group(1) if match.group(3): remoteSource += ":" + match.group(3) remoteSource += "@" + match.group(4) if match.group(6): remoteSource += ":" + match.group(6) remoteSource += "/" user = match.group(1) mountpoint = local_file_utils.joinpath(mountbase, self._defineMountDirName(source)) if match.group(7) : pathinside = match.group(7) else : pathinside = "" #If the path is already mounted No need to retry if self.checkifmounted(source, mountbase) : return (remoteSource, mountpoint, pathinside) cmd = "sshfs " + user + "@" + match.group(4) + ":/" cmd = cmd + " " + mountpoint port = match.group(6) if port: cmd += " -p " + port if not local_file_utils.path_exists(mountpoint) : local_file_utils.makedir(mountpoint) if system.is_superuser(): cmd += " -o allow_root" self.logger.debug("Spawning: " + cmd) password = match.group(3) sshfsp = pexpect.spawn(cmd) i = sshfsp.expect(['(yes/no)', 'password:', 'Password:', pexpect.EOF]) if i == 0: self.logger.info("Accepting to store the key.") sshfsp.sendline('yes') i = sshfsp.expect(['(yes/no)', 'password:', 'Password:', pexpect.EOF]) if i == 1 or i == 2: self.logger.debug("Expecting password.") if not password : sshfsp.sendline("fake") local_file_utils.delete(mountpoint) raise SBException("sshfs is requesting a password and none has been passed.") sshfsp.sendline(password) i = sshfsp.expect(['(yes/no)', 'password:', 'Password:', pexpect.EOF]) result = sshfsp.before # print out the result if sshfsp.isalive() or sshfsp.exitstatus: local_file_utils.delete(mountpoint) raise SBException (_("The sshfs command '%(command)s' didn't perform normally. Output => %(erroroutput)s ") % {"command" : cmd, "erroroutput" : result}) return (remoteSource, mountpoint, pathinside) def getdoc(self): doc = _("SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/") return doc def checkifmounted(self, source, mountbase): """ @return: True if mounted, False if not """ mountpoint = local_file_utils.joinpath(mountbase, self._defineMountDirName(source)) return local_file_utils.is_mount(mountpoint) def _defineMountDirName(self, remote): """ """ exp = re.compile(ssh_url_re) match = exp.search(remote) if not match : raise FuseFAMException(_("Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' (The '/' after server is mandatory)") % remote) else : user = match.group(1) dirname = "ssh_" + user + "@" + match.group(4) if match.group(6): dirname += "_" + match.group(6) return dirname sbackup-0.11.6/src/sbackup/fuse_plugins/__init__.py0000644000175000017500000001543712216122127020740 0ustar peerpeer# Simple Backup - fuse plugins framework (package) # # Copyright (c)2009-2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import inspect import os import sys import glob import tempfile import subprocess import sbackup from sbackup.util import local_file_utils from sbackup.util import log from sbackup.util import exceptions class pluginFAM(object): """ The fuseFAM plugin interface @author: Oumar Aziz Ouattara """ def __init__(self): self.logger = log.LogFactory.getLogger() def match_scheme(self, remoteSource): raise exceptions.SBException("'match_scheme' Not implemented for this plugin") def match_scheme_full(self, remoteSource): """ Try to match the scheme of the remoteSource. @param remoteSource: The remote path @return: True if the scheme matches the one for this @rtype: boolean """ raise exceptions.SBException("'match_scheme_full' Not implemented for this plugin") def mount(self, source, mountbase): """ Mount the source intor the mountbase dir . This method should create a mount point to mount the source. The name of the mount point should be very expressive so that we avoid collision with other mount points This method will return a tuple (baseRemoteSource, mountpoint, pathinside) where - baseRemoteSource is the substring that represent the mount source (usually at the start of the source). The match_scheme_full method should be able to match it - mountpoint is the mount point of this baseRemoteSource. - pathinside is the path inside the remote source [Use case] The mount function is called once with "sch://server/path/to/dir" and the plugin mounts "sch://server" to "/mnt/sch_server". Then the return value would be ("sch://server","/mnt/sch_server","path/to/dir") @param source: The remote path @param mountbase: The mount points base dir @return: The tuple (baseRemoteSource, mountpoint, pathinside) @rtype: tuple """ raise exceptions.SBException("'mount' Not implemented for this plugin") def umount(self, mounteddir): """ Default behaviour is to unmount with fuse """ if os.path.ismount(mounteddir): self.logger.debug("Unmounting `%s`" % mounteddir) # Create output and error log file outptr, outFile = tempfile.mkstemp(prefix = "fuseUmount_output_") errptr, errFile = tempfile.mkstemp(prefix = "fuseUmount_error_") # Call the subprocess using convenience method using lazy umount retval = subprocess.call(["fusermount", "-u", "-z", mounteddir], 0, None, None, outptr, errptr) # Close log handles os.close(errptr) os.close(outptr) outStr, errStr = local_file_utils.readfile(outFile), local_file_utils.readfile(errFile) local_file_utils.delete(outFile) local_file_utils.delete(errFile) self.logger.debug("fusermount output:\n%s\n%s" % (outStr, errStr)) if retval != 0 : raise exceptions.SBException("Unable to unmount `%s`: %s" % (mounteddir, errStr)) else: self.logger.info("Successfully unmounted: `%s`" % mounteddir) else: self.logger.warning("Unable to unmount `%s`: not mounted" % mounteddir) def checkifmounted (self, source, mountbase): """ Should check if the source is mounted. Note : you should use os.path.ismount(path) method for that, after determining the name of the mount point. @return: True if it is, False if not """ raise exceptions.SBException("'Check if mounted' Not implemented for this plugin") def getdoc(self): """ This method should give a little documentation about the schema used for this plugin. @return: The schema doc (eg. return 'example : sch://user:password@server/dir') """ raise exceptions.SBException("Help not implemented for this plugin") class PluginManager(object): """ """ def __init__(self): self.logger = log.LogFactory.getLogger() # This should be a dictionary of plugins self.__pluginList = None def getPlugins(self): """Searches for plugins in the plugin directory and loads them. @return : The plugins dictionary list {'name':class}. @note: Look at FuseFAM to know how it's used. """ if self.__pluginList is not None: return self.__pluginList else: self.__pluginList = dict() tmp = inspect.getabsfile(inspect.getmodule(self)) plugins_dir = os.path.dirname(tmp) if os.path.isdir(plugins_dir): if plugins_dir not in sys.path: sys.path.append(plugins_dir) for _file in glob.glob('%s/*FuseFAM.py' % plugins_dir): try: module_filename = os.path.basename(_file) module_name, mod_ext = os.path.splitext(module_filename) # IGNORE:W0612 plugin = __import__(module_name, '', module_filename) for symbol_name in dir(plugin): symbol = getattr(plugin, symbol_name) if inspect.isclass(symbol) and symbol != pluginFAM and \ issubclass(symbol, pluginFAM): #symbol.enabled = symbol.name in plugin_names self.__pluginList[symbol_name] = symbol except Exception, error: self.logger.warning(_("Unable to import plugin `%(plugin_name)s`: %(error_cause)s ")\ % { 'plugin_name' : module_name, 'error_cause' : str(error) }) continue return self.__pluginList sbackup-0.11.6/src/sbackup/fuse_plugins/localFuseFAM.py0000644000175000017500000000424112216122127021431 0ustar peerpeer# Simple Backup - local fuse plugin # # Copyright (c)2009-2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from sbackup.fuse_plugins import pluginFAM from sbackup.util import local_file_utils class localFuseFAM (pluginFAM): """ The localFuseFAM plugin do nothing when the mount method is called @author: Oumar Aziz Ouattara @version: 1.0 """ def __init__(self): pluginFAM.__init__(self) def match_scheme(self, remoteSource): return remoteSource.startswith(local_file_utils.PATHSEP) def match_scheme_full(self, remoteSource): """ Try to match the scheme of the remoteSource. @param remoteSource: The remote path @return: True if the scheme matches the one for this @rtype: boolean """ return remoteSource.startswith(local_file_utils.PATHSEP) def mount(self, source, mountbase): """ Fake mounter to be used by the fuseFAM @param source: The remote path @param mountbase: The mount points base dir @return: The mount point complete path @rtype: str """ self.logger.debug("Nothing to do for '%s'" % source) return (local_file_utils.PATHSEP, "", source.lstrip(local_file_utils.PATHSEP)) def umount(self, mounteddir): """ """ self.logger.debug("No need to unmount %s" % mounteddir) sbackup-0.11.6/src/sbackup/fuse_plugins/sftpFuseFAM.py0000644000175000017500000001614512216122127021321 0ustar peerpeer# Simple Backup - SFTP fuse plugin # # Copyright (c)2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from sbackup.fuse_plugins import pluginFAM import subprocess import re import os from gettext import gettext as _ from tempfile import mkstemp from sbackup.util.exceptions import FuseFAMException from sbackup.util import local_file_utils sftp_re = "^sftp://" sftpUrlRegex = sftp_re + "(([^:]+):([^@]+)@)?" + "([^/^:^@]+?)" + "(:([0-9]+))?" + "/(.*)" class sftpFuseFAM (pluginFAM) : """ The fuseFAM plugin for sftp @requires: curlftpfs """ def __init__(self): pluginFAM.__init__(self) def match_scheme(self, remoteSource): _res = False _search_res = re.compile(sftp_re).search(remoteSource) if _search_res is not None: _res = True return _res def match_scheme_full(self, remoteSource): """This method checks for the scheme (the protocol) of the given remote source, i.e. it should not check the validity of the URL. This behavior is necessary since otherwise no plugin is found to handle a FTP address if this address is not valid. The user would be confused. The validity of a given FTP address must be checked separate. @todo: The plugins ssh, sftp do not behave if the suggested way! Fix them! """ _res = False _search_res = re.compile(sftpUrlRegex).search(remoteSource) if _search_res is not None: _res = True return _res def mount(self, source, mountbase): """Mount the source into the mountbase dir . This method should create a mount point to mount the source. The name of the mount point should be very expressive so that we avoid collision with other mount points @param source: The remote path @param mountbase: The mount points base dir @return: The mount point complete path """ #make the mount point spliturl = SplittedURL(source) mountpoint = self.__get_mount_dir(mountbase, spliturl) if not os.path.exists(mountpoint) : os.mkdir(mountpoint) #If the path is already mounted No need to retry if not self.checkifmounted(source, mountbase) : # Create output log file outptr, outFile = mkstemp(prefix = "sftpFuseFAMmount_output_") # Create error log file errptr, errFile = mkstemp(prefix = "sftpFuseFAMmount_error_") # the option 'allow_root' is necessary to grant access # if the script is invoked as superuser curl_cmd = ["curlftpfs", "-o", "direct_io"] if spliturl.user and spliturl.password: curl_cmd.append("-o") opts = "user=%s:%s" % (spliturl.user, spliturl.password) curl_cmd.append(opts) if os.getuid() == 0: curl_cmd.append("-o") curl_cmd.append("allow_root") server = spliturl.server if spliturl.port: server += ":" + spliturl.port curl_cmd.append(server) curl_cmd.append(mountpoint) # Call the subprocess using convenience method try: retval = subprocess.call(curl_cmd, 0, None, None, outptr, errptr) except OSError, _exc: os.rmdir(mountpoint) raise FuseFAMException(_("Couldn't found external application 'curlftpfs' needed for handling of sftp sites: %s") % _exc) # Close log handles os.close(errptr) os.close(outptr) outStr, errStr = local_file_utils.readfile(outFile), local_file_utils.readfile(errFile) local_file_utils.delete(outFile) local_file_utils.delete(errFile) if retval != 0: os.rmdir(mountpoint) raise FuseFAMException(_("Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s") % {'server' : spliturl.server , 'mountpoint': mountpoint, 'error':errStr}) else: pass # it is already mounted, do nothing remote_site = "sftp://" + spliturl.server if spliturl.port: remote_site += ":" + spliturl.port return (remote_site, mountpoint, spliturl.pathinside) def getdoc(self): """Returns a short documentation of this plugin. """ doc = _("SFTP schema is like : sftp://user:pass@server/anything") return doc def checkifmounted(self, source, mountbase): """Checks if the given source is already mounted in given directory. @return: True if mounted, False if not """ spliturl = SplittedURL(source) mountpoint = self.__get_mount_dir(mountbase, spliturl) return os.path.ismount(mountpoint) def __defineMountDirName(self, spliturl): """ Helper method that builds the name of the mount directory. """ dirname = "sftp_" if spliturl.user : dirname += spliturl.user + "@" dirname += spliturl.server if spliturl.port: dirname += "_%s" % spliturl.port return dirname def __get_mount_dir(self, mountbase, spliturl): """Helper method that builds the full path to the mountpoint. """ mountpoint = os.path.join(mountbase, self.__defineMountDirName(spliturl)) return mountpoint class SplittedURL: """This will match the RE and give us a group like ('sftp://', 'test:pass@', 'wattazoum-vm.ft.nn', 'ddd/kjlh/klhkl/vvvv') @param remote: the remote site address @type remote: String @return: the address split into protocol, user, password, server and path on server @rtype: Tuple of Strings """ def __init__(self, url): exp = re.compile(sftpUrlRegex) match = exp.search(url) if match is None: raise FuseFAMException(_("Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The '/' after server is mandatory)") % url) self.user = match.group(2) self.password = match.group(3) self.server = match.group(4) self.port = match.group(6) self.pathinside = match.group(7) sbackup-0.11.6/src/sbackup/__init__.py0000644000175000017500000000000112216122127016212 0ustar peerpeer sbackup-0.11.6/src/sbackup/metainfo.in0000644000175000017500000000034712216122127016250 0ustar peerpeer# # template file for meta data # do not edit this file directly # in order to modify data used here, edit the file 'METAINFO' # located in the root directory of the development branch instead # VERSION=@version@ PKGNAME=@pkgname@ sbackup-0.11.6/src/sbackup/ui/0000755000175000017500000000000012216122133014524 5ustar peerpeersbackup-0.11.6/src/sbackup/ui/restoregui.py0000644000175000017500000012533212216122127017277 0ustar peerpeer# Simple Backup - Restoration GUI in GTK+ # # Copyright (c)2008-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from sbackup.util.exceptions import NotSupportedError """ :mod:`SBRestoreGTK` --- Restoration GUI in GTK+ ================================================ .. module:: SBRestoreGTK :synopsis: Implements the Restoration GUI in GTK+ .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) .. moduleauthor:: Jean-Peer Lorenz """ from gettext import gettext as _ import traceback import sys import time import gtk import gobject import glib from GladeWindow import GladeWindow from GladeWindow import ProgressbarMixin from sbackup.fs_backend import fam import sbackup.util as Util from sbackup.util import log from sbackup.core.ConfigManager import ConfigManager, ConfigurationFileHandler from sbackup.core.SnapshotManager import SnapshotManager from sbackup.core.RestoreManager import RestoreManager from sbackup.util.log import LogFactory import sbackup.ar_backend.tar as TAR from sbackup.pkginfo import Infos from sbackup.util import exceptions from sbackup.util import tasks from sbackup.util import constants from sbackup.util import pathparse from sbackup.util import local_file_utils from sbackup.ar_backend.tar import Dumpdir from sbackup.util import system from sbackup.ui import misc from sbackup.ui import gtk_rsrc sys.excepthook = misc.except_hook_threaded system.launch_dbus_if_required() # initialize threading before running a main loop gtk.gdk.threads_init() class SBRestoreGTK(GladeWindow, ProgressbarMixin): __msg_statusbar = { "restore" : _("Restore..."), "restore_as" : _("Restore as..."), "revert" : _("Revert..."), "revert_as" : _("Revert as...") } def __init__(self, parent = None): GladeWindow.__init__(self, gladefile = Util.get_resource_file(gtk_rsrc.RESTOREGUI_GLADEFILE), widget_list = gtk_rsrc.get_restoregui_widgets(), handlers = gtk_rsrc.get_restoregui_handlers(), root = gtk_rsrc.RESTOREGUI_TOPWINDOW, parent = parent, pull_down_dict = None) self.set_top_window(self.widgets[gtk_rsrc.RESTOREGUI_TOPWINDOW]) gtk.window_set_default_icon_from_file(Util.get_resource_file(constants.RESTORE_ICON_FILENAME)) # setup progress bar ProgressbarMixin.__init__(self, self.widgets['progressbar']) self._init_pulse() self.logger = LogFactory.getLogger(level = 10) self.config = self.__get_configuration() self.__default_destination_path = self.config.get_destination_path() self.currentSnp = None self.currentsbdict = None self.currSnpFilesInfos = None self.restoreman = None self.snpman = None self.target = None self.__fam_target_hdl = fam.get_fam_target_handler_facade_instance() self.__fop = fam.get_file_operations_facade_instance() # tree stores self.snplisttreestore = gtk.TreeStore(str, str) self.flisttreestore = gtk.TreeStore(str, str) self.flisttreesort = gtk.TreeModelSort(self.flisttreestore) self.historylisttreestore = gtk.TreeStore(str) self.__init_treeviews() self.widgets['snpdetails'].set_sensitive(False) self.__context_id = None self.__init_statusbar() # firstly initialize destination with target of default profile self._defaultdest_active = True self.widgets['defaultradiob'].set_active(True) self._apply_defaultradiob_state() self.widgets['defaultfolderlabel'].set_text(_("n.a.")) self._defaultdest_active = True gobject.idle_add(self.__set_destination, self.__default_destination_path) self.__restore_dialog = RestoreDialog(parent = self) def __get_configuration(self): _configfile_hdl = ConfigurationFileHandler() _config = None _configfile = _configfile_hdl.get_conffile() if local_file_utils.path_exists(_configfile): _config = ConfigManager(_configfile) else: _config = ConfigManager() return _config def __init_treeviews(self): self.widgets['snplisttreeview'].set_model(self.snplisttreestore) acolumn = gtk.TreeViewColumn(_("Snapshots"), gtk.CellRendererText(), text = 0) bcolumn = gtk.TreeViewColumn(_("Version"), gtk.CellRendererText(), text = 1) self.widgets['snplisttreeview'].append_column(acolumn) self.widgets['snplisttreeview'].append_column(bcolumn) self.flisttreesort.set_sort_column_id(0, gtk.SORT_ASCENDING) self.widgets['filelisttreeview'].set_model(self.flisttreesort) acolumn1 = gtk.TreeViewColumn(_("Path"), gtk.CellRendererText(), text = 0) self.widgets['filelisttreeview'].append_column(acolumn1) self.widgets['filelisttreeview'].set_search_column(0) acolumn1.set_sort_column_id(0) acolumn2 = gtk.TreeViewColumn(_("State"), gtk.CellRendererText(), text = 1) self.widgets['filelisttreeview'].append_column(acolumn2) self.widgets['historytv'].set_model(self.historylisttreestore) acolumn3 = gtk.TreeViewColumn(_("Snapshots"), gtk.CellRendererText(), text = 0) self.widgets['historytv'].append_column(acolumn3) def _set_topwin_widgets_sensitive(self, value): self.widgets['defaultradiob'].set_sensitive(value) self.widgets['vbox_customdest'].set_sensitive(value) self.widgets['calendar'].set_sensitive(value) self.widgets['snplisttreeview'].set_sensitive(value) self.widgets['snpmanExpander'].set_sensitive(value) self.widgets['restoreExpander'].set_sensitive(value) self.widgets['snpdetails'].set_sensitive(value) def _make_topwin_busy(self, busy, message = None): if busy: misc.set_watch_cursor(widget = self.top_window) self._set_topwin_widgets_sensitive(False) self.__send_statusbar_msg(message) else: self._set_topwin_widgets_sensitive(True) misc.unset_cursor(widget = self.top_window) self.__clean_statusbar_msg() return False def __set_destination(self, path): self._make_topwin_busy(True, _("Connect to destination...")) self.__clear_calendar() try: self.__fam_target_hdl.set_destination(path) self.__fam_target_hdl.set_initialize_callback(self.__set_destination_done_cb) self.__fam_target_hdl.initialize() except exceptions.FileAccessException, error: gobject.idle_add(self._make_topwin_busy, False) self.widgets['customradiob'].set_active(True) # fall back to custom destination in case of error self._show_destination_error(error) def __set_destination_done_cb(self, error): if error is not None: gobject.idle_add(self._make_topwin_busy, False) self.widgets['customradiob'].set_active(True) # fall back to custom destination in case of error self._show_destination_error(error) else: gobject.idle_add(self.__set_destination_done) def __set_destination_done(self): self.target = self.__fam_target_hdl.query_mount_uri() if self.__fam_target_hdl.dest_path_exists() is False: # no errors so far self.widgets['customradiob'].set_active(True) # fall back to custom destination in case of error gobject.idle_add(self._show_destination_error, _("Specified path does not exist")) self.__fam_target_hdl.set_terminate_callback(self._set_dest_failed_cb) gobject.idle_add(self.__fam_target_hdl.terminate) else: if self._defaultdest_active: self.widgets['defaultfolderlabel'].set_text(self.__fam_target_hdl.query_dest_display_name()) self.snpman = SnapshotManager(self.target) self.restoreman = RestoreManager(self.__fam_target_hdl) self.widgets["restoreExpander"].set_expanded(False) self.__fill_calendar() today = time.localtime() # select the current day self.widgets["calendar"].select_month(today[1] - 1, today[0]) self.widgets["calendar"].select_day(today[2]) self.on_calendar_day_selected() gobject.idle_add(self._make_topwin_busy, False) def _set_dest_failed_cb(self, error): self._make_topwin_busy(False) if error is not None: self._show_destination_error(error) gobject.idle_add(self._on_set_dest_failed) def _on_set_dest_failed(self): pass def _term_fam_done_cb(self, error): self._make_topwin_busy(False) if error is not None: self._show_destination_error(error) gobject.idle_add(self._on_term_fam_done) def _on_term_fam_done(self): self.config = None gobject.idle_add(gtk.main_quit) def __init_statusbar(self): """Initializes the statusbar, i.e. gets the context (here 'sbackup restore') and displays 'Ready'. """ if self.__context_id is not None: raise AssertionError("Statusbar cannot be intialized multiple times!") self.__context_id = self.widgets['statusbar'].get_context_id("sbackup restore") self.__send_statusbar_msg(message = _("Ready")) def __send_statusbar_msg(self, message): """Puts the given message on the statusbar's message stack and returns the id. @param message: The message that should be displayed @type message: String @return: the id of the message @rtype: Integer @raise AssertionError: if the statusbar is not initialized """ if self.__context_id is None: raise AssertionError("Please initialize statusbar first!") message = misc.get_statusbar_msg_mode(message) message_id = self.widgets['statusbar'].push(self.__context_id, message) return message_id def __clean_statusbar_msg(self, message_id = None): """Removes a message from the statusbar's message stack. If a message id is given this particular message is removed from the stack. If no id is given the last message is removed from stack. Whenever it is possible one should use the message id to remove a certain message to prevent unwanted removal of 'other' messages. @param message_id: the id of the message to remove @type message_id: Integer @return: None @raise AssertionError: if the statusbar is not initialized """ if self.__context_id is None: raise AssertionError("Please initialize statusbar first!") if message_id is None: self.widgets['statusbar'].pop(self.__context_id) else: self.widgets['statusbar'].remove_message(self.__context_id, message_id) # def status_callback(self, getstatus): # """ # @todo: FIX ME - this does not work that way! # """ # return False # n,m, subm = getstatus() # if (n,m,subm) == (None,None,None): # return False # if n : self.widgets['statusBar'].set_fraction(n) # if m : self.widgets['statusBarLabel'].set_text(m) # if subm : self.widgets['statusBar'].set_text(subm) def __fill_calendar(self): """ Fill the calendar with the snapshots of the month """ self.widgets['calendar'].clear_marks() if self.snpman is not None: date = self.widgets["calendar"].get_date() fromDate = "-".join([str(date[0]), "%02d" % (int(date[1]) + 1), "01"]) toDate = "-".join([str(date[0]), "%02d" % (int(date[1]) + 1), "31"]) snplist = self.snpman.get_snapshots_allformats_by_timespan_ro(fromDate, toDate) for snapshot in snplist : self.widgets["calendar"].mark_day(int(snapshot.getDate()["day"])) self.snplisttreestore.clear() self.flisttreestore.clear() self.widgets['snpdetails'].set_sensitive(True) self.widgets['buttonspool'].set_sensitive(False) def __clear_calendar(self): self.widgets['calendar'].clear_marks() self.snplisttreestore.clear() self.flisttreestore.clear() self.widgets['box_management'].set_sensitive(False) def on_defaultradiob_toggled(self, *args): #IGNORE:W0613 self._apply_defaultradiob_state() if self.widgets['defaultradiob'].get_active(): if not self._defaultdest_active: self._defaultdest_active = True if self.__fam_target_hdl.is_initialized() and\ (self.__fam_target_hdl.get_destination() == self.__default_destination_path): pass else: self.__fam_target_hdl.set_terminate_callback(self._custom_fam_term_cb) self.__fam_target_hdl.terminate() elif self.widgets['customradiob'].get_active() : if self._defaultdest_active: self._defaultdest_active = False def _default_fam_term_cb(self, error): if error is not None: self._show_destination_error(error) ltarget = self.widgets["customentry"].get_text() gobject.idle_add(self.__set_destination, ltarget) def _custom_fam_term_cb(self, error): if error is not None: self._show_destination_error(error) gobject.idle_add(self.__set_destination, self.__default_destination_path) def on_customapply_clicked(self, *args): #IGNORE:W0613 """Reload all backup info from a custom location """ _ntarget = self.widgets["customentry"].get_text() if _ntarget == "": gobject.idle_add(self._show_destination_error, _("No destination specified")) else: if self.__fam_target_hdl.is_initialized() and\ (self.__fam_target_hdl.get_destination() == _ntarget): pass else: self.__fam_target_hdl.set_terminate_callback(self._default_fam_term_cb) self.__fam_target_hdl.terminate() def _apply_defaultradiob_state(self): if self.widgets['defaultradiob'].get_active(): self.widgets['custominfos'].set_sensitive(False) elif self.widgets['customradiob'].get_active(): self.widgets['custominfos'].set_sensitive(True) def on_customchooser_clicked(self, *args): #IGNORE:W0613 dialog = gtk.FileChooserDialog(_("Choose a source folder"), None, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) dialog.set_local_only(False) if dialog.run() == gtk.RESPONSE_OK: self.widgets["customentry"].set_text(dialog.get_current_folder()) dialog.destroy() def on_calendar_month_changed(self, *args): #IGNORE:W0613 self.__fill_calendar() def on_calendar_day_selected(self, *args): #IGNORE:W0613 if self.snpman is not None: self.currentSnp = None self.widgets["restoreExpander"].set_expanded(False) self.widgets['snpmanExpander'].set_expanded(False) self.widgets['box_management'].set_sensitive(False) self._make_topwin_busy(True, _("Reading snapshots...")) _date = self.widgets['calendar'].get_date() gobject.idle_add(self.load_snapshotslist, _date) # _task = tasks.WorkerThread(self.load_snapshotslist) # _task.set_finish_callback(self._on_init_fam_done) # _task.start(_date) def on_snplisttreeview_cursor_changed(self, *args): #IGNORE:W0613 self.flisttreestore.clear() self.widgets["restoreExpander"].set_expanded(False) self.widgets['snpmanExpander'].set_expanded(False) tstore, iter = self.widgets['snplisttreeview'].get_selection().get_selected() if iter is not None: self.currentSnp = self.snpman.get_snapshot_allformats(str(tstore.get_value(iter, 0))) self.widgets['box_management'].set_sensitive(True) def on_filelisttreeview_row_expanded(self, tv, iter, path, user_data = None): """ When a row in the file tree view is expanded, we populate it with children (unless they are there already). """ if self.flisttreestore.iter_nth_child(self.flisttreesort.convert_iter_to_child_iter(None, iter), 1): return self._make_topwin_busy(True, _("Reading directory content...")) gobject.idle_add(self.appendContent, self.path_to_dir(path), self.flisttreesort.convert_iter_to_child_iter(None, iter)) def path_to_dir(self, path): """ Recievs path in the treestore (as tuple) and returns a directory path as string. """ g = list(path) p = "" while g != []: i = self.flisttreestore.get_iter(self.flisttreesort.convert_path_to_child_path(tuple(g))) p = pathparse.ensure_leading_sep((self.flisttreestore.get_value(i, 0) + p)) g = g[:-1] return p def show_dir(self, path, rootiter): """ Worker function - adds all files/directories from the filez list to the treestore at the rootiter. """ # hack to get the dir filled with some "loading" dummy = self.flisttreestore.iter_children(rootiter) son = self.currentsbdict.getSon(self.__fop.joinpath(path)) if son : for d in dict.iterkeys(self.currentsbdict.getSon(self.__fop.joinpath(path))): iter = self.flisttreestore.append(rootiter, [d]) if self.currentsbdict.getSon(self.__fop.joinpath(path), d): self.flisttreestore.append(iter, [_("Loading ...")]) if dummy : self.flisttreestore.remove(dummy) def on_filelisttreeview_cursor_changed(self, *args): #IGNORE:W0613 tstore, iter = self.widgets['filelisttreeview'].get_selection().get_selected() if iter is not None: self.widgets['buttonspool'].set_sensitive(True) # deactivate restore buttons if the selection is not included in state = tstore.get_value(iter, 1) if state == Dumpdir.getHRCtrls()['N'] : self.widgets['restore'].set_sensitive(False) self.widgets['restoreas'].set_sensitive(False) else: self.widgets['restore'].set_sensitive(True) self.widgets['restoreas'].set_sensitive(True) def on_filelisttreeview_unselect_all(self, *args): #IGNORE:W0613 self.widgets['buttonspool'].set_sensitive(False) def appendContent(self, path, rootiter): """ append the content in the tree store @param path: The path to add the content of. @param rootiter: the GTKIter that indexes the row """ dummy = self.flisttreestore.iter_children(rootiter) content = self.currSnpFilesInfos.getContent(path) # content is a list of Dumpdirs if not content : # content is empty, do nothing pass else : for f in content : iter = self.flisttreestore.append(rootiter, [f.getFilename(), f.getHumanReadableControl()]) if f.getControl() == TAR.Dumpdir.DIRECTORY : self.flisttreestore.append(iter, [_("Loading ..."), None]) if dummy : self.flisttreestore.remove(dummy) self._make_topwin_busy(False) def __load_filestree(self): """Method that loads the files list from a snapshot. It uses threads and shows a progressbar. @return: None """ self.flisttreestore.clear() self.widgets['buttonspool'].set_sensitive(False) self.currSnpFilesInfos = self.currentSnp.getSnapshotFileInfos() if self.currSnpFilesInfos is not None: # load the items in background self.__get_snpfileinfo_items_bg() def __get_snpfileinfo_items_bg_done(self, *args): #IGNORE:W0613 """Shows the tree of files within the GUI. We need to use the magic *args parameter due to the use of this method as callback function. Exceptions that were raised within the thread are handled here. @param args: parameters of this method; used as follows: [0] - the id of the prior set statusbar message [1] - the result of the threaded retrieval of items @return: None @raise ValueError: If number of parameters mismatch """ if len(args) != 2: raise ValueError("Method expects excatly 2 arguments! "\ "Got %s instead." % len(args)) _statbar_msgid = args[0] # the first parameter given to the callback _items = args[1] # result of the worker task (auto added) # if a statusbar message was set, clean it now if _statbar_msgid: self.__clean_statusbar_msg(_statbar_msgid) self._stop_pulse() self._make_topwin_busy(True, _("Reading files from snapshot...")) gobject.idle_add(self.__show_filestree, _items) def __show_filestree(self, items): """Shows the tree of files within the GUI. @param items: result of the threaded retrieval of items @return: None """ # check if an exception was returned if isinstance(items, Exception): self.logger.error(str(items)) self.logger.error(traceback.format_exc()) self._show_errmessage(message_str = str(items), boxtitle = _("Simple Backup restore error"), headline_str = _("An error occurred while reading snapshot")) items = None if not items : # first items is empty self.flisttreestore.append(None, [_("This snapshot seems empty."), None]) self.widgets['snpdetails'].set_sensitive(False) else : self.widgets['snpdetails'].set_sensitive(True) for k in items : # add k and append the content if not empty _iter = self.flisttreestore.append(None, [k, TAR.Dumpdir.getHRCtrls()[TAR.Dumpdir.DIRECTORY]]) self.appendContent(k, _iter) self._make_topwin_busy(False) def __get_snpfileinfo_items_bg(self): """This method shows a message in the statusbar and retrieves the snapshot informations in background (threaded). After finishing the retrieval the method '__show_filestree' is called. @return: None """ self._set_topwin_widgets_sensitive(False) _statbar_msgid = self.__send_statusbar_msg(_("Reading backup snapshot...")) self._start_pulse() _task = tasks.WorkerThread(self.currSnpFilesInfos.getFirstItems) _task.set_finish_callback(gobject.idle_add, self.__get_snpfileinfo_items_bg_done, _statbar_msgid) _task.start() def load_snapshotslist(self, date): """ load the snapshot list for that date @param date: a tupe (year, month, day) using the Calendar.get_date convention ie month is 0-11 """ day = "-".join([str(date[0]), "%02d" % (int(date[1]) + 1), "%02d" % date[2]]) self.logger.debug("Selected day : " + day) snplist = self.snpman.get_snapshots_allformats_by_date_ro(day, force_reload = True) self.snplisttreestore.clear() self.flisttreestore.clear() gobject.idle_add(self.widgets['snpdetails'].set_sensitive, True) gobject.idle_add(self.widgets['buttonspool'].set_sensitive, False) if snplist == []: self.snplisttreestore.append(None, [_("No backups found for this day."), None]) gobject.idle_add(self.widgets['snplisttreeview'].set_sensitive, False) else: gobject.idle_add(self.widgets['snplisttreeview'].set_sensitive, True) for snapshot in snplist: self.snplisttreestore.append(None, [snapshot.getName(), snapshot.getVersion()]) self._make_topwin_busy(False) def on_restoreExpander_activate(self, *args): #IGNORE:W0613 if not self.widgets["restoreExpander"].get_expanded(): tstore, iter = self.widgets['snplisttreeview'].get_selection().get_selected() if iter: self.currentSnp = self.snpman.get_snapshot_allformats(str(tstore.get_value(iter, 0))) if self.currentSnp.getVersion() != Infos.SNPCURVERSION: message = _("Snapshot version is not supported (Only %(supportedversion)s is supported). Version '%(currentversion)s' found.") % {'supportedversion': Infos.SNPCURVERSION, 'currentversion':self.currentSnp.getVersion() } self.logger.warning(message) dialog = gtk.MessageDialog(flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE, message_format = message) dialog.run() dialog.destroy() self.widgets["snpdetails"].set_sensitive(False) else: self.__load_filestree() else: self.widgets["snpdetails"].set_sensitive(False) def on_restore_clicked(self, *args): #IGNORE:W0613 tstore, iter = self.widgets['filelisttreeview'].get_selection().get_selected() if iter is not None: src = self.path_to_dir(tstore.get_path(iter)) dialog = gtk.MessageDialog(parent = None, flags = 0, type = gtk.MESSAGE_QUESTION, buttons = gtk.BUTTONS_YES_NO, message_format = "Do you really want to restore backuped copy of '%s' ?" % src) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: self.__restore_bg(mode = "restore", restore_callable = self.restoreman.restore, source = src, dirname = None) def on_restoreas_clicked(self, *args): #IGNORE:W0613 tstore, iter = self.widgets['filelisttreeview'].get_selection().get_selected() if iter is not None: src = self.path_to_dir(tstore.get_path(iter)) dialog = gtk.FileChooserDialog(title = _("Select restore location") , action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_filename(src) result = dialog.run() dirname = dialog.get_filename() dialog.destroy() if result == gtk.RESPONSE_OK: dialog = gtk.MessageDialog(parent = None, flags = 0, type = gtk.MESSAGE_QUESTION, buttons = gtk.BUTTONS_YES_NO, message_format = "Do you really want to restore backuped copy of '%s' to '%s' ?" % (src, dirname)) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: self.__restore_bg(mode = "restore_as", restore_callable = self.restoreman.restoreAs, source = src, dirname = dirname) def on_revert_clicked(self, *args): #IGNORE:W0613 tstore, iter = self.widgets['filelisttreeview'].get_selection().get_selected() if iter is not None: src = self.path_to_dir(tstore.get_path(iter)) dialog = gtk.MessageDialog(parent = None, flags = 0, type = gtk.MESSAGE_QUESTION, buttons = gtk.BUTTONS_YES_NO, message_format = _("Do you really want to revert '%s'?") % src) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: self.__restore_bg(mode = "revert", restore_callable = self.restoreman.revert, source = src, dirname = None) def on_revertas_clicked(self, *args): #IGNORE:W0613 tstore, iter = self.widgets['filelisttreeview'].get_selection().get_selected() if iter is not None: src = self.path_to_dir(tstore.get_path(iter)) dialog = gtk.FileChooserDialog(title = _("Select revert location") , action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_filename(src) result = dialog.run() dirname = dialog.get_filename() dialog.destroy() if result == gtk.RESPONSE_OK: dialog = gtk.MessageDialog(parent = None, flags = 0, type = gtk.MESSAGE_QUESTION, buttons = gtk.BUTTONS_YES_NO, message_format = _("Do you really want to revert '%(source)s' to '%(dir)s'?")\ % {'source' : src, 'dir' : dirname}) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: self.__restore_bg(mode = "revert_as", restore_callable = self.restoreman.revertAs, source = src, dirname = dirname) def __restore_bg(self, mode, restore_callable, source, dirname = None): """Helper method that creates a thread for the restoration process in background and shows an appropriate dialog box. The distinction between reverting and restoring is done by using a 'mode' variable. @param mode: operation mode of the restoration @param restore_callable: the object that actually performs the restoration @param source: what should be restored (filename/directory) @param dirname: where should it restored; if not set the original location is used @type mode: String @type restore_callable: callable object @type source: String @type dirname: String (if used) @return: None """ snapshot = self.currentSnp statbar_msgid = self.__send_statusbar_msg(self.__msg_statusbar[mode]) self.__restore_dialog.set_mode(mode) self.__restore_dialog.set_info(source, dirname) self.__restore_dialog.begin_restore() _task = tasks.WorkerThread(restore_callable) _task.set_finish_callback(gobject.idle_add, self.__restore_finished, statbar_msgid) if dirname is None: _task.start(snapshot, source) else: _task.start(snapshot, source, dirname) def __restore_finished(self, *args): """Callback method that is called after finishing of a restoration process. We need to use the magic *args parameter due to the use of this method as callback function. Exceptions that were raised within the thread are handled here. @param args: parameters of this method; used as follows: [0] - the id of the prior set statusbar message [1] - the result of the threaded restoration @return: None @raise ValueError: If number of parameters mismatch """ if len(args) != 2: raise ValueError("Method expects excatly 2 arguments! "\ "Got %s instead." % len(args)) # this is the paramter given to the callback _statbar_msgid = args[0] # this is the result of the thread _result = args[1] self.__clean_statusbar_msg(_statbar_msgid) if isinstance(_result, Exception): self.logger.error(str(_result)) self.__restore_dialog.finish_failure(_result) else: self.__restore_dialog.finish_sucess() def on_snpmanExpander_activate(self, *args): if not self.widgets['snpmanExpander'].get_expanded(): if self.currentSnp: self._make_topwin_busy(True, _("Reading snapshot...")) _ver = self.currentSnp.getVersion() self._make_topwin_busy(False) if _ver == Infos.SNPCURVERSION: self.widgets["txt_current_base"].set_text(str(self.currentSnp.getBase())) self.widgets["deleteBox"].show() else : self.widgets["deleteBox"].hide() message = _("Snapshot version is not supported (Only %(supportedversion)s is supported). Version '%(currentversion)s' found.") % {'supportedversion': Infos.SNPCURVERSION, 'currentversion':self.currentSnp.getVersion() } self.logger.warning(message) dialog = gtk.MessageDialog(flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE, message_format = message) dialog.run() dialog.destroy() else: self.widgets["deleteBox"].hide() def on_deleteButton_clicked(self, *args): if self.currentSnp is not None: if self.snpman.is_standalone_snapshot(self.currentSnp): message = _("Deleting the selected snapshot `%s` will remove your backup for this particular point in time. You cannot undo this operation.\n\nAre you sure that you want to remove the snapshot permanently?")\ % self.currentSnp dialog = misc.msgdialog(message_str = message, msgtype = gtk.MESSAGE_QUESTION, parent = self.top_window, buttons = gtk.BUTTONS_YES_NO, headline_str = _("Do you really want to remove snapshot?")) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: try: self.logger.debug("Trying to remove snapshot '%s'" % self.currentSnp.getName()) self.snpman.removeSnapshot(self.currentSnp) except exceptions.SBackupError, error: self.logger.exception("Error while delete snapshot: %s" % error) _message_str = _("While attempting to delete snapshot the following error occurred:\n%s")\ % error _boxtitle = _("Simple Backup error") _headline_str = _("Unable to delete snapshot") gobject.idle_add(self._show_errmessage, _message_str, _boxtitle, _headline_str) self.snpman.get_snapshots_allformats_ro(force_reload = True) self.on_calendar_day_selected() else: message = _("The selected snapshot '%s' is referenced by more recent snapshots as base snapshot.\n\nRemove all of these child snapshots in order to delete this snapshot.")\ % self.currentSnp misc.show_infodialog(message_str = message, parent = self.top_window, headline_str = _("Unable to remove snapshot")) def on_exportmanExpander_activate(self, *args): #TODO: on_exportmanExpander_activate pass def gtk_main_quit(self, *args): self._make_topwin_busy(True, _("Termination in progress")) try: self.__fam_target_hdl.set_terminate_callback(self._term_fam_done_cb) self.__fam_target_hdl.terminate() except AttributeError: pass def main(self): gtk.main() class RestoreDialog(GladeWindow, ProgressbarMixin): """This is the window that appears if the restoration process is invoked. """ __messages = \ { "restore" : { "dialog_titletxt": _("Simple Backup restoration"), "msg_headline" : _("Restoring of selected files"), "msg_progress" : _("Restoring of '%s' is in progress."), "msg_sucess" : _("Restoring of '%s' was successful."), "msg_failure" : _("Restoring of '%s' was not successful.\n\nFollowing error occurred:\n") }, "restore_as" : { "dialog_titletxt" : _("Simple Backup restoration"), "msg_headline" : _("Restoring of selected files"), "msg_progress" : _("Restoring of '%(source)s'\nto '%(dirname)s' is in progress."), "msg_sucess" : _("Restoring of '%(source)s'\nto '%(dirname)s' was successful."), "msg_failure" : _("Restoring of '%(source)s'\nto '%(dirname)s' was not successful.\n\nFollowing error occurred:\n") }, "revert" : { "dialog_titletxt" : _("Simple Backup restoration"), "msg_headline" : _("Reverting selected files"), "msg_progress" : _("Reverting of '%s' is in progress.\n"), "msg_sucess" : _("Reverting of '%s' was successful."), "msg_failure" : _("Reverting of '%s' was not successful.\n\nFollowing error occurred:\n") }, "revert_as" : { "dialog_titletxt" : _("Simple Backup restoration"), "msg_headline" : _("Reverting selected files"), "msg_progress" : _("Reverting of '%(source)s'\nto '%(dirname)s' is in progress."), "msg_sucess" : _("Reverting of '%(source)s'\nto '%(dirname)s' was successful."), "msg_failure" : _("Reverting of '%(source)s'\nto '%(dirname)s' was not successful.\n\nFollowing error occurred:\n") }, } def __init__(self, parent): """Default constructor. """ _gladefile = Util.get_resource_file('sbackup-restore.glade') _wdgt_lst = [ 'restoreDialog', 'txt_title', 'txt_content', 'button_cancel', 'button_close', 'restore_progressbar' ] _hdls = [ '_on_button_close_clicked' ] _top_win_name = 'restoreDialog' GladeWindow.__init__(self, gladefile = _gladefile, widget_list = _wdgt_lst, handlers = _hdls, root = _top_win_name, parent = parent, pull_down_dict = None) self.set_top_window(self.widgets[_top_win_name]) self.top_window.set_icon_from_file(\ Util.get_resource_file("sbackup-restore.png")) ProgressbarMixin.__init__(self, self.widgets['restore_progressbar']) self.__mode = None self.__source = None self.__dirname = None self._init_pulse() def _on_button_close_clicked(self, *args): """Event handler for clicking the close button. """ self.top_window.hide() def set_mode(self, mode): """Sets the operation mode for this dialog. @param mode: the operation mode; valid values are: 'restore' 'restore_as' 'revert' 'revert_as' @type mode: String @return: None """ self.__mode = mode def set_info(self, source, dirname): """The given informations about the source and the directory are set. """ self.__source = source self.__dirname = dirname def begin_restore(self): """Signals the beginning of the restoration process using the prior set informations. @return: NoneS """ dirname = self.__dirname source = self.__source msgs = self.__messages[self.__mode] if dirname is None: begin_msg = msgs["msg_progress"] % (glib.markup_escape_text(source)) else: begin_msg = msgs["msg_progress"] % {"source" : glib.markup_escape_text(source), "dirname" : glib.markup_escape_text(dirname)} self.widgets['button_close'].set_sensitive(False) self.widgets['txt_title'].set_markup(msgs["msg_headline"]) self.widgets['txt_content'].set_markup(begin_msg) self.top_window.show() self._start_pulse() def finish_sucess(self): """Signals the successful finish of the restoration process. @return: None """ dirname = self.__dirname source = self.__source msgs = self.__messages[self.__mode] if dirname is None: msg_sucess = msgs["msg_sucess"] % (glib.markup_escape_text(source)) else: msg_sucess = msgs["msg_sucess"] % {"source" : glib.markup_escape_text(source), "dirname" : glib.markup_escape_text(dirname)} self._stop_pulse() self.widgets['restore_progressbar'].hide() self.widgets['txt_content'].set_markup(msg_sucess) self.widgets['button_close'].set_sensitive(True) def finish_failure(self, failure): """Signals the finish of the restoration process if a failure happened. @param failure: the failure that happend @type failure: any object that is reprintable using 'str()' @return: None """ dirname = self.__dirname source = self.__source msgs = self.__messages[self.__mode] if dirname is None: msg_failure = msgs["msg_failure"] % (glib.markup_escape_text(source)) else: msg_failure = msgs["msg_failure"] % {"source" : glib.markup_escape_text(source), "dirname" : glib.markup_escape_text(dirname)} msg_failure = "%s\n%s." % (msg_failure, str(failure)) self._stop_pulse() self.widgets['restore_progressbar'].hide() self.widgets['txt_content'].set_markup(msg_failure) self.widgets['button_close'].set_sensitive(True) def main(argv): system.nice() restore_win = SBRestoreGTK() restore_win.show() restore_win.main() log.shutdown_logging() sbackup-0.11.6/src/sbackup/ui/GladeGnomeApp.py0000644000175000017500000001241712216122127017551 0ustar peerpeer# Simple Backup - Base class for Gnome applications (deprecated) # # Copyright (c)2010: Jean-Peer Lorenz # Copyright (c)2007: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import os import gtk.glade import gnome import gnome.ui # required by GnomeAppBar def search_file(filename, search_path): """Given a search path, find file """ file_found = 0 paths = search_path.split(os.pathsep) for path in paths: if os.path.exists(os.path.join(path, filename)): file_found = 1 break if file_found: return os.path.abspath(os.path.join(path, filename)) else: return None #---------------------------------------------------------------------- class GladeGnomeApp(object): '''A base class for displaying a GUI developed with Glade; create a subclass and add any callbacks and other code; the derived class __init__ method needs to call GladeWindow.__init__; callbacks that start with on_ are automatically connected''' #---------------------------------------------------------------------- @classmethod def set_search_path(cls, path): '''set the search path for looking for the .glade files''' cls.search_path = path #---------------------------------------------------------------------- def __init__(self, app_name, app_version, filename, top_window, widget_list, handlers, pull_down_dict = None): ''' __init__(self, app_name, app_version, filename, top_window, widget_list, pull_down_dict=None): app_name, app_version : application name and version filename: filename of the .glade file top_window: the glade name of the top level widget (this will then be accessible as self.top_window) widget_list: a list of glade names; the dictionary self.widgets will be created that maps these name to the actual widget object pull_down_dict: a dictionary that maps combo names to a tuple of strings to put in the combo ''' self.widget_list = widget_list try: search_path = GladeGnomeApp.search_path except: search_path = './' gnome.program_init(app_name, app_version) fname = search_file(filename, search_path) self.xml = gtk.glade.XML(fname, domain = 'sbackup') # prepare callbacks self.cb_dict = {} for f in handlers: self.cb_dict[f] = getattr(self, f) self.widgets = {} for w in self.widget_list: self.widgets[w] = self.xml.get_widget(w) if pull_down_dict is not None: for w, l in pull_down_dict.items(): self.widgets[w].set_popdown_strings(l) # set attribute for top_window so it can be accessed as self.top_window self.top_window = self.xml.get_widget(top_window) # window to show when this one is hidden self.prev_window = None # initialize callback func self.cb_func = None def set_top_window(self, top_window): '''set_top_window(self, top_window): notebook pages that are in containers need to be able to change their top window, especially so the dialog is set_transient_for the actual main window ''' self.top_window = top_window # def set_callback_function(self, cb_func, *cb_args, **cb_kwargs): # # '''set_callback_function(cb_func, *cb_args, **cb_kwargs): # # stores the cb_func and its cb_args and cb_kwargs # ''' # self.cb_func = cb_func # self.cb_args = cb_args # self.cb_kwargs = cb_kwargs def show(self, center = 1, prev_window = None, *args): '''show(self, center=1, prev_window=None, *args): display the top_window widget ''' if prev_window is not None: self.prev_window = prev_window # if center: # self.top_window.set_position(gtk.WIN_POS_CENTER_ALWAYS) # else: # self.top_window.set_position(gtk.WIN_POS_NONE) self.top_window.show() def hide(self): '''hide(self): hides the current window, shows self.prev_window if self.cb_func is not None, it is called with its cb_args and cb_kwargs ''' self.top_window.hide() if self.prev_window is not None: self.prev_window.show() # if self.cb_func is not None: # self.cb_func(*self.cb_args, **self.cb_kwargs) if self.prev_window is None: gtk.main_quit() sbackup-0.11.6/src/sbackup/ui/__init__.py0000644000175000017500000000000112216122127016627 0ustar peerpeer sbackup-0.11.6/src/sbackup/ui/configgui.py0000644000175000017500000026206012216122127017061 0ustar peerpeer# Simple Backup - Configuration GUI (GTK+) # # Copyright (c)2009-2010: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import re import os import sys import types import gobject import glib import gtk from sbackup.util import log from sbackup.util import system from sbackup.util.log import LogFactory from sbackup.util.exceptions import SBException from sbackup.core import ConfigManager from sbackup.core.ConfigManager import ConfigurationFileHandler from sbackup.core.ConfigManager import ConfigManagerStaticData import sbackup.util as Util from sbackup.ui.GladeGnomeApp import GladeGnomeApp from sbackup.ui import misc from sbackup.ui import gtk_rsrc from sbackup.fs_backend import fam from sbackup.util import exceptions from sbackup.util import pathparse from sbackup.util import constants from sbackup.util import local_file_utils sys.excepthook = misc.except_hook system.launch_dbus_if_required() class SBconfigGTK(GladeGnomeApp): """ @todo: Unify displaying of error messages/dialog boxes! @todo: Strictly separate UI from core. Don't set defaults from the UI (business logic in handler). @todo: Use functions from ConfigManager to set the paths in a consistent manner. @todo: Configuration handling must be reviewed. Direct manipulation of the configuration from widget's signal handler is *really* errorprone and hard to debug (e.g. clearing a text input field from the source code/application side before filling it with new content currently yields in the removal of the according config option and the config is unintentionally changed). """ # why class variables? configman = None conffile = None orig_configman = None plugin_manager = None def __init__(self): """Default constructor. """ # it is distinguished between the 'current' conffile and # the 'default file' configuring the default profile self.default_conffile = None self.__configFileHandler = ConfigurationFileHandler() _path_conffile = self.__configFileHandler.get_default_conffile_fullpath() if os.path.exists(_path_conffile): self.default_conffile = _path_conffile self.conffile = self.default_conffile self.configman = ConfigManager.ConfigManager(self.default_conffile) # hack to get rid of schedule settings in non-admin profiles # we just remove existing schedules from the config files # and don't allow new settings by disabling the schedule page if os.geteuid() != 0: self.configman.remove_schedule() self.configman.saveConf() # end of hack self.orig_configman = ConfigManager.ConfigManager(self.default_conffile) else: self.configman = ConfigManager.ConfigManager() self.orig_configman = None gobject.idle_add(_notify_new_default_profile_created) self.logger = LogFactory.getLogger() self.__destination_uri_obj = None self.__destination_hdl = None self.__destination_failure = False GladeGnomeApp.__init__(self, app_name = "SBackup", app_version = "0.2", filename = Util.get_resource_file(gtk_rsrc.CONFIGGUI_GLADEFILE), top_window = gtk_rsrc.CONFIGGUI_TOPWINDOW, widget_list = gtk_rsrc.get_configgui_widgets(), handlers = gtk_rsrc.get_configgui_handlers()) gtk.window_set_default_icon_from_file(Util.get_resource_file(constants.CONFIG_ICON_FILENAME)) # hide the schedule tab if not root if not system.is_superuser(): self.__enable_schedule_page(enable = False) self.widgets['label_schedule_page'].set_tooltip_text(\ _('Scheduled backups are available for Administrator users only.')) # Initiate all data structures # Paths to be included or excluded self.include = gtk.ListStore(str) self.includetv = self.widgets["includetv"] self.includetv.set_model(self.include) cell = gtk.CellRendererText() cell.set_property('editable', True) cell.connect('edited', self.cell_edited_callback, (self.include, "dirconfig", 1)) column = gtk.TreeViewColumn(_('Name'), cell, text = 0) self.includetv.append_column(column) self.ex_paths = gtk.ListStore(str) self.ex_pathstv = self.widgets["ex_pathstv"] self.ex_pathstv.set_model(self.ex_paths) cell1 = gtk.CellRendererText() cell1.set_property('editable', True) cell1.connect('edited', self.cell_edited_callback, (self.ex_paths, "dirconfig", 0)) column1 = gtk.TreeViewColumn(_('Name'), cell1, text = 0) self.ex_pathstv.append_column(column1) # Excluded file types and general regular expressions self.ex_ftype = gtk.ListStore(str, str) self.ex_ftypetv = self.widgets["ex_ftypetv"] self.ex_ftypetv.set_model(self.ex_ftype) cell3 = gtk.CellRendererText() column3 = gtk.TreeViewColumn(_('File Type'), cell3, text = 0) cell2 = gtk.CellRendererText() column2 = gtk.TreeViewColumn('Ext.', cell2, text = 1) self.ex_ftypetv.append_column(column3) self.ex_ftypetv.append_column(column2) self.ex_regex = gtk.ListStore(str) self.ex_regextv = self.widgets["ex_regextv"] self.ex_regextv.set_model(self.ex_regex) cell4 = gtk.CellRendererText() cell4.set_property('editable', True) cell4.connect('edited', self.cell_regex_edited_callback) column4 = gtk.TreeViewColumn('Name', cell4, text = 0) self.ex_regextv.append_column(column4) # Profile Manager # [ enable , profilename, cfPath ] self.profiles = gtk.ListStore(bool, str, str) # add the default profile and disable any modification to it self.profiles.append([True, ConfigManagerStaticData.get_default_profilename(), self.__configFileHandler.get_default_conffile_fullpath()]) for i, v in self.configman.getProfiles().iteritems() : self.profiles.append([v[1], i, v[0]]) self.profilestv = self.widgets['profilesListTreeView'] self.profilestv.set_model(self.profiles) cell8, cell9 = gtk.CellRendererToggle(), gtk.CellRendererText() cell8.set_active(True) cell8.connect("toggled", self.on_prfEnableCB_toggled) enableCBColumn = gtk.TreeViewColumn(_("Enable"), cell8, active = 0) prfNameColumn = gtk.TreeViewColumn(_("Profile Name"), cell9, text = 1) self.profilestv.append_column(enableCBColumn) self.profilestv.append_column(prfNameColumn) # The split size coices self.splitSizeLS = misc.set_model(widget = self.widgets['splitsizeCB'], values = ConfigManagerStaticData.get_splitsize_dict()) self.__model_remote_services = misc.set_model(widget = self.widgets['cmb_set_remote_service'], values = fam.get_remote_services_avail()) self._fill_widgets_from_config(probe_fs = True) self.xml.signal_autoconnect(self.cb_dict) def isConfigChanged(self, force_the_change = False): """Checks whether the current configuration has changed compared to the configuration which was originally loaded resp. stored on last save action. The result (irrespective whether it was forced or not) is returned by the method. @param force_the_change: Flag that that forces the check to be True (i.e. the method acts as there were changes regardless of the real test result) @return: True if the config has changed, False otherwise @rtype: Boolean """ changed = not self.configman.isConfigEquals(self.orig_configman) if force_the_change == True: changed = True self.widgets['save'].set_sensitive(changed) self.widgets['saveButton'].set_sensitive(changed) return changed def ask_save_config(self): """Checks whether the configuration has changed and displays a dialog window if so. The user then can decide to save, not to save the configuration or to cancel the process. @return: False if the user pressed 'yes' or 'no'; True in any other case @rtype: Boolean """ cancelled = False changed = self.isConfigChanged() if changed: question = self.widgets['askSaveDialog'] question.set_title("") response = question.run() question.hide() if response == gtk.RESPONSE_YES: self.on_save_clicked() elif response == gtk.RESPONSE_NO: pass else: cancelled = True return cancelled def __fill_dir_widgets_from_config(self): """Fills the directory include and exclude tabs according to the values found in the current configuration. """ _section = "dirconfig" self.include.clear() self.ex_paths.clear() dirconfig = self.configman.get_dirconfig_local() if dirconfig is not None: for _item, _value in dirconfig: if _value == 1: self.include.append([_item]) elif _value == 0: self.ex_paths.append([_item]) def __fill_regex_widgets_from_config(self): # regexp excludes _known_ftypes_dict = ConfigManagerStaticData.get_known_ftypes_dict() _invalid_regex_found = False _invalid_regex = "" self.ex_ftype.clear() self.ex_regex.clear() if self.configman.has_option("exclude", "regex") : r = self.configman.get("exclude", "regex") if not Util.is_empty_regexp(r): _list = str(r).split(",") for i in _list: # Bugfix LP #258542 if re.match(r"\\\.\w+\$", i): _ftype = i[2:len(i) - 1] if _ftype in _known_ftypes_dict: self.ex_ftype.append([_known_ftypes_dict[_ftype], _ftype]) else: self.ex_ftype.append([_("Custom"), _ftype]) else: if (not Util.is_empty_regexp(i)) and Util.is_valid_regexp(i): self.ex_regex.append([i]) else: r = Util.remove_conf_entry(r, i) self.logger.warning(_("Invalid or empty regular expression ('%s') found in configuration. Removed.") % i) _invalid_regex_found = True _invalid_regex = "%s, %s" % (_invalid_regex, i) if _invalid_regex_found: self.configman.set("exclude", "regex", r) self.isConfigChanged() _msg = _("Invalid or empty regular expressions found\nin configuration file:\n'%s'\n\nThese expressions are not used and were\nremoved from the configuration.")\ % (_invalid_regex.lstrip(",")) gobject.idle_add(misc.show_errdialog, _msg, self.__get_application_widget()) def __fill_max_filesize_widgets_from_config(self): """Sets the UI elements for 'maximum size limit' to the value specified in configuration. """ if self.configman.has_option("exclude", "maxsize"): _maxsize = self.configman.getint("exclude", "maxsize") self.widgets["ex_maxsize"].set_value(_maxsize / (1024 * 1024)) if _maxsize > 0: self.widgets["ex_maxsize"].set_sensitive(True) self.widgets["ex_max"].set_active(True) else: self.widgets["ex_maxsize"].set_sensitive(False) self.widgets["ex_max"].set_active(False) else: self.widgets["ex_maxsize"].set_sensitive(False) self.widgets["ex_max"].set_active(False) def __fill_followlinks_widgets_from_config(self): """Sets the UI elements for 'followlinks' to the value specified in configuration. """ section = "general" option = "followlinks" followlinks = False if self.configman.has_option(section, option): config_fl = self.configman.get(section, option) if config_fl is True or config_fl == 1 or config_fl == "1": followlinks = True self.widgets["followlinks"].set_active(followlinks) def __fill_compression_widgets_from_config(self): """Sets the UI elements for 'compression format' to the value specified in configuration. """ cformats = ConfigManagerStaticData.get_compr_formats() cformatOpt = self.configman.get_compress_format() if cformatOpt not in cformats: cformatOpt = 'none' cformatIndex = cformats.index(cformatOpt) self.widgets["cformat"].set_active(cformatIndex) def __fill_purge_widgets_from_config(self): """Sets the UI elements for 'purge' to the value specified in configuration. """ if self.configman.has_option("general", "purge"): self.logger.debug("Setting purge") if self.configman.get("general", "purge") == "log": self.widgets['logpurgeradiobutton'].set_active(True) self.widgets["purgecheckbox"].set_active(True) else: try : purge = int(self.configman.get("general", "purge")) except Exception, e: self.logger.error("Purge value '%s' is invalid: '%s'" \ % (self.configman.get("general", "purge"), e)) purge = 30 self.widgets['purgedays'].set_text(str(purge)) self.widgets['purgeradiobutton'].set_active(True) self.widgets["purgedays"].set_sensitive(True) self.on_purgedays_changed() self.widgets['purgecheckbox'].set_active(True) else: self.widgets["purgecheckbox"].set_active(False) self.on_purgecheckbox_toggled() def __fill_max_inc_widgets_from_config(self): """Sets the UI elements for 'Maximum of inc' to the value specified in configuration. """ if self.configman.has_option("general", "maxincrement"): self.widgets["time_maxinc"].set_value(\ int(self.configman.get("general", "maxincrement"))) def __fill_log_widgets_from_config(self): """Sets the UI elements for 'log' to the value specified in configuration. """ _default_config = ConfigManager.get_default_config_obj() if not self.configman.has_section("log"): self.configman.add_section("log") if not self.configman.has_option("log", "level"): self.configman.set("log", "level", _default_config.get_loglevel()) if not self.configman.has_option("log", "file"): self.configman.set_logdir(_default_config.get_logdir()) self.configman.set_logfile_templ_to_config() loglevel = str(self.configman.get("log", "level")) # LP #1159705 valid_levels = ConfigManagerStaticData.get_valid_loglevels() selection = valid_levels[loglevel][1] self.widgets["loglevelcombobox"].set_active(selection) self.widgets["logfilechooser"].set_current_folder(self.configman.get_logdir()) def __fill_report_widgets_from_config(self): """Sets the UI elements for 'report' to the value specified in configuration. @todo: Handling of non-existing settings must be removed and unified. """ _from = "" _to = "" _server = "" _port = "" _user = "" _passw = "" _cert = None _key = None if self.configman.has_section("report"): if self.configman.has_option("report", "from"): _from = self.configman.get("report", "from") if self.configman.has_option("report", "to"): _to = self.configman.get("report", "to") if self.configman.has_option("report", "smtpserver"): _server = self.configman.get("report", "smtpserver") if self.configman.has_option("report", "smtpport"): _port = self.configman.get("report", "smtpport") if self.configman.has_option("report", "smtpuser") or \ self.configman.has_option("report", "smtppassword"): self.widgets["smtplogincheckbox"].set_active(True) self.widgets['smtplogininfo'].set_sensitive(True) if self.configman.has_option("report", "smtpuser"): _user = self.configman.get("report", "smtpuser") if self.configman.has_option("report", "smtppassword"): _passw = self.configman.get("report", "smtppassword") else: self.widgets["smtplogincheckbox"].set_active(False) self.widgets['smtplogininfo'].set_sensitive(False) if self.configman.has_option("report", "smtptls"): self.widgets["TLScheckbutton"].set_active(True) self.widgets['TLSinfos'].set_sensitive(True) else: self.widgets["TLScheckbutton"].set_active(False) if self.configman.has_option("report", "smtpcert") or \ self.configman.has_option("report", "smtpkey"): self.widgets["SSLradiobutton"].set_active(True) self.__enable_ssl_options(enable = True) if self.configman.has_option("report", "smtpcert"): _cert = self.configman.get("report", "smtpcert") self.widgets['crtfilechooser'].set_filename(_cert) if self.configman.has_option("report", "smtpkey"): _key = self.configman.get("report", "smtpkey") self.widgets['keyfilechooser'].set_filename(_key) else : self.widgets["TLSradiobutton"].set_active(True) self.__enable_ssl_options(enable = False) self.widgets["smtpfrom"].set_text(_from) self.widgets["smtpto"].set_text(_to) self.widgets["smtpserver"].set_text(_server) self.widgets["smtpport"].set_text(_port) self.widgets["smtplogin"].set_text(_user) self.widgets["smtppassword"].set_text(_passw) def __fill_schedule_widgets(self, from_func): """Sets the UI elements for 'schedule' to the value specified in configuration (only from configuration or from file and file system). @param from_func: function object reference which is called in order to retrieve the current cron state @note: Purpose of the given function object is to use this method with `ConfigManager.get_schedule` as well as `ConfigManager.get_schedule_and_probe`. @todo: Implement signature checking. """ if not isinstance(from_func, types.MethodType): raise TypeError("Given parameter 'from_func' must be of type "\ "Method. Got %s instead." % (type(from_func))) if system.is_superuser() and self.configman.is_default_profile(): self.__enable_schedule_page(enable = True) croninfos = from_func() # = (isCron, val) # any schedule information was found if croninfos is not None: # scheduled using Cron i.e. a custom setting if croninfos[0] == 1: self.__set_schedule_option('custom') self.__set_value_txtfld_custom_cronline(croninfos[1]) # scheduled using Anacron elif croninfos[0] == 0: self.__set_schedule_option('simple') self.__set_value_cmbbx_simple_schedule_freq(croninfos[1]) # no scheduled backups else: self.__set_schedule_option('no') else: self.__enable_schedule_page(enable = False) def __fill_splitsize_widgets_from_config(self): if self.configman.has_option("general", "splitsize") : model = self.widgets["splitsizeCB"].get_model() custom = True for i in range(0, len(model)) : if model[i][1] == int(self.configman.get("general", "splitsize")) / 1024: self.widgets["splitsizeCB"].set_active(i) self.__enable_splitsize_custom_option(enable = False) custom = False if custom: # NOTE: if we don't do this is this order, the handler # on splitsizeCB will overide splitsizeSB value self.widgets["splitsizeSB"].set_value(\ int(self.configman.get("general", "splitsize")) / 1024) self.widgets["splitsizeCB"].set_active(0) def __dest_from_config_helper(self): """Creates and returns a TargetHandlerInstance with set destination path as stored/set in ConfigurationManager. """ if self.__destination_uri_obj is None: self.__destination_uri_obj = pathparse.UriParser() self.__destination_uri_obj.set_and_parse_uri(uri = self.configman.get_destination_path()) _dest = fam.get_fam_target_handler_facade_instance() _dest.set_destination(self.__destination_uri_obj.uri) return _dest def __fill_destination_widgets(self): """Helper method which fills the UI widgets related to the backup target (i.e. destination). """ _dest = self.__dest_from_config_helper() ctarget = _dest.query_dest_display_name() self.logger.debug("Current destination: %s" % ctarget) if _dest.is_local(): self.__set_target_label("local", ctarget) if not _dest.dest_path_exists(): _sec = _("A common mistake is a not mounted external disk.") _msg = _("Backup destination folder `%s` does not exist.\n\nPlease make "\ "sure the missing directory exists and check your settings on the "\ "destination settings page.") % ctarget _hdl = _("Unable to open backup destination") gobject.idle_add(misc.show_errdialog, _msg, self.__get_application_widget(), _hdl, _sec) else: self.__set_target_label("remote", ctarget) def _fill_widgets_from_config(self, probe_fs): """Prefill the GTK window with config infos. @param probe_fs: Flag whether to probe the filesystem for schedule info @todo: Opening of directories (e.g. target) must be unified over all modules that use such functionality! """ if not isinstance(probe_fs, types.BooleanType): raise TypeError("Given parameter must be of boolean type. "\ "Got %s instead." % (type(probe_fs))) try: # General self.__fill_max_inc_widgets_from_config() self.__fill_compression_widgets_from_config() self.__fill_splitsize_widgets_from_config() # dirconfig and excludes self.__fill_dir_widgets_from_config() self.__fill_regex_widgets_from_config() # other exclude reasons self.__fill_max_filesize_widgets_from_config() self.__fill_followlinks_widgets_from_config() # target (= destination) self.__fill_destination_widgets() # schedule - with probing the filesystem or without if probe_fs: sched_func = self.configman.get_schedule_and_probe else: sched_func = self.configman.get_schedule self.__fill_schedule_widgets(from_func = sched_func) # Purging self.__fill_purge_widgets_from_config() # Log and report self.__fill_log_widgets_from_config() self.__fill_report_widgets_from_config() self.__fill_statusbar_from_config() except exceptions.NonValidOptionException, error: gobject.idle_add(self.__config_invalid_cb, error, probe_fs) else: # self.__set_default_focus() self.isConfigChanged() def __config_invalid_cb(self, error, probe_fs): dialog = gtk.MessageDialog(type = gtk.MESSAGE_ERROR, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE, message_format = _("%s\n\n"\ "A backup profile using default values was created. "\ "Save the new configuration in order to use it or "\ "check your existing configuration file manually.\n\n"\ "Important note: Saving will overwrite your "\ "existing invalid configuration.") % str(error)) dialog.run() dialog.destroy() self.configman = ConfigManager.ConfigManager() self.orig_configman = None gobject.idle_add(self._fill_widgets_from_config, probe_fs) # def __set_default_focus(self): # self.widgets['label_general_page'].grab_focus() def __fill_statusbar_from_config(self): """Sets the profile name and the user mode. """ stattxt = _("Current profile: %s") % self.configman.getProfileName() stattxt = misc.get_statusbar_msg_mode(stattxt) self.widgets['statusBar'].push(stattxt) def __enable_splitsize_custom_option(self, enable = True): """Enables resp. disables widgets for setting a custom archive splitsize. """ self.widgets["splitsizeSB"].set_sensitive(enable) self.widgets["label_splitsize_custom"].set_sensitive(enable) def __enable_target_option(self, option): """The widgets within the 'Destination' page are enabled/disabled/set according to the given option. Unusable widgets are automatically disabled. """ def __enable_local_target(enable = True): """The widgets within the 'Destination' page are enabled/disabled/set according to the given local target directory. """ self.widgets["dest_local"].set_sensitive(enable) self.widgets["btn_browse_local"].set_sensitive(enable) def __enable_remote_target(enable = True): """The widgets within the 'Destination' page are enabled/disabled/set according to the given remote target. """ self.widgets["dest_remote_light"].set_sensitive(enable) self.widgets["dest_remote"].set_sensitive(enable) self.widgets["btn_set_remote"].set_sensitive(enable) if option == "local": __enable_local_target(enable = True) __enable_remote_target(enable = False) elif option == "remote": __enable_local_target(enable = False) __enable_remote_target(enable = True) else: raise ValueError("Unknown target option given.") def __set_target_label(self, option, value): """Selects resp. sets the given choice for backup target. Valid options are 'local' and 'remote'. """ self.__enable_target_option(option) twidget = None if option == "local": twidget = self.widgets["dest2"] label = self.widgets["dest_local"] elif option == "remote": twidget = self.widgets["dest3"] label = self.widgets["dest_remote"] else: raise ValueError("Unknown target option given.") label.set_text(value) twidget.set_active(True) twidget.grab_focus() def already_inc (self, configlist, toInclude): """configlist is like self.conf.items( "dirconfig" ) @return: True if the dir is already included, False if not """ for i, v in configlist : if v == "1" and i == toInclude : # the chosen item match an included one dialog = gtk.MessageDialog(flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE, message_format = _("Already included item !")) dialog.run() dialog.destroy() return True # No match found return False def already_ex (self, configlist, toExclude): """configlist is like self.conf.items( "dirconfig" ) @return: True if the dir is already excluded, False if not """ for i, v in configlist : if v == "0" and i == toExclude : # the chosen item match an included one dialog = gtk.MessageDialog(flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE, message_format = _("Already excluded item !")) dialog.run() dialog.destroy() return True # No match found return False def cell_regex_edited_callback(self, cell, path, new_text): # Check if new path is empty if Util.is_empty_regexp(new_text): misc.show_errdialog(parent = self.__get_application_widget(), message_str = \ _("Empty expression. Please enter a valid regular expression.")) else: if Util.is_valid_regexp(new_text): # Remove old expression and add the new one value = self.ex_regex[path][0] r = self.configman.get("exclude", "regex") r = Util.remove_conf_entry(r, value) r = r + r"," + new_text.strip() r = r.strip(",") self.configman.set("exclude", "regex", r) self.ex_regex[path][0] = new_text self.isConfigChanged() else: misc.show_errdialog(parent = self.__get_application_widget(), message_str = \ _("Provided regular expression is not valid.")) def cell_edited_callback(self, cell, path, new_text, data): # Check if new path is empty if (new_text == None) or (new_text == ""): dialog = gtk.MessageDialog(type = gtk.MESSAGE_ERROR, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE, message_format = _("Empty filename or path. Please enter a valid filename or path.")) dialog.run() dialog.destroy() return # Check if new path exists and asks the user if path does not exists if not os.path.exists(new_text): dialog = gtk.MessageDialog(type = gtk.MESSAGE_QUESTION, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_YES_NO, message_format = _("It seems the path you entered does not exists. Do you want to add this incorrect path?")) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_NO: return model, section, value = data self.configman.remove_option(section, model[path][0]) model[path][0] = new_text self.configman.set(section, new_text, value) self.isConfigChanged() def on_ftype_toggled(self, *args): #IGNORE:W0613 if self.widgets["ftype_st"].get_active(): self.widgets["ftype_box"].set_sensitive(True) self.widgets["ftype_custom_ex"].set_sensitive(False) elif self.widgets["ftype_custom"].get_active(): self.widgets["ftype_box"].set_sensitive(False) self.widgets["ftype_custom_ex"].set_sensitive(True) def on_ftype_st_box_changed(self, *args): #IGNORE:W0613 #TODO: on_ftype_st_box_changed # print("TODO: on_ftype_st_box_changed") pass def on_save_activate(self, *args): #IGNORE:W0613 self.on_save_clicked() def on_save_as_activate(self, *args): #IGNORE:W0613 dialog = gtk.FileChooserDialog(title = _("Save configuration as..."), parent = self.__get_application_widget(), action = gtk.FILE_CHOOSER_ACTION_SAVE, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) response = dialog.run() if response == gtk.RESPONSE_OK : self.configman.saveConf(dialog.get_filename()) elif response == gtk.RESPONSE_CANCEL: pass dialog.destroy() def on_menu_help_activate(self, button): misc.open_uri("ghelp:sbackup") def on_menu_about_activate(self, *args): #IGNORE:W0613 misc.show_about_dialog(set_transient_for = self.widgets["sbackupConfApp"]) def on_reload_clicked(self, *args): #IGNORE:W0613 self.configman = ConfigManager.ConfigManager(self.conffile) # hack to get rid of schedule settings in non-default profiles # we just remove existing schedules from the non-default config files # and don't allow new settings by disabling the schedule page if not self.configman.is_default_profile(): self.configman.remove_schedule() self.configman.saveConf() # end of hack self.orig_configman = ConfigManager.ConfigManager(self.conffile) self._fill_widgets_from_config(probe_fs = True) self.isConfigChanged() self.logger.debug("Config '%s' loaded" % self.conffile) def on_save_clicked(self, *args): #IGNORE:W0613 self.logger.debug("Saving Config") self.configman.saveConf() self.conffile = self.configman.conffile if not self.default_conffile: self.default_conffile = self.conffile self.orig_configman = ConfigManager.ConfigManager(self.configman.conffile) self.isConfigChanged() def on_backup_clicked(self, *args): #IGNORE:W0613 cancelled = self.ask_save_config() if not cancelled: dialog = self.widgets["dialog_make_backup"] chkbtn_full_bak = self.widgets["checkbtn_make_backup_full"] btn_cancel = self.widgets['btn_cancel_make_backup'] btn_cancel.grab_focus() response = dialog.run() _full_bak = chkbtn_full_bak.get_active() dialog.hide() if response == gtk.RESPONSE_APPLY: _path_to_app = Util.get_resource_file(constants.BACKUP_COMMAND) _cmd = [_path_to_app] if _full_bak is True: _cmd.append("--full") _env = None if system.is_superuser(): _env = {} # clear environment system.exec_command_async(args = _cmd, env = _env) misc.show_infodialog(message_str = _("A backup process is now executed in the background.\n\nYou can monitor the progress of the backup by means of the status indicator displayed in the notification area."), parent = self.top_window, headline_str = _("Backup process started")) elif response == gtk.RESPONSE_CANCEL or \ response == gtk.RESPONSE_DELETE_EVENT: pass else: self.logger.error(_("Unexpected dialog response: %s") % response) raise ValueError("Unexpected dialog response: %s" % response) def on_cformat_changed(self, *args): #IGNORE:W0613 """ handle that sets the compression format """ selected = self.widgets["cformat"].get_active() cformats = ConfigManagerStaticData.get_compr_formats() if 0 <= selected < len(cformats): self.configman.set("general", "format", cformats[selected]) else : self.configman.remove_option("general", "format") if selected == cformats.index("none"): # 'none' -> activate split functionality self.widgets['splitsizevbox'].set_sensitive(True) else : self.widgets["splitsizeCB"].set_active(1) self.widgets['splitsizevbox'].set_sensitive(False) if self.configman.has_option("general", "splitsize"): self.configman.remove_option("general", "splitsize") self.on_splitsizeCB_changed() self.isConfigChanged() def on_cmb_set_remote_service_changed(self, *args): #IGNORE:W0613 pass # dialog = self.widgets['dialog_connect_remote'] # cmbbx = self.widgets['cmb_set_remote_service'] # model = cmbbx.get_model() # label, value = model[cmbbx.get_active()] # print "on_cmb_set_remote_service_changed - label: %s value: %s" % (label, value) # _user = self.widgets['entry_set_remote_user'] # _user_lab = self.widgets['label_set_remote_user'] # _pass = self.widgets['entry_set_remote_pass'] # _pass_lab = self.widgets['label_set_remote_pass'] # # if value == REMOTE_SERVICE_FTP_PUBLIC: # _user.hide() # _user_lab.hide() # _pass.hide() # _pass_lab.hide() # else: # _user.show() # _user_lab.show() # _pass.show() # _pass_lab.show() # _width, _height = dialog.get_size() # dialog.resize(width = _width, height = 1) def on_splitsizeCB_changed(self, *args): #IGNORE:W0613 """ """ model = self.widgets["splitsizeCB"].get_model() label, value = model[self.widgets["splitsizeCB"].get_active()] if value != -1 : self.__enable_splitsize_custom_option(enable = False) self.configman.set("general", "splitsize", value * 1024) else : # activate Spin box self.__enable_splitsize_custom_option(enable = True) val = self.widgets['splitsizeSB'].get_value_as_int() self.configman.set("general", "splitsize", val * 1024) self.isConfigChanged() def on_splitsizeSB_value_changed(self, *args): #IGNORE:W0613 """ """ val = int(self.widgets['splitsizeSB'].get_value()) self.configman.set("general", "splitsize", val * 1024) self.isConfigChanged() def on_inc_addfile_clicked(self, *args): #IGNORE:W0613 self.__check_for_section("dirconfig") dialog = gtk.FileChooserDialog(title = _("Include file..."), parent = self.__get_application_widget(), action = gtk.FILE_CHOOSER_ACTION_OPEN, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.set_name(_("All files")) filter.add_pattern("*") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: _file = _prepare_filename(dialog.get_filename()) _enc_file = _escape_path(_file) if not self.already_inc(self.configman.items("dirconfig", raw = True), _enc_file): self.include.append([_file]) self.configman.set("dirconfig", _enc_file, "1") self.isConfigChanged() dialog.destroy() def __check_for_section(self, section): if not self.configman.has_section(section): self.configman.add_section(section) def on_inc_adddir_clicked(self, *args): #IGNORE:W0613 self.__check_for_section("dirconfig") dialog = gtk.FileChooserDialog(title = _("Include folder..."), parent = self.__get_application_widget(), action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) response = dialog.run() if response == gtk.RESPONSE_OK: _dir = _prepare_dirname(dialog.get_filename()) _enc_dir = _escape_path(_dir) if not self.already_inc(self.configman.items("dirconfig", raw = True), _enc_dir): self.include.append([_dir]) self.configman.set("dirconfig", _enc_dir, "1") self.isConfigChanged() dialog.destroy() def on_inc_del_clicked(self, *args): self.__check_for_section("dirconfig") (store, iter) = self.includetv.get_selection().get_selected() if store and iter: enc_val = _escape_path(store.get_value(iter, 0)) self.configman.remove_option("dirconfig", enc_val) self.isConfigChanged() store.remove(iter) def on_ex_addfile_clicked(self, *args): self.__check_for_section("dirconfig") dialog = gtk.FileChooserDialog(title = _("Exclude file..."), parent = self.__get_application_widget(), action = gtk.FILE_CHOOSER_ACTION_OPEN, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.set_name(_("All files")) filter.add_pattern("*") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: _file = _prepare_filename(dialog.get_filename()) _enc_file = _escape_path(_file) if not self.already_inc(self.configman.items("dirconfig", raw = True), _enc_file): self.ex_paths.append([_file]) self.configman.set("dirconfig", _enc_file, "0") self.isConfigChanged() dialog.destroy() def on_ex_adddir_clicked(self, *args): self.__check_for_section("dirconfig") dialog = gtk.FileChooserDialog(title = _("Exclude folder..."), parent = self.__get_application_widget(), action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) response = dialog.run() if response == gtk.RESPONSE_OK: _dir = _prepare_dirname(dialog.get_filename()) _enc_dir = _escape_path(_dir) if not self.already_ex(self.configman.items("dirconfig", raw = True), _enc_dir): self.ex_paths.append([_dir]) self.configman.set("dirconfig", _enc_dir, "0") self.isConfigChanged() dialog.destroy() def on_ex_delpath_clicked(self, *args): self.__check_for_section("dirconfig") (store, iter) = self.ex_pathstv.get_selection().get_selected() if store and iter: enc_val = _escape_path(store.get_value(iter, 0)) self.configman.remove_option("dirconfig", enc_val) self.isConfigChanged() store.remove(iter) def on_dest_toggled(self, *args): if self.widgets["dest2"].get_active(): self.__enable_target_option("local") elif self.widgets["dest3"].get_active(): self.__enable_target_option("remote") # set changed path to destination if self.__destination_uri_obj is not None: _uri = self.__destination_uri_obj.uri self.configman.set("general", "target", _uri) self.isConfigChanged() else: raise ValueError("Unexpected widget was toggled.") def __enable_schedule_page(self, enable = True): """Enables resp. disables the complete schedule page including the tab label. @param enable: If True the page gets enabled, if False disabled. """ self.widgets["label_schedule_page"].set_sensitive(enable) self.widgets["rdbtn_no_schedule"].set_sensitive(enable) self.widgets["rdbtn_simple_schedule"].set_sensitive(enable) self.widgets["rdbtn_custom_schedule"].set_sensitive(enable) self.widgets["label_simple_schedule_freq"].set_sensitive(enable) self.widgets["cmbbx_simple_schedule_freq"].set_sensitive(enable) self.widgets["label_custom_cronline"].set_sensitive(enable) self.widgets["txtfld_custom_cronline"].set_sensitive(enable) self.widgets["img_schedule_infotext"].set_sensitive(enable) self.widgets["label_schedule_infotext"].set_sensitive(enable) def __enable_schedule_option(self, option): """Enables resp. disables the according widgets for the given schedule option. Values are not set. """ def __enable_no_scheduling(enable = True): """Enables resp. disables options related to 'No scheduling'. Values are not set. """ pass def __enable_simple_scheduling(enable = True): """Enables resp. disables options related to 'Simple scheduling'. Values are not set. """ self.widgets["label_simple_schedule_freq"].set_sensitive(enable) self.widgets["cmbbx_simple_schedule_freq"].set_sensitive(enable) def __enable_custom_scheduling(enable = True): """Enables resp. disables options related to 'Custom scheduling'. Values are not set. """ self.widgets["label_custom_cronline"].set_sensitive(enable) self.widgets["txtfld_custom_cronline"].set_sensitive(enable) if option == "no": __enable_no_scheduling(enable = True) __enable_simple_scheduling(enable = False) __enable_custom_scheduling(enable = False) elif option == "simple": __enable_no_scheduling(enable = False) __enable_simple_scheduling(enable = True) __enable_custom_scheduling(enable = False) elif option == "custom": __enable_no_scheduling(enable = False) __enable_simple_scheduling(enable = False) __enable_custom_scheduling(enable = True) else: raise ValueError("Unknown schedule option given.") def __set_schedule_option(self, option): self.__enable_schedule_option(option) if option == "no": self.widgets["rdbtn_no_schedule"].set_active(is_active = True) elif option == "simple": self.widgets["rdbtn_simple_schedule"].set_active(is_active = True) elif option == "custom": self.widgets["rdbtn_custom_schedule"].set_active(is_active = True) else: raise ValueError("Unknown schedule option given.") def __set_value_txtfld_custom_cronline(self, cronline): self.widgets['txtfld_custom_cronline'].set_text(cronline) def __set_value_cmbbx_simple_schedule_freq(self, frequency): _valid_freqs = ConfigManagerStaticData.get_simple_schedule_frequencies() if frequency in _valid_freqs.keys(): self.widgets['cmbbx_simple_schedule_freq'].set_active(\ _valid_freqs[frequency]) else: raise ValueError("Unknown anacron setting found!") def on_rdbtn_schedule_toggled(self, *args): if self.widgets["rdbtn_no_schedule"].get_active(): self.logger.debug("NO SCHEDULING selected.") self.__enable_schedule_option("no") _forcechange = self.configman.remove_schedule() self.isConfigChanged(_forcechange) elif self.widgets["rdbtn_simple_schedule"].get_active(): self.logger.debug("SIMPLE SCHEDULING selected.") self.__enable_schedule_option("simple") self.on_cmbbx_simple_schedule_freq_changed() elif self.widgets["rdbtn_custom_schedule"].get_active(): self.logger.debug("CUSTOM SCHEDULING selected.") self.__enable_schedule_option("custom") self.on_txtfld_custom_cronline_changed() else: raise ValueError("Unexpected radio button group member was changed.") def on_cmbbx_simple_schedule_freq_changed(self, *args): """Signal handler which is called whenever the schedule time frequency in the 'time_freq' combo box is changed. """ _selection = self.widgets["cmbbx_simple_schedule_freq"].get_active() _valid_freqs = ConfigManagerStaticData.get_simple_schedule_frequencies() if _selection in _valid_freqs.values(): for _freq_key in _valid_freqs.keys(): if _selection == _valid_freqs[_freq_key]: self.configman.setSchedule(0, _freq_key) self.isConfigChanged() self.logger.debug("Scheduling is: %s" % str(self.configman.get_schedule())) def on_txtfld_custom_cronline_changed(self, *args): _cronline = self.widgets['txtfld_custom_cronline'].get_text() # print "WE MUST CHECK THE INPUT!" #TODO: WE MUST CHECK THE INPUT! self.configman.setSchedule(1, _cronline) self.isConfigChanged() self.logger.debug("Scheduling is: %s" % str(self.configman.get_schedule())) def on_time_maxinc_changed(self, *args): """Adds a changed value for 'maximum increment days' to the configuration. """ self.configman.set("general", "maxincrement", int(self.widgets["time_maxinc"].get_value())) self.isConfigChanged() def __enable_purge_options(self, enable = True): self.widgets['purgeradiobutton'].set_sensitive(enable) self.widgets['purgedays'].set_sensitive(enable) self.widgets['purgelabel'].set_sensitive(enable) self.widgets['logpurgeradiobutton'].set_sensitive(enable) self.widgets['purgelabel2'].set_sensitive(enable) def on_purgecheckbox_toggled(self, *args): """Signal handler that is called whenever the state of the 'Purging' checkbox is toggled. """ purge = self.widgets["purgecheckbox"].get_active() if purge: self.__enable_purge_options(enable = True) self.on_purgeradiobutton_toggled() else: self.__enable_purge_options(enable = False) self.configman.remove_option("general", "purge") self.isConfigChanged() def on_purgeradiobutton_toggled(self, *args): if self.widgets["purgeradiobutton"].get_active(): self.widgets["purgedays"].set_sensitive(True) try: i = int(self.widgets["purgedays"].get_text()) except: i = -1 if not (i > 0 and i < 10000): i = 30 self.widgets["purgedays"].set_text(str(i)) self.configman.set("general", "purge", str(i)) self.isConfigChanged() elif self.widgets["logpurgeradiobutton"].get_active(): self.widgets["purgedays"].set_sensitive(False) self.configman.set("general", "purge", "log") self.isConfigChanged() def on_purgedays_changed(self, *args): try: i = int(self.widgets["purgedays"].get_text()) except: i = 30 if not (i > 0 and i < 10000): i = 30 self.configman.set("general", "purge", str(i)) self.isConfigChanged() def __enable_ssl_options(self, enable = True): self.widgets['label_certificate'].set_sensitive(enable) self.widgets['label_key'].set_sensitive(enable) self.widgets['keyfilechooser'].set_sensitive(enable) self.widgets['crtfilechooser'].set_sensitive(enable) def __get_application_widget(self): """Returns the top level application widget object. """ app_obj = self.widgets['sbackupConfApp'] return app_obj def on_testMailButton_clicked(self, *args): testmail_res = False if self.isConfigChanged(force_the_change = False) is True: misc.show_infodialog(parent = self.__get_application_widget(), headline_str = _("Configuration has changed"), message_str = _("There are unsaved modifications. Please save the configuration or revert these changes before testing the mail settings.")) else: try : testmail_res = self.configman.testMail() except SBException, _exc: misc.show_warndialog(parent = self.__get_application_widget(), headline_str = _("Test mail settings"), message_str = _("The test failed with following output:"), secmsg_str = "%s" % (_exc)) if testmail_res is True: misc.show_infodialog(parent = self.__get_application_widget(), headline_str = _("Test mail settings"), message_str = _("The test was successful.")) def on_smtplogincheckbox_toggled(self, *args): if self.widgets['smtplogincheckbox'].get_active(): self.widgets['smtplogininfo'].set_sensitive(True) if self.widgets['smtplogin'].get_text(): self.configman.set("report", "smtpuser", self.widgets['smtplogin'].get_text()) if self.widgets['smtppassword'].get_text() : self.configman.set("report", "smtpuser", self.widgets['smtppassword'].get_text()) else: self.widgets['smtplogininfo'].set_sensitive(False) if self.configman.has_option("report", "smtpuser") : self.configman.remove_option("report", "smtpuser") if self.configman.has_option("report", "smtppassword") : self.configman.remove_option("report", "smtppassword") self.isConfigChanged() def __enable_secure_email_options(self, enable = True): self.widgets['TLSinfos'].set_sensitive(enable) def on_TLScheckbutton_toggled(self, *args): """Signal handler that is called when the checkbutton for 'secure email connection' is checked/unchecked. """ if self.widgets['TLScheckbutton'].get_active(): # secure connection is enabled self.__enable_secure_email_options(enable = True) self.configman.set("report", "smtptls", "1") else: # *NO* secure connection self.__enable_secure_email_options(enable = False) if self.configman.has_option("report", "smtptls") : self.configman.remove_option("report", "smtptls") if self.configman.has_option("report", "smtpcert") : self.configman.remove_option("report", "smtpcert") if self.configman.has_option("report", "smtpkey") : self.configman.remove_option("report", "smtpkey") self.isConfigChanged() def on_TLSradiobutton_toggled(self, *args): if self.widgets['TLSradiobutton'].get_active(): # TLS (i.e. no cert/key required) self.__enable_ssl_options(enable = False) if self.configman.has_option("report", "smtpcert"): self.configman.remove_option("report", "smtpcert") if self.configman.has_option("report", "smtpkey"): self.configman.remove_option("report", "smtpkey") elif self.widgets['SSLradiobutton'].get_active(): self.__enable_ssl_options(enable = True) if self.widgets['crtfilechooser'].get_filename() : self.on_crtfilechooser_selection_changed() if self.widgets['keyfilechooser'].get_filename() : self.on_keyfilechooser_selection_changed() else: raise ValueError("Unexpected signal received.") self.isConfigChanged() def on_ex_addftype_clicked(self, *args): """Signal handler that is called when the user presses the 'Add filetype' exclude button. @note: A dot separating filename and extension is added automatically. """ _known_ftypes_dict = ConfigManagerStaticData.get_known_ftypes_dict() dialog = self.widgets["ftypedialog"] response = dialog.run() dialog.hide() if response == gtk.RESPONSE_OK: if self.widgets["ftype_st"].get_active(): ftype = self.widgets["ftype_box"].get_model()\ [self.widgets["ftype_box"].get_active()][0] else: ftype = self.widgets["ftype_custom_ex"].get_text() r = r"" if self.configman.has_option("exclude", "regex"): r = self.configman.get("exclude", "regex") # Bugfix LP #258542 ftype_regex = r"\.%s$" % ftype.strip() _sep = "," if _sep in ftype_regex: _msg = _("The given expression contains unsupported characters ('%s'). Currently it is not possible to use these characters in exclude expressions.") % _sep misc.show_warndialog(message_str = _msg, parent = self.__get_application_widget(), headline_str = _("Unsupported character")) else: if not Util.has_conf_entry(r, ftype_regex): r = Util.add_conf_entry(r, ftype_regex) self.configman.set("exclude", "regex", r) if ftype in _known_ftypes_dict: self.ex_ftype.append([_known_ftypes_dict[ftype], ftype]) else: self.ex_ftype.append([_("Custom"), ftype]) else: pass self.isConfigChanged() def on_ex_delftype_clicked(self, *args): """ @todo: Check whether escaping of value (re.escape(value)) before \ adding it is required? """ (store, iter) = self.ex_ftypetv.get_selection().get_selected() if store and iter: value = store.get_value(iter, 1) r = self.configman.get("exclude", "regex") # Bugfix LP #258542 ftype_regex = r"\.%s$" % value r = Util.remove_conf_entry(r, ftype_regex) self.configman.set("exclude", "regex", r) self.isConfigChanged() store.remove(iter) def on_ex_addregex_clicked(self, *args): """Signal handler which is called when button 'Add regex' for exclusion is clicked. """ dialog = self.widgets["regexdialog"] response = dialog.run() dialog.hide() if response == gtk.RESPONSE_OK: regex = self.widgets["regex_box"].get_text() _sep = "," if _sep in regex: _msg = _("The given expression contains unsupported characters ('%s'). Currently it is not possible to use these characters in exclude expressions.") % _sep misc.show_warndialog(message_str = _msg, parent = self.__get_application_widget(), headline_str = _("Unsupported character")) elif Util.is_empty_regexp(regex): misc.show_errdialog(parent = self.__get_application_widget(), message_str = \ _("Empty expression. Please enter a valid regular expression.")) else: if Util.is_valid_regexp(regex): r = r"" if self.configman.has_option("exclude", "regex"): r = self.configman.get("exclude", "regex") if not Util.has_conf_entry(r, regex): r = Util.add_conf_entry(r, regex) self.configman.set("exclude", "regex", r) self.ex_regex.append([regex]) else: misc.show_errdialog(parent = self.__get_application_widget(), message_str = \ _("Provided regular expression is not valid.")) else: pass self.isConfigChanged() def on_ex_delregex_clicked(self, *args): (store, iter) = self.ex_regextv.get_selection().get_selected() if store and iter: value = store.get_value(iter, 0) r = self.configman.get("exclude", "regex") r = Util.remove_conf_entry(r, value) self.configman.set("exclude", "regex", r) self.isConfigChanged() store.remove(iter) def on_includetv_key_press_event(self, widget, event, *args): #IGNORE:W0613 if event.keyval == gtk.keysyms.Delete : self.on_inc_del_clicked() def on_ex_pathstv_key_press_event(self, widget, event, *args): #IGNORE:W0613 if event.keyval == gtk.keysyms.Delete : self.on_ex_delpath_clicked() def on_ex_ftypetv_key_press_event(self, widget, event, *args): #IGNORE:W0613 if event.keyval == gtk.keysyms.Delete : self.on_ex_delftype_clicked() def on_ex_regextv_key_press_event(self, widget, event, *args): #IGNORE:W0613 if event.keyval == gtk.keysyms.Delete : self.on_ex_delregex_clicked() def on_ex_max_toggled(self, *args): #IGNORE:W0613 """Signal handler which is called whenever the checkbutton 'Do not backup files bigger than' is checked resp. unchecked. """ _exclude_max = self.widgets["ex_max"].get_active() if _exclude_max: self.widgets["ex_maxsize"].set_sensitive(True) self.on_ex_maxsize_changed() else: self.widgets["ex_maxsize"].set_sensitive(False) self.configman.remove_option("exclude", "maxsize") self.isConfigChanged() def on_ex_maxsize_changed(self, *args): #IGNORE:W0613 """Signal handler which is called when the value for maximum file size is changed. The number (from the text field) is interpreted as Megabyte (MB). """ msize = int(self.widgets["ex_maxsize"].get_value()) self.configman.set("exclude", "maxsize", str(msize * 1024 * 1024)) self.isConfigChanged() def on_followlinks_toggled(self, *args): #IGNORE:W0613 if self.widgets['followlinks'].get_active(): self.configman.set("general", "followlinks", 1) else : self.configman.remove_option("general", "followlinks") self.isConfigChanged() def on_btn_browse_local_clicked(self, *args): #IGNORE:W0613 _dest = self.__dest_from_config_helper() ctarget = _dest.query_dest_display_name() self.logger.debug("Current destination: %s" % ctarget) self.widgets["dialog_browse_localdest"].set_current_folder(ctarget) gobject.idle_add(self.__browse_localdest) def __browse_localdest(self): dialog = self.widgets["dialog_browse_localdest"] dialog.set_transient_for(self.__get_application_widget()) response = dialog.run() if response == gtk.RESPONSE_APPLY: dialog.hide() _target = dialog.get_filename() if _target is None: # LP #1174124 Catch invalid selections _target = "" if not (os.path.isdir(_target) and \ os.access(_target, os.R_OK | os.W_OK | os.X_OK)): _sec_msg = _("Please make sure the directory exists "\ "and check file permissions. Then try again.") _message_str = _("Selected backup destination folder"\ "`%s` does not exist or is not accessable.") % _target _headline_str = \ _("Unable to access selected folder") gobject.idle_add(misc.show_errdialog, _message_str, self.__get_application_widget(), _headline_str, _sec_msg) else: self.widgets['dest_local'].set_text(_target) self.configman.set("general", "target", _target) _dest = self.__dest_from_config_helper() self.isConfigChanged() elif response in (gtk.RESPONSE_NONE, gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT): dialog.hide() else: self.logger.error(_("Unexpected dialog response: %s") % response) gobject.idle_add(self.__browse_localdest) def on_checkbtn_show_password_toggled(self, *args): #IGNORE:W0613 self.__set_entry_remote_pass_visibiliy() def __set_entry_remote_pass_visibiliy(self): _pass_e = self.widgets['entry_set_remote_pass'] _pass_e.set_visibility(visible = self.widgets['checkbtn_show_password'].get_active()) def on_btn_set_remote_clicked(self, *args): #IGNORE:W0613 dest_obj = pathparse.UriParser() dest_obj.set_and_parse_uri(uri = self.configman.get_destination_path()) if dest_obj is not None: self.__destination_uri_obj = dest_obj gobject.idle_add(self.__show_connect_remote_dialog) def __show_connect_remote_dialog(self): dialog = self.widgets["dialog_connect_remote"] btn_connect = self.widgets['btn_connect_remote'] _server_e = self.widgets['entry_set_remote_server'] _port_e = self.widgets['entry_set_remote_port'] _dir_e = self.widgets['entry_set_remote_dir'] _user_e = self.widgets['entry_set_remote_user'] _pass_e = self.widgets['entry_set_remote_pass'] _service_b = self.widgets['cmb_set_remote_service'] dialog.set_transient_for(self.__get_application_widget()) self.__set_entry_remote_pass_visibiliy() btn_connect.grab_focus() # default values _rservice = fam.get_default_remote_service() _server = "" _port = "" _dir = "" _user = "" _pass = "" # fill entries #TODO: wrap use of UriParser into Fam facade if self.__destination_uri_obj is not None: if not self.__destination_uri_obj.is_local(): _rservice = fam.get_service_from_scheme(self.__destination_uri_obj.uri_scheme) if _rservice is None: raise SBException("Unable to query remote service") _server = self.__destination_uri_obj.hostname _port = self.__destination_uri_obj.port _dir = self.__destination_uri_obj.path _user = self.__destination_uri_obj.username _pass = self.__destination_uri_obj.password _servmodel = _service_b.get_model() for _idx in range(len(_servmodel)): if _servmodel[_idx][misc.MODEL_COLUMN_INDEX_KEY] == _rservice: _sidx = _idx break _service_b.set_active(_sidx) _server_e.set_text(_server) _port_e.set_text(_port) _dir_e.set_text(_dir) _user_e.set_text(_user) _pass_e.set_text(_pass) dialog.set_sensitive(True) response = dialog.run() if response == gtk.RESPONSE_APPLY: self.logger.info(_("Connect to remote destination")) _sidx = _service_b.get_active() _rservice = _servmodel[_sidx][misc.MODEL_COLUMN_INDEX_KEY] _server = _server_e.get_text() _port = _port_e.get_text() _dir = _dir_e.get_text() _user = _user_e.get_text() _pass = _pass_e.get_text() self.logger.debug("User input in dialog 'connect to host'") self.logger.debug(" Service: %s" % _rservice) self.logger.debug(" Server: %s" % _server) self.logger.debug(" Port: %s" % _port) self.logger.debug(" Path: %s" % _dir) self.logger.debug(" User: %s" % _user) self.logger.debug(" Pass: %s\n" % ("*" * len(_pass))) dialog.set_sensitive(False) misc.set_watch_cursor(dialog) _scheme = fam.get_scheme_from_service(_rservice) _uri = pathparse.construct_remote_uri_from_tupel(_scheme, _server, _port, _dir, _user, _pass) self.__destination_uri_obj.set_and_parse_uri(_uri) self.__destination_hdl = fam.get_fam_target_handler_facade_instance() self.__destination_hdl.set_initialize_callback(self._mount_done_cb) self.__destination_hdl.set_destination(self.__destination_uri_obj.uri) self.__destination_failure = False gobject.idle_add(self.__destination_hdl.initialize) elif response == gtk.RESPONSE_CANCEL or \ response == gtk.RESPONSE_DELETE_EVENT: dialog.hide() _icon = self.widgets["dest_remote_light"] _icon.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_MENU) else: self.logger.error(_("Unexpected dialog response: %s") % response) gobject.idle_add(self.__show_connect_remote_dialog) def _mount_done_cb(self, error): self.logger.debug("GUI._mount_done_cb: error: %s" % str(error)) dialog = self.widgets["dialog_connect_remote"] if error is None: self.logger.info(_("Mount was sucessful (no errors)")) gobject.idle_add(self._do_remote_tests) else: misc.unset_cursor(dialog) _icon = self.widgets["dest_remote_light"] _icon.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_MENU) misc.show_warndialog( parent = self.__get_application_widget(), message_str = str(error), headline_str = _("Unable to mount host")) self.__destination_failure = True gobject.idle_add(self.__show_connect_remote_dialog) def _umount_done_cb(self, error): self.logger.debug("GUI._umount_done_cb: error: %s" % str(error)) dialog = self.widgets["dialog_connect_remote"] if error is None: self.logger.info(_("Umount was sucessful (no errors)")) else: misc.unset_cursor(dialog) _icon = self.widgets["dest_remote_light"] _icon.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_MENU) misc.show_warndialog( parent = self.__get_application_widget(), message_str = str(error), headline_str = _("Unable to unmount host")) self.__destination_failure = True gobject.idle_add(self._umount_done) def _umount_done(self): self.logger.debug("umount done - failures: %s" % self.__destination_failure) dialog = self.widgets["dialog_connect_remote"] misc.unset_cursor(dialog) dialog.set_sensitive(True) if self.__destination_failure == False: self.__destination_hdl = None dialog.hide() _uri = self.__destination_uri_obj.uri _displname = self.__destination_uri_obj.query_display_name() self.configman.set("general", "target", _uri) self.widgets['dest_remote'].set_text(_displname) _icon = self.widgets["dest_remote_light"] _icon.set_from_stock(gtk.STOCK_OK, gtk.ICON_SIZE_MENU) self.isConfigChanged() else: _icon = self.widgets["dest_remote_light"] _icon.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_MENU) gobject.idle_add(self.__show_connect_remote_dialog) def _do_remote_tests(self): error = None self.logger.info(_("Perfom tests on remote host")) dialog = self.widgets["dialog_connect_remote"] try: self.__destination_hdl.test_destination() except exceptions.RemoteMountTestFailedError, error: misc.unset_cursor(dialog) _icon = self.widgets["dest_remote_light"] _icon.set_from_stock(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_MENU) misc.show_warndialog( parent = self.__get_application_widget(), message_str = str(error), headline_str = _("Unable to access remote destination")) misc.set_watch_cursor(dialog) self.__destination_failure = True else: self.logger.info(_("All tests passed")) self.__destination_hdl.set_terminate_callback(self._umount_done_cb) gobject.idle_add(self.__destination_hdl.terminate) def on_logfilechooser_selection_changed(self, *args): #IGNORE:W0613 self.configman.set_logdir(self.widgets['logfilechooser'].get_filename()) self.configman.set_logfile_templ_to_config() self.isConfigChanged() self.logger.debug("Log file set: " + self.configman.get("log", "file")) def on_loglevelcombobox_changed(self, *args): #IGNORE:W0613 if self.widgets['loglevelcombobox'].get_active_text() == "Info" : self.configman.set("log", "level", "20") self.isConfigChanged() self.logger.debug("Log level : " + self.configman.get("log", "level")) elif self.widgets['loglevelcombobox'].get_active_text() == "Debug" : self.configman.set("log", "level", "10") self.isConfigChanged() self.logger.debug("Log level : " + self.configman.get("log", "level")) elif self.widgets['loglevelcombobox'].get_active_text() == "Error" : self.configman.set("log", "level", "40") self.isConfigChanged() self.logger.debug("Log level : " + self.configman.get("log", "level")) elif self.widgets['loglevelcombobox'].get_active_text() == "Warning" : self.configman.set("log", "level", "30") self.isConfigChanged() self.logger.debug("Log level : " + self.configman.get("log", "level")) def on_smtpfrom_changed(self, *args): #IGNORE:W0613 self.__check_for_section("report") if self.widgets['smtpfrom'].get_text() != "": self.configman.set("report", "from", self.widgets['smtpfrom'].get_text()) self.isConfigChanged() else : self.configman.remove_option("report", "from") self.isConfigChanged() def on_smtpto_changed(self, *args): #IGNORE:W0613 self.__check_for_section("report") if self.widgets['smtpto'].get_text() != "": self.configman.set("report", "to", self.widgets['smtpto'].get_text()) self.isConfigChanged() else : self.configman.remove_option("report", "to") self.isConfigChanged() def on_smtpserver_changed(self, *args): #IGNORE:W0613 self.__check_for_section("report") if self.widgets['smtpserver'].get_text() != "": self.configman.set("report", "smtpserver", self.widgets['smtpserver'].get_text()) self.isConfigChanged() else : self.configman.remove_option("report", "smtpserver") self.isConfigChanged() def on_smtpport_changed(self, *args): self.__check_for_section("report") if self.widgets['smtpport'].get_text() != "": self.configman.set("report", "smtpport", self.widgets['smtpport'].get_text()) self.isConfigChanged() else : self.configman.remove_option("report", "smtpport") self.isConfigChanged() def on_smtplogin_changed(self, *args): self.__check_for_section("report") if self.widgets['smtplogin'].get_text() != "": self.configman.set("report", "smtpuser", self.widgets['smtplogin'].get_text()) self.isConfigChanged() else : self.configman.remove_option("report", "smtpuser") self.isConfigChanged() def on_smtppassword_changed(self, *args): self.__check_for_section("report") if self.widgets['smtppassword'].get_text() != "": self.configman.set("report", "smtppassword", self.widgets['smtppassword'].get_text()) self.isConfigChanged() else : self.configman.remove_option("report", "smtppassword") self.isConfigChanged() def on_crtfilechooser_selection_changed(self, *args): self.__check_for_section("report") smtpcert = self.widgets['crtfilechooser'].get_filename() if smtpcert != None and os.path.isfile(smtpcert): self.configman.set("report", "smtpcert", self.widgets['crtfilechooser'].get_filename()) self.isConfigChanged() self.logger.debug("Certificate : " + str(self.configman.get("report", "smtpcert"))) def on_keyfilechooser_selection_changed(self, *args): self.__check_for_section("report") smtpkey = self.widgets['keyfilechooser'].get_filename() if smtpkey != None and os.path.isfile(smtpkey): self.configman.set("report", "smtpkey", smtpkey) self.isConfigChanged() self.logger.debug("Key : " + str(self.configman.get("report", "smtpkey"))) def on_sbackupConfApp_delete_event(self, *args): """Signal handler that is called when the window decorator close button is clicked. """ cancelled = self.ask_save_config() return cancelled def __terminate_app(self): self.configman = None self.orig_configman = None gtk.main_quit() def on_sbackupConfApp_destroy(self, *args): """Signal handler that is called when the window was destroyed. """ self.__terminate_app() def on_exit_activate(self, *args): """Signal handler that is called when the 'Quit' menu item is selected. """ cancelled = self.ask_save_config() if not cancelled: self.__terminate_app() def on_ftype_custom_ex_changed(self, *args): #TODO: on_ftype_custom_ex_changed # print("TODO: on_ftype_custom_ex_changed") pass def on_prfManager_activate(self, *args): """Launch Profile manager dialog """ cancelled = self.ask_save_config() if not cancelled: dialog = self.widgets["ProfileManagerDialog"] dialog.run() dialog.hide() def on_addProfileButton_clicked(self, *args): valid_input = False prf_set = False prfDir = local_file_utils.normpath(self.__configFileHandler.get_user_confdir(), "sbackup.d") if not os.path.exists(prfDir): os.makedirs(prfDir) dialog = self.widgets['askNewPrfNameDialog'] dialog.set_title("") while not valid_input: response = dialog.run() dialog.hide() if response == gtk.RESPONSE_OK : enable = self.widgets['enableNewPrfCB'].get_active() prfName = self.widgets['newPrfNameEntry'].get_text() prfName = prfName.strip() prfConf = local_file_utils.normpath(prfDir, "sbackup-%s.conf" % prfName) prfConfDisabled = "%s-disable" % prfConf if not prfName or prfName is '': misc.show_warndialog( parent = self.widgets["ProfileManagerDialog"], message_str = _("The given name of the new profile is empty. Please enter a valid profile name."), headline_str = _("Profile name not valid")) continue if os.path.exists(prfConf) or os.path.exists(prfConfDisabled): misc.show_warndialog( parent = self.widgets["ProfileManagerDialog"], message_str = _("The given name of the new profile already exists. Please enter another name."), headline_str = _("Profile name not valid"), secmsg_str = _("Renaming of profiles is not supported.")) continue # if we reach this branch a valid profile name was choosen prf_set = True # if this branch is reached the input (OK, Cancel, Destroy) was # valid valid_input = True # end of while loop if prf_set: self.logger.debug("Got new profile name '%s : enable=%r' " % (prfName, enable)) if not enable: prfConf = prfConfDisabled confman = ConfigManager.ConfigManager() confman.saveConf(prfConf) self.profiles.append([enable, prfName, prfConf]) # else: # print "Adding of profile canceled." def on_removeProfileButton_clicked(self, *args): tm, iter = self.profilestv.get_selection().get_selected() if iter is None: _show_errmsg_no_profile_selected() return prfName, prfConf = tm.get_value(iter, 1), tm.get_value(iter, 2) if prfName == ConfigManagerStaticData.get_default_profilename(): _forbid_default_profile_removal() else : warning = _("Delete configuration profile?\n\nYou are trying to remove a configuration profile. You will not be able to restore it. If you are not sure, use the 'enable|disable' functionality instead.\n\nDo you really want to delete the profile '%(name)s'?") % {'name': glib.markup_escape_text(prfName)} dialog = gtk.MessageDialog(type = gtk.MESSAGE_WARNING, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_YES_NO) dialog.set_markup(warning) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES : self.logger.debug("Remove Profile '%s' configuration" % prfName) if os.path.exists(prfConf) : os.remove(prfConf) self.profiles.remove(iter) elif response == gtk.RESPONSE_NO : pass def on_editProfileButton_clicked(self, *args): tm, iter = self.profilestv.get_selection().get_selected() if iter is None: _show_errmsg_no_profile_selected() return prfName, prfConf = tm.get_value(iter, 1), tm.get_value(iter, 2) self.logger.debug("Load Profile '%s' configuration" % prfName) self.conffile = prfConf self.on_reload_clicked() self.widgets["ProfileManagerDialog"].hide() def on_closeProfileManagerButton_clicked(self, *args): """ Load the default configuration file """ self.logger.debug("Load the default configuration file '%s'" % self.default_conffile) self.conffile = self.default_conffile self.on_reload_clicked() def on_prfEnableCB_toggled(self, *args): tm, iter = self.profilestv.get_selection().get_selected() if iter is None: _show_errmsg_no_profile_selected() return enable, prfName, prfConf = tm.get_value(iter, 0), tm.get_value(iter, 1), tm.get_value(iter, 2) if prfName == ConfigManagerStaticData.get_default_profilename(): _forbid_default_profile_disable() else : dir, file = prfConf.rsplit(os.sep, 1) # rename the file if enable : # then disable self.logger.debug("Disabling %s " % prfName) os.rename(prfConf, prfConf + "-disable") self.profiles.set_value(iter, 0, False) self.profiles.set_value(iter, 2, prfConf + "-disable") else : # enable it self.logger.debug("Enabling %s " % prfName) os.rename(prfConf, prfConf.rstrip("-disable")) self.profiles.set_value(iter, 0, True) self.profiles.set_value(iter, 2, prfConf.rstrip("-disable")) def on_menu_set_default_settings_activate(self, *args): """Signal handler which is activated when the user either selects the menu item 'Set default settings...' or clicks the according toolbar button. The method presents a message box where confirmation for the changes is required. """ dialog = self.widgets["dialog_default_settings"] label = self.widgets["label_dialog_default_settings_content"] btn_cancel = self.widgets['btn_cancel_default_settings'] txt = _("Set default values for current profile?\nThis will restore the default values for the profile currently edited: '%s'.\n\nThese predefined settings are recommended for most users. Check whether they are appropriate for your use before saving the changed configuration.") % glib.markup_escape_text(self.configman.getProfileName()) label.set_line_wrap(True) label.set_markup(txt) misc.label_set_autowrap(label) btn_cancel.grab_focus() response = dialog.run() dialog.hide() if response == gtk.RESPONSE_APPLY: self.logger.info(_("Default settings are being applied.")) self._set_default_settings() elif response == gtk.RESPONSE_CANCEL or \ response == gtk.RESPONSE_DELETE_EVENT: pass else: self.logger.error(_("Unexpected dialog response: %s") % response) raise ValueError("Unexpected dialog response: %s" % response) def _set_default_settings(self): """Sets default values (which might be considered as recommended values for some usecase) for the current profile. """ # implementation note: the values are set in the configuration # manager and afterwards the according UI widgets are updated # with these new values. self.configman.set_values_to_default() # filesystem is not probed since we want to apply *new* values self._fill_widgets_from_config(probe_fs = False) def _forbid_default_profile_removal(): """Helper function that shows an info box which states that we are not able to do the given action on the default profile. """ info = _("Unable to remove default profile\n\nThe default profile cannot be removed. In the case you want to use just a single profile, please set up the default profile accordingly.") dialog = gtk.MessageDialog(type = gtk.MESSAGE_INFO, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE) dialog.set_markup(info) dialog.run() dialog.destroy() def _forbid_default_profile_disable(): """Helper function that shows an info box which states that we are not able to do the given action on the default profile. """ info = _("Unable to remove default profile\n\nThe default profile cannot be disabled. In the case you want to use just a single profile, please set up the default profile accordingly.") dialog = gtk.MessageDialog(type = gtk.MESSAGE_INFO, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE) dialog.set_markup(info) dialog.run() dialog.destroy() def _notify_new_default_profile_created(): """Helper function that shows an info box which states that a new default profile was created. """ info = _("No backup profile found.\n\nNo default profile was found. You are probably running Simple Backup for the first time. A backup profile using default values was created.\n\nPlease modify the settings according to your needs and save the configuration in order to use it.") dialog = gtk.MessageDialog(type = gtk.MESSAGE_INFO, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE) dialog.set_markup(info) dialog.run() dialog.destroy() def _show_errmsg_no_profile_selected(): dialog = gtk.MessageDialog(type = gtk.MESSAGE_ERROR, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = gtk.BUTTONS_CLOSE, message_format = _("Please select a profile.")) dialog.run() dialog.destroy() def _prepare_dirname(path): _res = "%s%s" % (path.rstrip(os.sep), os.sep) return _res def _prepare_filename(path): _res = "%s" % (path.rstrip(os.sep)) return _res def _escape_path(path): _enc_res = path.replace("=", "\\x3d") return _enc_res def main(argv): window = SBconfigGTK() window.show() gtk.main() log.shutdown_logging() sbackup-0.11.6/src/sbackup/ui/gtk_rsrc.py0000644000175000017500000002261312216122127016723 0ustar peerpeer# Simple Backup - GTK+ GUI resources # # Copyright (c)2010,2013: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # CONFIGGUI_TOPWINDOW = 'sbackupConfApp' CONFIGGUI_GLADEFILE = 'sbackup-config.glade' RESTOREGUI_TOPWINDOW = 'restorewindow' RESTOREGUI_GLADEFILE = 'sbackup-restore.glade' def get_configgui_widgets(): widget_list = [ 'sbackupConfApp', 'menubar', 'toolbar', 'askSaveDialog', 'fusehelplabel', 'regexdialog', 'ftypedialog', 'dialog-vbox4', 'vbox18', 'ftype_st', 'ftype_box', 'hbox25', 'ftype_custom', 'ftype_custom_ex', 'cancelbutton', 'okbutton', 'dialog-vbox5', 'vbox19', 'regex_box', 'cancelbutton2', 'okbutton2', 'statusBar', 'vbox17', 'save', 'save_as', 'saveButton', 'exit', 'imagemenuitem6', 'imagemenuitem7', 'imagemenuitem8', 'imagemenuitem9', 'about', 'vbox1', 'notebook', # # general/main page 'label_general_page', 'vbox_general_page', 'cformat', 'splitsizeCB', 'splitsizeSB', 'splitsizevbox', 'label_splitsize_custom', # 'vbox3', 'scrolledwindow1', 'includetv', 'inc_addfile', 'hbox4', 'inc_adddir', 'hbox5', 'inc_del', 'notebook2', 'vbox4', 'scrolledwindow2', 'ex_pathstv', 'ex_addfile1', 'hbox6', 'ex_adddir', 'hbox7', 'ex_delpath', 'vbox5', 'scrolledwindow3', 'ex_ftypetv', 'ex_addftype', 'ex_delftype', 'vbox6', 'scrolledwindow4', 'ex_regextv', 'ex_addregex', 'ex_delregex', 'vbox7', 'hbox8', 'ex_max', 'ex_maxsize', 'vbox_destination_page', 'dest2', 'hbox9', 'dest_local', 'btn_browse_local', 'dest3', 'hbox10', 'dest_remote', 'dest_remote_light', 'hbox11', 'dest_unusable', # # schedule page 'label_schedule_page', 'vbox_schedule_page', 'table_schedule', 'rdbtn_no_schedule', 'rdbtn_simple_schedule', 'rdbtn_custom_schedule', 'label_simple_schedule_freq', 'label_custom_cronline', 'txtfld_custom_cronline', 'cmbbx_simple_schedule_freq', 'lnkbtn_help_schedule', 'hbox_schedule_footer', 'hbox_schedule_infotext', 'img_schedule_infotext', 'label_schedule_infotext', # 'time_maxinc', 'purgevbox', 'purgecheckbox', 'hbox16', 'purgeradiobutton', 'purgedays', 'purgelabel', 'hbox17', 'logpurgeradiobutton', 'purgelabel2', 'hbox18', 'reportvbox', 'hbox19', 'table2', 'loglevelcombobox', 'logfilechooser', 'hbox20', 'vbox11', 'vbox12', 'table3', 'smtpport', 'smtpserver', 'smtpto', 'smtpfrom', 'hbox21', 'testMailButton', 'vbox13', 'vbox14', 'smtplogincheckbox', 'smtplogininfo', 'smtppassword', 'smtplogin', 'vbox15', 'TLScheckbutton', 'TLSinfos', 'TLSradiobutton', 'SSLradiobutton', 'crtfilechooser', 'keyfilechooser', 'label_certificate', 'label_key', # 'pluginscombobox', 'ProfileManagerDialog', 'profilesListTreeView', 'addProfileButton', 'removeProfileButton', 'editProfileButton', 'closeProfileManagerButton', 'askNewPrfNameDialog', 'enableNewPrfCB', 'newPrfNameEntry', 'followlinks', # dialog set default settings 'dialog_default_settings', 'label_dialog_default_settings_content', 'btn_set_default_settings', 'btn_cancel_default_settings', # # dialog set remote destination 'dialog_connect_remote', 'btn_set_remote', 'btn_cancel_remote', 'btn_connect_remote', 'cmb_set_remote_service', 'entry_set_remote_server', 'entry_set_remote_port', 'entry_set_remote_dir', 'entry_set_remote_user', 'entry_set_remote_pass', 'label_set_remote_user', 'label_set_remote_pass', 'checkbtn_show_password', # dialog make backup 'dialog_make_backup', 'checkbtn_make_backup_full', 'btn_make_backup', 'btn_cancel_make_backup', 'dialog_browse_localdest' ] return widget_list def get_configgui_handlers(): handlers = [ 'on_ftype_toggled', 'on_ftype_st_box_changed', 'on_ftype_custom_ex_changed', 'on_save_activate', 'on_save_as_activate', 'on_exit_activate', 'on_prfManager_activate', 'on_menu_about_activate', 'on_menu_help_activate', 'on_reload_clicked', 'on_save_clicked', 'on_backup_clicked', 'on_cformat_changed', 'on_splitsizeCB_changed', 'on_splitsizeSB_value_changed', 'on_inc_addfile_clicked', 'on_inc_adddir_clicked', 'on_inc_del_clicked', 'on_ex_addfile_clicked', 'on_ex_adddir_clicked', 'on_ex_delpath_clicked', 'on_ex_addftype_clicked', 'on_ex_delftype_clicked', 'on_ex_addregex_clicked', 'on_ex_delregex_clicked', 'on_ex_max_toggled', 'on_ex_maxsize_changed', 'on_dest_toggled', 'on_btn_browse_local_clicked', # connect to remote host 'on_btn_set_remote_clicked', 'on_cmb_set_remote_service_changed', 'on_checkbtn_show_password_toggled', # scheduling 'on_cmbbx_simple_schedule_freq_changed', 'on_rdbtn_schedule_toggled', 'on_txtfld_custom_cronline_changed', # 'on_time_maxinc_changed', 'on_purgecheckbox_toggled', 'on_purgeradiobutton_toggled', 'on_purgedays_changed', 'on_logfilechooser_selection_changed', 'on_loglevelcombobox_changed', 'on_smtpfrom_changed', 'on_smtpto_changed', 'on_smtpserver_changed', 'on_smtpport_changed', 'on_testMailButton_clicked', 'on_smtplogincheckbox_toggled', 'on_smtplogin_changed', 'on_smtppassword_changed', 'on_TLScheckbutton_toggled', 'on_TLSradiobutton_toggled', 'on_crtfilechooser_selection_changed', 'on_keyfilechooser_selection_changed', 'on_addProfileButton_clicked', 'on_removeProfileButton_clicked', 'on_editProfileButton_clicked', 'on_closeProfileManagerButton_clicked', 'on_includetv_key_press_event', 'on_ex_pathstv_key_press_event', 'on_ex_ftypetv_key_press_event', 'on_ex_regextv_key_press_event', 'on_followlinks_toggled', # 'on_menu_set_default_settings_activate', 'on_exit_activate', 'on_sbackupConfApp_delete_event', 'on_sbackupConfApp_destroy' ] return handlers def get_restoregui_widgets(): widget_list = [ 'restorewindow', 'defaultfolderlabel', 'defaultradiob', 'customradiob', 'custominfos', 'customentry', 'customchooser', 'customapply', 'calendar', 'snplist', 'scrolledwindow1', 'snplisttreeview', 'snpdetails', 'scrolledwindow2', 'restoreExpander', 'snpmanExpander', 'filelisttreeview', 'buttonspool', 'restore', 'restoreas', 'revert', 'revertas', 'txt_current_base', 'deleteBox', 'deleteButton', 'snphistoryFrame', 'historytv', 'statusbar', 'progressbar', 'box_management', 'box_restorewin_content', 'vbox_customdest' ] return widget_list def get_restoregui_handlers(): handlers = [ 'gtk_main_quit', 'on_defaultradiob_toggled', 'on_customchooser_clicked', 'on_customapply_clicked', 'on_calendar_month_changed', 'on_calendar_day_selected', 'on_snplisttreeview_cursor_changed', 'on_filelisttreeview_row_expanded', 'on_filelisttreeview_cursor_changed', 'on_filelisttreeview_unselect_all', 'on_restore_clicked', 'on_restoreas_clicked', 'on_revert_clicked', 'on_revertas_clicked', 'on_restoreExpander_activate', 'on_snpmanExpander_activate', 'on_deleteButton_clicked', 'on_exportmanExpander_activate' ] return handlers sbackup-0.11.6/src/sbackup/ui/indicator.py0000755000175000017500000000662712216122127017073 0ustar peerpeer# Simple Backup - Indicator application (status icon) # targeting Ubuntu >= 10.04 # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import sys import appindicator #@UnresolvedImport from sbackup import util from sbackup.util.log import LogFactory from sbackup.util import constants from sbackup.ui import indicator_core from sbackup.ui.indicator_core import PyNotifyMixin, SBackupdIndicatorHandler, SBackupdIndicatorBase from sbackup.ui import misc from sbackup.util import system sys.excepthook = misc.except_hook system.launch_dbus_if_required() class SBackupdIndicator(SBackupdIndicatorBase, PyNotifyMixin): """Graphical front-end in status tray. """ def __init__(self, indicator_hdl): if not isinstance(indicator_hdl, SBackupdIndicatorHandler): raise TypeError("Parameter of type `SBackupdIndicatorHandler` expected.") SBackupdIndicatorBase.__init__(self, indicator_hdl) self.logger = LogFactory.getLogger() self._indicator = appindicator.Indicator(constants.INDICATORAPP_NAME, constants.INDICATOR_ACTIVE_ICON, appindicator.CATEGORY_APPLICATION_STATUS) PyNotifyMixin.__init__(self, logger = self.logger, iconfile = util.get_resource_file(constants.NOTIFICATION_ICON_FILENAME), trayicon = None) self.__init_ctrls() def _notify_info(self, profilename, message): PyNotifyMixin._notify_info(self, profilename, message) def _notify_warning(self, profilename, message): PyNotifyMixin._notify_warning(self, profilename, message) def _notify_error(self, profilename, message): PyNotifyMixin._notify_error(self, profilename, message) def __init_ctrls(self): self._indicator.set_status(appindicator.STATUS_ACTIVE) self._indicator.set_attention_icon(constants.INDICATOR_ATTENTION_ICON) self._build_menu() # TODO: Add option to dictionary: show item initially. self._indicator.set_menu(self._menu) for _item in self._menuitems: self._menuitems[_item].show() self._show_showdialogs_menuitem() def set_status_to_normal(self): self._indicator.set_icon(constants.INDICATOR_ACTIVE_ICON) self._indicator.set_status(appindicator.STATUS_ACTIVE) def set_status_to_attention(self): self._indicator.set_status(appindicator.STATUS_ATTENTION) def set_status_to_finished(self): self._indicator.set_icon(constants.INDICATOR_SUCCESS_ICON) def main(options): exitcode = indicator_core.main(options, SBackupdIndicator) return exitcode sbackup-0.11.6/src/sbackup/ui/indicator_core.py0000644000175000017500000012231412216122127020070 0ustar peerpeer# Simple Backup - Indicator application (status icon) # core implementation # # Copyright (c)2009-2010,2012,2013: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import os import time from gettext import gettext as _ import gobject import glib import dbus.mainloop.glib import gtk from sbackup.pkginfo import Infos from sbackup import util from sbackup.util import dbus_support from sbackup.util.log import LogFactory from sbackup.util import constants from sbackup.util import system from sbackup.util import lock from sbackup.util import exceptions from sbackup.ui import misc class INotifyMixin(object): """Mix-in class that provides the displaying of notifications using the pynotify module. """ def __init__(self, logger, iconfile, trayicon = None): pass def _notify_info(self, profilename, message): """Shows up a pop-up window to inform the user. The notification supports mark-up. :param message: The message (body) that should be displayed. :type message: String """ raise NotImplementedError def _notify_warning(self, profilename, message): """Shows up a pop-up window to inform the user. The notification supports mark-up. :param message: The message (body) that should be displayed. :type message: String """ raise NotImplementedError def _notify_error(self, profilename, message): """Shows up a pop-up window to inform the user that an error occured. Such error notifications are emphasized and must be closed manual. The notifications support mark-up. :param message: The message (body) that should be displayed. :type message: String """ raise NotImplementedError class PyNotifyMixin(INotifyMixin): """Mix-in class that provides the displaying of notifications using the pynotify module. """ def __init__(self, logger, iconfile, trayicon = None): """Default constructor. :param logger: Instance of logger to be used. :todo: The notification domain should be retrieved from a central place! """ INotifyMixin.__init__(self, logger, iconfile, trayicon) self.__logger = logger self.__trayicon = trayicon self.__iconfile = iconfile # internal flag whether the notification module is usable self.__pynotif_avail = False # the pynotify module is stored in this variable self.__pynotif_mod = None # the current notification self.__notif = None # trying to initialize the notification module try: import pynotify self.__pynotif_mod = pynotify if self.__pynotif_mod.init(constants.NOTIFICATION_DOMAIN): self.__pynotif_avail = True else: self.__pynotif_avail = False # yes, this is insane! self.__logger.warning(_("there was a problem initializing the "\ "pynotify module")) except ImportError, exc: self.__pynotif_avail = False self.__logger.warning(str(exc)) def _notify_info(self, profilename, message): """Shows up a pop-up window to inform the user. The notification supports mark-up. :param message: The message (body) that should be displayed. :type message: String """ if self.__pynotif_avail: if self.__notif is None: self.__notif = self.__get_notification(profilename, message) else: self.__update_notification(profilename, message) if isinstance(self.__notif, self.__pynotif_mod.Notification): try: if self.__trayicon is not None: try: self.__notif.attach_to_status_icon(self.__trayicon) except AttributeError: pass self.__notif.set_urgency(self.__pynotif_mod.URGENCY_LOW) self.__notif.show() except gobject.GError, exc: # Connection to notification-daemon failed self.logger.warning(_("Connection to notification-daemon failed: %s") % str(exc)) def _notify_warning(self, profilename, message): """Shows up a pop-up window to inform the user. The notification supports mark-up. :param message: The message (body) that should be displayed. :type message: String """ self.__notify_new(profilename, message, mode = "warning") def _notify_error(self, profilename, message): """Shows up a pop-up window to inform the user that an error occured. Such error notifications are emphasized and must be closed manual. The notifications support mark-up. :param message: The message (body) that should be displayed. :type message: String """ self.__notify_new(profilename, message, mode = "critical") def __notify_new(self, profilename, message, mode): """Shows up a *new* pop-up window to inform the user that an error occured. Such error notifications are emphasized and must be closed manual. The notifications support mark-up. :param message: The message (body) that should be displayed. :type message: String :note: Comply with Ubuntu Notification Guidelines (no actions, no permanent notifications) """ if self.__pynotif_avail: notif = self.__get_notification(profilename, message) if isinstance(notif, self.__pynotif_mod.Notification): try: if self.__trayicon is not None: try: notif.attach_to_status_icon(self.__trayicon) except AttributeError: pass if mode == "critical": notif.set_urgency(self.__pynotif_mod.URGENCY_CRITICAL) else: notif.set_urgency(self.__pynotif_mod.URGENCY_NORMAL) notif.show() except gobject.GError, exc: # Connection to notification-daemon failed self.logger.warning(_("Connection to notification-daemon failed: %s") % str(exc)) def __get_notification(self, profilename, message): """Returns a notification object but does not display it. The notification supports mark-up. If notifications aren't supported the method returns None. :param message: The message (body) that should be displayed. :type message: String :return: The created notification object or None :rtype: Notification or None :todo: Replace single '<' characters by '<' in a more reliable way!\ See function `gobject.markup_escape_text` for this. :todo: The header and the icon should be given as parameter to make this mix-in class more generic! """ notif = None if self.__pynotif_avail: message = message.replace("<", "<") title = self.__get_notification_title(profilename) try: notif = self.__pynotif_mod.Notification(title, message, self.__iconfile) except gobject.GError, exc: # Connection to notification-daemon failed self.logger.warning(_("Connection to notification-daemon failed: %s") % str(exc)) notif = None return notif def __update_notification(self, profilename, message): """ :param message: The message (body) that should be displayed. :type message: String :todo: Replace single '<' characters by '<' in a more reliable way! :todo: The header and the icon should be given as parameter to make this mix-in class more generic! """ if self.__pynotif_avail: message = message.replace("<", "<") title = self.__get_notification_title(profilename) try: self.__notif.update(title, message, self.__iconfile) except gobject.GError, exc: # Connection to notification-daemon failed self.logger.warning(_("Connection to notification-daemon failed: %s") % str(exc)) self.__notif = None def __get_notification_title(self, profilename): title = Infos.NAME if profilename != "": title += "\n[%s]" % profilename return title class SBackupdIndicatorBase(INotifyMixin): def __init__(self, indicator_hdl): if not isinstance(indicator_hdl, SBackupdIndicatorHandler): raise TypeError("Parameter of type `SBackupdIndicatorHandler` expected.") self.logger = LogFactory.getLogger() INotifyMixin.__init__(self, logger = self.logger, iconfile = None, trayicon = None) self._indicator_hdl = indicator_hdl self._mainloop = gobject.MainLoop() self._indicator = None self._exit = False #TODO: Collect required named dialogs in dictionary. self._targetnotfound_dialog = None self._cancel_dialog = None self._current_dialogs = [] self._menu = gtk.Menu() self._menuitems = {} self._connect_dbus_signal_handlers() self._init_dbus_check_timer() self._init_autoexitcheck_timer() def _notify_info(self, profilename, message): raise NotImplementedError def _notify_warning(self, profilename, message): raise NotImplementedError def _notify_error(self, profilename, message): raise NotImplementedError def _init_autoexitcheck_timer(self): if self._indicator_hdl.get_keep_alive() is False: gobject.timeout_add_seconds(constants.AUTOEXIT_CHECK_INTERVAL_SECONDS, self._autoexitcheck) def _init_autoexit_timer(self): gobject.timeout_add_seconds(constants.AUTOEXIT_TIMEOUT_SECONDS, self._autoexit) def _init_dbus_check_timer(self): gobject.timeout_add_seconds(constants.DBUS_CHECK_INTERVAL_SECONDS, self._dbus_check) def _init_dbus_reconnect_timer(self): gobject.timeout_add_seconds(constants.DBUS_RECONNECT_INTERVAL_SECONDS, self._dbus_reconnect) def _build_menu(self): _status_msg = self._indicator_hdl.get_unknown_menu_label() _menuitems = ({ "name" : "title", "title" : _("Simple Backup"), "type" : "MenuItem", "sensitive" : True, "handler" : { "activate" : self.on_about_clicked }}, { "name" : "show_windows", "title" : _("Show message windows"), "type" : "MenuItem", "sensitive" : True, "handler" : { "activate" : self.on_showdialogs_clicked }}, { "name" : "separator_1", "title" : None, "type" : "SeparatorMenuItem", "sensitive" : None, "handler" : None }, { "name" : "profile", "title" : _status_msg["profile"], "type" : "MenuItem", "sensitive" : False, "handler" : None }, { "name" : "size_of_backup", "title" : _status_msg["size_of_backup"], "type" : "MenuItem", "sensitive" : False, "handler" : None }, { "name" : "progress", "title" : _status_msg["progress"], "type" : "MenuItem", "sensitive" : False, "handler" : None }, { "name" : "remaining_time", "title" : _status_msg["remaining_time"], "type" : "MenuItem", "sensitive" : False, "handler" : None }, { "name" : "separator_2", "title" : None, "type" : "SeparatorMenuItem", "sensitive" : None, "handler" : None }, { "name" : "cancel", "title" : _("Cancel Backup"), "type" : "MenuItem", "sensitive" : False, "handler" : { "activate" : self.on_cancel_clicked }} ) for _item in _menuitems: if _item["type"] == "MenuItem": _menuitem = gtk.MenuItem(_item["title"]) if _item["handler"] is not None: for _signal in _item["handler"]: _menuitem.connect(_signal, _item["handler"][_signal]) _menuitem.set_sensitive(_item["sensitive"]) self._menu.append(_menuitem) self._menuitems[_item["name"]] = _menuitem elif _item["type"] == "SeparatorMenuItem": _sep = gtk.SeparatorMenuItem() self._menu.append(_sep) self._menuitems[_item["name"]] = _sep else: raise ValueError("Unknown item type '%s'." % _item["type"]) def _set_menuitems_status(self, func, *args): _status_msg = func(*args) for _item in _status_msg: _label = _status_msg[_item] self._menuitems[_item].set_label(_label) def _set_menuitems_status_finished(self): self._set_menuitems_status(self._indicator_hdl.get_finished_menu_label) def _set_menuitems_status_prepare(self): self._set_menuitems_status(self._indicator_hdl.get_prepare_menu_label) def _set_menuitems_status_unknown(self): self._set_menuitems_status(self._indicator_hdl.get_unknown_menu_label) def _set_menuitems_status_canceled(self): self._set_menuitems_status(self._indicator_hdl.get_canceled_menu_label) def _set_menuitems_status_progress(self, checkpoint): self._set_menuitems_status(self._indicator_hdl.get_progress_menu_label, checkpoint) def _connect_dbus_signal_handlers(self): """Binds DBus signals to their corresponding handler methods. """ self._indicator_hdl.connect_dbus_event_signal(self.dbus_event_signal_hdl) self._indicator_hdl.connect_dbus_error_signal(self.dbus_error_signal_hdl) self._indicator_hdl.connect_dbus_progress_signal(self.dbus_progress_signal_hdl) self._indicator_hdl.connect_dbus_targetnotfound_signal(self.dbus_targetnotfound_signal_hdl) self._indicator_hdl.connect_dbus_alreadyrunning_signal(self.dbus_alreadyrunning_signal_hdl) self._indicator_hdl.connect_dbus_exit_signal(self.dbus_exit_signal_hdl) def _dbus_check(self): _res = True # if self._exit is False: self._indicator_hdl.test_dbus_validity() if not self._indicator_hdl.is_dbus_valid(): self._notify_info(profilename = "", message = _("Connection to D-Bus service lost.")) self._set_menuitems_status_unknown() self._menuitems["cancel"].set_sensitive(False) self._indicator_hdl.dbus_reconnect() self._indicator_hdl.test_dbus_validity() if self._indicator_hdl.is_dbus_valid(): # re-connection successful? self._connect_dbus_signal_handlers() #TODO: get new values here! else: self._init_dbus_reconnect_timer() _res = False return _res def _dbus_reconnect(self): _res = True # if self._exit is False: # do not re-connect when quit was already called self._indicator_hdl.test_dbus_validity() if self._indicator_hdl.is_dbus_valid(): _res = False # already re-connected else: self._indicator_hdl.dbus_reconnect() self._indicator_hdl.test_dbus_validity() if self._indicator_hdl.is_dbus_valid(): self.logger.info(_("re-connection was successful")) self._connect_dbus_signal_handlers() # get new values here self._init_dbus_check_timer() _res = False return _res def _autoexitcheck(self): """ Conditions for autoexit: * no dbus avail * no backup in progress * timeout """ assert self._indicator_hdl.get_keep_alive() is False _res = True self._indicator_hdl.test_dbus_validity() if self._indicator_hdl.is_dbus_valid() is False: _running = system.proc_exists(processname = constants.BACKUP_COMMAND) if _running is False: _res = False self._init_autoexit_timer() return _res def _autoexit(self): """ Conditions for autoexit: * no dbus avail * no backup in progress * timeout """ assert self._indicator_hdl.get_keep_alive() is False _res = False self._indicator_hdl.test_dbus_validity() _running = system.proc_exists(processname = constants.BACKUP_COMMAND) if (self._indicator_hdl.is_dbus_valid() is False) and (_running is False): if (not self._indicator_hdl.is_error_present()) and\ (not self._indicator_hdl.is_warning_present()): self._notify_info(profilename = "", message = _("No backup in progress and connection to D-Bus service lost. Simple Backup Indicator is being terminated.")) gobject.idle_add(self._on_exit) else: _res = True else: self._init_autoexitcheck_timer() return _res def _set_cancel_sensitive(self, sensitive): self._menuitems["cancel"].set_sensitive(sensitive) def _show_showdialogs_menuitem(self): if len(self._current_dialogs) > 0: self._menuitems["show_windows"].show() self._menuitems["show_windows"].set_sensitive(True) else: self._menuitems["show_windows"].hide() self._menuitems["show_windows"].set_sensitive(False) def dbus_event_signal_hdl(self, event, urgency): """Method which handles event signals over D-Bus. :todo: Implement methods for setting 'finished status' etc. (set menu, disable cancel, hide show messages, set icon... """ self._exit = False # eventually interrupt termination msg = "" if event == 'prepare': msg = _("Starting backup session") self.set_status_to_normal() self._set_menuitems_status_prepare() self._set_cancel_sensitive(sensitive = True) elif event == 'start': self._set_cancel_sensitive(sensitive = True) self._indicator_hdl.backup_started() self._set_menuitems_status_progress(checkpoint = 0) elif event == 'commit': pass elif event == 'finish': msg = _("Ending Backup Session") if self._cancel_dialog is not None: self._cancel_dialog.destroy() self._set_menuitems_status_finished() self._set_cancel_sensitive(sensitive = False) self.set_status_to_finished() elif event == 'backup-canceled': self._set_menuitems_status_canceled() self._set_cancel_sensitive(sensitive = False) else: self.logger.warning(_("Unknown D-Bus event `%s` received.") % (event)) if msg != "": profile = self._indicator_hdl.get_profilename() self._notify(urgency, profile, msg) def set_status_to_normal(self): raise NotImplementedError def set_status_to_attention(self): raise NotImplementedError def set_status_to_finished(self): raise NotImplementedError def _add_dialog_to_showlist(self, dialog): if not isinstance(dialog, gtk.Window): raise TypeError("GTK window expected.") if dialog not in self._current_dialogs: self._current_dialogs.append(dialog) self._show_showdialogs_menuitem() def _remove_dialog_from_showlist(self, dialog): if not isinstance(dialog, gtk.Window): raise TypeError("GTK window expected.") if dialog in self._current_dialogs: self._current_dialogs.remove(dialog) self._show_showdialogs_menuitem() def dbus_targetnotfound_signal_hdl(self): self._exit = False # eventually interrupt termination self.set_status_to_attention() msg = self._indicator_hdl.prepare_targetnotfound_handling() assert self._targetnotfound_dialog is None self._targetnotfound_dialog = misc.msgdialog_standalone(message_str = "", msgtype = gtk.MESSAGE_ERROR, boxtitle = Infos.NAME, buttons = gtk.BUTTONS_NONE, sticky = True) self._targetnotfound_dialog.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, _("Try again"), gtk.RESPONSE_OK) _ttimer = gobject.timeout_add_seconds(constants.TIMEOUT_RETRY_TARGET_CHECK_SECONDS, self._targetnotfound_dialog_destroy) _ctimer = gobject.timeout_add_seconds(constants.ONE_SECOND, self._targetnotfound_timer, msg, constants.ONE_SECOND) msg = msg % self._indicator_hdl.get_targetnotfound_clock() self._targetnotfound_dialog.set_markup(msg) self._add_dialog_to_showlist(dialog = self._targetnotfound_dialog) result = self._targetnotfound_dialog.run() self._targetnotfound_dialog.destroy() self._remove_dialog_from_showlist(dialog = self._targetnotfound_dialog) self._targetnotfound_dialog = None if result == gtk.RESPONSE_OK: retry = constants.RETRY_TRUE elif result == gtk.RESPONSE_NONE: retry = constants.RETRY_TRUE else: retry = constants.RETRY_FALSE gobject.source_remove(_ttimer) gobject.source_remove(_ctimer) self._indicator_hdl.finish_targetnotfound_handling(retry) self.set_status_to_normal() def _targetnotfound_timer(self, msg, interval): self._indicator_hdl.decrease_targetnotfound_clock(interval) msg = msg % self._indicator_hdl.get_targetnotfound_clock() if self._targetnotfound_dialog is not None: self._targetnotfound_dialog.set_markup(msg) return self._indicator_hdl.get_targetnotfound_run_timer() def _targetnotfound_dialog_destroy(self): self._indicator_hdl.disable_targetnotfound_run_timer() if self._targetnotfound_dialog is not None: self._targetnotfound_dialog.destroy() return False def _notify(self, urgency, profile, message): if urgency == 'info': self._notify_info(profile, message) elif urgency == 'warning': self._notify_info(profile, message) # self.__indicator_hdl.set_warning_present(is_present = True) # self._notify_warning(profile, message) else: raise ValueError("Unknown urgency!") def dbus_error_signal_hdl(self, error): self._exit = False # eventually interrupt termination self._set_cancel_sensitive(sensitive = False) self.set_status_to_attention() msg = self._indicator_hdl.get_error_msg(error) self._show_errormsg(headline = msg[0], message = msg[1]) self._indicator_hdl.set_error_present(is_present = False) self.set_status_to_normal() self._set_menuitems_status_canceled() def dbus_progress_signal_hdl(self, checkpoint): self._exit = False # eventually interrupt termination self._set_menuitems_status_progress(checkpoint) def dbus_alreadyrunning_signal_hdl(self): self._exit = False # eventually interrupt termination self._notify_info(profilename = "", message = _("Attempt of starting another instance of Simple Backup while this one is already running.")) def on_showdialogs_clicked(self, *args): #IGNORE:W0613 self.logger.debug("Show message windows") for dialog in self._current_dialogs: try: dialog.set_keep_above(True) dialog.present() dialog.set_keep_above(False) except AttributeError, error: self.logger.warning(_("Unable to present window: %s") % error) def on_about_clicked(self, *args): #IGNORE:W0613 misc.show_about_dialog() def on_cancel_clicked(self, *args): #IGNORE:W0613 """ :note: We call another method indirectly from here in order NOT to block further handling of GUI events (namely 'click on show windows'). """ self._set_cancel_sensitive(sensitive = False) assert self._cancel_dialog is None gobject.idle_add(self._cancel_handler) def _cancel_handler(self): self._cancel_dialog = misc.msgdialog_standalone(message_str = \ _("Do you really want to cancel the backup process of profile '%s'?") % \ self._indicator_hdl.get_profilename(), msgtype = gtk.MESSAGE_QUESTION, boxtitle = Infos.NAME, buttons = gtk.BUTTONS_YES_NO, headline_str = _("Cancel running backup process?")) self._add_dialog_to_showlist(self._cancel_dialog) result = self._cancel_dialog.run() self._cancel_dialog.destroy() self._remove_dialog_from_showlist(self._cancel_dialog) self._cancel_dialog = None res = True if result == gtk.RESPONSE_YES: res = self._indicator_hdl.cancel_backup() self._set_cancel_sensitive(sensitive = False) else: self._set_cancel_sensitive(sensitive = True) if res is False: self._set_cancel_sensitive(sensitive = True) self._notify_info(profilename = self._indicator_hdl.get_profilename(), message = _("Unable to cancel backup process.")) def _show_errormsg(self, headline, message): errmsg = misc.errdialog_standalone(message_str = message, boxtitle = Infos.NAME, headline_str = headline, secmsg_str = "") self._add_dialog_to_showlist(dialog = errmsg) errmsg.run() errmsg.destroy() self._remove_dialog_from_showlist(dialog = errmsg) return False def dbus_exit_signal_hdl(self): """Handler for D-Bus exit signal. """ self._on_exit() def _on_exit(self): """Internal method that is called on any exit request. Do not call `__terminate` directly. """ if self._indicator_hdl.get_keep_alive() is True: self.logger.debug("Termination of indicator was requested though it is kept alive") else: self._exit = True if (not self._indicator_hdl.is_error_present()) and\ (not self._indicator_hdl.is_warning_present()): gobject.timeout_add_seconds(constants.TIMEOUT_INDICATOR_QUIT_SECONDS, self._terminate) else: self.logger.debug("still errors present, not calling `__terminate`") def _terminate(self): """Internal method that actually quits the indicator. """ if self._exit is True: self._mainloop.quit() return False def main(self): """The main method. """ self._mainloop.run() self._menu.destroy() class SBackupdIndicatorHandler(object): def __init__(self, backup_dbus_obj, options): if not isinstance(backup_dbus_obj, dbus_support.DBusClientFacade): raise TypeError("Given backup_dbus_obj of type `DBusClientFacade` expected.") self.logger = LogFactory.getLogger() self.__options = options self._backup_dbus_obj = backup_dbus_obj self._space_required = constants.SPACE_REQUIRED_UNKNOWN self._target = constants.TARGET_UNKNOWN self._profile = constants.PROFILE_UNKNOWN self.__error_present = False self.__warning_present = False self._menuitem_status_tmpl = {"profile" : _("Profile: %s"), "size_of_backup" : _("Size of backup: %s"), "progress" : _("%.1f%% processed"), "remaining_time" : _("Remaining time: %s")} self._targetnotfound_run_timer = False self._targetnotfound_clock = 0 self._starttime_backup = None self._time_est_total = 0 def get_keep_alive(self): return self.__options.keep_alive def test_dbus_validity(self): self._backup_dbus_obj.test_validity() def is_dbus_valid(self): _valid = self._backup_dbus_obj.get_is_connected() return _valid def dbus_reconnect(self): self._backup_dbus_obj.connect(silent = True) def connect_dbus_event_signal(self, handler): self._backup_dbus_obj.connect_to_event_signal(handler) def connect_dbus_error_signal(self, handler): self._backup_dbus_obj.connect_to_error_signal(handler) def connect_dbus_progress_signal(self, handler): self._backup_dbus_obj.connect_to_progress_signal(handler) def connect_dbus_targetnotfound_signal(self, handler): self._backup_dbus_obj.connect_to_targetnotfound_signal(handler) def connect_dbus_alreadyrunning_signal(self, handler): self._backup_dbus_obj.connect_to_alreadyrunning_signal(handler) def connect_dbus_exit_signal(self, handler): self._backup_dbus_obj.connect_to_exit_signal(handler) def __update_properties(self): self._profile = self._backup_dbus_obj.get_profilename() self._target = self._backup_dbus_obj.get_target() self._space_required = self._backup_dbus_obj.get_space_required() def cancel_backup(self): res = True pid = self._backup_dbus_obj.get_backup_pid() self.logger.info(_("PID of backup process being canceled: %s") % pid) if pid != constants.PID_UNKNOWN: term_script = util.get_resource_file(constants.TERMINATE_FILE) _ret = system.exec_command_returncode([term_script, str(pid)]) if _ret != 0: self.logger.info(_("Unable to send signal to process %s") % pid) self.logger.info(_("Sending signal using gksu to process %s") % pid) descr = _("Cancel Backup") _ret = system.exec_command_returncode(["gksu", "--description", descr, term_script, str(pid)]) if _ret != 0: self.logger.warning(_("Sending signal using gksu to process %s failed") % pid) res = False else: res = False return res def set_warning_present(self, is_present): self.__warning_present = is_present def set_error_present(self, is_present): self.__error_present = is_present def is_error_present(self): return self.__error_present def is_warning_present(self): return self.__warning_present def __set_retry_target_check(self, retry): if retry not in (constants.RETRY_UNKNOWN, constants.RETRY_FALSE, constants.RETRY_TRUE): raise ValueError("Invalid value for retry target check.") self._backup_dbus_obj.set_retry_target_check(retry) def enable_targetnotfound_run_timer(self): self._targetnotfound_run_timer = True def disable_targetnotfound_run_timer(self): self._targetnotfound_run_timer = False def get_targetnotfound_run_timer(self): return self._targetnotfound_run_timer def get_targetnotfound_error_msg(self): target = self._backup_dbus_obj.get_target() msg = _("Unable to find specified target directory\n\nThe specified target directory '%s' was not found.\n\n") % (glib.markup_escape_text(target)) msg = msg + _("You can try to use the specified target again or cancel the profile execution. The specified destination is automatically used in %s seconds.") return msg def prepare_targetnotfound_handling(self): self.__update_properties() self.set_error_present(is_present = True) self.__set_retry_target_check(constants.RETRY_UNKNOWN) msg = self.get_targetnotfound_error_msg() self.enable_targetnotfound_run_timer() self._targetnotfound_clock = constants.TIMEOUT_RETRY_TARGET_CHECK_SECONDS return msg def finish_targetnotfound_handling(self, retry): self.__set_retry_target_check(retry) self.set_error_present(is_present = False) self.disable_targetnotfound_run_timer() def decrease_targetnotfound_clock(self, interval): self._targetnotfound_clock -= interval def get_targetnotfound_clock(self): return self._targetnotfound_clock def get_profilename(self): if self._profile == constants.PROFILE_UNKNOWN: _res = _("unknown") else: _res = self._profile return _res def get_progress_menu_label(self, checkpoint): self.__update_properties() checkpoint = int(checkpoint) space_str = self.__get_space_required_str() # values valid? if (self._space_required > 0) and (checkpoint > 0): _done = (checkpoint - 1) * constants.TAR_RECORDSIZE _percent = (float(_done) / float(self._space_required)) * 100.0 _percent = min(100.0, max(0.01, _percent)) _time_passed = time.time() - self._starttime_backup _time_est_total = (_time_passed / _percent) * 100.0 _time_est_remain = _time_est_total - _time_passed if _time_est_remain < 60: _time_str = _("less than 1 minute") elif _time_est_remain < 120: _time_str = _("about 2 minutes") elif _time_est_remain < 180: _time_str = _("about 3 minutes") elif _time_est_remain < 240: _time_str = _("about 4 minutes") elif _time_est_remain < 300: _time_str = _("about 5 minutes") else: _time_str = _("about %.0f minutes") % (round((_time_est_remain / 60))) menu_msg = {"profile" : self._menuitem_status_tmpl["profile"] % self.get_profilename(), "size_of_backup" : self._menuitem_status_tmpl["size_of_backup"] % space_str, "progress" : self._menuitem_status_tmpl["progress"] % _percent, "remaining_time" : self._menuitem_status_tmpl["remaining_time"] % _time_str} else: # values invalid, but something is in progress menu_msg = {"profile" : self._menuitem_status_tmpl["profile"] % self.get_profilename(), "size_of_backup" : self._menuitem_status_tmpl["size_of_backup"] % space_str, "progress" : _("In progress"), "remaining_time" : self._menuitem_status_tmpl["remaining_time"] % _("unknown")} return menu_msg def get_finished_menu_label(self): self.__update_properties() space_str = self.__get_space_required_str() menu_msg = {"profile" : self._menuitem_status_tmpl["profile"] % self.get_profilename(), "size_of_backup" : self._menuitem_status_tmpl["size_of_backup"] % space_str, "progress" : self._menuitem_status_tmpl["progress"] % 100, "remaining_time" : self._menuitem_status_tmpl["remaining_time"] % _("finished")} return menu_msg def get_unknown_menu_label(self): self.__update_properties() space_str = self.__get_space_required_str() menu_msg = {"profile" : self._menuitem_status_tmpl["profile"] % self.get_profilename(), "size_of_backup" : self._menuitem_status_tmpl["size_of_backup"] % space_str, "progress" : _("Progress: unknown"), "remaining_time" : self._menuitem_status_tmpl["remaining_time"] % _("unknown")} return menu_msg def get_prepare_menu_label(self): self.__update_properties() menu_msg = {"profile" : self._menuitem_status_tmpl["profile"] % self.get_profilename(), "size_of_backup" : _("Backup is being prepared"), "progress" : _("Collecting file info"), "remaining_time" : self._menuitem_status_tmpl["remaining_time"] % _("unknown")} return menu_msg def get_canceled_menu_label(self): self.__update_properties() space_str = self.__get_space_required_str() menu_msg = {"profile" : self._menuitem_status_tmpl["profile"] % self.get_profilename(), "size_of_backup" : self._menuitem_status_tmpl["size_of_backup"] % space_str, "progress" : _("Progress: canceled"), "remaining_time" : self._menuitem_status_tmpl["remaining_time"] % _("finished")} return menu_msg def __get_space_required_str(self): if self._space_required > 0: space_str = util.get_humanreadable_size_str(size_in_bytes = self._space_required, binary_prefixes = True) else: space_str = _("unknown") return space_str def get_error_msg(self, error): """Returns tuple of error message: 1. Headline 2. actual error message 3. additional info :todo: rename into `format_error_msg` """ self.__update_properties() self.set_error_present(is_present = True) msg = (_("An error occurred"), error, "") return msg def backup_started(self): self.__update_properties() self._starttime_backup = time.time() self._time_est_total = 0 class SBackupdIndicatorApp(object): """GUI for listen to the backup daemon. It uses DBus service. """ def __init__(self, options): self.__options = options self.__indicator_gui = None self.__indicator_hdl = None self.__dbus = dbus_support.DBusClientFacade(constants.INDICATORAPP_NAME) self.__lock = lock.ApplicationLock(lockfile = constants.LOCKFILE_INDICATOR_FULL_PATH, processname = constants.INDICATORAPP_FILE, pid = os.getpid()) def main(self, indicator_class): exitcode = constants.EXCODE_SUCCESS try: self.__lock.lock() self.__dbus.connect() # establish D-Bus connection self.__indicator_hdl = SBackupdIndicatorHandler(self.__dbus, self.__options) self.__indicator_gui = indicator_class(self.__indicator_hdl) self.__indicator_gui.main() except exceptions.InstanceRunningError: exitcode = constants.EXCODE_INSTANCE_ALREADY_RUNNING print _("Another `Simple Backup Indicator` is already running.") except SystemExit, error: exitcode = error.code except KeyboardInterrupt: exitcode = constants.EXCODE_KEYBOARD_INTERRUPT finally: self.__dbus.quit() # we connect here and we quit here self.__lock.unlock() return exitcode def main(options, indicator_class): exitcode = constants.EXCODE_GENERAL_ERROR dbus.mainloop.glib.DBusGMainLoop(set_as_default = True) gtk_avail = True try: gtk.init_check() except RuntimeError, error: gtk_avail = False print _("Initialization of GTK+ failed: %s") % error if gtk_avail: sbdgui = SBackupdIndicatorApp(options) exitcode = sbdgui.main(indicator_class) return exitcode sbackup-0.11.6/src/sbackup/ui/GladeWindow.py0000644000175000017500000002360112216122127017307 0ustar peerpeer# Simple Backup - Base class for Gnome applications # # Copyright (c)2009-2010: Jean-Peer Lorenz # Copyright (c)2007: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # The code is based on code originally written by Dave Reed (12/15/2002) from gettext import gettext as _ import os.path import gtk.glade import gobject import glib PROGRESSBAR_PULSE_INTERVAL = 150 def search_file(filename, search_path): """Given a search path, find file """ file_found = False paths = search_path.split(os.pathsep) _result = None for _path in paths: _search = os.path.join(_path, filename) if os.path.exists(_search): file_found = True break if file_found: _result = os.path.abspath(_search) return _result class GladeWindow(object): '''A base class for displaying a GUI developed with Glade; create a subclass and add any callbacks and other code; the derived class __init__ method needs to call GladeWindow.__init__; callbacks that start with on_ are automatically connected''' def __init__(self, gladefile, widget_list, handlers, root, parent = None, pull_down_dict = None): ''' __init__(self, filename, top_window, widget_list, pull_down_dict=None): filename: filename of the .glade file top_window: the glade name of the top level widget (this will then be accessible as self.top_window) widget_list: a list of glade names; the dictionary self.widgets will be created that maps these name to the actual widget object pull_down_dict: a dictionary that maps combo names to a tuple of strings to put in the combo @todo: JPL: I don't want to change too much in this release but for\ later releases: Create the XML external and give it to the\ widget classes to avoid multiple instantiations! ''' try: search_path = GladeWindow.search_path except: search_path = './' fname = search_file(gladefile, search_path) self.xml = gtk.glade.XML(fname, root = root, domain = 'sbackup') # connect callbacks self.cb_dict = {} for f in handlers: self.cb_dict[f] = getattr(self, f) self.xml.signal_autoconnect(self.cb_dict) self.widgets = {} for widget in widget_list: self.widgets[widget] = self.xml.get_widget(widget) if pull_down_dict is not None: for widget, lst in pull_down_dict.items(): self.widgets[widget].set_popdown_strings(lst) # set attribute for top_window so it can be accessed as self.top_window self.top_window = None # window to show when this one is hidden # TODO: What is this for? Should be handled outside this class! self.prev_window = None # initialize callback func self.cb_func = None self.parent = parent def set_search_path(cls, path): '''set the search path for looking for the .glade files''' cls.search_path = path set_search_path = classmethod(set_search_path) def set_top_window(self, top_window): '''set_top_window(self, top_window): notebook pages that are in containers need to be able to change their top window, especially so the dialog is set_transient_for the actual main window ''' self.top_window = top_window # def set_callback_function(self, cb_func, *cb_args, **cb_kwargs): # # '''set_callback_function(cb_func, *cb_args, **cb_kwargs): # # stores the cb_func and its cb_args and cb_kwargs # ''' # self.cb_func = cb_func # self.cb_args = cb_args # self.cb_kwargs = cb_kwargs def show(self, center = 1, prev_window = None, *args): '''show(self, center=1, prev_window=None, *args): display the top_window widget ''' if prev_window is not None: self.prev_window = prev_window # if center: # self.top_window.set_position(gtk.WIN_POS_CENTER_ALWAYS) # else: # self.top_window.set_position(gtk.WIN_POS_NONE) self.top_window.show() def hide(self): '''hide(self): hides the current window, shows self.prev_window if self.cb_func is not None, it is called with its cb_args and cb_kwargs ''' self.top_window.hide() if self.prev_window is not None: self.prev_window.show() # if self.cb_func is not None: # self.cb_func(*self.cb_args, **self.cb_kwargs) if self.prev_window is None: gtk.main_quit() def _show_infomessage(self, message_str, boxtitle = "", headline_str = "", secmsg_str = ""): self._show_message(gtk.MESSAGE_INFO, message_str, boxtitle, headline_str, secmsg_str) def _show_errmessage(self, message_str, boxtitle = "", headline_str = "", secmsg_str = ""): self._show_message(gtk.MESSAGE_ERROR, message_str, boxtitle, headline_str, secmsg_str) def _show_message(self, msgtype, message_str, boxtitle = "", headline_str = "", secmsg_str = ""): """Shows message box using markup. @attention: gtk.MessageDialog is not fully thread-safe so it is put in a critical section, here! """ gtk.gdk.threads_enter() dialog = gtk.MessageDialog( flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, type = msgtype, buttons = gtk.BUTTONS_CLOSE) if boxtitle.strip() != "": dialog.set_title(boxtitle) _hdl = headline_str.strip(" \n\t") if _hdl != "": _hdl = "%s\n\n" % (glib.markup_escape_text(_hdl)) _msg = "%s%s" % (_hdl, glib.markup_escape_text(message_str)) dialog.set_markup(_msg) # an optional secondary message is added _sec = secmsg_str.strip(" \n\t") if _sec != "": _sec = "%s" % (glib.markup_escape_text(_sec)) dialog.format_secondary_markup(_sec) # show the message box and destroy it afterwards dialog.run() dialog.destroy() gtk.gdk.threads_leave() def _show_destination_error(self, error): _sec_msg = _("Please make sure the missing directory exists (e.g. by mounting an external disk) or change the specified target.") self._show_errmessage(message_str = _("While accessing the backup destination following error occurred:\n\n%s.") % error, boxtitle = _("Simple Backup error"), headline_str = _("Unable to access backup destination"), secmsg_str = _sec_msg) class ProgressbarMixin(object): """Extends a class by functionality for showing some action using a pulsing progressbar. """ def __init__(self, progressbar, hide_when_stopped = True): """Default constructor. The progressbar that should be used must be given as parameter. If the optional parameter 'hide_when_stopped' is set, the progressbar is only showed if it is active and will be hidden afterwards. @param progressbar: a progressbar object @type progressbar: GtkProgressBar @param hide_when_stopped: if true, the progressbar is hidden when not active @type hide_when_stopped: Boolean @return: None """ self._progressbar = progressbar self.__pulsetimer_id = None self.__hide_when_stopped = hide_when_stopped def _init_pulse(self): """Convenience method for initializing the progressbar during the application's startup. """ self.__pulsetimer_id = None if self.__hide_when_stopped: self._progressbar.hide() self._progressbar.set_text("") self._progressbar.set_fraction(0.0) def _start_pulse(self): """Calling this method shows up the progressbar and starts the pulsing. @return: None """ if self.__pulsetimer_id is not None: gobject.source_remove(self.__pulsetimer_id) self.__pulsetimer_id = None self._progressbar.set_text("") self._progressbar.set_fraction(0.0) if self.__hide_when_stopped: self._progressbar.show() self.__pulsetimer_id = gobject.timeout_add(PROGRESSBAR_PULSE_INTERVAL, self.__pulse) def _stop_pulse(self): """Calling this method stops the progressbar. @return: False @rtype: Boolean """ if self.__pulsetimer_id is not None: gobject.source_remove(self.__pulsetimer_id) self.__pulsetimer_id = None if self.__hide_when_stopped: self._progressbar.hide() self._progressbar.set_text("") self._progressbar.set_fraction(0.0) return False def __pulse(self): """Private helper method that actually performs the pulsing. @return: True @rtype: Boolean """ self._progressbar.pulse() return True sbackup-0.11.6/src/sbackup/ui/indicator_legacy.py0000644000175000017500000000620512216122127020404 0ustar peerpeer# Simple Backup - Indicator application (status icon) # legacy implementation # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import sys import gtk from sbackup import util from sbackup.util.log import LogFactory from sbackup.util import constants from sbackup.ui import indicator_core from sbackup.ui.indicator_core import PyNotifyMixin, SBackupdIndicatorHandler, SBackupdIndicatorBase from sbackup.ui import misc from sbackup.util import system sys.excepthook = misc.except_hook system.launch_dbus_if_required() class SBackupdIndicatorLegacy(SBackupdIndicatorBase, PyNotifyMixin): """Graphical front-end in status tray. """ def __init__(self, indicator_hdl): if not isinstance(indicator_hdl, SBackupdIndicatorHandler): raise TypeError("Parameter of type `SBackupdIndicatorHandler` expected.") SBackupdIndicatorBase.__init__(self, indicator_hdl) self.logger = LogFactory.getLogger() self._indicator = gtk.StatusIcon() PyNotifyMixin.__init__(self, logger = self.logger, iconfile = util.get_resource_file(constants.NOTIFICATION_ICON_FILENAME), trayicon = self._indicator) self.__init_ctrls() def _notify_info(self, profilename, message): PyNotifyMixin._notify_info(self, profilename, message) def _notify_warning(self, profilename, message): PyNotifyMixin._notify_warning(self, profilename, message) def _notify_error(self, profilename, message): PyNotifyMixin._notify_error(self, profilename, message) def __init_ctrls(self): self._build_menu() self._show_showdialogs_menuitem() self._indicator.set_from_file(util.get_resource_file(constants.DEFAULT_ICON_FILENAME)) self._indicator.connect('popup-menu', self.on_popup_menu) self._indicator.set_blinking(False) self._indicator.set_visible(True) def on_popup_menu(self, widget, button, timestamp): #IGNORE:W0613 if button == 3: if self._menu is not None: self._menu.show_all() self._menu.popup(None, None, None, button, timestamp) def set_status_to_normal(self): pass def set_status_to_attention(self): pass def set_status_to_finished(self): pass def main(options): exitcode = indicator_core.main(options, SBackupdIndicatorLegacy) return exitcode sbackup-0.11.6/src/sbackup/ui/misc.py0000644000175000017500000003003012216122127016030 0ustar peerpeer# Simple Backup - GTK+ common helper functionality # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """Module containing commonly used helper classes and functions related to UI """ from gettext import gettext as _ import gtk import glib import gobject import pango import types import traceback from sbackup.pkginfo import Infos from sbackup.util import constants from sbackup.util import system from sbackup.util import log from sbackup import util MODEL_COLUMN_INDEX_VALUE = 0 MODEL_COLUMN_INDEX_KEY = 1 def set_model(widget, values): """ sorted by dictionary keys """ if not isinstance(values, types.DictionaryType): raise TypeError # query types _entry = values.popitem() values[_entry[0]] = _entry[1] # re-add removed pair _keytype = type(_entry[0]) _valtype = type(_entry[1]) # ensure all dictionary entries are of same type for _entry in values: if not isinstance(_entry, _keytype): raise TypeError if not isinstance(values[_entry], _valtype): raise TypeError _model = gtk.ListStore(_valtype, _keytype) _keys = values.keys() _keys.sort() for _key in _keys: _model.append([values[_key], _key]) widget.set_model(_model) _cell = gtk.CellRendererText() widget.pack_start(_cell, True) widget.add_attribute(_cell, 'text', MODEL_COLUMN_INDEX_VALUE) return _model def open_uri(uri, timestamp = 0): """Convenience function for opening a given URI with the default application. """ # The function 'show_uri()' is available in PyGTK 2.14 and above. if gtk.pygtk_version >= (2, 14, 0): gtk.show_uri(gtk.gdk.screen_get_default(), uri, timestamp) else: try: import gnome gnome.url_show(uri) except ImportError: pass def label_set_autowrap(widget): """Make labels automatically re-wrap if their containers are resized. Accepts label or container widgets. For this to work the label in the glade file must be set to wrap on words. from http://stackoverflow.com/questions/1893748/pygtk-dynamic-label-wrapping """ if isinstance(widget, gtk.Container): children = widget.get_children() for i in xrange(len(children)): label_set_autowrap(children[i]) elif isinstance(widget, gtk.Label) and widget.get_line_wrap(): widget.connect_after("size-allocate", _label_size_allocate) def _label_size_allocate(widget, allocation): """Callback which re-allocates the size of a label. from http://stackoverflow.com/questions/1893748/pygtk-dynamic-label-wrapping """ layout = widget.get_layout() lw_old, lh_old = layout.get_size() # fixed width labels if lw_old / pango.SCALE == allocation.width: return # set wrap width to the pango.Layout of the labels layout.set_width(allocation.width * pango.SCALE) # law is unused. law, lah = layout.get_size() #IGNORE:W0612 if lh_old != lah: widget.set_size_request(-1, lah / pango.SCALE) def show_infodialog(message_str, parent, headline_str = "", secmsg_str = ""): """Creates und displays a modal dialog box. Main purpose is displaying of error messages. @param message_format: error message to show @type message_format: String """ __show_msgdialog(message_str = message_str, msgtype = gtk.MESSAGE_INFO, parent = parent, boxtitle = "", headline_str = headline_str, secmsg_str = secmsg_str) def show_warndialog(message_str, parent, headline_str = "", secmsg_str = ""): """Creates und displays a modal dialog box. Main purpose is displaying of error messages. @param message_format: error message to show @type message_format: String """ __show_msgdialog(message_str = message_str, msgtype = gtk.MESSAGE_WARNING, parent = parent, boxtitle = "", headline_str = headline_str, secmsg_str = secmsg_str) def show_errdialog(message_str, parent, headline_str = "", secmsg_str = ""): """Creates und displays a modal dialog box. Main purpose is displaying of error messages. @param message_format: error message to show @type message_format: String """ __show_msgdialog(message_str = message_str, msgtype = gtk.MESSAGE_ERROR, parent = parent, boxtitle = "", headline_str = headline_str, secmsg_str = secmsg_str) def show_errdialog_threaded(message_str, parent, headline_str = "", secmsg_str = ""): gtk.gdk.threads_enter() __show_msgdialog(message_str = message_str, msgtype = gtk.MESSAGE_ERROR, parent = parent, boxtitle = "", headline_str = headline_str, secmsg_str = secmsg_str) gtk.gdk.threads_leave() def __show_msgdialog(message_str, msgtype, parent, boxtitle = "", headline_str = "", secmsg_str = ""): """Creates und displays a modal dialog box. Main purpose is displaying of error messages. Do not use markup for the strings. @param message_format: error message to show @type message_format: String @todo: Add proper escaping before markup is applied to the headlline. """ # in compliance with Gnome HIG a 'Close' button instead of 'OK' is used dialog = msgdialog(message_str = message_str, msgtype = msgtype, parent = parent, boxtitle = boxtitle, buttons = gtk.BUTTONS_CLOSE, headline_str = headline_str, secmsg_str = secmsg_str) # the message box is showed dialog.run() dialog.destroy() def msgdialog(message_str, msgtype, parent, boxtitle = "", buttons = gtk.BUTTONS_CLOSE, headline_str = "", secmsg_str = ""): """Creates und displays a modal dialog box. Main purpose is displaying of error messages. Do not use markup for the strings. @param message_format: error message to show @type message_format: String @todo: Add proper escaping before markup is applied to the headlline. """ # in compliance with Gnome HIG a 'Close' button instead of 'OK' is used dialog = gtk.MessageDialog(parent = parent, type = msgtype, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons = buttons) icon_file = util.get_resource_file(constants.DEFAULT_ICON_FILENAME) dialog.set_icon_from_file(icon_file) if boxtitle.strip() != "": dialog.set_title(boxtitle) _hdl = headline_str.strip(" \n\t") if _hdl != "": _hdl = "%s\n\n" % glib.markup_escape_text(_hdl) _msg = "%s%s" % (_hdl, glib.markup_escape_text(message_str)) dialog.set_markup(_msg) # an optional secondary message is added _sec = secmsg_str.strip(" \n\t") if _sec != "": _sec = "%s" % (glib.markup_escape_text(_sec)) dialog.format_secondary_markup(_sec) return dialog def infodialog_standalone(message_str, boxtitle, headline_str = "", secmsg_str = "", sticky = True): return msgdialog_standalone(message_str = message_str, msgtype = gtk.MESSAGE_INFO, boxtitle = boxtitle, headline_str = headline_str, secmsg_str = secmsg_str, sticky = sticky) def warndialog_standalone(message_str, boxtitle, headline_str = "", secmsg_str = "", sticky = True): return msgdialog_standalone(message_str = message_str, msgtype = gtk.MESSAGE_WARNING, boxtitle = boxtitle, headline_str = headline_str, secmsg_str = secmsg_str, sticky = sticky) def errdialog_standalone(message_str, boxtitle, headline_str = "", secmsg_str = "", sticky = True): return msgdialog_standalone(message_str = message_str, msgtype = gtk.MESSAGE_ERROR, boxtitle = boxtitle, headline_str = headline_str, secmsg_str = secmsg_str, sticky = sticky) def msgdialog_standalone(message_str, msgtype, boxtitle, buttons = gtk.BUTTONS_CLOSE, headline_str = "", secmsg_str = "", sticky = True): """Creates and displays a standalone dialog box. Main purpose is displaying of error messages within the indicator application. Do not use markup for the strings. @param message_format: error message to show @type message_format: String @todo: Add proper escaping before markup is applied to the headlline. """ # in compliance with Gnome HIG a 'Close' button instead of 'OK' is used assert boxtitle.strip() != "" dialog = msgdialog(message_str = message_str, msgtype = msgtype, parent = None, boxtitle = boxtitle, buttons = buttons, headline_str = headline_str, secmsg_str = secmsg_str) dialog.set_property("skip-pager-hint", False) dialog.set_property("skip-taskbar-hint", False) if sticky is True: dialog.stick() dialog.set_urgency_hint(True) # dialog.set_keep_above(True) # be not to urgent return dialog def show_about_dialog(set_transient_for = None): _icon_file = util.get_resource_file(constants.DEFAULT_ICON_FILENAME) about = gtk.AboutDialog() about.set_name(Infos.NAME) about.set_version(Infos.VERSION) about.set_comments(Infos.DESCRIPTION) if set_transient_for is not None: about.set_transient_for(set_transient_for) about.set_copyright(Infos.COPYRIGHT) about.set_translator_credits(Infos.TRANSLATORS) about.set_authors(Infos.AUTHORS) if not system.is_superuser(): about.set_website(Infos.WEBSITE) about.set_logo(gtk.gdk.pixbuf_new_from_file(_icon_file)) about.set_icon_from_file(_icon_file) about.run() about.destroy() def get_statusbar_msg_mode(statusmessage): if system.is_superuser(): stattxt = _("%s (Administrator mode)") % statusmessage else: stattxt = statusmessage return stattxt def set_watch_cursor(widget): watch = gtk.gdk.Cursor(gtk.gdk.WATCH) try: widget.window.set_cursor(watch) except AttributeError: pass # print "Ignored error when setting cursor" def unset_cursor(widget): try: widget.window.set_cursor(None) except AttributeError: pass # print "Ignored error when un-setting cursor" def _common_except_hook(etype, evalue, etb): _logger = log.LogFactory.getLogger() _lines = traceback.format_exception(etype, evalue, etb) _lines = "".join(_lines) _lines.strip() _logger.error("Uncaught exception: %s" % evalue) _logger.error(_lines) _message_str = _("An uncaught error occurred. Close this message window and restart the application.\n\nPlease report this error on https://bugs.launchpad.net/sbackup.\n\n%s") % (evalue) _headline_str = _("Sorry, this should not have happened") _secmsg_str = "%s" % _lines return (_headline_str, _message_str, _secmsg_str) def except_hook(etype, evalue, etb): _headline_str, _message_str, _secmsg_str = _common_except_hook(etype, evalue, etb) show_errdialog(message_str = _message_str, parent = None, headline_str = _headline_str, secmsg_str = _secmsg_str) def except_hook_threaded(etype, evalue, etb): _headline_str, _message_str, _secmsg_str = _common_except_hook(etype, evalue, etb) gobject.idle_add(show_errdialog_threaded, _message_str, None, _headline_str, _secmsg_str) sbackup-0.11.6/src/sbackup/fs_backend/0000755000175000017500000000000012216122133016166 5ustar peerpeersbackup-0.11.6/src/sbackup/fs_backend/_fuse_utils.py0000644000175000017500000001427612216122127021076 0ustar peerpeer# Simple Backup - file access management using FUSE # # Copyright (c)2010,2013: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackup.util.fuse_utils` -- file access management using FUSE ======================================================================== .. module:: fuse_utils :synopsis: public entry point to file access management using FUSE .. moduleauthor:: Jean-Peer Lorenz """ from gettext import gettext as _ import types from sbackup.util import local_file_utils from sbackup.util import exceptions from sbackup.util import interfaces from sbackup.util import structs from sbackup.util import pathparse from sbackup.util import exceptions #TODO: move available services into FUSE plugin manager and retrieve them dynamically REMOTE_SERVICE_SFTP = 101 REMOTE_SERVICE_FTP = 102 REMOTE_SERVICE_SSH = 104 REMOTE_SERVICES_AVAIL = { REMOTE_SERVICE_SFTP : _("SFTP"), REMOTE_SERVICE_SSH : _("SSH"), REMOTE_SERVICE_FTP : _("FTP") } REMOTE_SERVICE_TO_URI_SCHEME = { REMOTE_SERVICE_FTP : pathparse.URI_SCHEME_FTP, REMOTE_SERVICE_SFTP : pathparse.URI_SCHEME_SFTP, REMOTE_SERVICE_SSH : pathparse.URI_SCHEME_SSH } URI_SCHEME_TO_REMOTE_SERVICE = { REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_FTP] : REMOTE_SERVICE_FTP, REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_SFTP] : REMOTE_SERVICE_SFTP, REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_SSH] : REMOTE_SERVICE_SSH } class FuseOperations(interfaces.IOperations): """Collects simple operations """ __metaclass__ = structs.Singleton pathsep = local_file_utils.PATHSEP def __init__(self): interfaces.IOperations.__init__(self) @classmethod def chmod_no_rwx_grp_oth(cls, path): local_file_utils.chmod_no_rwx_grp_oth(path) @classmethod def path_exists(cls, path): return local_file_utils.path_exists(path) @classmethod def rename(cls, src, dst): local_file_utils.rename(src, dst) @classmethod def readfile(cls, path): return local_file_utils.readfile(path) @classmethod def normpath(cls, *args): return local_file_utils.normpath(*args) @classmethod def joinpath(cls, *args): return pathparse.joinpath(*args) @classmethod def get_dirname(cls, path): return local_file_utils.get_dirname(path) @classmethod def get_basename(cls, path): return local_file_utils.get_basename(path) @classmethod def openfile_for_write(cls, path): return local_file_utils.openfile(path, write = True) @classmethod def openfile_for_read(cls, path): return local_file_utils.openfile(path, write = False) @classmethod def openfile_for_append(cls, path): return local_file_utils.openfile_for_append(path) @classmethod def pickleload(cls, path): return local_file_utils.pickleload(path) @classmethod def pickledump(cls, datas, path): local_file_utils.pickledump(datas, path) @classmethod def delete(cls, uri): local_file_utils.delete(uri) @classmethod def force_delete(cls, path): local_file_utils.force_delete(path) @classmethod def copyfile(cls, src, dest): local_file_utils.copyfile(src, dest) @classmethod def listdir(cls, path): return local_file_utils.listdir(path) @classmethod def listdir_fullpath(cls, path) : return local_file_utils.listdir_fullpath(path) @classmethod def makedir(cls, target): local_file_utils.makedir(target) @classmethod def makedirs(cls, target) : local_file_utils.makedirs(target) #, 0750) @classmethod def writetofile(cls, path, content) : """ Write a String to a file. You don't have to open and close the file. - File = path to the file - StringToWrite = String to write into the file. """ local_file_utils.writetofile(path, content) @classmethod def force_move(cls, src, dst): local_file_utils.force_move(src, dst) @classmethod def is_link(cls, path): return local_file_utils.is_link(path) @classmethod def test_dir_access(cls, path): try: local_file_utils.listdir(path) except Exception, error: raise exceptions.FileAccessException(\ "Unable to list directory content: %s" % error) @classmethod def is_dir(cls, path): return local_file_utils.is_dir(path) @classmethod def close_stream(cls, file_desc): try: file_desc.close() except IOError, error: raise exceptions.FileAlreadyClosedError(_("Error while closing stream: %s") % error) def get_scheme_from_service(service): if not isinstance(service, types.IntType): raise TypeError if service not in REMOTE_SERVICES_AVAIL: raise ValueError("Given remote service not supported") if service not in REMOTE_SERVICE_TO_URI_SCHEME: raise ValueError("Given remote service not supported") _scheme = REMOTE_SERVICE_TO_URI_SCHEME[service] return _scheme def get_service_from_scheme(scheme): # _uri_scheme = self.__uri.uri_scheme try: _service = URI_SCHEME_TO_REMOTE_SERVICE[scheme] except KeyError: _service = None return _service sbackup-0.11.6/src/sbackup/fs_backend/__init__.py0000644000175000017500000000153212216122130020275 0ustar peerpeer# Simple Backup - file access backend (package) # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # __all__ = ["fam"] sbackup-0.11.6/src/sbackup/fs_backend/_gio_utils.py0000644000175000017500000011306512216122130020700 0ustar peerpeer# Simple Backup - file access management using GIO/GVFS # # Copyright (c)2010,2013: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackup.util.gio_utils` -- file access management using GIO/GVFS ======================================================================== .. module:: gio_utils :synopsis: public entry point to file access management using GIO/GVFS .. moduleauthor:: Jean-Peer Lorenz """ from gettext import gettext as _ import types import time import uuid import pickle import glib import gio from sbackup.util import local_file_utils from sbackup.util import exceptions from sbackup.util import interfaces from sbackup.util import constants from sbackup.util import pathparse from sbackup.util import structs from sbackup.util import system from sbackup.util import log errorcodes = { gio.ERROR_ALREADY_MOUNTED : exceptions.ErrorDescription(gio.ERROR_ALREADY_MOUNTED, "ERROR_ALREADY_MOUNTED", "File is already mounted."), gio.ERROR_BUSY : exceptions.ErrorDescription(gio.ERROR_BUSY, "ERROR_BUSY", "File is busy."), gio.ERROR_CANCELLED : exceptions.ErrorDescription(gio.ERROR_CANCELLED, "ERROR_CANCELLED", "Operation was cancelled. See gio.Cancellable."), gio.ERROR_CANT_CREATE_BACKUP : exceptions.ErrorDescription(gio.ERROR_CANT_CREATE_BACKUP, "ERROR_CANT_CREATE_BACKUP", "Backup couldn't be created."), gio.ERROR_CLOSED : exceptions.ErrorDescription(gio.ERROR_CLOSED, "ERROR_CLOSED", "File was closed."), gio.ERROR_EXISTS : exceptions.ErrorDescription(gio.ERROR_EXISTS, "ERROR_EXISTS", "File already exists error."), gio.ERROR_FAILED : exceptions.ErrorDescription(gio.ERROR_FAILED, "ERROR_FAILED", "Generic error condition for when any operation fails."), gio.ERROR_FAILED_HANDLED : exceptions.ErrorDescription(gio.ERROR_FAILED_HANDLED, "ERROR_FAILED_HANDLED", "Operation failed and a helper program has already interacted with the user. Do not display any error dialog."), gio.ERROR_FILENAME_TOO_LONG : exceptions.ErrorDescription(gio.ERROR_FILENAME_TOO_LONG, "ERROR_FILENAME_TOO_LONG", "Filename is too many characters."), gio.ERROR_HOST_NOT_FOUND : exceptions.ErrorDescription(gio.ERROR_HOST_NOT_FOUND, "ERROR_HOST_NOT_FOUND", "Host couldn't be found (remote operations)."), gio.ERROR_INVALID_ARGUMENT : exceptions.ErrorDescription(gio.ERROR_INVALID_ARGUMENT, "ERROR_INVALID_ARGUMENT", "Invalid argument."), gio.ERROR_INVALID_FILENAME : exceptions.ErrorDescription(gio.ERROR_INVALID_FILENAME, "ERROR_INVALID_FILENAME", "Filename is invalid or contains invalid characters."), gio.ERROR_IS_DIRECTORY : exceptions.ErrorDescription(gio.ERROR_IS_DIRECTORY, "ERROR_IS_DIRECTORY", "File is a directory error."), gio.ERROR_NOT_DIRECTORY : exceptions.ErrorDescription(gio.ERROR_NOT_DIRECTORY, "ERROR_NOT_DIRECTORY", "File is not a directory."), gio.ERROR_NOT_EMPTY : exceptions.ErrorDescription(gio.ERROR_NOT_EMPTY, "ERROR_NOT_EMPTY", "File is a directory that isn't empty."), gio.ERROR_NOT_FOUND : exceptions.ErrorDescription(gio.ERROR_NOT_FOUND, "ERROR_NOT_FOUND", "File not found error."), gio.ERROR_NOT_MOUNTABLE_FILE : exceptions.ErrorDescription(gio.ERROR_NOT_MOUNTABLE_FILE, "ERROR_NOT_MOUNTABLE_FILE", "File cannot be mounted."), gio.ERROR_NOT_MOUNTED : exceptions.ErrorDescription(gio.ERROR_NOT_MOUNTED, "ERROR_NOT_MOUNTED", "File isn't mounted."), gio.ERROR_NOT_REGULAR_FILE : exceptions.ErrorDescription(gio.ERROR_NOT_REGULAR_FILE, "ERROR_NOT_REGULAR_FILE", "File is not a regular file."), gio.ERROR_NOT_SUPPORTED : exceptions.ErrorDescription(gio.ERROR_NOT_SUPPORTED, "ERROR_NOT_SUPPORTED", "Operation not supported for the current backend."), gio.ERROR_NOT_SYMBOLIC_LINK : exceptions.ErrorDescription(gio.ERROR_NOT_SYMBOLIC_LINK, "ERROR_NOT_SYMBOLIC_LINK", "File is not a symbolic link."), gio.ERROR_NO_SPACE : exceptions.ErrorDescription(gio.ERROR_NO_SPACE, "ERROR_NO_SPACE", "No space left on drive."), gio.ERROR_PENDING : exceptions.ErrorDescription(gio.ERROR_PENDING, "ERROR_PENDING", "Operations are still pending."), gio.ERROR_PERMISSION_DENIED : exceptions.ErrorDescription(gio.ERROR_PERMISSION_DENIED, "ERROR_PERMISSION_DENIED", "Permission denied."), gio.ERROR_READ_ONLY : exceptions.ErrorDescription(gio.ERROR_READ_ONLY, "ERROR_READ_ONLY", "File is read only."), gio.ERROR_TIMED_OUT : exceptions.ErrorDescription(gio.ERROR_TIMED_OUT, "ERROR_TIMED_OUT", "Operation timed out."), gio.ERROR_TOO_MANY_LINKS : exceptions.ErrorDescription(gio.ERROR_TOO_MANY_LINKS, "ERROR_TOO_MANY_LINKS", "File contains too many symbolic links."), gio.ERROR_TOO_MANY_OPEN_FILES : exceptions.ErrorDescription(gio.ERROR_TOO_MANY_OPEN_FILES, "ERROR_TOO_MANY_OPEN_FILES", "The current process has too many files open and can't open any more. Duplicate descriptors do count toward this limit. Since 2.20"), gio.ERROR_WOULD_BLOCK : exceptions.ErrorDescription(gio.ERROR_WOULD_BLOCK, "ERROR_WOULD_BLOCK", "Operation would block."), gio.ERROR_WOULD_MERGE : exceptions.ErrorDescription(gio.ERROR_WOULD_MERGE, "ERROR_WOULD_MERGE", "Operation would merge files."), gio.ERROR_WOULD_RECURSE : exceptions.ErrorDescription(gio.ERROR_WOULD_RECURSE, "ERROR_WOULD_RECURSE", "Operation would be recursive."), gio.ERROR_WRONG_ETAG : exceptions.ErrorDescription(gio.ERROR_WRONG_ETAG, "ERROR_WRONG_ETAG", "File's Entity Tag was incorrect.") } MSG_UNKNOWN_ERROR_CODE = _("Unknown error code:") MAX_NUMBER_ASK_PASSWORD = 4 REMOTE_SERVICE_SFTP = 101 REMOTE_SERVICE_FTP = 102 #REMOTE_SERVICE_SECURE_WEBDAV = 103 REMOTE_SERVICE_SSH = 104 REMOTE_SERVICE_NFS = 105 REMOTE_SERVICE_SMB = 106 REMOTE_SERVICES_AVAIL = { REMOTE_SERVICE_SFTP : _("SFTP"), REMOTE_SERVICE_SSH : _("SSH"), REMOTE_SERVICE_FTP : _("FTP"), REMOTE_SERVICE_NFS : _("NFS"), REMOTE_SERVICE_SMB : _("SMB") # REMOTE_SERVICE_SECURE_WEBDAV : _("Secure WebDAV (HTTPS)") } REMOTE_SERVICE_TO_URI_SCHEME = { REMOTE_SERVICE_FTP : pathparse.URI_SCHEME_FTP, REMOTE_SERVICE_SFTP : pathparse.URI_SCHEME_SFTP, REMOTE_SERVICE_SSH : pathparse.URI_SCHEME_SSH, REMOTE_SERVICE_NFS : pathparse.URI_SCHEME_NFS, REMOTE_SERVICE_SMB : pathparse.URI_SCHEME_SMB # REMOTE_SERVICE_SECURE_WEBDAV : URI_SCHEME_DAVS } URI_SCHEME_TO_REMOTE_SERVICE = { REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_FTP] : REMOTE_SERVICE_FTP, REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_SFTP] : REMOTE_SERVICE_SFTP, REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_SSH] : REMOTE_SERVICE_SSH, REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_NFS] : REMOTE_SERVICE_NFS, REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_SMB] : REMOTE_SERVICE_SMB # REMOTE_SERVICE_TO_URI_SCHEME[REMOTE_SERVICE_SECURE_WEBDAV] : REMOTE_SERVICE_SECURE_WEBDAV } class PathInfo(object): def __init__(self, path, eff_path, mounted): self.path = path self.eff_path = eff_path self.mounted = mounted def __str__(self): _res = [ "Path: `%s`" % self.path, "Eff. path: `%s`" % self.eff_path, "Mounted: %s" % self.mounted ] _res_str = "\n".join(_res) return _res_str #TODO: implement interface? class GioMountHandler(object): """Handles mounting process for a single URI. """ def __init__(self): """ Constructor @param configManager: """ self.__logger = log.LogFactory.getLogger() self.__uri = None self.__ask_password_cnt = 0 self.__path_mount_info = None self.__mainloop = None self.__mount_finish_callback = None self.__umount_finish_callback = None self._error = None # latest error during mount/umount def use_own_mainloop(self, use = True): if use is True: if self.__mainloop is None: self.__mainloop = glib.MainLoop() else: self.__mainloop = None def set_callbacks(self, mount, umount): # self.__logger.debug("set_additional_callbacks - mount: %s - umount: %s" % (str(mount), str(umount))) self.__mount_finish_callback = mount self.__umount_finish_callback = umount def set_uri(self, uri): if not isinstance(uri, pathparse.UriParser): raise TypeError("Expected URI of type UriParser. Got %s instead." % type(uri)) self.__uri = uri def _get_mount(self, gfileobj): _mount = None try: _mount = gfileobj.find_enclosing_mount(None) except gio.Error, error: _mount = None if error.code == gio.ERROR_NOT_MOUNTED: self.__logger.info(_("Unable to get mount: path is not mounted")) elif error.code == gio.ERROR_NOT_FOUND: self.__logger.info(_("Unable to get mount: path not found when mounting (is probably local)")) else: self.__logger.info(_("Unable to get mount: %s") % error) except glib.GError, error: _mount = None self.__logger.info(_("Unable to get mount: %s") % error) return _mount def _is_local(self, gfileobj): """ :todo: Consolidate with `pathparse.is_local` """ _uri_scheme = gfileobj.get_uri_scheme() if _uri_scheme == "file": _res = True else: _res = False if _res is True: self.__logger.debug("Given path is local") else: self.__logger.debug("Given path is not local") return _res def _ask_password_cb(self, mount_op, message, default_user, default_domain, flags): self.__ask_password_cnt += 1 self.__logger.debug("ask password (no: %s)" % self.__ask_password_cnt) if self.__ask_password_cnt < MAX_NUMBER_ASK_PASSWORD: if self.__uri is None: raise ValueError("No URI set") self.__logger.debug("Setting username: %s password: %s" % (self.__uri.username, "*"*len(self.__uri.password))) mount_op.set_username(self.__uri.username) # mount_op.set_domain() # required for samba # don't set password if none is given (LP #701403) if self.__uri.password is not None: mount_op.set_password(self.__uri.password) mount_op.reply(gio.MOUNT_OPERATION_HANDLED) else: self._error = exceptions.RemoteMountFailedError("Max. number of password inputs reached. Aborted.") mount_op.reply(gio.MOUNT_OPERATION_ABORTED) def _set_mount_flag(self, obj, required): if self.__uri is None: raise ValueError("No URI set") path = self.__uri.query_mount_uri() self.__path_mount_info = PathInfo(path, obj.get_path(), required) self.__logger.debug("Path_mount_info: %s" % str(self.__path_mount_info)) def _unset_mount_flag(self): if self.__uri is None: raise ValueError("No URI set") if self.__path_mount_info is None: self.__logger.warning(_("Unable to un-set mount flag: path is not stored")) else: self.__path_mount_info = None def mount(self): if self.__uri is None: raise ValueError("No URI set") path = self.__uri.query_mount_uri() self.__logger.debug("Mount path: %s" % path) _gfileobj = gio.File(path) _local = self._is_local(_gfileobj) if _local: self.__logger.debug("Mounting local path is not required - calling additional callback") #Note: call additional callbacks anyway if self.__mount_finish_callback is not None: self.__mount_finish_callback(error = None) else: self._do_mount(_gfileobj) def umount(self, overwrite_require = False): if self.__uri is None: raise ValueError("No URI set") path = self.__uri.query_mount_uri() self.__logger.debug("Umount path: %s" % path) _gfileobj = gio.File(path) _local = self._is_local(_gfileobj) if _local: self.__logger.debug("Unmounting local path is not required - calling additional callback") if self.__umount_finish_callback is not None: self.__umount_finish_callback(error = None) else: try: _mounted = self.__path_mount_info.mounted except KeyError: _mounted = True if overwrite_require is True: _mounted = True if _mounted is True: self.__logger.debug("Umount is required") self._do_umount(_gfileobj) else: self.__logger.debug("Umount is not required - calling additional callback") if self.__umount_finish_callback is not None: self.__umount_finish_callback(error = None) def _do_mount(self, gfileobj): op = gio.MountOperation() self.__ask_password_cnt = 0 op.connect('ask-password', self._ask_password_cb) try: gfileobj.mount_enclosing_volume(op, self._mount_done_cb) if self.__mainloop is not None: self.__mainloop.run() except gio.Error, error: self.__logger.error(get_gio_errmsg(error, "Error in `_do_mount`")) raise exceptions.RemoteMountFailedError(str(error)) except glib.GError, error: self.__logger.error(str(error)) raise exceptions.RemoteMountFailedError(str(error)) def _do_umount(self, gfileobj): _mount = self._get_mount(gfileobj) error = None if _mount is None: self.__logger.debug("No mount found.") self._unset_mount_flag() self._error = error if self.__umount_finish_callback is not None: self.__logger.debug("Calling additional callback") self.__umount_finish_callback(error) else: try: _mount.unmount(self._umount_done_cb, gio.MOUNT_UNMOUNT_FORCE, None, gfileobj) # gobject.timeout_add(15000, self._umount_done_cb, _mount, None, gfileobj) # remaining issues: # * how to cancel a timeout if mount was successful? # * how to return False (quit timer) when calling callback function? # * does it work without an already runnning mainloop if self.__mainloop is not None: self.__logger.debug("run loop") self.__mainloop.run() except gio.Error, error: self.__logger.error(get_gio_errmsg(error, "Error in `umount`")) raise exceptions.RemoteUmountFailedError(str(error)) except glib.GError, error: self.__logger.error(str(error)) raise exceptions.RemoteUmountFailedError(str(error)) def _mount_done_cb(self, obj, res): error = None try: obj.mount_enclosing_volume_finish(res) self._set_mount_flag(obj = obj, required = True) except gio.Error, error: self._set_mount_flag(obj = obj, required = False) if error.code == gio.ERROR_ALREADY_MOUNTED: self.__logger.info(_("Path is already mounted.")) error = None elif error.code == gio.ERROR_FAILED_HANDLED: self.__logger.error(get_gio_errmsg(error, "Mount failed")) if self._error is not None: self.__logger.error(str(self._error)) error = self._error else: self.__logger.error(get_gio_errmsg(error, "Error in `_do_mount`")) except glib.GError, error: self._set_mount_flag(obj = obj, required = False) self.__logger.error(str(error)) finally: if self.__mainloop is not None: self.__logger.debug("quit loop") self.__mainloop.quit() self._error = error if self.__mount_finish_callback is not None: self.__logger.debug("Calling additional callback") self.__mount_finish_callback(error) def _umount_done_cb(self, obj, res, gfile): error = None try: obj.unmount_finish(res) except gio.Error, error: if error.code == gio.ERROR_NOT_MOUNTED: self.__logger.info(_("Path is not mounted.")) error = None else: self.__logger.error(get_gio_errmsg(error, "Error in `_umount_done_cb`")) except glib.GError, error: self.__logger.error(str(error)) finally: if self.__mainloop is not None: self.__logger.debug("quit loop") self.__mainloop.quit() if error is None: self._unset_mount_flag() self._error = error if self.__umount_finish_callback is not None: self.__logger.debug("Calling additional callback") self.__umount_finish_callback(error) def test_path(self): if self.__uri is None: raise ValueError("No URI set") _mpath = self.__uri.query_mount_uri() try: _gmpath = gio.File(_mpath) _effpath = _gmpath.get_path() except (gio.Error, glib.GError), error: raise exceptions.RemoteMountTestFailedError(str(error)) dname = "%s-%s-%s.tmp" % ("sbackup-dir", time.time(), uuid.uuid4()) tfilen = "%s-%s-%s.tmp" % ("sbackup", time.time(), uuid.uuid4()) _test_path(_mpath, dname, tfilen) def query_fs_info(self): if self.__uri is None: raise ValueError("No URI set") _mpath = self.__uri.query_mount_uri() _size = constants.SIZE_FILESYSTEM_UNKNOWN _free = constants.FREE_SPACE_UNKNOWN _gfo = gio.File(_mpath) try: _gfoinfo = _gfo.query_filesystem_info("filesystem::*") except gio.Error, error: self.__logger.warning(get_gio_errmsg(error, "Error in `query_fs_info`")) else: _size = _gfoinfo.get_attribute_uint64(gio.FILE_ATTRIBUTE_FILESYSTEM_SIZE) _free = _gfoinfo.get_attribute_uint64(gio.FILE_ATTRIBUTE_FILESYSTEM_FREE) self.__logger.debug("FS info - size: %s free: %s" % (_size, _free)) return (_size, _free) class GioOperations(interfaces.IOperations): """Collects simple operations """ __metaclass__ = structs.Singleton pathsep = system.PATHSEP def __init__(self): interfaces.IOperations.__init__(self) @classmethod def path_exists(cls, path): # Be careful: `gfile.query_exists()' returns True even if path is not # accessible! Nevertheless we use it here since `gfile.query_info` # does not return required attributes from destination directories # over ftp to check whether it is actually existing and readable. # This caused a regression (LP #1190224) which let the backup fail. _gfileobj = gio.File(path) _res = _gfileobj.query_exists() return _res @classmethod def openfile_for_write(cls, path): _gfileobj = gio.File(path) #FIXME: etag should be set to None though it doesn't work then! _ostr = _gfileobj.replace(etag = '', make_backup = False) return _ostr @classmethod def openfile_for_read(cls, path): _gfile = gio.File(path) _istr = _gfile.read() return _istr @classmethod def openfile_for_append(cls, path): _gfileobj = gio.File(path) _ostr = _gfileobj.append_to() return _ostr @classmethod def copyfile(cls, src, dest): """Copies given file and metadata (similar to `shutil.copy2`). Overwrites `dest` if it already exists """ _src = gio.File(src) _dest = gio.File(dest) # the source must be a file and exist if not cls.path_exists(src): raise IOError("Given copy source `%s` does not exist" % _src.get_parse_name()) if cls.__isfile(_src): _src, _dest = cls._prepare_copy(_src, _dest) _src.copy(_dest, flags = gio.FILE_COPY_OVERWRITE) try: _src.copy_attributes(_dest, flags = gio.FILE_COPY_ALL_METADATA) except gio.Error: raise exceptions.CopyFileAttributesError(\ "Unable to copy file attributes (permissions etc.) of file `%s`."\ % _src.get_parse_name()) else: _logger = log.LogFactory.getLogger() _logger.warning("Given copy source `%s` is not a file. Skipped." % _src.get_parse_name()) @classmethod def _prepare_copy(cls, src_gfile, dst_gfile): """Helper function that prepares the given paths for copying using 'nssb_copy'. Source must be a file or symbolic link to a file! @todo: Implement test case for symbolic links! """ _src_uri = src_gfile.get_uri() _dst_uri = dst_gfile.get_uri() _src_file = cls.__basename(src_gfile) if cls.__isdir(dst_gfile): _dstu = cls.joinpath(_dst_uri, _src_file) _dst = gio.File(_dstu) elif _dst_uri.endswith(cls.pathsep): _dstu = cls.joinpath(_dst_uri, _src_file) _dst = gio.File(_dstu) else: _dst = dst_gfile _dstdir = cls.get_dirname(_dst.get_uri()) if cls.path_exists(_dstdir) is False: raise IOError("Given copy destination '%s' does not exist" % _dstdir) retval = (src_gfile, _dst) return retval @classmethod def _copy_metadata(cls, src, dest): _src = gio.File(src) _dest = gio.File(dest) _src.copy_attributes(_dest, flags = gio.FILE_COPY_ALL_METADATA) @classmethod def delete(cls, uri): """Deletes given file or directory (recursive). """ if (cls.is_dir(uri) is True) and (cls.is_link(uri) is False): cls._rmtree_recurse(uri) else: cls._rm_file(uri) @classmethod def _rm_file(cls, path): # setting of permissions only in case of failures does not work: # if directory is read-only we cannot remove files inside even if these are # read/write try: _gfile = gio.File(path) _gfile.delete() except gio.Error, error: raise IOError(str(error)) @classmethod def _rmtree_recurse(cls, path): _listing = cls.listdir_fullpath(path) for _ent in _listing: if (cls.is_dir(_ent) is True) and (cls.is_link(_ent) is False): cls._rmtree_recurse(_ent) else: cls._rm_file(_ent) cls._rm_file(path) @classmethod def _add_write_permission(cls, path, recursive = True): """Sets write permissions for user, group, and others for given directory or file (recursive). """ _gfileobj = gio.File(path) try: _ginfo = _gfileobj.query_info(attributes = gio.FILE_ATTRIBUTE_UNIX_MODE) _fmode = _ginfo.get_attribute_uint32(gio.FILE_ATTRIBUTE_UNIX_MODE) _new_mode = _fmode | system.UNIX_PERM_ALL_WRITE _ginfo.set_attribute_uint32(gio.FILE_ATTRIBUTE_UNIX_MODE, _new_mode) _gfileobj.set_attributes_from_info(_ginfo) # setting attributes directly seems broken except gio.Error, error: _msg = get_gio_errmsg(error, "Unable to set permissions") _logger = log.LogFactory.getLogger() _logger.warning(_msg) return if cls.is_dir(path) and recursive is True: for _entryp in cls.listdir_fullpath(path): if (cls.is_dir(_entryp) is True) and (cls.is_link(_entryp) is False): cls._add_write_permission(_entryp) else: cls._add_write_permission(_entryp, recursive = False) @classmethod def chmod_no_rwx_grp_oth(cls, path): """Sets write permissions for user only for given directory or file (*not* recursive). """ _gfileobj = gio.File(path) try: _ginfo = _gfileobj.query_info(attributes = gio.FILE_ATTRIBUTE_UNIX_MODE) _fmode = _ginfo.get_attribute_uint32(gio.FILE_ATTRIBUTE_UNIX_MODE) _new_mode = _fmode & system.UNIX_PERM_GRPOTH_NORWX _ginfo.set_attribute_uint32(gio.FILE_ATTRIBUTE_UNIX_MODE, _new_mode) _gfileobj.set_attributes_from_info(_ginfo) # setting attributes directly seems broken except gio.Error, error: _msg = get_gio_errmsg(error, "Unable to set permissions") _logger = log.LogFactory.getLogger() _logger.warning(_msg) return @classmethod def force_delete(cls, path): cls._add_write_permission(path, recursive = True) cls.delete(path) @classmethod def force_move(cls, src, dst): _gsrc = gio.File(src) _gdst = gio.File(dst) try: _gsrc.move(_gdst, flags = gio.FILE_COPY_OVERWRITE) except gio.Error: if cls.is_dir(src): cls._copytree(src, dst) cls.force_delete(src) else: cls.copyfile(src, dst) cls.force_delete(src) @classmethod def _copytree(cls, src, dst): """mod of `shutil.copytree`. This doesn't fail if the directory exists, it copies inside. :param src: source path for copy operation :param dst: destination :param symlinks: copy symlinks? :type src: string :type dst: string """ names = cls.listdir(src) if not cls.path_exists(dst): cls.makedirs(dst) # errors = [] for name in names: srcname = cls.joinpath(src, name) dstname = cls.joinpath(dst, name) # try: if cls.is_dir(srcname) and not cls.is_link(srcname): cls._copytree(srcname, dstname) else: cls.copyfile(srcname, dstname) # except gio.Error, why: # errors.append((srcname, dstname, str(why))) # # catch the Error from the recursive copytree so that we can # # continue with other files # except shutil.Error, err: # errors.extend(err.args[0]) # try: # shutil.copystat(src, dst) # except OSError, why: # errors.extend((src, dst, str(why))) # if len(errors) > 0: # raise shutil.Error, errors cls._copy_metadata(src, dst) @classmethod def is_link(cls, path): _res = False _gfileobj = gio.File(path) # _ftype = _gfileobj.query_file_type() #flags = gio.FILE_QUERY_INFO_NONE, cancellable = None) _ftype = cls._query_file_type(_gfileobj) if _ftype == gio.FILE_TYPE_SYMBOLIC_LINK: _res = True return _res @classmethod def __isdir(cls, gfile): """Private helper method that takes `gio.File` rather pathname. """ _res = False _ftype = cls._query_file_type(gfile) if _ftype == gio.FILE_TYPE_DIRECTORY: _res = True return _res @classmethod def __isfile(cls, gfile): """Private helper method that takes `gio.File` rather pathname. """ _res = False _ftype = cls._query_file_type(gfile) if _ftype == gio.FILE_TYPE_REGULAR: _res = True return _res @classmethod def _query_file_type(cls, gfile): try: _info = gfile.query_info(attributes = "standard::type", flags = gio.FILE_QUERY_INFO_NONE, cancellable = None) _ftype = _info.get_file_type() except gio.Error, error: if error.code == gio.ERROR_NOT_FOUND: _ftype = None else: raise return _ftype @classmethod def test_dir_access(cls, path): _gfileobj = gio.File(path) try: _gfileobj.enumerate_children('standard::name') except gio.Error, error: raise exceptions.FileAccessException(get_gio_errmsg(error, "Unable to list directory content")) @classmethod def is_dir(cls, path): _gfileobj = gio.File(path) _res = cls.__isdir(_gfileobj) return _res @classmethod def listdir(cls, path) : """List a directory. Returns basenames of entries. """ listing = [] _gfileobj = gio.File(path) try: _infos = _gfileobj.enumerate_children('standard::name') except gio.Error, error: if error.code == gio.ERROR_NOT_DIRECTORY: _msg = get_gio_errmsg(error, "Unable to list directory content") _logger = log.LogFactory.getLogger() _logger.warning(_msg) _ftype = cls._query_file_type(_gfileobj) if _ftype == gio.FILE_TYPE_DIRECTORY: _msg = "Directory" elif _ftype == gio.FILE_TYPE_MOUNTABLE: _msg = "Mountable" elif _ftype == gio.FILE_TYPE_REGULAR: _msg = "Regular file" elif _ftype == gio.FILE_TYPE_SHORTCUT: _msg = "Shortcut" elif _ftype == gio.FILE_TYPE_SPECIAL: _msg = "Special file" elif _ftype == gio.FILE_TYPE_SYMBOLIC_LINK: _msg = "Symbolic link" elif _ftype == gio.FILE_TYPE_UNKNOWN: _msg = "unknown" else: _msg = "unknown (no match)" _logger.warning("Filetype of `listdir` parameter is: %s" % _msg) else: raise else: for _info in _infos: listing.append(_info.get_name()) return listing @classmethod def listdir_fullpath(cls, path) : """List a directory. Returns full paths to entries. """ _lst = cls.listdir(path) _res = [] for _ent in _lst: _res.append(cls.joinpath(path, _ent)) return _res @classmethod def makedir(cls, path): _gfileobj = gio.File(path) _gfileobj.make_directory() @classmethod def makedirs(cls, path): _gfileobj = gio.File(path) _gfileobj.make_directory_with_parents(gio.Cancellable()) @classmethod def normpath(cls, *args): """ :todo: Implement GIO method! """ return local_file_utils.normpath(*args) @classmethod def joinpath(cls, *args): return pathparse.joinpath(*args) @classmethod def get_eff_path(cls, path): _logger = log.LogFactory.getLogger() _logger.debug("get effective path for URI: `%s`" % path) _gfile = gio.File(path) _eff_path = _gfile.get_path() _logger.debug("Effective path: `%s`" % _eff_path) return _eff_path @classmethod def get_dirname(cls, path): # _gfileobj = gio.File(path) # return _gfileobj.get_parent() return local_file_utils.get_dirname(path) @classmethod def __basename(cls, gfile): return gfile.get_basename() @classmethod def get_basename(cls, path): _gfileobj = gio.File(path) return _gfileobj.get_basename() @classmethod def pickleload(cls, path): """ Load a python object from the given pickle file @param file: the path of the pickle file """ _str = cls.openfile_for_read(path) _pobj = pickle.load(_str) _str.close() return _pobj @classmethod def pickledump(cls, datas, path): _ostr = cls.openfile_for_write(path) pickle.dump(datas , _ostr) _ostr.close() @classmethod def rename(cls, src, dst): _gfileobj = gio.File(src) _info = _gfileobj.query_info('standard::name') _dst = cls.get_basename(dst) _gfileobj.set_display_name(_dst) @classmethod def readfile(self, path): """Returns content of file en bloc. :return: string """ _gfileobj = gio.File(path) _cont_t = _gfileobj.load_contents() # returns (content, length, etag) _cont = _cont_t[0] return _cont @classmethod def writetofile(cls, path, content): _ostr = cls.openfile_for_write(path) _ostr.write(content) _ostr.close() @classmethod def close_stream(cls, file_desc): try: file_desc.close() except gio.Error, error: if error.code == gio.ERROR_CLOSED: raise exceptions.FileAlreadyClosedError(_("Error while closing stream: %s") % error) else: raise exceptions.FileAccessException(get_gio_errmsg(error, _("Error while closing stream"))) def get_gio_errmsg(error, title): _msg = "%s: %s" % (title, error) try: _error_descr = errorcodes[error.code] _msg = "%s [%s - %s]" % (_msg, _error_descr.name, _error_descr.message) except KeyError: _msg = "%s [%s %s]" % (_msg, MSG_UNKNOWN_ERROR_CODE, error.code) return _msg def _test_path(path, testdir_name, testfile_name): __logger = log.LogFactory().getLogger() _mpath = path testdir = GioOperations.joinpath(_mpath, testdir_name) testfile = GioOperations.joinpath(testdir, testfile_name) __logger.info("Perform tests at specified location") try: # test specified path __logger.debug(_("test specified path for existence using GIO")) _gmpath = gio.File(_mpath) _exists = _gmpath.query_exists() if bool(_exists) is False: raise exceptions.RemoteMountTestFailedError("Specified remote path does not exists.") # test directory __logger.debug("Test testdir: %s" % testdir) _gtdir = gio.File(testdir) _exists = _gtdir.query_exists() if bool(_exists) is True: raise exceptions.RemoteMountTestFailedError("Unable to create directory for testing purpose: Directory already exists.") __logger.debug(_("Create testdir")) _res = _gtdir.make_directory() if bool(_res) is False: raise exceptions.RemoteMountTestFailedError("Unable to create directory for testing purpose.") __logger.debug(_("Test testfile for existence")) _gtfile = gio.File(testfile) _exists = _gtfile.query_exists() if bool(_exists) is True: raise exceptions.RemoteMountTestFailedError("Unable to create file for testing purpose: File already exists.") _buffer = "Some arbitrary content: %s" % uuid.uuid4() __logger.debug(_("Create file")) _ostr = _gtfile.create() __logger.debug("Write buffer: `%s` to file" % _buffer) _ostr.write(_buffer) _ostr.close() # and re-read __logger.debug(_("Re-read test file")) _gtfile = gio.File(testfile) _exists = _gtfile.query_exists() if bool(_exists) is False: raise exceptions.RemoteMountTestFailedError("Unable to open file for testing purpose: File does not exists.") _cont = _gtfile.load_contents() assert len(_cont) == 3 __logger.debug(_cont[0]) if _cont[0] != _buffer: raise exceptions.RemoteMountTestFailedError("Unable to read content from test file: content differs.") # clean-up __logger.debug(_("Remove file")) _gtfile.delete() __logger.debug(_("Remove dir")) _gtdir.delete() except (gio.Error, glib.GError), error: raise exceptions.RemoteMountTestFailedError(str(error)) def get_scheme_from_service(service): if not isinstance(service, types.IntType): raise TypeError if service not in REMOTE_SERVICES_AVAIL: raise ValueError("Given remote service not supported") if service not in REMOTE_SERVICE_TO_URI_SCHEME: raise ValueError("Given remote service not supported") _scheme = REMOTE_SERVICE_TO_URI_SCHEME[service] return _scheme def get_service_from_scheme(scheme): try: _service = URI_SCHEME_TO_REMOTE_SERVICE[scheme] except KeyError: _service = None return _service sbackup-0.11.6/src/sbackup/fs_backend/fam.py0000644000175000017500000000762112216122130017306 0ustar peerpeer# Simple Backup - file access management # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackup.util.fam` -- file access management =================================================== .. module:: fam :synopsis: public entry point to file access management .. moduleauthor:: Jean-Peer Lorenz """ from sbackup.util import prefs _PREFS = prefs.Preferences() FS_BACKEND = _PREFS.get(key = prefs.PREFS_FS_BACKEND) # factory methods def get_fam_target_handler_facade_instance(): _fam = None if FS_BACKEND == prefs.FS_BACKEND_GIO: from sbackup.fs_backend import _gio_fam _fam = _gio_fam.GioTargetHandler() elif FS_BACKEND == prefs.FS_BACKEND_FUSE: from sbackup.fs_backend import _fuse_fam _fam = _fuse_fam.FuseTargetHandler() else: raise ValueError("Given filesystem backend `%s` is not supported" % FS_BACKEND) return _fam def get_file_operations_facade_instance(): _op = None if FS_BACKEND == prefs.FS_BACKEND_GIO: from sbackup.fs_backend import _gio_utils _op = _gio_utils.GioOperations() elif FS_BACKEND == prefs.FS_BACKEND_FUSE: from sbackup.fs_backend import _fuse_utils _op = _fuse_utils.FuseOperations() else: raise ValueError("Given filesystem backend `%s` is not supported" % FS_BACKEND) return _op def get_remote_services_avail(): _res = None if FS_BACKEND == prefs.FS_BACKEND_GIO: from sbackup.fs_backend import _gio_utils _res = _gio_utils.REMOTE_SERVICES_AVAIL elif FS_BACKEND == prefs.FS_BACKEND_FUSE: from sbackup.fs_backend import _fuse_utils _res = _fuse_utils.REMOTE_SERVICES_AVAIL else: raise ValueError("Given filesystem backend `%s` is not supported" % FS_BACKEND) return _res def get_default_remote_service(): _res = None if FS_BACKEND == prefs.FS_BACKEND_GIO: from sbackup.fs_backend import _gio_utils _res = _gio_utils.REMOTE_SERVICE_SFTP elif FS_BACKEND == prefs.FS_BACKEND_FUSE: from sbackup.fs_backend import _fuse_utils _res = _fuse_utils.REMOTE_SERVICE_SFTP else: raise ValueError("Given filesystem backend `%s` is not supported" % FS_BACKEND) return _res def get_scheme_from_service(service): _res = None if FS_BACKEND == prefs.FS_BACKEND_GIO: from sbackup.fs_backend import _gio_utils _res = _gio_utils.get_scheme_from_service(service) elif FS_BACKEND == prefs.FS_BACKEND_FUSE: from sbackup.fs_backend import _fuse_utils _res = _fuse_utils.get_scheme_from_service(service) else: raise ValueError("Given filesystem backend `%s` is not supported" % FS_BACKEND) return _res def get_service_from_scheme(scheme): _res = None if FS_BACKEND == prefs.FS_BACKEND_GIO: from sbackup.fs_backend import _gio_utils _res = _gio_utils.get_service_from_scheme(scheme) elif FS_BACKEND == prefs.FS_BACKEND_FUSE: from sbackup.fs_backend import _fuse_utils _res = _fuse_utils.get_service_from_scheme(scheme) else: raise ValueError("Given filesystem backend `%s` is not supported" % FS_BACKEND) return _res sbackup-0.11.6/src/sbackup/fs_backend/_fuse_fam.py0000644000175000017500000003514112216122130020465 0ustar peerpeer# Simple Backup - Target file access management using Fuse plugins # # Copyright (c)2009-2010: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import os import time import uuid from sbackup.core import ConfigManager from sbackup.fuse_plugins import PluginManager from sbackup.util.exceptions import SBException from sbackup.util import exceptions from sbackup.util import interfaces from sbackup.util import local_file_utils from sbackup.util import log from sbackup.util import pathparse class FuseTargetHandler(interfaces.ITargetHandler): """ The Fuse File access Manager """ def __init__(self): """ Constructor @param configManager: """ interfaces.ITargetHandler.__init__(self) self._logger = log.LogFactory.getLogger() # destination/target specific instances self._dest = None self._eff_path = None self._configuration = None self._initialize_callback = None self._terminate_callback = None self._is_initialized = False ## This is the base directory where all mountpoints of remote sites will be located _defaults = ConfigManager.get_default_config_obj() self.__mountdir = _defaults.get_mountdir() ## the list of all mounted dirs , should be filled by initialize. # It's a dict with key = remoteSource and value = mountpoint self.__mountedDirs = {} def set_use_mainloop(self, use): pass def set_destination(self, path): _dest_obj = pathparse.UriParser() _dest_obj.set_and_parse_uri(uri = path) self._dest = _dest_obj if self._dest.is_local(): self._eff_path = self._dest.uri def get_destination(self): _path = self._dest.uri return _path def set_initialize_callback(self, func): self._logger.debug("set_initialize_callback: %s" % (str(func))) self._initialize_callback = func def set_terminate_callback(self, func): self._logger.debug("set_terminate_callback: %s" % (str(func))) self._terminate_callback = func def set_configuration_ref(self, configuration): self._configuration = configuration self.__mountdir = self._configuration.get_mountdir() def is_initialized(self): return self._is_initialized def initialize(self): """Test existence of path after initialization. Get the list of dir to mount and mount them. If the keep alive tag is set , it creates a Thread that will keep the mounted dir alive. @param keepAlive: Optional int that is used to determine the loop time (number of seconds) to keep the mount pint alive @todo: For later releases: The distinction between local and remote sites must be improved! """ self._logger.info(_("Initializing FUSE File Access Manager.")) if self._is_initialized is True: raise AssertionError("FUSE File Access Manager is initialized.") self._eff_path = None self.__check_mountdir() self._mount_config_destination() self._is_initialized = True def __check_mountdir(self): """check if the mount dir is valid :todo: Do not create dir here? Use makedirs? """ if not os.path.exists(self.__mountdir) : os.mkdir(self.__mountdir) else: if not os.path.isdir(self.__mountdir) : raise SBException("The mount base dir should be a directory") def terminate(self): """ Unmount all mounted directories. """ self._logger.info(_("Terminating FUSE File Access Manager.")) error = None # print "Mount dirs: %s" % str(self.__mountedDirs) if self._is_initialized is True: try: plugin_manager = PluginManager() for src, dir in self.__mountedDirs.iteritems() : self._logger.debug("Mounted dirs - %s - %s" % (src, dir)) if src is not os.sep : _umounted = False for p_name, p_class in plugin_manager.getPlugins().iteritems(): #we got the plugin self._logger.debug("Trying `%s` plugin to match `%s`" % (p_name, src)) plugin = p_class() if plugin.match_scheme(src): self._logger.debug("Unmounting with `%s` plugin" % p_name) plugin.umount(dir) _umounted = True self._remove_mountdir(dir) break if not _umounted: self._logger.warning("Unable to terminate FUSE `%s`" % dir) except SBException, error: self._logger.error("Error in terminate. Overwriting previous errors.") if self._initialize_callback is None: raise else: self._logger.warning("FUSE File Access Manager is not initialized. Nothing to do.") self._eff_path = None if self._terminate_callback is not None: self._logger.debug("Calling additional callback in gio_fam: %s" % self._terminate_callback) self._terminate_callback(error) self._is_initialized = False # print "End of fuse_fam.terminate" self._is_initialized = False def __mount_uri(self, uri): """Mounts an arbitrary uri and returns effective path. It uses the __mountdir param to know where to mount. It also fills the __mountedDirs dict. The configuration is not modified. @return: effective path of given uri or None if local path was given """ self.__check_mountdir() plugin_manager = PluginManager() for p_name, p_class in plugin_manager.getPlugins().iteritems(): try : #we got the plugin plugin = p_class() if plugin.match_scheme_full(uri): self._logger.debug("Processing with plugin '%s' to mount '%s'" % (p_name, uri)) rsource, mpoint, pathinside = plugin.mount(uri, self.__mountdir) if rsource != os.sep: # remote self.__mountedDirs[rsource] = mpoint # print "Mount dirs: %s" % str(self.__mountedDirs) return os.sep.join([mpoint, pathinside]) else: # The plugin used was localFuseFAM return None except Exception, error: _msg = "Unable to mount target destination `%s` using plugin `%s`: %s" % (uri, p_name, error) self._logger.error(_msg) raise exceptions.FuseFAMException(_msg) _msg = "Unable to mount `%s`: schema not supported by plugins." % uri self._logger.error(_msg) raise exceptions.FuseFAMException(_msg) def _mount_config_destination(self): """Mounts the destination specified in configuration and modifies the target value in configuration accordingly. """ error = None try: _dest = self.get_destination() _eff_path = self.__mount_uri(_dest) if _eff_path is None: self._eff_path = _dest else: self._eff_path = _eff_path if (self._eff_path is None) or (not self._eff_path.startswith(local_file_utils.PATHSEP)): raise exceptions.FileAccessException("Unable to mount target") if not local_file_utils.path_exists(self._eff_path): raise exceptions.FileAccessException("Unable to mount target: Path does not exist") except SBException, error: self._logger.error("Error in mount callback function. Overwriting previous errors.") if self._initialize_callback is None: raise if self._initialize_callback is not None: self._logger.debug("Calling additional callback in fuse_fam._mount_cb: %s" % self._initialize_callback) self._initialize_callback(error) if error is None: self._is_initialized = True # print "End of fuse_fam._mount_config_destination" def _remove_mountdir(self, mountpoint): """Removes previously created mountpoint in secure manner. """ if os.path.exists(mountpoint): if os.path.ismount(mountpoint): self._logger.warning("Unable to remove mountpoint that is busy. Unmount before removing.") else: _listdir = os.listdir(mountpoint) if len(_listdir) == 0: try: os.rmdir(mountpoint) self._logger.debug("Mountpoint `%s` successfully removed." % mountpoint) except (IOError, OSError), error: self._logger.error("Unable to remove mountpoint `%s`: %s" % (mountpoint, error)) else: self._logger.warning("Unable to remove mountpoint: directory is not empty.") else: self._logger.warning("Unable to remove mountpoint `%s`: does not exist" % mountpoint) # def __keepAlive(self): # """ # Launch a command on the mounted dirs to keep the mount alive # """ # pass # def testFusePlugins(self, remotedir): # """The given remote directory is applied to any found plugins to # decide whether one of the plugins is able to handle this (remote) # protocol. The tests cover: # * checking of the adress scheme and the validity of the adress # * mounting of the remote site # * write and read access on the remote site. # # If no plugin is able to handle the given path, an exception is # raised. # # @todo: Customize the raised exception to provided more informations! # """ # if remotedir.startswith(os.sep) : # raise SBException("Nothing to do for localpath '%s'." % remotedir) # ##TODO: inconsistent path handling! # # set the defaults # if os.getuid() == 0 : # mountdir = "/mnt/sbackup/" # else : # mountdir = self._configFileHandler.get_user_datadir() + "mountdir" # # # check if the mount dir is valid # if not os.path.exists(mountdir) : # os.mkdir(mountdir) # # plugin_manager = PluginManager() # _plugins = plugin_manager.getPlugins() # _iterator = _plugins.iteritems() # for p_name, p_class in _iterator: # #we got the plugin # self._logger.debug("Testing of plugin '%s'" % str(p_name)) # plugin = p_class() # if plugin.match_scheme_full(remotedir): # self._logger.debug("Processing with plugin '%s' to mount '%s'" % (p_name, remotedir)) # try: # rsource, mpoint, pathinside = plugin.mount(remotedir, mountdir) # self._logger.debug("Mount Succeeded !") # # self._logger.debug("Testing Writability") # test = "testFuseFam" # testfile = os.path.join(mpoint, pathinside, test) # os.mkdir(testfile) # os.rmdir(testfile) # # plugin.umount(mpoint) # self._remove_mountdir(mpoint) # # except Exception, error: # raise SBException("Test failed with following output:\n\n%s " % error) # # return True # # raise SBException("No plugin could deal with that schema '%s'" % remotedir) def get_eff_path(self): _effpath = self._eff_path assert _effpath != "" assert _effpath is not None assert _effpath.startswith(local_file_utils.PATHSEP) return _effpath def get_eff_fullpath(self, *args): _base = local_file_utils.normpath(*args) _eff_path = self.get_eff_path() self._logger.debug("Effective path: `%s`" % _eff_path) self._logger.debug("Base path: `%s`" % _base) _res = None if _eff_path is not None: _res = local_file_utils.normpath(_eff_path, _base) return _res def get_snapshot_path(self, snpname): _base = self.query_mount_uri() _snppath = local_file_utils.normpath(_base, snpname) return _snppath def query_dest_fs_info(self): (_size, _free) = local_file_utils.query_fs_info(self._eff_path) return (_size, _free) def query_dest_display_name(self): return self._dest.query_display_name() def query_mount_uri(self): return self.get_eff_path() def is_local(self): _loc = self._dest.is_local() return _loc def get_supports_publish(self): _res = True return _res def get_use_iopipe(self): _res = False return _res def dest_path_exists(self): """The effective path denotes the local mountpoint of the actual remote or local target. It is required in order to give it to TAR as parameter (tar does not support gio). It is checked using GIO and native access functions. """ _path = self.query_mount_uri() assert _path != "" assert _path is not None assert _path.startswith(local_file_utils.PATHSEP) _res_gio = local_file_utils.path_exists(_path) return _res_gio def test_destination(self): _effpath = self._eff_path assert _effpath != "" assert _effpath is not None assert _effpath.startswith(local_file_utils.PATHSEP) dname = "%s-%s-%s.tmp" % ("sbackup-dir", time.time(), uuid.uuid4()) tfilen = "%s-%s-%s.tmp" % ("sbackup", time.time(), uuid.uuid4()) local_file_utils.test_path(_effpath, dname, tfilen) sbackup-0.11.6/src/sbackup/fs_backend/_gio_fam.py0000644000175000017500000001663512216122130020310 0ustar peerpeer# Simple Backup - Target file access management using GIO/GVFS # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import types from sbackup.fs_backend import _gio_utils as gio_utils from sbackup.fs_backend._gio_utils import GioOperations from sbackup.util import exceptions from sbackup.util import interfaces from sbackup.util import pathparse from sbackup.util import log class GioTargetHandler(interfaces.ITargetHandler): def __init__(self): """ Constructor :param configuration: only mounted path is Target (currently) """ interfaces.ITargetHandler.__init__(self) self._logger = log.LogFactory.getLogger() # destination/target specific instances self._dest = None self._dest_mount_hdl = gio_utils.GioMountHandler() self._use_mainloop = False self._configuration = None self._in_progress = False # must be set to False when start mount process (lock) self._initialize_callback = None self._terminate_callback = None self._is_initialized = False def set_use_mainloop(self, use): if not isinstance(use, types.BooleanType): raise TypeError("Expected boolean type") self._use_mainloop = use def set_initialize_callback(self, func): self._logger.debug("set_initialize_callback: %s" % (str(func))) self._initialize_callback = func def set_terminate_callback(self, func): self._logger.debug("set_terminate_callback: %s" % (str(func))) self._terminate_callback = func def set_destination(self, path): _dest_obj = pathparse.UriParser() _dest_obj.set_and_parse_uri(uri = path) self._dest = _dest_obj self._dest_mount_hdl.set_uri(self._dest) # actually a UriParser def get_destination(self): _path = self._dest.uri return _path def is_local(self): _loc = self._dest.is_local() return _loc def get_supports_publish(self): """Current implementations of gvfs-fuse causes issues when using tar's checkpoint action in conjunction with multiple volumes. """ _res = False if self.is_local(): _res = True return _res def get_use_iopipe(self): _res = True return _res def set_configuration_ref(self, configuration): self._configuration = configuration def initialize(self): self._logger.info(_("Initializing GIO File Access Manager.")) if self._dest is None: raise TypeError("No destination given") #TODO: skip initialization or raise exception? if self._is_initialized is True: raise AssertionError("GIO File Access Manager is already initialized.") self._mount_destination() def is_initialized(self): return self._is_initialized def terminate(self): self._logger.info(_("Terminating GIO File Access Manager.")) if self._in_progress is not False: raise AssertionError("Another mount process is still in progress") self._in_progress = True if self._is_initialized is True: # set `use_mainloop` again for the case it was changed in the meantime self._dest_mount_hdl.use_own_mainloop(self._use_mainloop) try: self._dest_mount_hdl.umount() except exceptions.RemoteUmountFailedError, error: self._logger.error("Unable to umount `%s`: %s" % (self._dest.query_display_name(), error)) else: self._logger.warning("GIO File Access Manager is not initialized. Nothing to do.") self._logger.debug("Calling callbacks anyway") self._umount_cb(None) def _mount_destination(self): """Mounts the destination specified in configuration and modifies the target value in configuration accordingly. """ if self._in_progress is not False: raise AssertionError("Another mount process is still in progress") self._in_progress = True # set lock self._dest_mount_hdl.use_own_mainloop(self._use_mainloop) self._dest_mount_hdl.set_callbacks(mount = self._mount_cb, umount = self._umount_cb) self._dest_mount_hdl.mount() def _mount_cb(self, error): """Callback method that gets called when mounting is finished. Takes errors occurred during the mount process as parameter. """ self._in_progress = False # release lock if self._initialize_callback is not None: self._logger.debug("Calling additional callback in gio_fam._mount_cb: %s" % self._initialize_callback) self._initialize_callback(error) else: if error is not None: raise exceptions.FileAccessException("Unable to mount: %s" % error) if error is None: self._is_initialized = True def _umount_cb(self, error): self._in_progress = False # release lock if self._terminate_callback is not None: self._logger.debug("Calling additional callback in gio_fam: %s" % self._terminate_callback) self._terminate_callback(error) self._is_initialized = False def get_eff_path(self): _path = self.query_mount_uri() _eff_path = GioOperations.get_eff_path(_path) return _eff_path def get_eff_fullpath(self, *args): _base = GioOperations.normpath(*args) _eff_path = self.get_eff_path() self._logger.debug("Effective path: `%s`" % _eff_path) self._logger.debug("Base path: `%s`" % _base) _res = None if _eff_path is not None: _res = GioOperations.normpath(_eff_path, _base) return _res def query_dest_fs_info(self): (_size, _free) = self._dest_mount_hdl.query_fs_info() return (_size, _free) def query_dest_display_name(self): return self._dest.query_display_name() def query_mount_uri(self): return self._dest.query_mount_uri() def dest_path_exists(self): """The effective path denotes the local mountpoint of the actual remote or local target. It is required in order to give it to TAR as parameter (tar does not support gio). It is checked using GIO and native access functions. """ _path = self.query_mount_uri() _res_gio = GioOperations.path_exists(_path) return _res_gio def test_destination(self): self._dest_mount_hdl.test_path() def get_snapshot_path(self, snpname): _base = self.query_mount_uri() _snppath = GioOperations.normpath(_base, snpname) return _snppath sbackup-0.11.6/src/sbackup/backupproc.py0000644000175000017500000005515012216122130016615 0ustar peerpeer# Simple Backup - the actual backup service # # Copyright (c)2008-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`backupproc` --- the actual backup service ================================================ .. module:: backupproc :synopsis: Defines the actual backup service .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) .. moduleauthor:: Jean-Peer Lorenz """ from gettext import gettext as _ import traceback import sys import smtplib import socket import datetime import optparse import time from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from sbackup.pkginfo import Infos from sbackup.core.ConfigManager import ConfigManager, get_profiles from sbackup.core.ConfigManager import ConfigurationFileHandler from sbackup.core.profile_handler import BackupProfileHandler from sbackup.util import enable_backup_cancel_signal, enable_termsignal from sbackup.util import get_resource_file from sbackup.util import local_file_utils from sbackup.util import exceptions from sbackup.util import constants from sbackup.util import system from sbackup.util import notifier from sbackup.util import lock from sbackup.util import log def except_hook(etype, evalue, etb): _logger = log.LogFactory.getLogger() _lines = traceback.format_exception(etype, evalue, etb) _lines = "".join(_lines) _logger.error("Uncaught exception: %s" % evalue) _logger.error(_lines) sys.excepthook = except_hook #TODO: move the following into GIO backend: should be executed in case of enabled gio backend only! system.launch_dbus_if_required() class SBackupProc(object): """This class is intended to be a wrapper of the process of backups of multiple profiles. It manages : - the full backup process : creation of instances of the BackupProfileHandler with the corresponding config file - the logging of exception not handled by BackupProfileHandler - the removal of lockfiles - the sending of emails """ def __init__(self, notifiers, configfile, dbus_connection = None, use_indicator = False, full_snapshot = False): """Default constructor. Basic initializations are done here. :param notifiers: instances of notifiers that should be used :param configfile: use this configuration file :param dbus_connection: DBus connection (connected and registerd) :type notifiers: list :note: The configuration managers are retrieved very early to ensure that specific logger instances are created. :todo: Collect options (configfile, use_indicator...) in class/struct! """ self.__dbus_conn = dbus_connection self.__use_indicator = use_indicator self.__full_snp = full_snapshot self.__exitcode = constants.EXCODE_GENERAL_ERROR self.__errors = [] # collection of all config managers self.__confm = [] # the name of the currently processed profile self.__profilename = None self.__retrieve_confm(configfile) # here the logger created for the default profile is used self.logger = log.LogFactory.getLogger(self.__profilename) self.logger.debug("%s %s" % (Infos.NAME, Infos.VERSION)) # the currently used instance of the BackupProfileHandler self.__bprofilehdl = None self.__state = notifier.SBackupState() self.__notifiers = notifiers self.__register_notifiers() self.__initialize_notifiers() def __register_notifiers(self): """Registers the given notifiers as observers. :todo: should we give the `state` as parameter to notfier's constructor? """ for _notifier in self.__notifiers: self.__state.attach(_notifier) def __initialize_notifiers(self): """Initializes the given notifiers. """ for _notifier in self.__notifiers: _notifier.initialize() def __terminate_notifiers(self): """Unregisters the given notifiers from state subject. """ for _notifier in self.__notifiers: _notifier.publish_exit() self.__state.detach(_notifier) def __sendEmail(self): """Checks if the sent of emails is set in the config file then send an email with the report :todo: Transfer this functionality to a specialized class! """ self.logger.debug("Send email report") if self.__bprofilehdl.config.has_option("report", "from") : _from = self.__bprofilehdl.config.get("report", "from") else : hostname = socket.gethostname() if "." in hostname : mailsuffix = hostname else : mailsuffix = hostname + ".ext" _from = _("SBackup Daemon <%(login)s@%(hostname)s>")\ % {'login' : str(system.get_user_from_env()), 'hostname': mailsuffix} _to = self.__bprofilehdl.config.get("report", "to") _title = _("[SBackup] [%(profile)s] Report of %(date)s")\ % { 'profile':self.__profilename, 'date': datetime.datetime.now() } logf = self.__bprofilehdl.config.get_current_logfile() if logf is None: _content = _("No log file specified.") else: if local_file_utils.path_exists(logf): _content = local_file_utils.readfile(logf) else : _content = _("Unable to find log file.") server = smtplib.SMTP() if self.logger.isEnabledFor(10): server.set_debuglevel(True) msg = MIMEMultipart() msg['Subject'] = _title msg['From'] = _from msg['To'] = _to msg.preamble = _title msg_content = MIMEText(_content) # Set the filename parameter msg_content.add_header('Content-Disposition', 'attachment', filename = "sbackup.log") msg.attach(msg_content) # getting the connection if self.__bprofilehdl.config.has_option("report", "smtpserver") : if self.__bprofilehdl.config.has_option("report", "smtpport") : server.connect(self.__bprofilehdl.config.get("report", "smtpserver"), self.__bprofilehdl.config.get("report", "smtpport")) else : server.connect(self.__bprofilehdl.config.get("report", "smtpserver")) if self.__bprofilehdl.config.has_option("report", "smtptls") and\ self.__bprofilehdl.config.get("report", "smtptls") == "1": if self.__bprofilehdl.config.has_option("report", "smtpcert") and\ self.__bprofilehdl.config.has_option("report", "smtpkey") : server.starttls(self.__bprofilehdl.config.get("report", "smtpkey"), self.__bprofilehdl.config.get("report", "smtpcert")) else : server.starttls() if self.__bprofilehdl.config.has_option("report", "smtpuser") and\ self.__bprofilehdl.config.has_option("report", "smtppassword") : server.login(self.__bprofilehdl.config.get("report", "smtpuser"), self.__bprofilehdl.config.get("report", "smtppassword")) # send and close connection server.sendmail(_from, _to, msg.as_string()) server.close() def __retrieve_confm(self, force_conffile): """Factory method that retrieves the appropriate configuration managers for the existing profiles. Super-user rights are taken into account. The created configuration managers are stored in member variable 'self.__confm'. :todo: Place the path names in class `ConfigStaticData`. """ self.__confm = [] # default profile config file and the config directory is determined conffile_hdl = ConfigurationFileHandler() if force_conffile is None: conffile = conffile_hdl.get_conffile() else: # conffile given on commandline is treated as default profile's config conffile = force_conffile confdir = conffile_hdl.get_profilesdir(conffile) # create config manager for the default profile and set as current if local_file_utils.path_exists(conffile): confm = ConfigManager(conffile) self.__profilename = confm.getProfileName() self.__confm.append(confm) # store the created ConfigManager in a collection else: errmsg = _("Critical Error: No configuration file for the default profile was found!\n\nNow continue processing remaining profiles.") self.__errors.append(errmsg) if force_conffile is None: # search for alternate configuration files only if no config file was given for _prof in get_profiles(confdir).values(): _prof_path = _prof[0] _prof_enable = _prof[1] if _prof_enable: confm = ConfigManager(_prof_path) self.__confm.append(confm) def run(self): """Actual main method to make backups using SBbackup - launch BackupProfileHandler with the user configuration file - catches all exceptions thrown and logs them """ self.__notify_init_errors() for confm in self.__confm: try: self.__profilename = confm.getProfileName() self.logger = log.LogFactory.getLogger(self.__profilename) self.__bprofilehdl = BackupProfileHandler(confm, self.__state, self.__dbus_conn, self.__use_indicator, self.__full_snp) self.__write_errors_to_log() self.__bprofilehdl.do_hook('pre-backup') self.__bprofilehdl.prepare() self.__bprofilehdl.process() self.__exitcode = self.__bprofilehdl.finish() self.__bprofilehdl.do_hook('post-backup') except exceptions.BackupCanceledError: self.__on_backup_canceled() except (SystemExit, KeyboardInterrupt, Exception), error: self.__on_backup_error(error) self.__on_proc_finish() self.__bprofilehdl = None self.__terminate_notifiers() return self.__exitcode def __on_backup_canceled(self): try: self.logger.warning(_("Backup was canceled by user.")) self.__state.set_state('backup-canceled') if self.__bprofilehdl is not None: self.__exitcode = self.__bprofilehdl.cancel() except Exception, error: self.__notify_error(error, _("An error occurred during the cancellation of backup:")) self.__exitcode = constants.EXCODE_GENERAL_ERROR def __on_backup_error(self, error): """Handles errors that occurs during backup process. """ self.__notify_error(error, _("An error occurred during the backup:")) self.__exitcode = constants.EXCODE_BACKUP_ERROR if self.__bprofilehdl is not None: self.__exitcode = self.__bprofilehdl.finish(error) if isinstance(error, (SystemExit, KeyboardInterrupt)): raise error def __on_proc_finish(self): """Method that is finally called after backup process. """ try: if self.__bprofilehdl and self.__bprofilehdl.config: # send the mail if self.__bprofilehdl.config.has_section("report") and self.__bprofilehdl.config.has_option("report", "to") : self.__sendEmail() except Exception, error: self.__notify_error(error, _("Error when sending email:")) self.__exitcode = constants.EXCODE_MAIL_ERROR def __notify_error(self, error, title): """Sends user notification and logs error that occurred during backup process. """ if self.logger.isEnabledFor(10): self.logger.exception("%s\n%s" % (title, error)) else: self.logger.error("%s %s" % (title, error)) self.__state.set_recent_error(error) self.__state.set_state('error') def __notify_init_errors(self): """Errors that occurred during the initialization process were stored in an error list. This error list is showed to the user by this method. Consolidate this method, `__write_errors_to_log` and `__notify_error`! """ if len(self.__errors) > 0: for errmsg in self.__errors: self.__state.set_recent_error(errmsg) self.__state.set_state('error') def __write_errors_to_log(self): """Errors that occurred during the initialization process were stored in an error list. The full list of errors is added to the current log. """ if len(self.__errors) > 0: self.logger.info(_("The following error(s) occurred before:")) for errmsg in self.__errors: self.logger.error(errmsg.replace("\n", " ")) class SBackupApp(object): """The application that processes the backup. :todo: Implement a base class providing common commandline parsing etc.! """ def __init__(self, argv): self.__argv = argv self.__lock = lock.ApplicationLock(lockfile = constants.LOCKFILE_BACKUP_FULL_PATH, processname = constants.BACKUP_COMMAND, pid = system.get_pid()) self.__options_given = None # do not modify given options self.__use_indicator = True self.__dbus_avail = False self.__configfile = None self.__backupproc = None self.__notifiers = [] # we establish a connection to ensure its presence for progress action self.__dbus_conn = None self.__exitcode = constants.EXCODE_GENERAL_ERROR def create_notifiers(self): """Creates notifiers used within the backup process. Note that these notifiers are not ready for use yet, they are initialized within the backup process. Purpose is to split between notifier creation and notifier use: the backup process has no information about the specific notifiers (type...) :note: import D-Bus related modules only if using D-Bus is enabled """ if self.__options_given.use_dbus and self.__dbus_avail: from sbackup.util import dbus_support dbus_notifier = dbus_support.DBusNotifier() self.__notifiers.append(dbus_notifier) def launch_externals(self): if self.__options_given.use_dbus == True: self._launch_dbusservice() if (self.__use_indicator == True) and (self.__dbus_avail == True): try: self._launch_indicator() except exceptions.ResourceFileNotFoundError: self.__use_indicator = False def _launch_dbusservice(self): """Launches the DBus service and establishes a placeholder connection in order to keep the service alive as long as this application is running. Call `finalize` to close the connection properly when terminating the application. :note: import D-Bus related modules only if using D-Bus is enabled """ from sbackup.util import dbus_support self.__dbus_conn = dbus_support.DBusProviderFacade(constants.BACKUP_PROCESS_NAME) try: self.__dbus_conn.connect() self.__dbus_conn.set_backup_pid(pid = system.get_pid()) self.__dbus_avail = True except exceptions.DBusException: print "Unable to launch DBus service" self.__dbus_conn = None self.__dbus_avail = False self.__use_indicator = False def _launch_indicator(self): """ environ: the Gnome-session environ is accessable for root and the user who owns the session. :note: import D-Bus related modules only if using D-Bus is enabled """ print "Attempt to launch indicator application (status icon)." _path_to_app = get_resource_file(constants.INDICATORAPP_FILE) session_env = system.get_session_environment() if session_env is None: print "No desktop session found. Indicator application is not started." else: _cmd = [_path_to_app] if self.__options_given.legacy_appindicator is True: _cmd.append("--legacy") if not system.is_superuser(): if system.get_user_from_uid() != session_env["USER"]: _cmd = None print "Unable to launch indicator application as current user.\n"\ "You must own current desktop session." if _cmd is None: print "Unable to launch indicator application" else: pid = system.exec_command_async(args = _cmd, env = session_env) print "Indicator application started (PID: %s)" % pid time.sleep(constants.INDICATOR_LAUNCH_PAUSE_SECONDS) def finalize(self): """Cleaning before terminating the application: * disconnects if DBus connection was established. """ if (self.__dbus_avail) and (self.__dbus_conn is not None): self.__dbus_conn.quit() self.__lock.unlock() log.shutdown_logging() def parse_cmdline(self): """Parses the given commandline options and sets specific attributes. It must be considered that the DBus service can be used without the tray GUI but in contrast the tray GUI cannot be used without the DBus service. The method uses the commandline arguments given to class' constructor. :todo: An option '--dry-run' would be nice! """ usage = "Usage: %prog [options] (use -h or --help for more infos)" version = "%prog " + Infos.VERSION prog = constants.BACKUP_COMMAND parser = optparse.OptionParser(usage = usage, version = version, prog = prog) parser.add_option("--no-indicator", action = "store_false", dest = "use_indicator", default = True, help = "don't use the graphical indicator application (status icon)") parser.add_option("--no-dbus", action = "store_false", dest = "use_dbus", default = True, help = "don't launch the DBus service and "\ "don't use it (implies --no-indicator)") parser.add_option("--config-file", dest = "configfile", metavar = "FILE", default = None, help = "set the configuration file to use") parser.add_option("--legacy-indicator", action = "store_true", dest = "legacy_appindicator", default = False, help = "use legacy status icon instead of `libappindicator`") parser.add_option("--full", action = "store_true", dest = "full_snapshot", default = False, help = "create full snapshot") (options, args) = parser.parse_args(self.__argv[1:]) if len(args) > 0: parser.error("You must not provide any non-option argument") if options.configfile: if not local_file_utils.path_exists(options.configfile): parser.error("Given configuration file does not exist") self.__configfile = options.configfile self.__options_given = options if self.__options_given.use_dbus == True: self.__use_indicator = options.use_indicator else: self.__use_indicator = False def __on_already_running(self, error): """Handler for the case a backup process is already running. Fuse is not initialized yet. :note: import D-Bus related modules only if using D-Bus is enabled """ print _("Backup is not being started.\n%s") % (str(error)) if self.__options_given.use_dbus and self.__dbus_avail: from sbackup.util import dbus_support conn = dbus_support.DBusClientFacade("Simple Backup Process (another instance)") conn.connect() conn.emit_alreadyrunning_signal() conn.quit() self.__exitcode = constants.EXCODE_INSTANCE_ALREADY_RUNNING def run(self): """Runs the whole backup process including launching of external applications and services... """ try: enable_termsignal() enable_backup_cancel_signal() self.parse_cmdline() self.launch_externals() self.create_notifiers() self.__lock.lock() system.very_nice() system.set_grp("admin") self.__backupproc = SBackupProc(self.__notifiers, self.__configfile, self.__dbus_conn, self.__use_indicator, self.__options_given.full_snapshot) self.__exitcode = self.__backupproc.run() except exceptions.InstanceRunningError, error: self.__on_already_running(error) except SystemExit, exc: self.__exitcode = exc.code except KeyboardInterrupt: self.__exitcode = constants.EXCODE_KEYBOARD_INTERRUPT finally: self.finalize() return self.__exitcode def main(argv): """Public function that process the backups. :note: DBus connection is not given as parameter here because it is not clear whether to use DBus or not at this time. """ sbackup_app = SBackupApp(argv) exitcode = sbackup_app.run() return exitcode sbackup-0.11.6/src/sbackup/ar_backend/0000755000175000017500000000000012216122133016160 5ustar peerpeersbackup-0.11.6/src/sbackup/ar_backend/__init__.py0000644000175000017500000000000012216122130020254 0ustar peerpeersbackup-0.11.6/src/sbackup/ar_backend/tar.py0000644000175000017500000014466512216122130017335 0ustar peerpeer# Simple Backup - provides access to TAR functionality # # Copyright (c)2008-2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`tar` --- provides access to TAR functionality =================================================== .. module:: tar :synopsis: provides access to TAR functionality .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) .. moduleauthor:: Jean-Peer Lorenz """ from gettext import gettext as _ import time import os import subprocess import tempfile import shutil import re from datetime import datetime from sbackup.core.ConfigManager import ConfigurationFileHandler from sbackup.fs_backend import fam from sbackup.util.log import LogFactory from sbackup.util.structs import SBdict from sbackup.util import exceptions from sbackup.util.exceptions import SBException from sbackup.util import constants from sbackup.util import system from sbackup import util from sbackup.util import local_file_utils from sbackup.util import structs from sbackup.util import log GZIP_COMPRESSION_SPEED = "-1" _FOP = fam.get_file_operations_facade_instance() def getArchiveType(archive): """Determines the type of an archive by its file extension. @param archive: Full path to file to check @return: tar, gzip, bzip2 or None @rtype: String """ _res = None if archive.endswith(".bz2"): _res = "bzip2" elif archive.endswith(".gz") or archive.endswith(".tgz"): _res = "gzip" elif archive.endswith(".tar"): _res = "tar" return _res def extract(sourcear, eff_local_sourcear, restore_file, dest , bckupsuffix = None, splitsize = None): """Extract from source archive the file "file" to dest. @param sourcear: path of archive @param file: @param dest: @param bckupsuffix: If set a backup suffix option is set to backup existing files @param splitsize: If set the split options are added supposing the size of the archives is this variable @type splitsize: Integer in 1024 Bytes """ _logger = log.LogFactory().getLogger() _logger.debug("input param `sourcear`: %s" % sourcear) _logger.debug("input param `eff_local_sourcear`: %s" % eff_local_sourcear) restore_file = restore_file.lstrip(_FOP.pathsep) # strip leading separator (as TAR did before) # tar option -p, --same-permissions, --preserve-permissions: # ignore umask when extracting files (the default for root) options = ["-xp", "--ignore-failed-read", "--backup=existing", "--totals"] archType = getArchiveType(sourcear) _logger.debug("Archive type: %s" % archType) if archType == "tar" : pass elif archType == "gzip" : options.insert(1, "--gzip") elif archType == "bzip2" : options.insert(1, "--bzip2") else : raise SBException (_("Invalid archive type.")) if system.is_superuser(): options.append("--same-owner") if dest : options.append("--directory=" + dest) else : options.append("--directory=" + _FOP.pathsep) if bckupsuffix : options.append("--suffix=" + bckupsuffix) if splitsize > 0: options.extend(["-L %s" % splitsize , "-F %s" % util.get_resource_file("multipleTarScript")]) if eff_local_sourcear is None: raise exceptions.FileAccessException(_("Effective path for `%s` is not available") % sourcear) _launcher = TarBackendLauncherSingleton() if eff_local_sourcear is None: _launcher.set_stdin_file(sourcear) else: options.append("--file=%s" % eff_local_sourcear) options.append(restore_file) _launcher.launch_sync(options, env = {}) retVal = _launcher.get_returncode() outstr = _launcher.get_stdout() errStr = _launcher.get_stderr() __finish_tar(retVal, outstr, errStr) # extract2 is currently (series 0.2) only used in SnapshotManager.makeTmpTAR def extract2(sourcear, fileslist, dest, bckupsuffix = None, additionalOpts = None): """Extract the files listed in the 'fileslist' file to dest. This method has been created to optimize the time spent by giving to tar a complete list of file to extract. Use this if ever you have to extract more than 1 dir . @param sourcear: @param fileslist: a path to the file containing the list @param dest: destination @param bckupsuffix: @param additionalOpts: a list of options to add """ # tar option -p, --same-permissions, --preserve-permissions: # ignore umask when extracting files (the default for root) options = ["-xp", "--ignore-failed-read", '--backup=existing'] archType = getArchiveType(sourcear) if archType == "tar" : pass elif archType == "gzip" : options.insert(1, "--gzip") elif archType == "bzip2" : options.insert(1, "--bzip2") else : raise SBException (_("Invalid archive type.")) if system.is_superuser(): options.append("--same-owner") if dest: options.append("--directory=" + dest) else: options.append("--directory=" + _FOP.pathsep) if bckupsuffix: options.append("--suffix=" + bckupsuffix) if additionalOpts and type(additionalOpts) == list: options.extend(additionalOpts) options.extend(['--file=' + sourcear, '--null', '--files-from=' + _FOP.normpath(fileslist)]) outStr, errStr, retval = util.launch("tar", options) if retval != 0 : LogFactory.getLogger().debug("output was : " + outStr) raise SBException("Error when extracting : " + errStr) if outStr.strip() == "": outStr = "(nothing)" LogFactory.getLogger().debug("output was: " + outStr) def appendToTarFile(desttar, fileslist, workingdir, additionalOpts): """ @param desttar: The tar file to wich append @param fileslist The files to append, can be a list of files too @type fileslist: list @param workingdir: the dir to move in before appending the dir ( usefun for relative paths) @param additionalOpts: a list of additional option to append (will be append before changing the working dir) """ options = ["--append", "--ignore-failed-read"] archType = getArchiveType(desttar) if archType == "tar" : pass elif archType == "gzip" : options.insert(1, "--gzip") elif archType == "bzip2" : options.insert(1, "--bzip2") else : raise SBException (_("Invalid archive type.")) if additionalOpts and type(additionalOpts) == list : options.extend(additionalOpts) options.extend(['--file=' + desttar, '--null']) if workingdir: options.append("--directory=" + workingdir) options.append('--files-from=' + _FOP.normpath(fileslist)) outStr, errStr, retval = util.launch("tar", options) if retval != 0 : LogFactory.getLogger().debug("output was : " + outStr) raise SBException("Error when extracting : " + errStr) if outStr.strip() == "": outStr = "(nothing)" LogFactory.getLogger().debug("output was: " + outStr) def __prepare_common_opts(snapshot, targethandler, publish_progress, use_io_pipe): """Prepares common TAR options used when full or incremental backups are being made. :param snapshot: The snapshot to fill in :return: a list of options to be use to launch tar :todo: Check whether it's necessary to escape white spaces in path names! """ # don't escape spaces i.e. do not replace them with '\ '; this will fail # take care where to insert additional options (e.g. --gzip) tdir = snapshot.getPath() _snpname = snapshot.getName() options = ["-cS", "--directory=%s" % _FOP.pathsep, "--ignore-failed-read", "--no-check-device", "--blocking-factor", str(constants.TAR_BLOCKING_FACTOR), "--totals" ] # includes and excludes tmp_incl = _FOP.normpath(ConfigurationFileHandler().get_user_tempdir(), _FOP.get_basename(snapshot.getIncludeFListFile())) tmp_excl = _FOP.normpath(ConfigurationFileHandler().get_user_tempdir(), _FOP.get_basename(snapshot.getExcludeFListFile())) LogFactory.getLogger().debug("Temporary includes file: `%s`" % tmp_incl) LogFactory.getLogger().debug("Temporary excludes file: `%s`" % tmp_excl) if not _FOP.path_exists(tmp_incl): raise SBException("Temporary includes.list does not exist") if not _FOP.path_exists(tmp_excl): raise SBException("Temporary excludes.list does not exist") options.append('--files-from=%s' % tmp_incl) options.append('--exclude-from=%s' % tmp_excl) if snapshot.isFollowLinks() : options.append("--dereference") archivename = "files.tar" if snapshot.getFormat() == "gzip": options.insert(0, "--gzip") archivename += ".gz" elif snapshot.getFormat() == "bzip2": options.insert(0, "--bzip2") archivename += ".bz2" elif snapshot.getFormat() == "none": pass else: LogFactory.getLogger().debug("Setting compression to default 'none'") _ar_path = _FOP.normpath(tdir, archivename) if use_io_pipe: pass # write to socket file object? else: _larpath = targethandler.get_eff_fullpath(_snpname, archivename) if _larpath is None: raise exceptions.FileAccessException(_("Unable to get effective path for `%s`") % _ar_path) options.append('--file=%s' % _larpath) # progress signal #TODO: improve calculation of number of checkpoints based on estimated transfer rate. if publish_progress is True: one_mb = 1000000 one_gb = 1000 * one_mb _snpsize = snapshot.get_space_required() if _snpsize < (50 * one_mb): _ncheckp = 10 elif _snpsize < (500 * one_mb): _ncheckp = 50 elif _snpsize < (5 * one_gb): _ncheckp = 250 else: _ncheckp = 500 _checkpsize = _snpsize / _ncheckp _checkp = int(_checkpsize / constants.TAR_RECORDSIZE) if _checkp > 0: # LP: #875634 # Sometimes the calculation of the space required goes badly wrong # and we could end-up with _checkp=1 for 30GB to save, making tar # VERY slow. Fix: set minimum value to 100 _checkp = max(100, _checkp) options.append("--checkpoint=%s" % _checkp) _progessf = util.get_resource_file(resource_name = "sbackup-progress") options.append('--checkpoint-action=exec=%s' % _progessf) if LogFactory.getLogger().isEnabledFor(5): options.append("--verbose") return (options, _ar_path, tmp_incl, tmp_excl) def __add_split_opts(snapshot, options, size): """ Compiles and add the split management options to the TAR line. Valid for read and create actions @param snapshot: The snapshot to process @type snapshot: Snapshot @param options: the option in which to append @type options: list @param size: the size of each part (in KiB) @type size: int @raise SBException: if the snapshot format is other than none """ if snapshot.getFormat() != "none" : raise SBException(_("For the moment split functionality is not compatible with compress option.")) options.extend(["-L %s" % str(size), "-F %s" % util.get_resource_file("multipleTarScript")]) return options def __copy_temp_snarfile_into_snapshot(tmp_snarfile, snarfile): try: _FOP.copyfile(tmp_snarfile, snarfile) except exceptions.CopyFileAttributesError: LogFactory.getLogger().warning(_("Unable to change permissions for file '%s'.")\ % snarfile) def __remove_tempfiles(tmp_files): for _tmpf in tmp_files: try: _FOP.delete(_tmpf) except (OSError, IOError), error: LogFactory.getLogger().warning(_("Unable to remove temporary file `%(file)s`: %(error)s")\ % { 'file' : _tmpf, 'error': error }) def mk_archive(snapshot, targethandler, publish_progress, supports_publish): if snapshot.isfull(): _mk_tar_full(snapshot, targethandler, publish_progress, supports_publish) else: _mk_tar_incr(snapshot, targethandler, publish_progress, supports_publish) def _mk_tar_incr(snapshot, targethandler, publish_progress, supports_publish): """ Launch a TAR incremental backup @param snapshot: the snapshot in which to make the backup @raise SBException: if there was a problem with tar """ LogFactory.getLogger().info(_("Launching TAR to make incremental backup.")) # LP #638072: no wildcards in excludes list _env = { "GZIP" : GZIP_COMPRESSION_SPEED, "TAR_OPTIONS" : "--no-wildcards --anchored --no-wildcards-match-slash" } _use_io_pipe = targethandler.get_use_iopipe() _splitsize = snapshot.getSplitedSize() if _splitsize > 0: _use_io_pipe = False publish_progress = publish_progress and supports_publish _env["SBACKUP_VOLUME_SIZE"] = str(_splitsize * constants.TAR_VOLUME_SIZE_UNIT_IN_BYTES) options, ar_path, tmp_incl, tmp_excl = __prepare_common_opts(snapshot, targethandler, publish_progress, _use_io_pipe) if _splitsize > 0: options = __add_split_opts(snapshot, options, _splitsize) base_snarfile = snapshot.getBaseSnapshot().getSnarFile() snarfile = snapshot.getSnarFile() tmp_snarfile = _FOP.normpath(ConfigurationFileHandler().get_user_tempdir(), _FOP.get_basename(snarfile)) LogFactory.getLogger().debug("Snapshot's base snarfile: %s" % base_snarfile) LogFactory.getLogger().debug("Snapshot's snarfile: %s" % snarfile) LogFactory.getLogger().debug("Temporary snarfile: %s" % tmp_snarfile) # For an INC backup the base SNAR file should exists if not _FOP.path_exists(base_snarfile) : LogFactory.getLogger().error(_("Unable to find the SNAR file to make an incremental backup.")) LogFactory.getLogger().error(_("Falling back to full backup.")) _mk_tar_full(snapshot, targethandler, publish_progress, _use_io_pipe) else: try: _FOP.copyfile(base_snarfile, tmp_snarfile) except exceptions.CopyFileAttributesError: LogFactory.getLogger().warning(_("Unable to change permissions for file '%s'.")\ % tmp_snarfile) # check (and set) the permission bits; necessary if the file's origin # does not support user rights (e.g. some FTP servers, file systems...) #FIXME: use generalized File operations here! if not local_file_utils.path_writeable(tmp_snarfile): local_file_utils.chmod(tmp_snarfile, 0644) # create the snarfile within a local directory; necessary if the # backup target does not support 'open' within the TAR process and # would fail options.append("--listed-incremental=" + tmp_snarfile) # launch TAR with empty environment _launcher = TarBackendLauncherSingleton() if _use_io_pipe: _launcher.set_stdout_file(ar_path) try: _launcher.launch_sync(options, env = _env) retVal = _launcher.get_returncode() outstr = _launcher.get_stdout() errStr = _launcher.get_stderr() __finish_tar(retVal, outstr, errStr) __copy_temp_snarfile_into_snapshot(tmp_snarfile, snarfile) finally: __remove_tempfiles([tmp_snarfile, tmp_incl, tmp_excl]) def _mk_tar_full(snapshot, targethandler, publish_progress, supports_publish): """Convenience function that launches TAR to create a full backup. @param snapshot: the snapshot in which to make the backup @raise SBException: if there was a problem with tar """ LogFactory.getLogger().info(_("Launching TAR to make a full backup.")) # LP #638072: no wildcards in excludes list _env = { "GZIP" : GZIP_COMPRESSION_SPEED, "TAR_OPTIONS" : "--no-wildcards --anchored --no-wildcards-match-slash" } _use_io_pipe = targethandler.get_use_iopipe() _splitsize = snapshot.getSplitedSize() if _splitsize > 0: _use_io_pipe = False publish_progress = publish_progress and supports_publish _env["SBACKUP_VOLUME_SIZE"] = str(_splitsize * constants.TAR_VOLUME_SIZE_UNIT_IN_BYTES) options, ar_path, tmp_incl, tmp_excl = __prepare_common_opts(snapshot, targethandler, publish_progress, _use_io_pipe) if _splitsize > 0: options = __add_split_opts(snapshot, options, _splitsize) snarfile = snapshot.getSnarFile() tmp_snarfile = _FOP.normpath(ConfigurationFileHandler().get_user_tempdir(), _FOP.get_basename(snarfile)) LogFactory.getLogger().debug("Snapshot's snarfile: %s" % snarfile) LogFactory.getLogger().debug("Temporary snarfile: %s" % tmp_snarfile) # For a full backup the SNAR file shouldn't exists if _FOP.path_exists(snarfile) : _FOP.delete(snarfile) if _FOP.path_exists(tmp_snarfile) : _FOP.delete(tmp_snarfile) options.append("--listed-incremental=%s" % tmp_snarfile) # launch TAR with empty environment _launcher = TarBackendLauncherSingleton() if _use_io_pipe: _launcher.set_stdout_file(ar_path) try: _launcher.launch_sync(options, env = _env) retVal = _launcher.get_returncode() outstr = _launcher.get_stdout() errStr = _launcher.get_stderr() __finish_tar(retVal, outstr, errStr) __copy_temp_snarfile_into_snapshot(tmp_snarfile, snarfile) finally: __remove_tempfiles([tmp_snarfile, tmp_incl, tmp_excl]) def __finish_tar(exitcode, output_str, error_str): """ @todo: Catch failing child process (e.g. gzip) in proper way. """ if output_str is None: output_str = "" if error_str is None: error_str = "" _logger = LogFactory.getLogger() _logger.debug("Exit code: %s" % exitcode) _logger.debug("Standard out: %s" % output_str) _logger.debug("Error out: %s" % error_str) _res_err = [] if error_str != "": err_lst = error_str.split("\n") for err_item in err_lst: if err_item == "/bin/tar: Removing leading `/' from member names": _logger.info(_("Leading '/' from member names were removed.")) elif err_item == "/bin/tar: Removing leading `/' from hard link targets": _logger.info(_("Leading '/' from hard link targets were removed.")) else: err_item = err_item.lstrip("/bin/tar: ") err_item = err_item.strip() if err_item != "": _res_err.append(err_item) if exitcode == 0: if len(_res_err) == 1: _logger.info(_("TAR returned a message: %s") % _res_err[0]) elif len(_res_err) > 1: _logger.info(_("TAR returned messages:\n%s") % "\n".join(_res_err)) else: pass _logger.info(_("TAR has been finished successfully.")) elif exitcode == 1: if len(_res_err) == 1: _logger.info(_("TAR returned a warning: %s") % _res_err[0]) elif len(_res_err) > 1: _logger.info(_("TAR returned warnings:\n%s") % "\n".join(_res_err)) else: pass _logger.info(_("TAR returned warnings but has been finished successfully.")) else: # list-incremental is not compatible with ignore failed read ??? _errmsg = _("Unable to finish successfully. TAR terminated with errors.") _logger.error("%s\n%s(exit code: %s)" % (_errmsg, error_str, exitcode)) raise SBException(_errmsg) def get_dumpdir_from_list(lst_dumpdirs, filename): """Searchs within the given list of dumpdirs for the given filename and the dumpdir if found. @raise SBExcetion: if filename couldn't be found in list """ # print ">>> get_dumpdir_from_list" # print " Looking for: %s" % filename # print " List of dumpdirs:" # for _ddir in lst_dumpdirs: # print " %s" % _ddir _res = None if not isinstance(lst_dumpdirs, list): raise TypeError("Given list of dumpdirs must be of type list. Got %s "\ "instead." % type(lst_dumpdirs)) for _ddir in lst_dumpdirs: if not isinstance(_ddir, Dumpdir): raise TypeError("Element in list of dumpdirs must be of type "\ "Dumpdir. Got %s instead." % type(_ddir)) if _ddir.getFilename() == filename: _res = _ddir break if _res is None: raise SBException("File '%s' was not found in given list of Dumpdirs." % filename) return _res class TarBackendLauncherSingleton(object): __metaclass__ = structs.Singleton _cmd = "/bin/tar" def __init__(self): self._proc = None self._argv = [] # files used for input/output piping self._stdout_f = None self._stdin_f = None # results self._stdout = None self._stderr = None self._returncode = None def set_stdin_file(self, path): if self._stdout_f is not None: raise AssertionError("Redirecting stdin and stdout is not supported") self._stdin_f = path def set_stdout_file(self, path): if self._stdin_f is not None: raise AssertionError("Redirecting stdin and stdout is not supported") self._stdout_f = path def get_pid(self): _pid = None if self._proc is not None: _pid = self._proc.pid return _pid def launch_sync(self, opts, env = None): # note: get logger instance on demand as BackendLauncher is a Singleton _logger = log.LogFactory.getLogger() if self._proc is not None: raise AssertionError("Another process is already running") self._clear_returns() self._argv = opts self._argv.insert(0, self._cmd) errptr, errfile = tempfile.mkstemp(prefix = "error_") _stdout_param = None _stdin_param = None try: _logger.debug("Lauching: %s" % (" ".join(self._argv))) if self._stdout_f is None: outptr, outfile = tempfile.mkstemp(prefix = "output_") _stdout_param = outptr else: assert self._stdin_f is None _logger.debug("Output archive: %s" % self._stdout_f) _stdout_param = subprocess.PIPE _ardst = _FOP.openfile_for_write(self._stdout_f) if self._stdin_f is not None: assert self._stdout_f is None _logger.debug("Input archive: %s" % self._stdin_f) _stdin_param = subprocess.PIPE _arsrc = _FOP.openfile_for_read(self._stdin_f) self._proc = subprocess.Popen(self._argv, stdin = _stdin_param, stdout = _stdout_param, stderr = errptr, env = env) _logger.debug("Subprocess created") if self._stdout_f is not None: _arsrc = self._proc.stdout if self._stdin_f is not None: _ardst = self._proc.stdin if (self._stdin_f is not None) or (self._stdout_f is not None): shutil.copyfileobj(_arsrc, _ardst) _arsrc.close() _ardst.close() self._proc.wait() else: self._proc.communicate(input = None) except (exceptions.BackupCanceledError, exceptions.SigTerminatedError), error: self.terminate() if (self._stdin_f is not None) or (self._stdout_f is not None): _arsrc.close() _ardst.close() # todo: remove code duplication self._returncode = self._proc.returncode os.close(errptr) # Close log handle self._stderr = local_file_utils.readfile(errfile) if self._stdout_f is None: os.close(outptr) self._stdout = local_file_utils.readfile(outfile) local_file_utils.delete(errfile) self._clear_proc() raise error self._returncode = self._proc.returncode os.close(errptr) # Close log handle self._stderr = local_file_utils.readfile(errfile) if self._stdout_f is None: os.close(outptr) self._stdout = local_file_utils.readfile(outfile) local_file_utils.delete(errfile) self._clear_proc() def _clear_returns(self): self._stdout = None self._stderr = None self._returncode = None def _clear_proc(self): self._proc = None self._stdin_f = None self._stdout_f = None self._argv = [] def is_running(self): """ :todo: Add more tests whether the process is running or not! """ _res = False if self._proc is not None: # more tests here _res = True return _res def get_stdout(self): return self._stdout def get_stderr(self): return self._stderr def get_returncode(self): return self._returncode def terminate(self): if self.is_running(): try: self._proc.terminate() except OSError, error: log.LogFactory.getLogger().warning(_("Unable to terminate backend process: %s") % error) class Dumpdir(object): """This is actually a single dumdir entry. Here is the definition from TAR manual: Dumpdir is a sequence of entries of the following form: C filename \0 where C is one of the control codes described below, filename is the name of the file C operates upon, and '\0' represents a nul character (ASCII 0). The white space characters were added for readability, real dumpdirs do not contain them. Each dumpdir ends with a single nul character. Dumpdirs stored in snapshot files contain only records of types 'Y', 'N' and 'D'. @note: Is the nul character stored??? @see: http://www.gnu.org/software/tar/manual/html_chapter/Tar-Internals.html#SEC173 @todo: It should be distiguished between 'unchanged', 'excluded' and 'removed'! @todo: Rename this class into 'DumpdirEntry'! @todo: Add a 'DumpdirClass' that collects entries and creates output content! """ INCLUDED = 'Y' UNCHANGED = 'N' DIRECTORY = 'D' # The dictionary mapping control with their meanings __HRCtrls = {'Y':_('Included'), 'N':_('Not changed'), 'D':_('Directory')} def __init__(self, line): """ Constructor that takes a line to create a Dumpdir. we will parse this line and fill the Dumpdir in @param line: the line (in dumpdir point of view ) to parse @raise Exception: when the line doesn't have the requeried format @todo: make the instance variables private! """ self.control = None self.filename = None self.__set_entry(line) def __str__(self): return "%s %s" % (self.filename, self.getHumanReadableControl()) def __repr__(self): return self.__str__() def __set_entry(self, line): """Private helper method that sets the given dumdir entry. It checks for type and length of given parameter. @todo: Add checks for validity of control etc.! """ if (not isinstance(line, str)): raise TypeError(_("Line must be a string")) line = line.strip("\0") if len(line) < 2: raise ValueError("Line must contain 2 characters at minimum.") self.control = line[0] self.filename = line[1:] def getFilename(self): """ get the filename embedded in the Dumpdir @return: finename @raise Exception: if the filename is null """ if self.filename : return self.filename else : raise SBException(_("Dumpdir inconsistancy : 'filename' is empty")) def getControl(self): """ Get the control character from the DumpDir @return: control @raise Exception: if the control is null @todo: Checking against None is useless here! """ if self.control: return self.control else : raise SBException(_("Dumpdir inconsistancy : 'control' is empty")) def getHumanReadableControl(self): """ Get the control character as a Human readable string from the DumpDir """ return self.__HRCtrls[self.getControl()] @classmethod def getHRCtrls(cls): """ @return: The Human Readable control dictionary @rtype: dict """ return cls.__HRCtrls class SnapshotFile(object): """A snapshot file (or directory file) is created during incremental backups with TAR. It contains the status of the file system at the time of the dump and is used to determine which files were modified since the last backup. GNU tar version 1.20 supports three snapshot file formats. They are called 'format 0', 'format 1' and 'format 2'. Dumpdirs stored in snapshot files contain only records of types 'Y', 'N' and 'D'. For displaying the content of an incremental backup manually use: tar --bzip --list --incremental --verbose --verbose --file files.tar.bz2 @see: http://www.gnu.org/software/tar/manual/html_chapter/Tar-Internals.html#SEC177 @attention: Only snapshot files in `format 2` are supported. @todo: Rename into 'DirectoryFile' or 'SnapshotDirectoryFile' since it only collects directories! @todo: Add class describing a SnapshotFile record! """ versionRE = re.compile("GNU tar-(.+?)-([0-9]+?)") __SEP = '\000' __entrySEP = 2 * __SEP # Infos on indices in a record REC_NFS = 0 REC_MTIME_SEC = 1 REC_MTIME_NANO = 2 REC_DEV_NO = 3 REC_INO = 4 REC_DIRNAME = 5 REC_CONTENT = 6 def __init__(self, filename, writeFlag = False): """Constructor @param filename: the snapshot file (absolute? do we use relative paths?) file path to get the infos (SNAR file) @param writeFlag: if set, the file will be created in case it doesn't exist """ self.header = None self.snpfile = None self.version = None if _FOP.path_exists(filename): self.snpfile = filename else : if writeFlag : self.snpfile = filename fd = _FOP.openfile_for_append(self.snpfile) fd.close() else : raise SBException(_("File '%s' does not exist.") % filename) def __str__(self): _str = [ "Snapshot file", " Header: %s" % self.getHeader(), # " Version: %s" % self.getFormatVersion(), " file name: %s" % self.snpfile, " Content:" ] for _item in self.parseFormat2(): _str.append(" %s" % _item) return "\n".join(_str) def get_filename(self): return self.snpfile # (actually) not used: marked for removal # def getFormatVersion(self): # """ # Get the format version # @return: the version # @rtype: int # """ # if self.version : # return self.version # # self.header = self.__getHeaderInfos() # m = self.versionRE.match(self.header) # if m : # # we are version 1 or 2 # # check for version 2 first # self.version = m.group(2) # else : # # we are version 0 # self.version = 0 # # return int(self.version) # # def __getHeaderInfos(self): # """ # Get the first line of the snapshot file # @return: the first line content # """ # fd = open(self.snpfile) # header = fd.readline() # fd.close() # return header.strip() # not used: marked for removal # def parseFormat0(self): # """ # Iterator method that gives each line entry # @warning: only compatible tar version 0 of Tar format # @return: [nfs,dev,inode,name] # """ # fd = open(self.snpfile) # # skip header which is the first line in this case # fd.readline() # # for line in fd.readlines(): # line = line.rstrip() # # nfs = line[0] # can be a + or a single white space # # dev, inode, name = line[1:].split(' ', 2) # yield [nfs, dev, inode, name] # # fd.close() # not used: marked for removal # def parseFormat1(self): # """ # Iterator method that gives each line entry # @warning: only compatible tar version 1 of Tar format # @return: [nfs,mtime_sec,mtime_nsec,dev,inode,name] # """ # fd = open(self.snpfile) # # skip header which is the 2 first lines in this case # fd.readline() # fd.readline() # # for line in fd.readlines() : # line = line.rstrip() # # nfs = line[0] # can be a + or a single white space # # mtime_sec, mtime_nsec, dev, inode, name = line[1:].split(' ', 4) # yield [nfs, mtime_sec, mtime_nsec, dev, inode, name] # # fd.close() def parseFormat2(self): """Iterator method that gives each line entry in SNAR-file. A line contains informations about a directory and its content. @warning: only compatible tar version 2 of Tar format @return: [nfs,mtime_sec,mtime_nano,dev_no,i_no,name,contents] where contents is a list of Dumpdirs @todo: Iterator methods should have names like 'parseFormat2Iterator' or 'parseFormat2Iter'! """ def formatDumpDirs(content): """ Subroutine to format a content into dump dirs """ result = [] if content : for d in content.rstrip('\0').split('\0'): if d : result.append(Dumpdir(d)) return result def format(line): """ subroutine to format a line including NUL char to have and array """ nfs, mtime_sec, mtime_nano, dev_no, i_no, name, contents = line.lstrip("\0").split("\0", 6) return [nfs, mtime_sec, mtime_nano, dev_no, i_no, name, formatDumpDirs(contents)] fd = _FOP.openfile_for_read(self.snpfile) # skip header which is the first line and 2 entries separated with NULL in this case #TODO: Handle empty files properly n = 0 while n < 2 : c = fd.read(1) if len(c) != 1: raise SBException(_("The snarfile header is incomplete.")) if c == '\0': n += 1 currentline = "" c = fd.read(1) last_c = '' while c: currentline += c if c == '\0' and last_c == '\0' : # we got a line yield format(currentline) currentline = '' last_c = '' else : last_c = c c = fd.read(1) fd.close def getHeader(self): """ Get the full header @return: the header (a string) or None if the file was empty @raise SBException: if the header is incomplete """ fd = _FOP.openfile_for_read(self.snpfile) #TODO: Handle empty files properly header = "" n = 0 while n < 2 : c = fd.read(1) if len(c) != 1: raise SBException(_("The snarfile header is incomplete.")) if c == '\0': n += 1 header += c try: _FOP.close_stream(fd) except exceptions.FileAlreadyClosedError, error: log.LogFactory.getLogger().warn(_("File was already closed (ignored): %s") % error) return header def setHeader(self, timeofBackup): """ Sets the header of the snar File. GNU tar-1.19-2 -> in the first line second line is timeofBackupInSec\000timeofBackupInNano @param timeofBackup: The time to set in the snar file @type timeofBackup: datetime """ if type(timeofBackup) != datetime : raise SBException("timeofBackup must be a datetime") fd = open(self.snpfile, 'w') fd.write("GNU tar-1.19-2\n") t = int(time.mktime(timeofBackup.timetuple())) fd.write(2 * (str(t) + self.__SEP)) fd.close() def addRecord(self, record): """ Write a record in the snar file. A record is a tuple with 6 entries + a content that is a dict @param record: A tuple that contains the record to add. [nfs,mtime_sec,mtime_nano,dev_no,i_no,name,contents] where contents is a dict of {file:'control'} """ if len(record) != 7: raise ValueError("Record must contain of 7 elments. Got %s instead." % str(len(record))) woContent, contents = record[:-1], record[-1] strContent = self.createContent(contents) # compute contents toAdd = "%s%s%s" % (self.__SEP.join(woContent), self.__SEP, strContent) fd = _FOP.openfile_for_append(self.snpfile) fd.write("%s%s" % (toAdd, self.__entrySEP)) fd.close() def createContent(self, contentList): """Creates a content item from a list of given Dumpdirs. @param contentList: the list of Dumpdirs @type contentList: list @return: a string containing the computed content @rtype: string """ if type(contentList) != list : raise SBException("Contentlist must be a list : %r" % repr(contentList)) result = "" for dumpdir in contentList: if not isinstance(dumpdir, Dumpdir): raise TypeError("Contentlist must contain elements of type "\ "'Dumdir'. Got %s instead." % type(dumpdir)) # result += dumpdir.getControl() + dumpdir.getFilename() + self.__SEP result = "%s%s%s%s" % (result, dumpdir.getControl(), dumpdir.getFilename(), self.__SEP) return result def get_time_of_backup(self): """Returns the time of the snapshot (as stored in the snapshot file) in seconds since beginning of the epoch. @rtype: Float """ _header = self.getHeader() _header_t = _header.split("\n") assert len(_header_t) == 2 _time_t = _header_t[1].split(self.__SEP) assert len(_time_t) > 1 _time = float("%s.%s" % (_time_t[0], _time_t[1])) return _time def get_dict_format2(self): """Returns the content of the snapshot file as dictionary. This provides a much faster way of accessing the content than parsing the file on demand. The required RAM is moderate, a 10GiB partition filled with files results in 6MiB dictonary. @warning: only compatible tar version 2 of Tar format @note: Uses the same algorithm as method `parseFormat2` and is ~15% faster than the high-level variant below. """ _snardict = {} fd = _FOP.openfile_for_read(self.snpfile) #TODO: Handle empty files properly header = "" n = 0 while n < 2 : c = fd.read(1) if len(c) != 1: raise SBException(_("The snarfile header is incomplete.")) if c == '\0': n += 1 header += c # skip header which is the first line and 2 entries separated with NULL in this case #FIXME: remove code duplication here and in `getHeader` currentline = "" last_c = '' c = fd.read(1) while c: currentline += c if c == '\0' and last_c == '\0' : # we got a line nfs, mtime_sec, mtime_nano, dev_no, i_no, _dirname, \ _content = currentline.lstrip("\0").split("\0", 6) _snardict[_dirname] = Dumpdir.DIRECTORY _content_t = _content.rstrip('\0').split('\0') for _entry in _content_t: _entry = _entry.strip("\0") if _entry: _epath = _FOP.joinpath(_dirname, _entry[1:]) _snardict[_epath] = _entry[0] currentline = '' last_c = '' else : last_c = c c = fd.read(1) fd.close return _snardict # def get_dict_format2(self): # """ # @warning: only compatible tar version 2 of Tar format # # more high-level programmed # """ ## _dirdict = {} # _snardict = {} # # for _record in self.parseFormat2(): ## print _record # _dirname = _record[self.REC_DIRNAME] # _content = _record[self.REC_CONTENT] ## if _dirname in _dirdict: ## raise ValueError("Directory is already contained.") ## _dirdict[_dirname] = _content # # _snardict[_dirname] = Dumpdir.DIRECTORY # # for _entry in _content: ## print "Type: %s name: '%s' control: '%s'" %(type(_entry), ## _entry.getFilename(), ## _entry.getControl()) # _epath = fam.joinpath(_dirname, _entry.getFilename()) # _snardict[_epath] = _entry.getControl() # # ## print "Dir dictionary:\n%s" % _dirdict ## print "Snar dictionary:\n%s" % _snardict # return _snardict class SnapshotFileWrapper(object): """Something like an Interface class. @todo: Review/Implement """ def __init__(self): pass def get_snapfile_path(self): raise NotImplementedError class MemSnapshotFile(SnapshotFileWrapper, SBdict): """ This is a representation in memory of a simplified SNAR file. The used structure is an SBDict. The "prop" value is the content of the directory. wich is a list of L{Dumpdir} @note: In the series 0.2 implementation this variant is not used. """ def __init__(self, snapshotFile): """ load the snapshotFile in memory @param snapshotFile: a SnapshotFile to convert in MemSnapshotFile @type snapshotFile: sbackup.util.tar.SnapshotFile """ if not isinstance(snapshotFile, SnapshotFile) : raise Exception("A SnapshotFile is required") SnapshotFileWrapper.__init__(self) # SBdict.__init__(self, mapping) self.__snapshotFile = snapshotFile for f in snapshotFile.parseFormat2(): self[f[-2]] = f[-1] def get_snapfile_path(self): return self.__snapshotFile.get_filename() def hasPath(self, path): """ Checks if a path is include in the SNAR file @param path: The path to check @return: True if the file is included, False otherwise @rtype: boolean """ return self.has_key(path) def addRecord(self, record): """ Write a record in the snar file. A record is a tuple with 6 entries + a content that is a dict @param record: A tuple that contains the record to add. [nfs,mtime_sec,mtime_nano,dev_no,i_no,name,contents] where contents is a dict of {file:'control'} """ self.__snapshotFile.addRecord(record) self[record[-2]] = record[-1] def getHeader(self): self.__snapshotFile.getHeader() def setHeader(self, timeofBackup): """ Sets the header of the snar File. GNU tar-1.19-2 -> in the first line second line is timeofBackupInSec\000timeofBackupInNano @param timeofBackup: The time to set in the snar file @type timeofBackup: datetime """ self.__snapshotFile.setHeader(timeofBackup) def getContent(self, dirpath): """ convenance method to get the content of a directory. @param dirpath: The directory absolute path to get @type dirpath: str @return: The content of the dir @rtype: list """ return self[dirpath] def getFirstItems(self): """ Get the first items in this SnapshotFile (the lower level dirs in the file) @return: A list of paths @rtype: list """ result = list() for f in self.iterFirstItems(): result.append(f) return result class ProcSnapshotFile(SnapshotFileWrapper): """This is a Snapshotfile that will basically every time parse the snarfile for information. """ def __init__(self, snapshotFile): """ load the snapshotFile to get a reference on it @param snapshotFile: a SnapshotFile to convert in MemSnapshotFile @type snapshotFile: sbackup.util.tar.SnapshotFile """ if not isinstance(snapshotFile, SnapshotFile) : raise TypeError(_("A SnapshotFile is required")) SnapshotFileWrapper.__init__(self) self.__snapshotFile = snapshotFile def __str__(self): _str = "Snar file: '%s'" % self.__snapshotFile return _str def get_snapfile_path(self): return self.__snapshotFile.get_filename() def get_snapfile_obj(self): """Returns the wrapped instance of the snapshot file. @return: snapshot file object @rtype: SnapshotFile """ return self.__snapshotFile def hasPath(self, path): """ Checks if a path is included in the SNAR file @param path: The path to check @return: True if the file is included, False otherwise @rtype: boolean """ for f in self.__snapshotFile.parseFormat2(): if f[SnapshotFile.REC_DIRNAME].rstrip(_FOP.pathsep) == path.rstrip(_FOP.pathsep): return True return False def hasFile(self, _file): """ Checks if a file is included in the SNAR file. a file is in a directory thus in the content. @param _file: The file to check. a complete path must be given @return: True if the file is included, False otherwise @rtype: boolean """ dir, inFile = _file.rsplit(_FOP.pathsep, 1) if not self.hasPath(dir): return False for f in self.getContent(dir): if f.getFilename() == inFile and f.getControl() != Dumpdir.UNCHANGED: return True return False def iterfiles(self): """ iterator that returns every file in the snapshot """ for l in self.__snapshotFile.parseFormat2(): dir = l[-2] if l[-1] : for dumpdir in l[-1] : yield dir + _FOP.pathsep + dumpdir.getFilename() def iterRecords(self): """Iterator over snar file records (wrapper on the 'parseFormat2' method of SnaspshotFile """ for record in self.__snapshotFile.parseFormat2(): yield record def addRecord(self, record): """ Write a record in the snar file. A record is a tuple with 6 entries + a content that is a dict @param record: A tuple that contains the record to add. [nfs,mtime_sec,mtime_nano,dev_no,i_no,name,contents] where contents is a dict of {file:'control'} """ self.__snapshotFile.addRecord(record) def getHeader(self): return self.__snapshotFile.getHeader() def setHeader(self, timeofBackup): """ Sets the header of the snar File. GNU tar-1.19-2 -> in the first line second line is timeofBackupInSec\000timeofBackupInNano @param timeofBackup: The time to set in the snar file @type timeofBackup: datetime """ self.__snapshotFile.setHeader(timeofBackup) def getContent(self, dirpath): """convenance method to get the content of a directory. @param dirpath: The directory absolute path to get @type dirpath: str @return: The content of the dir @rtype: list @raise SBException: if the path isn't found in the snapshot file """ for f in self.__snapshotFile.parseFormat2(): if f[SnapshotFile.REC_DIRNAME].rstrip(_FOP.pathsep) == dirpath.rstrip(_FOP.pathsep): return f[SnapshotFile.REC_CONTENT] raise SBException(_("Directory does not exist: %s.") % dirpath) def getFirstItems(self): """ Get the first items in this SnapshotFile (the lower level dirs in the file) @return: A list of paths @rtype: list """ def cleanDupl(): if result: result.sort() last = result[-1] for i in range(len(result) - 2, -1, -1): if last == result[i]: del result[i] else: last = result[i] result = list() for f in self.__snapshotFile.parseFormat2(): found = False for i in range(0, len(result)) : if result[i] == f[-2] or f[-2].startswith(result[i]) : if found : # then we are trying to overide continue else : found = True break elif result[i].startswith(f[-2]): # replace with f[-2] result[i] = f[-2] found = True # don't break cause it's possible that some others entries need to be overiden if not found : result.append(f[-2]) else : cleanDupl() return result sbackup-0.11.6/src/sbackup/core/0000755000175000017500000000000012216122133015037 5ustar peerpeersbackup-0.11.6/src/sbackup/core/__init__.py0000644000175000017500000000000112216122130017134 0ustar peerpeer sbackup-0.11.6/src/sbackup/core/profile_handler.py0000644000175000017500000005005312216122130020546 0ustar peerpeer# Simple Backup - process a certain profile (a distinct configuration) # # Copyright (c)2008-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`BackupProfileHandler` --- backup handler class ==================================================================== .. module:: BackupProfileHandler :synopsis: Defines a backup handler class .. moduleauthor:: Jean-Peer Lorenz .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) """ from gettext import gettext as _ import os import datetime import socket import time from sbackup.fs_backend import fam from sbackup.core.SnapshotManager import SnapshotManager from sbackup.core import snapshot from sbackup import util from sbackup.util import filecollect from sbackup.util import exceptions from sbackup.util import constants from sbackup.util import log class BackupProfileHandler(object): """Class that handles/manages the backup process of a single profile. """ def __init__(self, configmanager, backupstate, dbus_connection = None, use_indicator = False, full_snapshot = False): """The `BackupProfileHandler` Constructor. :param configmanager : The current configuration manager :param backupstate: object that stores the current state of the process :note: Make sure to call for the appropriate logger before\ instantiating this class! """ self.logger = log.LogFactory.getLogger() #TODO: Simplify/refactor these attributes. self.__dbus_conn = dbus_connection self.__use_indicator = use_indicator self.__full_snp = full_snapshot self.config = configmanager self.__state = backupstate self.__state.clear_backup_properties() self.__profilename = self.config.getProfileName() self.__state.set_profilename(self.__profilename) self.__snpman = None self.__snapshot = None self.__fam_target_hdl = fam.get_fam_target_handler_facade_instance() self.logger.debug("Instance of BackupProfileHandler created.") def do_hook(self, hookname): """Runs scripts optionally defined in section 'hooks' of configuration file. Currently defined are * pre-backup - before preparation of backup starts * post-backup - after completion and finishing of backup """ #LP #173490 import commands hooks = None if self.config.has_option('hooks', hookname): hooks = str(self.config.get('hooks', hookname)).split(",") if hooks is not None: self.logger.info(_("Running of hooks: %s") % hookname) for hook in hooks: result = commands.getstatusoutput(hook) if( 0 != result[0]): raise exceptions.HookedScriptError(\ "Hook %s returned error: '%s' (exit code=%s)" % (hookname, result[1], result[0])) def prepare(self): self.logger.info(_("Preparation of backup process")) _uri = self.config.get_destination_path() try: self.__fam_target_hdl.set_destination(_uri) self.__fam_target_hdl.set_configuration_ref(self.config) self.__fam_target_hdl.set_use_mainloop(use = True) self.__fam_target_hdl.initialize() except exceptions.FileAccessException: self.__fam_target_hdl.terminate() raise self.__check_target() def process(self): """Runs the whole backup process: 1. check pre-conditions 3. purge snapshots (if configured) 4. open new snapshot containing common metadata (full or incr. depending on existing one, base, settings etc.) 5. fill new snapshot (with packages list, include lists, exclude lists, size prediction) 6. commit new snapshot to disk (creates the actual tar archive and writes everything into the snapshot directory). """ assert self.__fam_target_hdl.is_initialized() self.__snpman = SnapshotManager(self.__fam_target_hdl.query_mount_uri()) # get basic informations about new snapshot self.__state.set_state('prepare') (snppath, base) = self.__retrieve_basic_infos(force_full_snp = self.__full_snp) # Create a new snapshot self.__snapshot = snapshot.Snapshot(snppath) self.logger.info(_("Snapshot '%(name)s' is being made.") % {'name' :str(self.__snapshot)}) # Set the base file if base is not None: if self.__snapshot.isfull(): self.logger.debug("Base is not being set for this full snapshot.") else: self.logger.info(_("Setting Base to '%(value)s'.") % {'value' : str(base)}) self.__snapshot.setBase(base.getName()) # Backup list of installed packages _packagecmd = "dpkg --get-selections" if self.config.has_option("general", "packagecmd"): _packagecmd = self.config.get("general", "packagecmd") if _packagecmd: try: self.logger.info(_("Setting packages File.")) s = os.popen(_packagecmd) pkg = s.read() s.close() self.__snapshot.setPackages(pkg) except Exception, _exc: self.logger.warning(_("Problem when setting the packages list: ") + str(_exc)) # set Excludes # TODO: improve handling of Regex containing ',' (delimiter); currently this will crash self.logger.info(_("Setting Excludes File.")) if self.config.has_option("exclude", "regex"): gexclude = str(self.config.get("exclude", "regex")).split(",") else : gexclude = "" self.__snapshot.setExcludes(gexclude) _compr = self.config.get_compress_format() self.logger.info(_("Setting compression format to `%s`") % _compr) self.__snapshot.setFormat(_compr) if self.config.has_option("general", "splitsize"): _chunks = int(self.config.get("general", "splitsize")) self.__snapshot.setSplitedSize(_chunks) if _chunks: self.logger.info(_("Setting size of archive chunks to %s")\ % util.get_humanreadable_size_str(size_in_bytes = (_chunks * 1024), binary_prefixes = True)) # set followlinks self.__snapshot.setFollowLinks(self.config.get_followlinks()) if self.__snapshot.isFollowLinks(): self.logger.info(_("Option 'Follow symbolic links' is enabled.")) else: self.logger.info(_("Option 'Follow symbolic links' is disabled.")) self.__collect_files() _publish_progress = True if self.__dbus_conn is None: _publish_progress = False _supports_publish = self.__fam_target_hdl.get_supports_publish() self.logger.info(_("Snapshot is being committed")) self.__state.set_state('start') # self.__state.set_state('commit') self.__snapshot.commit(self.__fam_target_hdl, _publish_progress, _supports_publish) #TODO: add state purging # purge purge = None if self.config.has_option("general", "purge"): purge = self.config.get("general", "purge") if purge is not None: try: self.__snpman.purge(purge, self.__snapshot.getName()) # do not purge created snapshot except exceptions.SBException, sberror: self.logger.error(_("Error while purging old snapshots: %s") % sberror) self.logger.info(_("Backup process finished.")) self.__state.set_state('finish') def __collect_files(self): """Fill snapshot's include and exclude lists and retrieve some information about the snapshot (uncompressed size, file count). """ self.logger.info(_("Inspect file system and collect file infos")) _collector = self.__create_collector_obj() _collector.collect_files() _stats = _collector.get_stats() _snpsize = _stats.get_size_payload() + _stats.get_size_overhead(size_per_item = constants.TAR_BLOCKSIZE) self.__state.set_space_required(_snpsize) self.__snapshot.set_space_required(_snpsize) _sizefs, _freespace = self.__fam_target_hdl.query_dest_fs_info() _snpsize_hr = util.get_humanreadable_size_str(size_in_bytes = _snpsize, binary_prefixes = True) self.logger.info(_("Summary of backup")) self.logger.info(_("Number of directories: %s.") % _stats.get_count_dirs()) self.logger.info(_("Total number of files: %s.") % _stats.get_count_files_total()) self.logger.info(_("Number of symlinks: %s.") % _stats.get_count_symlinks()) self.logger.info(_("Number of files included in snapshot: %s.") % _stats.get_count_files_incl()) self.logger.info(_("Number of new files (also included): %s.") % _stats.get_count_files_new()) self.logger.info(_("Number of files skipped in incremental snapshot: %s.") % _stats.get_count_files_skip()) self.logger.info(_("Number of items forced to be excluded: %s.") % _stats.get_count_items_excl_forced()) self.logger.info(_("Number of items to be excluded by config: %s.") % _stats.get_count_items_excl_config()) self.logger.info(_("Maximum free size required is '%s'.") % _snpsize_hr) if _freespace == constants.FREE_SPACE_UNKNOWN: self.logger.warning("Unable to query available space on target: Operation not supported") else: _freespace_hr = util.get_humanreadable_size_str(size_in_bytes = _freespace, binary_prefixes = True) self.logger.info(_("Available disk size is '%s'.") % _freespace_hr) if _freespace <= _snpsize: raise exceptions.SBException(_("Not enough free space in the target directory for the planned backup (free: %(freespace)s, required: %(neededspace)s).")\ % { 'freespace' : _freespace_hr, 'neededspace' : _snpsize_hr}) def __create_collector_obj(self): """Factory method that returns instance of `FileCollector`. """ _eff_local_dest_path = self.__fam_target_hdl.get_eff_path() _configfac = filecollect.FileCollectorConfigFacade(self.config, _eff_local_dest_path) _collect = filecollect.FileCollector(self.__snapshot, _configfac) if not self.__snapshot.isfull(): _base = self.__snapshot.getBaseSnapshot() _basesnar = _base.getSnapshotFileInfos().get_snapfile_obj() _collect.set_parent_snapshot(_basesnar) return _collect def __copylogfile(self): # TODO: we should flush the log file before copy! _op = fam.get_file_operations_facade_instance() if not self.__fam_target_hdl.is_initialized(): self.logger.warning(_("Unable to copy log. File access is not initialized.")) else: if self.__snapshot is not None: logf_src = self.config.get_current_logfile() if logf_src is None: self.logger.warning(_("No log file specified.")) else: logf_name = _op.get_basename(logf_src) logf_target = _op.joinpath(self.__snapshot.getPath(), logf_name) if _op.path_exists(logf_src): try: _op.copyfile(logf_src, logf_target) except exceptions.CopyFileAttributesError: self.logger.warning(_("Unable to change permissions for file '%s'.")\ % logf_target) except (OSError, IOError), error: self.logger.warning(_("Unable to copy log file: %s") % error) else : self.logger.warning(_("Unable to find logfile to copy into snapshot.")) else: self.logger.warning(_("No snapshot to copy logfile.")) def cancel(self): if self.__snapshot is not None: self.__snpman.remove_snapshot_forced(self.__snapshot) self.__fam_target_hdl.terminate() self.logger.info(_("Processing of profile was canceled on user request\n")) _excode = constants.EXCODE_SUCCESS return _excode def finish(self, error = None): """End SBackup session : - copy the log file into the snapshot dir Might be called multiple times. :note: When this method is called no exceptions were raised during the backup. """ self.__copylogfile() self.__fam_target_hdl.terminate() if error is None: self.logger.info(_("Processing of profile successfully finished (no errors)\n")) _excode = constants.EXCODE_SUCCESS else: err_str = str(error) if err_str == "": err_str = str(type(error)) self.logger.info(_("Processing of profile failed with error: %s\n") % err_str) _excode = constants.EXCODE_BACKUP_ERROR return _excode def __check_target(self): assert self.__fam_target_hdl.is_initialized(), "File access manager not initialized" # TODO: Improve handling of original and modified target paths. Support display names for state (improved user interaction) _target_display_name = self.__fam_target_hdl.query_dest_display_name() self.__state.set_target(_target_display_name) self.logger.info(_("Backup destination: %s") % _target_display_name) # Check if the target dir exists, but Do not create any directories. if not self.__fam_target_hdl.dest_path_exists(): self.logger.warning(_("Unable to find destination directory.")) self.__state.set_state('target-not-found') if self.__use_indicator and self.__dbus_conn is not None: _time = 0 _retry = constants.RETRY_UNKNOWN while (_time <= constants.TIMEOUT_RETRY_TARGET_CHECK_SECONDS): time.sleep(constants.INTERVAL_RETRY_TARGET_CHECK_SECONDS) _time = _time + constants.INTERVAL_RETRY_TARGET_CHECK_SECONDS #TODO: put the get_retry_target.. into State? _retry = self.__dbus_conn.get_retry_target_check() if _retry == constants.RETRY_FALSE: raise exceptions.BackupCanceledError elif _retry == constants.RETRY_TRUE: if self.__fam_target_hdl.dest_path_exists(): pass else: self.logger.warning(_("Unable to find destination directory even after retry.")) raise exceptions.SBException(_("Target directory '%(target)s' does not exist.")\ % {"target" : _target_display_name}) break else: pass else: raise exceptions.SBException(_("Target directory '%(target)s' does not exist.")\ % {"target" : _target_display_name}) try: self.__fam_target_hdl.test_destination() except exceptions.FileAccessException, error: self.logger.error(_("Unable to access destination: %s") % (error)) raise error def __retrieve_basic_infos(self, force_full_snp = False): """Retrieves basic informations about the snapshot that is going to be created. This informations include: 1. the path of the new snapshot 2. the base of the new snapshot :param listing: a list of snapshots :return: the determined `snppath` and `base` :rtype: a tuple """ _fop = fam.get_file_operations_facade_instance() # Get the list of snapshots that matches the latest snapshot format listing = self.__snpman.get_snapshots() agelimit = int(self.config.get("general", "maxincrement")) increment = False base = None if (len(listing) == 0) or (force_full_snp is True): increment = False else: # we got some snaphots # we search for the last full base = listing[0] if listing[0].isfull() : # Last backup was full backup self.logger.debug("Last (%s) was a full backup" % listing[0].getName()) d = listing[0].getDate() age = (datetime.date.today() - datetime.date(d["year"], d["month"], d["day"])).days if age < agelimit : # Less than maxincrement days passed since that -> make an increment self.logger.info("Last full backup is %i days old < %s -> make inc backup" % (age, agelimit)) increment = True else: self.logger.info("Last full backup is %i days old > %s -> make full backup" % (age, agelimit)) increment = False # Too old -> make full backup else: # Last backup was an increment - lets search for the last full one self.logger.debug(" Last snapshot (%s) was incremental. Lookup of latest full snapshot." % listing[0].getName()) for i in listing : if i.isfull(): d = i.getDate() age = (datetime.date.today() - datetime.date(d["year"], d["month"], d["day"])).days if age < agelimit : # Last full backup is fresh -> make an increment self.logger.info("Last full backup is fresh (%d days old )-> make an increment" % age) increment = True else: # Last full backup is old -> make a full backup self.logger.info("Last full backup is old -> make a full backup") increment = False break else: self.logger.info("No full backup found -> lets make a full backup to be safe") increment = False # Determine and create backup target directory hostname = socket.gethostname() snpname = "%s.%s" % (datetime.datetime.now().isoformat("_").replace(":", "."), hostname) if increment is True: snpname = "%s.inc" % snpname else: snpname = "%s.ful" % snpname tdir = self.__fam_target_hdl.get_snapshot_path(snpname) self.logger.debug("Snapshot path: %s" % tdir) return (tdir, base) sbackup-0.11.6/src/sbackup/core/ConfigManager.py0000644000175000017500000020243412216122130020113 0ustar peerpeer# Simple Backup - configuration file handling # # Copyright (c)2009-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ Configuration definition For a description of sbackup's file format please have a look at the shipped example configuration file in sbackup/data/sbackup.conf.example. """ from gettext import gettext as _ import ConfigParser import smtplib import types import os.path import re from sbackup.pkginfo import Infos from sbackup import util from sbackup.util import local_file_utils from sbackup.util import exceptions from sbackup.util import pathparse from sbackup.util import log from sbackup.util import system _CRON_PATH_TEMPLATE = "/etc/cron.%s/%s" _LAUNCHER_NAME_CRON = "sbackup" _ANACRON_SERVICES = ["hourly", "daily", "weekly", "monthly"] _CRON_SERVICE = "d" _SCHEDULE_SERVICES = _ANACRON_SERVICES _SCHEDULE_SERVICES.append(_CRON_SERVICE) SCHEDULE_TYPE_ANACRON = 0 SCHEDULE_TYPE_CRON = 1 SCHEDULE_TYPES = [SCHEDULE_TYPE_CRON, SCHEDULE_TYPE_ANACRON] def is_default_profile(conffile): """Checks whether the given configuration file corresponds to the default profile. @param conffile: full path to configuration file to check @return: True if the file corresponds to the default profile, otherwise False. @rtype: Boolean """ is_default = False cfile = os.path.basename(conffile) if cfile == ConfigManagerStaticData.get_default_conffile(): is_default = True return is_default def get_logfile_name_template(conffile): """Determines the profilename from the given pathname `conffile` and returns an appropriate logfile name. By 'template' is indicated this is the base logfile name. It is extended by the current time if a logfile is actually created. The given `conffile` may not exist. """ conffile_hdl = ConfigurationFileHandler() profilename = conffile_hdl.get_profilename(conffile) if profilename == ConfigManagerStaticData.get_default_profilename(): logfname = ConfigManagerStaticData.get_default_logfile() else: logfname = ConfigManagerStaticData.get_profile_logfile(profilename) return logfname def get_profiles(prfdir): """Get the configuration profiles list @return: a dictionarity of { name: [path_to_conffile, enable] } """ return _get_profiles(prfdir, application = "sbackup") def get_profiles_nssbackup(prfdir): """Get the configuration profiles list @return: a dictionarity of { name: [path_to_conffile, enable] } """ return _get_profiles(prfdir, application = "nssbackup") def _get_profiles(prfdir, application): """Get the configuration profiles list @return: a dictionarity of { name: [path_to_conffile, enable] } """ profiles = dict() if os.path.exists(prfdir) and os.path.isdir(prfdir): _listing = os.listdir(prfdir) if application == "nssbackup": _re = ConfigManagerStaticData.get_profilename_nssbackup_re() else: _re = ConfigManagerStaticData.get_profilename_re() for conff in _listing: mobj = _re.match(conff) if mobj is not None: name = mobj.group(1) path = os.path.join(prfdir, mobj.group(0)) if os.path.isfile(path): enable = (mobj.group(2) is None) profiles[name] = [path, enable] return profiles def get_default_config_obj(): """Creates and returns an object containing the default configuration. Differences between normal users and privileged users (i.e. admins) are taken into account. """ if system.is_superuser(): _default_config = _DefaultConfigurationForAdmins() else: _default_config = _DefaultConfigurationForUsers() return _default_config def parse_cronexpression(cronfile_content): _expr = None for _line in cronfile_content.split("\n"): _line = _line.strip() _line = " ".join(_line.split()) # eliminate multiple spaces and tabs if _line.startswith("#"): continue elif _line.startswith("@hourly"): _expr = "0 * * * *" break elif _line.startswith("@daily"): _expr = "0 0 * * *" break elif _line.startswith("@weekly"): _expr = "0 0 * * 0" break elif _line.startswith("@monthly"): _expr = "0 0 1 * *" break elif _line.startswith("@"): _expr = None # not supported (@yearly,...) break else: _tup = _line.split(" ", 6) # now split at spaces if len(_tup) == 7: _expr = " ".join(_tup[0:5]) break return _expr class ConfigManager(ConfigParser.ConfigParser): """SBackup config manager The configuration manager is responsible for the following: * creates a logger instance with specified log level and log file target @todo: The configuration manager should not create the logger itself! This should be done outside of the configuration after reading and parsing the config file. @todo: When a configuration is loaded from disk/file this configuration is checked for every required option. Non-existing options are then filled with reasonable default values. Default values should never be set from the GUI nor should default values are taken as 'implicitly' given in any method that requires such setting. This is not implemented yet. @todo: Use the RawConfigParser instead of ConfigParser! And maybe the \ parser should be a member of SBackup config! """ def __init__(self, configfile = None): """Default constructor. @param configfile: Full path to the used configuration file. @todo: remove command-line parsing from here; \ this class should only take a filename as parameter. """ ConfigParser.ConfigParser.__init__(self) self.__conffile_hdl = ConfigurationFileHandler() self.__servicefile = ConfigManagerStaticData.get_schedule_script_file() self.__schedules_user = "root" # schedules are only usable by root # configuration object which is set to valid default values self.__default_config = _DefaultConfiguration() # is a dummy self.__create_default_config_obj() self.__dirconfig = {} self.__logfile_dir = "" self.__current_logfile = None self.conffile = None self.logger = None self.__profileName = None self.valid_options = {} self.filename_from_argv = None self.argv_options = {} self.setValidOpts(ConfigManagerStaticData.get_our_options()) # use the given conf-file only if no was given on cmdline if not self.conffile and configfile: self.conffile = configfile _conffile_used = False # helper to print out an informative message # if a conf-file is set, evaluate this one and overwrite default values if self.conffile: self.read(self.conffile) _conffile_used = True else: self._set_defaultprofile_values_to_default() self.__create_logger() self.validateConfigFileOpts() self.__check_destination_option() if _conffile_used: self.logger.info(_("Profile settings are being read from file '%s'.")\ % self.conffile) else : self.logger.info(_("Profile settings are being set to default values. Configuration file is set to '%s'.")\ % self.conffile) def __del__(self): self.__cleanup_logfiles() def __str__(self): retval = [] for section, sec_data in self._sections.iteritems(): retval.append("[%s]" % section) [retval.append("%s = %s" % (o, repr(v))) for o, v in sec_data.items() if o != '__name__'] return "\n".join(retval) def __init_sections(self): """Initializes the sections of the configuration. @todo: Use the 'our_options' from ConfigManagerStaticData class for \ initialisation. @note: Should we remove *unknown* sections? No, though we validate the file. """ if not self.has_section("general"): self.add_section("general") if not self.has_section("dirconfig"): self.add_section("dirconfig") if not self.has_section("exclude"): self.add_section("exclude") if not self.has_section("log"): self.add_section("log") if not self.has_section("report"): self.add_section("report") if not self.has_section("places"): self.add_section("places") if not self.has_section("schedule"): self.add_section("schedule") def _set_defaultprofile_values_to_default(self): """Makes this configuration the default profile by pointing it to the default configuration file and sets according default values for the configuration. It distinguishes between users and super-users. """ self.conffile = self.__conffile_hdl.get_default_conffile_fullpath() self.set_values_to_default() def __create_default_config_obj(self): """Creates an object containing the default configuration and stores it in the according instance variable. Differences between normal users and privileged users (i.e. admins) is taken into account. """ self.__default_config = get_default_config_obj() def __get_default_config_obj(self): """Private accessor method that returns the default configuration object. Use this method rather direct access to the instance variable in order to ensure the object exists. """ if self.__default_config is None: raise ValueError("No default configuration object was created yet.") if not isinstance(self.__default_config, _DefaultConfiguration): raise TypeError("Given configuration is not of type \ 'DefaultConfiguration'. Got '%s' instead." \ % type(self.__default_config)) return self.__default_config def set_values_to_default(self): """Sets default values for this configuration. It is distinguished between normal users and super-users. The path to the current configuration file (i.e. the current profile) is not touched. @note: This method's purpose is to provide reasonable values when creating a fresh configuration and restoring of these 'recommended' (or predefined) defaults on existing configs. """ defaults = self.__get_default_config_obj() self.__init_sections() # General self.set("general", "maxincrement", str(defaults.get_max_increment())) self.set("general", "format", defaults.get_compress_format()) self.set("general", "splitsize", str(defaults.get_split_size())) # dirconfig and excludes self.__set_dirconfig(defaults.get_dir_config()) self.__set_regex_excludes(defaults.get_regex_excludes()) # other exclude reasons self.set("exclude", "maxsize", str(defaults.get_max_filesize())) followlinks = "0" if defaults.get_follow_links() is True: followlinks = "1" self.set("general", "followlinks", followlinks) # target (= destination) self.set_target_to_default() # schedule schedule = defaults.get_schedule() if schedule[1] != "": is_cron = 0 if schedule[0] is True: is_cron = 1 self.setSchedule(is_cron, schedule[1]) # Purging self.set("general", "purge", defaults.get_purge()) # Section log self.set("log", "level", str(defaults.get_loglevel())) self.set_logdir(defaults.get_logdir()) self.set_logfile_templ_to_config() if not local_file_utils.path_exists(self.get("log", "file")) : local_file_utils.createfile(self.get("log", "file")) # report settings self.__clear_report_section() # LP Bug #153605 # TODO: we should not set a default 'from' since the value is not usable # for 99% of the users (despite LP Bug #153605) self.set("report", "from", defaults.get_report_smtpfrom()) # remaining administrative settings self.set("general", "mountdir", defaults.get_mountdir()) self.set("general", "lockfile", defaults.get_lockfile()) self.set("places", "prefix", defaults.get_prefix()) def set_target_to_default(self): """The destination (target) option is set to the default value valid for the current user. If the specified path does not exist is a directory created. """ _def_target_path = self.get_target_default() self.set("general", "target", _def_target_path) if not os.path.exists(_def_target_path): os.mkdir(_def_target_path) def get_target_default(self): """Wrapper method that return the default target path for the current user. No values of this configuration (actually configuration manager) are touched. """ defaults = self.__get_default_config_obj() target = defaults.get_target() return target def __check_destination_option(self): if not self.has_option("general", "target"): raise exceptions.SBException (_("Option 'target' is missing, aborting.")) def get_destination_path(self): """Returns the target option that is currently set. Purpose is to hide the actual naming of options from external classes. Returns None if not set. """ self.__check_destination_option() _path = self.get("general", "target") _uri = pathparse.UriParser() _uri.set_and_parse_uri(uri = _path) # normalizes and validates given path _res = _uri.uri return _res # def get_destination_obj(self): # self.__check_destination_option() # _dest = self.get("general", "target") # _dest_obj = pathparse.UriParser() # _dest_obj.set_and_parse_uri(uri = _dest) # return _dest_obj def get_mountdir(self): _defaults = self.__get_default_config_obj() _mdir = _defaults.get_mountdir() if self.has_option("general", "mountdir"): _mdir = self.get("general", "mountdir") return _mdir def has_maxsize_limit(self): """Returns True if the 'maxsize' option is enabled (i.e. set to any value greater than 0). """ _res = False if self.get_maxsize_limit() > 0: _res = True return _res def get_maxsize_limit(self): """Returns the maximum file size limit. If the option is not set, 0 is returned. """ _section = "exclude" _option = "maxsize" _maxsize = 0 if self.has_option(_section, _option): _val = int(self.get(_section, _option)) if _val > 0: _maxsize = _val return _maxsize def get_dirconfig_local(self): """Returns a list of pairs of (name, value) from the 'dirconfig' section. If no values are set, None is returned. """ _section = "dirconfig" _res = None if self.has_section(_section): _items = self.items(_section) if len(_items) > 0: _res = [] for _item in _items: assert len(_item) == 2 if _item[0] == "remote": pass else: try: _res.append((_item[0].replace("\\x3d", "="), int(_item[1]))) except ValueError, error: _msg = _("Error while processing configuration:\n\n"\ "%(error)s in line `%(line)s`.\n\n"\ "Please check your configuration file.") % {"error" : str(error), "line" : _item[0]} raise exceptions.NonValidOptionException(_msg) return _res def get_followlinks(self): _section = "general" _option = "followlinks" _res = False if self.has_option(_section, _option): if str(self.get(_section, _option)) == "1": _res = True return _res def optionxform(self, option): """Default behaviour of ConfigParser is to set the option keys to lowercase. By overiding this method, we make it case sensitive. that's really important for dirconfig paths. """ return str(option) def has_option(self, section, option): """Checks this configuration for a given option comprising of section name and option name. @rtype: Boolean """ if section == "dirconfig" and \ not ConfigParser.ConfigParser.has_option(self, section, option): if option == "remote" : return ConfigParser.ConfigParser.has_option(self, section, option) #search through remote option to get the option if ConfigParser.ConfigParser.has_option(self, "dirconfig", 'remote'): remotes = self.get("dirconfig", "remote") if type(remotes) == str : remotes = eval(remotes) if type(remotes) != dict : raise exceptions.SBException(_("Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r').")\ % {'parameter': remotes, 'value': type(remotes)}) if not remotes.has_key(option) : # then it wasn't for us , fall back on the parent return ConfigParser.ConfigParser.has_option(self, section, option) else : # we have this key return True else : return ConfigParser.ConfigParser.has_option(self, section, option) else : #fall back in parent behaviour return ConfigParser.ConfigParser.has_option(self, section, option) def get(self, section, option): """Returns a given option value from this config. """ # if we have (dirconfig,opt), if opt=remote if section == "dirconfig" and not option == 'remote' and self.has_option(section, option) and not ConfigParser.ConfigParser.has_option(self, section, option): #search through remote option to get the option remotes = ConfigParser.ConfigParser.get(self, "dirconfig", "remote", True) if type(remotes) == str : remotes = eval(remotes) if type(remotes) != dict : raise exceptions.SBException(_("Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )") % {'parameter': remotes, 'value': type(remotes)}) # we have that key return remotes[option] elif section == "dirconfig" and option == 'remote' and ConfigParser.ConfigParser.has_option(self, section, option): remotes = ConfigParser.ConfigParser.get(self, "dirconfig", "remote", True) if type(remotes) == str : remotes = eval(remotes) if type(remotes) != dict : raise exceptions.SBException(_("Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r').") % {'parameter': remotes, 'value': type(remotes)}) return remotes else : #fall back in parent behaviour return ConfigParser.ConfigParser.get(self, section, option, True) def set(self, section, option, value): """Set an option just like a configParser but in case of the 'remote' option in 'dirconfig'. In this case, value must be a dict with the value you want to set, e.g. value = {'ssh://test/': 1, 'ssh://test/test': 0} You can set one at a time, the value will be append to the 'remote' dict. """ if section == "dirconfig" and option == "remote" : if type(value) != dict : raise exceptions.SBException(_("You must provide a dictionary.")) if not self.has_option(section, option) : ConfigParser.ConfigParser.set(self, section, option, value) else : remotes = ConfigParser.ConfigParser.get(self, section, option, True) if type(remotes) == str : remotes = eval(remotes) if type(remotes) != dict : raise exceptions.SBException("Couldn't eval '%s' as a dict (value got = '%r' )" % (remotes, type(remotes))) for rsource, flag in value.iteritems() : remotes[rsource] = flag ConfigParser.ConfigParser.set(self, section, option, remotes) else : #fall back in normal bahaviour ConfigParser.ConfigParser.set(self, section, option, value) def remove_option(self, section, option): """Remove an option, but it's different for remote. If option = "remote" then the whole remote option will be removed. If option is in remote dict, section ='dirconfig' and option='ssh://test/me' then the entry in the remote dict will be removed. """ if section == "dirconfig" and not ConfigParser.ConfigParser.has_option(self, section, option) : #search through remote option to get the option if not self.has_option("dirconfig", "remote"): #fall back in parent behaviour ConfigParser.ConfigParser.remove_option(self, section, option) else : self.logger.debug("search through remote option to get the option") remotes = self.get("dirconfig", "remote") if type(remotes) == str : remotes = eval(remotes) if type(remotes) != dict : raise exceptions.SBException("Couldn't eval '%s' as a dict (value got = '%r' )" % (remotes, type(remotes))) if not remotes.has_key(option) : # then it wasn't for us , fall back on the parent ConfigParser.ConfigParser.remove_option(self, section, option) else : # we have that key remotes.pop(option) self.logger.debug("remote is now '%r'" % remotes) ConfigParser.ConfigParser.set(self, section, "remote", remotes) else : #fall back in parent behaviour ConfigParser.ConfigParser.remove_option(self, section, option) def __clear_dirconfig(self): """The internal variable containing the directory configuration (i.e. what directories are being included resp. excluded) is cleared. The according config section remains but is empty then. """ _section = "dirconfig" self.__dirconfig.clear() if self.has_section(_section): self.remove_section(_section) if not self.has_section(_section): self.add_section(_section) def __set_dirconfig(self, dirconf): """The configuration item 'dirconfig' (Directory configuration) is set to the value of the given dictionary. Previous values are overwritten. @param dirconf: new value @type dirconf: Dictionary @return: None @raise TypeError: If the given parameter is not of dictionary type """ _section = "dirconfig" if not isinstance(dirconf, types.DictionaryType): raise TypeError("Given parameter must be a Dictionary. "\ "Got %s instead." % (type(dirconf))) self.__clear_dirconfig() self.__dirconfig.update(dirconf) for a, b in self.__dirconfig.iteritems() : self.set(_section, a, b) def __set_regex_excludes(self, aregex): """Helper method that sets the excludes defined by Regular Expressions. """ _section = "exclude" _option = "regex" if not isinstance(aregex, types.StringTypes): raise TypeError("Given parameter must be of string type. "\ "Got %s instead." % (type(aregex))) self.set(_section, _option, aregex) def setValidOpts(self, valid_options, parse_cmdline = False): self.valid_options = valid_options def __create_logger(self): """Initializes logger with profile name as identifier and use the specified file as log file. Uses the defined 'template' which is extended by the current time in order to provide a unique name when the file is actually created. """ curr_logf = None if self.has_section("log") and self.has_option("log", "file"): logf_templ = self.get("log", "file") curr_logf = pathparse.append_time_to_filename(logf_templ, ".log") self.__logfile_dir = os.path.dirname(curr_logf) if self.has_option("log", "level") : self.logger = log.LogFactory.getLogger(self.getProfileName(), curr_logf, self.getint("log", "level")) else : self.logger = log.LogFactory.getLogger(self.getProfileName(), curr_logf) self.logger.info(_("Log output for [%(profile)s] is directed to file '%(file)s'.")\ % {'profile' : self.getProfileName(), 'file': curr_logf}) else: # if no file is specified, use the logger's default (no log file) # TODO: Raise an assertion exception if no log section was found ?! self.logger = log.LogFactory.getLogger(self.getProfileName()) self.logger.info(_("Log output for [%s] is not directed into a file.")\ % (self.getProfileName())) self.__current_logfile = curr_logf def __cleanup_logfiles(self): """Renames the unique log file that was created in the constructor and rotates existing files in order to keep the log directory clear. """ _max_num = 6 logf_src = self.get_current_logfile() if logf_src is not None: logf_target = self.__get_logfile_template() if local_file_utils.path_exists(logf_src): try: local_file_utils.rename_errors_ignored(logf_target, "%s.0" % logf_target) local_file_utils.compress_rotated_files(logf_target, _max_num) local_file_utils.rename_rotating(logf_src, logf_target, _max_num) except OSError, error: self.logger.exception(_("Unable to rename log file '%(src)s'->'%(dst)s': %(err)s")\ % {'src': logf_src, 'dst': logf_target, 'err': str(error)}) self.logger = None def read(self, filename = None): """Reads the configuration file and returns its content. Moreover it sets up a logger with appropriate log file and log level. This method overwrites the 'read' method from base class. @param filename: Full path of configuration file. @type filename: String @return: The read configuration @rtype: Same type as the base class returns """ if filename: self.conffile = filename retValue = ConfigParser.ConfigParser.read(self, self.conffile) if len(retValue) == 0 : raise exceptions.SBException(_("The config file '%s' couldn't be read!")\ % self.conffile) return retValue def validateConfigFileOpts(self): self.logger.debug("Validating config file.") if (self.valid_options is None): return for section in self.sections(): try: for key in self.options(section): if (not self.valid_options.has_key(section)): raise exceptions.NotValidSectionException (_("section [%(section)s] in '%(configfile)s' should not exist, aborting") % {'section': section, 'configfile' :self.conffile}) if key == 'stop_if_no_target': self.logger.warning("Obsolete option `%s` in configuration found. Ignored." % key) if (self.valid_options[section].has_key(key) or self.valid_options[section].has_key('*')): continue raise exceptions.NonValidOptionException ("key '%s' in section '%s' in file '%s' is not known, a typo possibly?" % (key, section, self.conffile)) except exceptions.SBException, e: self.logger.error(str(e)) raise e return True def allOpts(self): retVal = [] for section in self.sections(): for key in self.options(section): value = self.get(section, key, raw = True) retVal.append((key, value)) return retVal def get_compress_format(self): if self.has_option("general", "format"): _compr = self.get("general", "format") if str(_compr) == "1": # sbackup < 0.11 compatibility hack _compr = "gzip" self.set("general", "format", _compr) else: defaults = self.__get_default_config_obj() _compr = defaults.get_compress_format() return _compr def setSchedule(self, isCron, value): """Set the backup Schedule. @param isCron : schedule type (cron/anacron) @param value : a string containing the value to set for Cron/Anacron. \ Valid values for Anacron are: \ daily/monthly/hourly/weekly Valid values for Cron: cron expression to add at /etc/cron.d/sbackup. """ _logger = log.LogFactory().getLogger() # in some cases a logger is not yet available if isCron not in SCHEDULE_TYPES: raise exceptions.NonValidOptionException("Invalid schedule type given") if not self.has_section("schedule"): self.add_section("schedule") if isCron == SCHEDULE_TYPE_ANACRON: # (simple scheduling) if value in _ANACRON_SERVICES : if self.has_option("schedule", "cron"): _logger.debug("Removing Cron config to set Anacron config.") self.remove_option("schedule", "cron") _logger.debug("Setting Anacron config to: %s" % value) self.set("schedule", "anacron", value) else: raise exceptions.NonValidOptionException("Valid values for anacron are: "\ "%s, got '%s' instead." % (str(_ANACRON_SERVICES), value)) elif isCron == SCHEDULE_TYPE_CRON: # Cron entry given (precise scheduling) if self.has_option("schedule", "anacron"): _logger.debug("Removing Anacron config to set Cron config.") self.remove_option("schedule", "anacron") _logger.debug("Setting cron config to: %s" % value) self.set("schedule", "cron", value) def get_schedule_and_probe(self): """Retrieves the current schedule state from configuration settings and from filesystem. @return: (isCron, value) a tuple where isCron = 0 if Anacron is used \ and isCron = 1 Cron is used. If no schedule setup has been \ found, 'None' is returned. """ _value = None if not self.has_section("schedule") \ or (not self.has_option("schedule", "cron") \ and not self.has_option("schedule", "anacron")): # no entry in configuration found, look at Cron/Anacron directly self.logger.info(_("No schedule defined in configuration file. Probing from filesystem.")) # for anacron we check for link rather exists to cope with cases of broken links if os.path.islink("/etc/cron.hourly/sbackup"): self.logger.debug("Anacron hourly has been found") return (SCHEDULE_TYPE_ANACRON, "hourly") elif os.path.islink("/etc/cron.daily/sbackup"): self.logger.debug("Anacron daily has been found") return (SCHEDULE_TYPE_ANACRON, "daily") elif os.path.islink("/etc/cron.weekly/sbackup"): self.logger.debug("Anacron weekly has been found") return (SCHEDULE_TYPE_ANACRON, "weekly") elif os.path.islink("/etc/cron.monthly/sbackup"): self.logger.debug("Anacron monthly has been found") return (SCHEDULE_TYPE_ANACRON, "monthly") if os.path.exists("/etc/cron.d/sbackup"): _value = local_file_utils.readfile("/etc/cron.d/sbackup") self.logger.debug("Custom Cron has been found: %s" % _value) _value = parse_cronexpression(_value) return (SCHEDULE_TYPE_CRON, _value) # none has been found return None else: # scheduling is stored in configuration file if self.has_option("schedule", "cron"): _value = self.get("schedule", "cron") self.logger.debug("Schedule type Cron found in Config: %s" % _value) return (SCHEDULE_TYPE_CRON, _value) elif self.has_option("schedule", "anacron"): _value = self.get("schedule", "anacron") self.logger.debug("Schedule type Anacron found in Config: %s" % _value) return (SCHEDULE_TYPE_ANACRON, _value) else: return None def get_schedule(self): """Returns the scheduling information that are currently set in this configuration regardless of filesystem state. """ # scheduling is stored in configuration file ret_val = None if self.has_option("schedule", "cron"): _value = self.get("schedule", "cron") self.logger.debug("Schedule type Cron found in Config: %s" % _value) ret_val = (1, _value) elif self.has_option("schedule", "anacron"): _value = self.get("schedule", "anacron") self.logger.debug("Schedule type Anacron found in Config: %s" % _value) ret_val = (0, _value) else: ret_val = None return ret_val def remove_schedule(self): """Removes all options stored in section 'schedule'. The section itself remains. Existing entries in crontab etc. are not touched. @return: Flag, whether something was removed or not. True is returned in the case that any schedule information was found by 'getSchedule'. The return of this flag is somewhat a hack to force the GUI to enable the Save button for the rare case that: * the user wants to remove the schedule (i.e. sets it to 'Never') * no schedule information is stored in the configuration file * a script is linked in Anacron directories or in 'etc/cron.d/' which is found when probing the filesystem for schedules. """ _something_removed = False if self.get_schedule_and_probe() is not None: _something_removed = True for _option in self.options("schedule"): self.logger.debug("Removing ('schedule','%s') "\ "from configuration." % _option) self.remove_option("schedule", _option) return _something_removed def getProfileName(self): """Returns the current profile name for the current ConfigManager. @return: the current profile name if the config file name match the naming convention or Unknow otherwise @raise exceptions.SBException: if the configfile isn't set @todo: Implement Command-Query Separation Principle (CQS)! """ if self.__profileName : return self.__profileName if not self.conffile: raise exceptions.SBException(_("The config file is not set yet into this ConfigManager")) self.__profileName = self.__conffile_hdl.get_profilename(self.conffile) return self.__profileName def is_default_profile(self): """Checks whether this configuration is the default configuration (i.e. default profile). @return: True if this is the default profile, False otherwise. """ if not self.conffile: raise exceptions.SBException(_("The config file is not set yet into this ConfigManager")) is_default = is_default_profile(self.conffile) return is_default def getProfiles(self): """Returns the list of defined backup profiles. Both, active and disabled profiles are retrieved. @return: a dictionary of {profilename: [path_to_conffile, enabled]} """ profdir = self.__conffile_hdl.get_profilesdir(self.conffile) self.logger.debug("Getting profiles from `%s`" % profdir) _prfls = get_profiles(profdir) # debug output of found profiles for _prfk in _prfls.keys(): self.logger.debug("Found profile '%s' (active = %s)" % (_prfk, _prfls[_prfk][1])) # end of debug output return _prfls def set_logdir(self, logdir): """Sets the given directory as current log directory for use with log files. """ self.__logfile_dir = logdir def get_logdir(self): """Returns the currently set directory for log files. """ return self.__logfile_dir def set_logfile_templ_to_config(self): """Retrieves the path to log file and writes it into the configuration. By 'template' is indicated this is the base logfile name. It is extended by the current time if a logfile is actually created. """ logf = self.__get_logfile_template() if not self.has_section("log") : self.add_section("log") self.set("log", "file", logf) def __get_logfile_template(self): """Builds the full path to log file for this configuration and returns it. The log file for the default profile is named 'sbackup.log', log files for other profiles are extended by the profile's name to keep them unique and avoid problems while logging. By 'template' is indicated this is the base logfile name. It is extended by the current time if a logfile is actually created. """ logfname = get_logfile_name_template(self.conffile) logf = os.path.join(self.__logfile_dir, logfname) return logf def get_current_logfile(self): """Returns the full path of the log file currently used. Might return None. """ return self.__current_logfile def __clear_report_section(self): """Any options present in the report section are removed. The section itself is not removed. """ _section = "report" self.remove_section(_section) if not self.has_section(_section): self.add_section(_section) def saveConf(self, configfile = None): """Saves the configuration (i.e. writes it into the specified file and sets scheduling in the case this is the default profile). @param configfile: The config file in which to write the configuration. Default is in the default location @todo: What happens if the config file is 'Save as...' in order to store a configuration aside but the scheduling is different from the *original* configuration that is used by sbackup? """ if configfile is not None: fld = local_file_utils.openfile(configfile, True) else: fld = local_file_utils.openfile(self.conffile, True) self.write(fld) fld.close() if configfile is None and system.is_superuser(): self.write_schedule() def write_schedule(self): """Write the schedule from the configuration file. Scheduling is only written for admin default profiles. """ if not system.is_superuser(): self.logger.warning("Schedules are not implemented for regular users") return if not self.is_default_profile(): self.logger.warning("Schedules are not implemented for non-default profiles") return self.__erase_services() if not self.has_section("schedule"): return if self.has_option("schedule", "cron"): self.logger.debug("Writing Cron entry") _crpath = _CRON_PATH_TEMPLATE % (_CRON_SERVICE, _LAUNCHER_NAME_CRON) local_file_utils.writetofile(_crpath, self.__make_cronfile_content()) elif self.has_option("schedule", "anacron"): _anacr = self.get("schedule", "anacron") self.logger.debug("Writing Anacron entry `%s`" % _anacr) assert _anacr in _ANACRON_SERVICES, "Anacron entry found in config is invalid" _anacrpath = _CRON_PATH_TEMPLATE % (_anacr, _LAUNCHER_NAME_CRON) if _anacr in _ANACRON_SERVICES: os.symlink(self.__servicefile, _anacrpath) else : self.logger.warning("Anacron entry `%s` is invalid" % _anacr) def __make_cronfile_content(self): """Collects required data in order to create the content for the file used to setup CRON (precise setting). """ _cronheader = ConfigManagerStaticData.get_cronheader() _cronexpr = self.get("schedule", "cron") assert (_cronexpr is not None) and (_cronexpr != "None"), \ "Cron entry `%s` found in config is invalid" % _cronexpr _cronuser = self.__schedules_user _execline = "if [ -x '%s' ]; then %s; fi;" % (self.__servicefile, self.__servicefile) # Note: cron requires a newline at the end of the file _content = "%s\n%s\t%s\t%s\n" % (_cronheader, _cronexpr, _cronuser, _execline) return _content def __erase_services(self): """Removes Cron and Anacron service from /etc/cron.* """ for serv in _SCHEDULE_SERVICES: path = _CRON_PATH_TEMPLATE % (serv, _LAUNCHER_NAME_CRON) try: os.unlink(path) except OSError: pass else: print "Cron entry `%s` was removed" % path def testMail(self): """Test the mail settings @return: True if succeded @raise exceptions.SBException: the error message why it didn't run @todo: Not the right place for this kind of functionality?!? @todo: Implement specific `MailError` exception. """ if not self.has_option("report", "to"): raise exceptions.SBException (_("No receiver set.")) if not self.has_option("report", "smtpserver") : raise exceptions.SBException (_("No SMTP server set.")) if (self.has_option("report", "smtpuser") and not self.has_option("report", "smtppassword")): raise exceptions.SBException (_("Username set but no password specified.")) if (not self.has_option("report", "smtpuser") and self.has_option("report", "smtppassword")): raise exceptions.SBException (_("Password set but no username specified.")) if not self.has_option("report", "smtptls") and (self.has_option("report", "smtpcert") or self.has_option("report", "smtpkey)")) : raise exceptions.SBException (_("A certificate and key file is given while SSL option (smtptls=1) is not set.\nSelect SSL in order to use Certificate and Key.")) if self.has_option("report", "smtptls") and ((self.has_option("report", "smtpcert") and not self.has_option("report", "smtpkey")) \ or (not self.has_option("report", "smtpcert") and self.has_option("report", "smtpkey"))): raise exceptions.SBException (_("When specifying a SSL certificate or key file, a key file resp. certificate is mandatory.")) try : server = smtplib.SMTP() # getting the connection if self.has_option("report", "smtpport") : server.connect(self.get("report", "smtpserver"), self.get("report", "smtpport")) else : server.connect(self.get("report", "smtpserver")) if self.has_option("report", "smtptls") and self.get("report", "smtptls") == "1": if self.has_option("report", "smtpcert") and self.has_option("report", "smtpkey") : server.starttls(self.get("report", "smtpkey"), self.get("report", "smtpcert")) else : server.starttls() if self.has_option("report", "smtpuser") and self.has_option("report", "smtppassword") : server.login(self.get("report", "smtpuser"), self.get("report", "smtppassword")) server.helo() server.close() return True except Exception, e: raise exceptions.SBException(e) def isConfigEquals(self, config): """Compares this configuration and the given configuration. @param config : a configManager instance @return: True if the config are equals, False otherwise @rtype: boolean """ if not (isinstance(config, ConfigManager) or config is None): raise exceptions.SBException("Can't compare a ConfigManager with type '%s'"\ % str(type(config))) if config is None: return False for s in self.sections() : if not config.has_section(s) : return False else : for o in self.options(s) : if not config.has_option(s, o): return False else : if type(self.get(s, o)) != type(config.get(s, o)) : if type(self.get(s, o)) is not str : self.set(s, o, repr(self.get(s, o))) if type(config.get(s, o)) is not str : config.set(s, o, repr(config.get(s, o))) if not self.get(s, o) == config.get(s, o) : return False for o in config.options(s) : if not self.has_option(s, o): return False else : if type(self.get(s, o)) != type(config.get(s, o)) : if type(self.get(s, o)) is not str : self.set(s, o, repr(self.get(s, o))) if type(config.get(s, o)) is not str : config.set(s, o, repr(config.get(s, o))) if not self.get(s, o) == config.get(s, o) : return False return True class ConfigurationFileHandler(object): """Determines paths to configuration files and profiles under consideration of users privileges. When running in special `Developer mode` paths are read """ def __init__(self): self.__super_user = False self.__check_for_superuser() def __check_for_superuser(self): """Checks whether the application was invoked with super-user rights. If so, the member variable 'self.__super_user' is set. :todo: Here should no distinction between user/superuser be necessary! """ if system.is_superuser(): self.__super_user = True def get_conffile(self): """default profile config file is determined """ if self.__super_user: conffile = os.path.join(ConfigManagerStaticData.get_superuser_confdir(), ConfigManagerStaticData.get_default_conffile()) else: conffile = os.path.join(self.get_user_confdir(), ConfigManagerStaticData.get_default_conffile()) return conffile def get_default_conffile_fullpath(self): """Returns the full path (incl. filename) o the default config file. """ conffile = os.path.join(self.get_user_confdir(), ConfigManagerStaticData.get_default_conffile()) return conffile def get_profilesdir(self, conffile): """the config directory is determined from given conffile. It is supposed that the profile directory is placed in the same directory as the configuration file (i.e. given conf file is the default profile's file. """ confdir = os.path.dirname(conffile) profdir = os.path.join(confdir, ConfigManagerStaticData.get_profiles_dir()) return profdir def get_user_confdir(self): """Get the user config dir using the XDG specification. :todo: Is method `ConfigManagerStaticData.get_superuser_confdir()` still relevant? """ if self.__super_user: confdir = local_file_utils.normpath("/etc") else: confdir = local_file_utils.normpath(system.get_user_config_dir(), "sbackup") if not local_file_utils.path_exists(confdir) : local_file_utils.makedirs(confdir) return confdir def get_user_datadir(self): """Get the user datas dir using the XDG specification. """ datadir = local_file_utils.normpath(system.get_user_data_dir(), "sbackup") if not local_file_utils.path_exists(datadir) : local_file_utils.makedirs(datadir) return datadir def get_user_tempdir(self): """Returns the user's temporary directory. Currently always the directory `/tmp` is used. :return: full path to the SBackup tempdir :todo: Review the use of '/tmp' as tempdir as solution for several\ different distributions? :todo: Put the definition of used paths into `ConfigManagerStaticData`! """ if self.__super_user: tempdir = os.path.join("/tmp", "sbackup/") else: tempdir = os.path.join(self.get_user_datadir(), "tmp/") if not os.path.exists(tempdir) : os.mkdir(tempdir) #LP #785495: make the temp directory RWX only by owner if (os.stat(tempdir).st_mode & 0777) != 0700: os.chmod(tempdir,0700) return tempdir def get_profilename(self, conffile): # find the profile cfile = os.path.basename(conffile) if cfile == ConfigManagerStaticData.get_default_conffile(): profilename = ConfigManagerStaticData.get_default_profilename() else : m = ConfigManagerStaticData.get_profilename_re().match(cfile) if not m: profilename = ConfigManagerStaticData.get_unknown_profilename() else : profilename = m.group(1) return profilename class ConfigManagerStaticData(object): """Any static data related to configurations are stored here. @todo: Refactor this class into a class containing a default configuration, one containing name definitions, and one containing path and file names. :todo: Simplify and use properties! """ __cronheader = "SHELL=/bin/bash \n"\ "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\n" __schedule_script_file = util.get_resource_file("sbackup-launch") __default_profilename = _("Default Profile") __unknown_profilename = _("Unknown Profile") # these variables should be read-only __logfile_basename = "sbackup" __logfile_ext = "log" __superuser_confdir = "/etc" __user_confdir_template = ".config/sbackup" __default_config_file = "sbackup.conf" __profiles_dir = "sbackup.d" __profiles_dir_nssbackup = "nssbackup.d" __profilename_re = re.compile(r"^sbackup-(.+?).conf(-disable)?$") __profilename_nssbackup_re = re.compile(r"^nssbackup-(.+?).conf(-disable)?$") # configuration's existing sections and options __our_options = { 'general' : { 'mountdir' : str, 'target' : str , 'lockfile' : str , 'maxincrement' : int , 'format' : str, 'splitsize' : int, 'purge' : str, 'followlinks' : int, 'stop_if_no_target' : int, 'packagecmd' : str}, 'log' : {'level' : int , 'file' : str }, 'report' : {'from' :str, 'to' : str, 'smtpserver' : str, 'smtpport' : int, 'smtpuser' : str, 'smtppassword' : str, 'smtptls' : int, 'smtpcert': str, 'smtpkey': str }, 'dirconfig' : { '*' : str }, 'exclude' : { 'regex' : list, 'maxsize' : int }, 'places' : { 'prefix' : str }, 'hooks' : {'pre-backup': list, 'post-backup': list }, 'schedule' : {'anacron' : str , 'cron' : str } } __loglevels = { '10' : ("Debug", 0), '20' : ("Info", 1), '30' : ("Warning", 2), '40' : ("Error", 3)} __simple_schedule_freqs = { "hourly" : 0, "daily" : 1, "weekly" : 2, "monthly" : 3 } __cformats = ['none', 'gzip', 'bzip2'] __splitsize = { 0 : _('Unlimited'), 100 : _('100 MiB'), 250 : _('250 MiB'), 650 : _('650 MiB'), 2048 : _('2 GiB (FAT16)'), 4096 : _('4 GiB (FAT32)'), - 1 : _('Custom') } __known_ftypes = { "mp3" : _("MP3 Music"), "avi" : _("AVI Video"), "mpeg" : _("MPEG Video"), "mpg" : _("MPEG Video"), "mkv" : _("Matrjoshka Video"), "ogg" : _("OGG Multimedia container"), "iso" : _("CD Images") } def __init__(self): pass @classmethod def get_simple_schedule_frequencies(cls): """Returns a dictionary of schedule frequencies and IDs. """ return cls.__simple_schedule_freqs @classmethod def get_cronheader(cls): """Returns the static cron header. """ return cls.__cronheader @classmethod def get_schedule_script_file(cls): """Returns the service file (helper script) that is called when using scheduled backups. """ return cls.__schedule_script_file @classmethod def get_default_logfile(cls): """Returns the name of the logfile for the default profile. """ logfname = "%s.%s" % (cls.__logfile_basename, cls.__logfile_ext) return logfname @classmethod def get_valid_loglevels(cls): """Returns a dictionary of valid log levels (a number) and corresponding log level name. """ return cls.__loglevels @classmethod def get_profile_logfile(cls, profilename): """Returns the name of the logfile for a certain profile named `profilename`. """ logfname = "%s-%s.%s" % (cls.__logfile_basename, profilename, cls.__logfile_ext) return logfname @classmethod def get_profiles_dir(cls): """Returns the name (only basename, no path) of the directory where profile configurations are stored. """ return cls.__profiles_dir @classmethod def get_profiles_dir_nssbackup(cls): """Returns the name (only basename, no path) of the directory where profile configurations are stored. """ return cls.__profiles_dir_nssbackup @classmethod def get_profilename_re(cls): return cls.__profilename_re @classmethod def get_profilename_nssbackup_re(cls): return cls.__profilename_nssbackup_re @classmethod def get_default_profilename(cls): return cls.__default_profilename @classmethod def get_unknown_profilename(cls): return cls.__unknown_profilename @classmethod def get_superuser_confdir(cls): return cls.__superuser_confdir @classmethod def get_user_confdir_template(cls): return cls.__user_confdir_template @classmethod def get_default_conffile(cls): return cls.__default_config_file @classmethod def get_our_options(cls): return cls.__our_options @classmethod def get_splitsize_dict(cls): return cls.__splitsize @classmethod def get_known_ftypes_dict(cls): return cls.__known_ftypes @classmethod def get_compr_formats(cls): return cls.__cformats class Configuration(object): """Encapsulates a configuration, that is a set of backup profile related settings. Configuration values are stored in their natural type and format instead of the type and format that is used for storage of the configuration (i.e. Boolean values get the value True/False, not '0/1' or 'yes/no'). The transformation of the actual configuration values to data that is written to disk is done in the ConfigManager. @note: This is an early attempt to refactor the configuration thing: * there are objects that represent the actual profile settings * there are certain global preferences that are valid for each profile (e.g. prefix, mountdir, etc.) * there is a Manager class that is responsible for handling of several profile configurations * there is an object that forms an interface between the actual configuration and their storage on disk, reading, evaluating and so on (probably derived from ConfigParser) """ def __init__(self): self._maxinc = 0 self._cformat = "" self._follow_links = False self._splitsize = 0 self._dirconf = {} self._regex_excludes = "" self._max_filesize = 0 self._purge = "" self._target = "" # administrative settings self._mountdir = "" self._lockfile = "" self._prefix = "" self._logdir = "" self._loglevel = 0 # TODO: Collect report related settings in separate class. self._report_smtpfrom = "" self._schedule = [False, ""] # isCron = False, frequency = "" # access methods def get_report_smtpfrom(self): return self._report_smtpfrom def get_schedule(self): return self._schedule def get_regex_excludes(self): return self._regex_excludes def get_max_filesize(self): return self._max_filesize def get_max_increment(self): return self._maxinc def get_compress_format(self): return self._cformat def get_follow_links(self): if not isinstance(self._follow_links, types.BooleanType): raise TypeError("Boolean value for 'followlinks' expected. "\ "Found '%s' instead." % type(self._follow_links)) return self._follow_links def get_split_size(self): return self._splitsize def get_dir_config(self): return self._dirconf def get_mountdir(self): return self._mountdir def get_purge(self): return self._purge def get_target(self): return self._target def get_lockfile(self): return self._lockfile def get_prefix(self): return self._prefix def get_logdir(self): return self._logdir def get_loglevel(self): return self._loglevel class _DefaultConfiguration(Configuration): """Abstract base class for a default configuration. A default configuration is basically a configuration however the settings are predefined (and read-only in the best case). @todo: Change this: the default configuration should not be a derived class rather an instance of a regular configuration which gets its content from a default config file (in share). Doing so, would be more flexible? What is with /home/$username? """ def __init__(self): Configuration.__init__(self) self._regex_excludes = "^/home/[^/]+?/\.gvfs(/|$),"\ "^/home/[^/]+?/\.thumbnails(/|$),"\ "^/home/[^/]+?/\..+/[tT]rash(/|$),"\ "^/home/[^/]+?/\.cache(/|$),"\ "^/home/[^/]+?/\..+/[cC]ache(/|$),"\ "^/home/[^/]+?/\..+/lock(/|$),"\ "~$" self._maxinc = 7 self._cformat = 'none' self._follow_links = False self._splitsize = 0 self._max_filesize = -1 #Bugfix LP #146618 self._loglevel = "20" # set values as strings (LP #1159705) self._report_smtpfrom = Infos.SMTPFROM self._lockfile = "/var/lock/sbackup/sbackup.lock" self._prefix = '/usr' self._purge = "30" class _DefaultConfigurationForAdmins(_DefaultConfiguration): """Derived default configuration that specializes it for privileged users. Only settings that are unique for admins are defined here. @todo: Change this: the default configuration should not be a derived class rather an instance of a regular configuration which gets its content from a default config file (in share). Doing so, would be more flexible? What is with /home/$username? """ def __init__(self): _DefaultConfiguration.__init__(self) self._mountdir = "/mnt/sbackup" self._target = "/var/backup" self._dirconf = { '/etc/' : '1', '/var/' : '1', '/home/' : '1', '/var/cache/' : '0', '/var/tmp/' : '0', '/var/spool/' : '0', '/var/run/' : '0', '/usr/local/' : '1', '/media/' : '0' } self._logdir = "/var/log/sbackup" self._schedule = [False, "daily"] class _DefaultConfigurationForUsers(_DefaultConfiguration): """Derived default configuration that specializes it for normal users. Only settings that are unique for normal users are defined here. @todo: Change this: the default configuration should not be a derived class rather an instance of a regular configuration which gets its content from a default config file (in share). Doing so, would be more flexible? What is with /home/$username? """ def __init__(self): _DefaultConfiguration.__init__(self) _hdl = ConfigurationFileHandler() self._mountdir = os.path.join(_hdl.get_user_datadir(), "mountdir") self._target = os.path.join(_hdl.get_user_datadir(), "backups") self._dirconf = { "%s%s" % (system.get_user_home_dir(), os.sep) : '1' } self._logdir = os.path.join(_hdl.get_user_datadir(), "log") self._schedule = [False, ""] # no scheduling sbackup-0.11.6/src/sbackup/core/snapshot.py0000644000175000017500000005746312216122130017264 0ustar peerpeer# Simple Backup - snapshot definition # # Copyright (c)2008-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackup.util.snapshot` -- snapshot definition ===================================================== .. module:: snapshot :synopsis: Defines snapshots .. moduleauthor:: Jean-Peer Lorenz .. moduleauthor:: Ouattara Oumar Aziz """ from gettext import gettext as _ import re import types from sbackup.fs_backend import fam from sbackup.ar_backend import tar from sbackup.core.ConfigManager import ConfigurationFileHandler from sbackup.util.exceptions import NotValidSnapshotNameException from sbackup.util.exceptions import SBException from sbackup.util.exceptions import NotValidSnapshotException from sbackup.util import constants from sbackup.util import structs from sbackup.util import log AVAIL_SNP_FORMATS = ["none", "bzip2", "gzip"] class Snapshot(object): """The snapshot class represents one snapshot in the backup directory. """ __validname_re = re.compile(r"^(\d{4})-(\d{2})-(\d{2})_(\d{2})[\:\.](\d{2})[\:\.](\d{2})\.\d+\..*?\.(.+)$") def __init__ (self, path): """The snapshot constructor. :param path : the path to the snapshot dir. :todo: Any distinction between creation of a new snapshot and opening\ an existing one from disk would be useful! The reason is that\ instantiation a Snapshot with a not existing path creates a\ snapshot directory in any case, currently! We need to handle the\ case: opening an snapshot that is supposed to exist but in fact\ doesn't! :todo: Separate commit of snapshot and the snapshot (name, path, ...) itself into classes with concise responsibilities. """ self.logger = log.LogFactory.getLogger() self._fop = fam.get_file_operations_facade_instance() # Attributes self.__name = False self.__base = None self.__format = "none" # default value self.__followlinks = False self.__snarfile = None # explicitely defined include and exclude file lists; these lists are filled from the configuration self.__includeFlist = structs.SBdict() self.__includeFlistFile = None # Str self.__excludeFlist = structs.SBdict() self.__excludeFlistFile = None # Str self.__space_required = constants.SPACE_REQUIRED_UNKNOWN self.__splitedSize = 0 self.__excludes = False self.__packages = False self.__version = False self.__snapshotpath = None self.__baseSnapshot = None # set some attributes self.setPath(path) # sets path and validates name # check if it's an existing snapshot if self._fop.path_exists(self.__snapshotpath): self.__validateSnapshot(self.__snapshotpath, self.__name) else : # Snapshot for creation self._fop.makedir(self.__snapshotpath) #LP #785512: make the snapshot directory RWX only by owner self._fop.chmod_no_rwx_grp_oth(self.__snapshotpath) def __str__(self): "Return the snapshot name" return self.getName() def set_space_required(self, space): if not isinstance(space, (types.IntType, types.LongType)): raise TypeError("Parameter of string type expected. Got %s instead." % str(type(space))) space = long(space) self.__space_required = space def get_space_required(self): return self.__space_required # Public Methods def getName(self) : " return the name of the snapshot (ie the dir name)" if not self.__name : raise SBException(_("Snapshot is inconsistent: __name is not set ")) else : return self.__name def getDate(self): """ You can get from the dictionary returned the following keys : year, month, day, hour, minute, second @return : a dictionary with the date time this snapshot has been taken. """ m = re.match(self.__validname_re , self.getName()) if not m : raise NotValidSnapshotNameException(_("Name of snapshot '%s' doesn't match requirement") % self.getName()) date = {"year" : int(m.group(1)), "month":int(m.group(2)), "day":int(m.group(3)), "hour":int(m.group(4)), "minute":int(m.group(5)), "second":int(m.group(6))} return date def getIncludeFlist(self): """Returns the list of files included into this snapshot. @rtype: SBDict """ return self.__includeFlist def get_effective_incl_filelist(self): """Returns the *effective* list of files included into this snapshot. @rtype: SBDict """ return self.__includeFlist.getEffectiveFileList() def get_eff_incl_filelst_not_nested(self): """Returns the *effective* list of files included into this snapshot. @rtype: SBDict """ return self.__includeFlist.get_eff_filelist_not_nested() def is_path_in_incl_filelist(self, path): """Checks whether the given `path` is contained in list of included files. Only full paths (no sub-paths) are considered. """ return self.__includeFlist.hasFile(path) def is_subpath_in_incl_filelist(self, path): """Checks whether the given `path` is contained in list of included files. Full paths as well as sub-paths are considered. """ return self.__includeFlist.contains_path(path) def is_path_in_excl_filelist(self, path): """Checks whether the given `path` is contained in list of excluded files. Only full paths (no sub-paths) are considered. """ return self.__excludeFlist.hasFile(path) def disable_path_in_excl_filelist(self, path): """Searches for the given `path` in the list of excluded files and set the properties to None. Sub-paths are also considered. """ if self.__excludeFlist.has_key(path): self.__excludeFlist[path][0] = None def disable_path_in_incl_filelist(self, path): """Searches for the given `path` in the list of included files and set the properties to None. Sub-paths are also considered. """ if self.__includeFlist.has_key(path): self.__includeFlist[path][0] = None def getExcludeFlist(self): """ get the Exclude file list @rtype: list """ return self.__excludeFlist def getExcludeFListFile(self): """ @return: the path to the exclude file list file """ if not self.__excludeFlistFile : self.__excludeFlistFile = self._fop.joinpath(self.getPath(), "excludes.list") return self.__excludeFlistFile def getIncludeFListFile(self): """ @return: the path to the include file list file """ if not self.__includeFlistFile : self.__includeFlistFile = self._fop.joinpath(self.getPath(), "includes.list") return self.__includeFlistFile def getSnarFile(self): """ @return: the path to the TAR SNAR file """ if not self.__snarfile : self.__snarfile = self._fop.joinpath(self.getPath(), "files.snar") return self.__snarfile def getPath(self) : "return the complete path of the snapshot" if not self.__snapshotpath : raise SBException(_("Snapshot is inconsistent: __snapshotpath is not set ")) else : return self.__snapshotpath def getFormat(self): """ Returns the compression format of the snapshot (from the "format" file or default value) """ _formatf = self._fop.joinpath(self.getPath(), "format") if self._fop.path_exists(_formatf): self.__format = self._fop.readfile(_formatf).split('\n')[0] return self.__format def getBase(self) : """Returns the name of the base snapshot of this snapshot. If this is a full dump, None is returned. Please note that, if a base name was successful read from the snapshot directory once, this name is returned on any further calls to this method. If you don't want this you need to reset `self.__base` to None before. """ if not self.__base: basefile = self._fop.joinpath(self.__snapshotpath, "base") if not self._fop.path_exists(basefile): self.__base = None else: if self.isfull(): raise AssertionError("Assertion failed when retrieving "\ "snapshot's base: A full backup ('%s') should not "\ "have a base file." % self) self.__base = self._fop.readfile(basefile).strip() return self.__base def getBaseSnapshot(self): """ Return the base snapshot (as a Snapshot ) not only the name @return: the base Snapshot if it exists or None otherwise (we are a full snapshot) """ if self.__baseSnapshot is None: if not self.isfull(): if self.getBase(): _path = self._fop.get_dirname(self.getPath()) _basef = self._fop.joinpath(_path, self.getBase()) self.__baseSnapshot = Snapshot(_basef) return self.__baseSnapshot def getArchive(self): """ Get the snapshot archive which depends on the Format @raise NonValidSnapshotException: if the archive equivalent to the described format doesn't exist @return: the path to the archive """ problem = False if self.getFormat() == "none": _arn = self._fop.joinpath(self.getPath(), "files.tar") if self._fop.path_exists(_arn): return _arn else : problem = True elif self.getFormat() == "gzip": _arn = self._fop.joinpath(self.getPath(), "files.tar.gz") if self._fop.path_exists(_arn): return _arn else : problem = True elif self.getFormat() == "bzip2": _arn = self._fop.joinpath(self.getPath(), "files.tar.bz2") if self._fop.path_exists(_arn) : return _arn else : problem = True else: problem = True if problem : raise NotValidSnapshotException(_("The snapshot compression format is supposed to be '%s' but the corresponding well named file wasn't found") % self.getFormat()) def getVersion(self) : """Retrieves and returns the version of the snapshot. """ if self.__version: return self.__version elif ":" in self.getName(): self.__version = "1.0" return self.__version else: verfile = self._fop.joinpath(self.getPath(), "ver") if not self._fop.path_exists(verfile): return False else : ver = self._fop.readfile(verfile) # self.logger.debug("Version read from snapshot: `%s`" % ver) try : # major = int(ver[0]) # minor = int(ver[2]) except Exception: raise SBException(_("%(file)s doesn't contain valid value. Ignoring incomplete or non - backup directory. ") % {"file" : verfile}) self.__version = ver[:3] return self.__version def getExcludes(self) : "Return the content of excludes (the list of Regex excludes)" if self.__excludes : return self.__excludes else : excludefile = self._fop.joinpath(self.getPath(), "excludes") if not self._fop.path_exists(excludefile): return False else : self.__excludes = self._fop.pickleload(excludefile) return self.__excludes def getPackages(self) : "Return the packages" if self.__packages : return self.__packages else : packagesfile = self._fop.joinpath(self.getPath(), "packages") if not self._fop.path_exists(packagesfile): return False else : self.__packages = self._fop.readfile(packagesfile) return self.__packages def getSnapshotFileInfos(self, useMem = False, writeFlag = False): """Returns a wrapper for the SnapshotFile resp. DirectoryFile that contains information what files are stored in this snapshot. @param useMem: use or not the memory to store infos about the SNAR file @type useMem: boolean @param writeFlag: Will be passed to the SnapshotFile to permit writing @type writeFlag: boolean @return: the corresponding SnapshotFile (Mem or Proc) @note: The only method usable afterward is getContent(path) """ snpfile = tar.SnapshotFile(self.getSnarFile(), writeFlag) snpfileinfo = None if useMem: snpfileinfo = tar.MemSnapshotFile(snpfile) else : snpfileinfo = tar.ProcSnapshotFile(snpfile) return snpfileinfo def getSplitedSize(self): """ @return: the size of each archive in the snapshot (0 means unlimited) @todo: Implement CQS pattern ! """ _formatf = self._fop.joinpath(self.getPath(), "format") if self._fop.path_exists(_formatf): self.__splitedSize = int(self._fop.readfile(_formatf).split('\n')[1]) return self.__splitedSize def isfull(self): """ @return: True if the snapshot is full and false if inc """ _name = str(self.getName()) return _name.endswith(".ful") def isFollowLinks(self): return self.__followlinks def commit(self, targethandler, publish_progress = False, supports_publish = True): """Commit snapshot data (i.e. write to disk) :param publish_progress: Flag whether to call checkpoint script :param use_io_pipe: Flag whether to use pipes instead of files defined as parameters for archive writing (should be hidden in FAM) :todo: Hide implementation detail `use_io_pipe`. """ if not self.isfull(): self.commitbasefile() self.commitFormatfile() self.commitexcludefile() self.commitpackagefile() self.commitflistFiles() self.__commit_archive(targethandler, publish_progress, supports_publish) self.commitverfile() def addToIncludeFlist (self, item) : """ Add an item to be backup into the snapshot. Usage : addToIncludeFlist(item) where - item is the item to be add (file, dir, or link) The `include flist` is of type `SBDict`, the according `props` for a single entry is '1' for included items. """ self.__includeFlist[item] = "1" def addToExcludeFlist (self, item) : """ Add an item to not be backup into the snapshot. Usage : addToExcludeFlist(item) where - item is the item to be add (file, dir, or link) The `exclude flist` is of type `SBDict`, the according `props` for a single entry is '0' for excluded items. """ self.__excludeFlist[item] = "0" def check_and_clean_flists(self): """Checks include and exclude flists for entries contained in both lists. Entries stored in both lists are removed from the exclude list (include overrides exclude). In theory it is impossible but what's in the case of manually written configuration files? @todo: Implement this method. """ pass # Setters def setFormat(self, cformat = None): """ Sets the backup compression format cformat : the format to set """ if cformat in AVAIL_SNP_FORMATS : self.logger.debug("Set the compression format to %s" % cformat) self.__format = cformat def setPath(self, path) : "Set the complete path of the snapshot. That path will be used to get the name of the snapshot" self.__snapshotpath = self._fop.normpath(str(path)) name = self._fop.get_basename(self.__snapshotpath) if not self.__isValidName(name) : raise NotValidSnapshotNameException(_("Name of Snapshot not valid : %s") % self.__name) else : self.__name = name def setBase(self, baseName) : """Sets `baseName` as the name of the base snapshot of this snapshot and clears the reference to base snapshot object. It is not possible to set the base for a full backup, this raises a `SBException`. The `baseName` is checked for validity. Note that the base of the snapshot is not committed to disk if it is set using this method. Call `commitbasefile` for this. """ if self.isfull(): self.__base = None self.__baseSnapshot = None raise SBException("Base cannot be set for full snapshot.") if not self.__isValidName(baseName) : raise SBException (_("Name of base not valid : %s") % self.__name) # set the name and clean the baseSnapshot self.__base = baseName self.__baseSnapshot = None def setVersion(self, ver = "1.5") : "Set the version of the snapshot" self.__version = ver def setExcludes(self, excludes) : "Set the content of excludes (the list of Regex excludes)" self.__excludes = excludes def setPackages(self, packages = "") : """ set the packages list for debian based distros @param packages: Must be the results of the 'dpkg - -get - selections' command . default = '' """ self.__packages = packages def setSplitedSize(self, size): """ @param size: The size in KiB to set """ if type(size) != int: raise TypeError("The size parameter must be an integer") self.__splitedSize = size def setFollowLinks(self, activate): """ @param activate: boolean to activate symlinks follow up """ if type(activate) != bool : raise TypeError("the activate parameter must be a boolean") self.__followlinks = activate # Private def __validateSnapshot(self, path, name): """ Validate the snapshot @param path : the snapshot path @param name : the snapshot name """ # validate the name if not self.__isValidName(self.__name) : raise NotValidSnapshotNameException(_("Invalid name of snapshot: %s") % self.__name) _verf = self._fop.joinpath(self.getPath(), "ver") if not self._fop.path_exists(_verf): raise NotValidSnapshotException(_("Unable to read mandatory file `ver`")) def __isValidName(self, name) : " Check if the snapshot name is valid " _res = False if re.match(self.__validname_re , name) is not None: if name.endswith(".ful") or name.endswith(".inc"): _res = True return _res def commitFormatfile(self): """ writes the format file """ formatInfos = self.getFormat() + "\n" formatInfos += str(self.getSplitedSize()) _formatf = self._fop.joinpath(self.getPath(), "format") self._fop.writetofile(_formatf, formatInfos) def commitverfile(self) : """Commit ver file on the disk. """ if not self.getVersion(): self.setVersion() _ver = self.getVersion() _verf = self._fop.joinpath(self.getPath(), "ver") self._fop.writetofile(_verf, _ver) self.logger.debug("Commit `ver` file `%s` with info `%s`" % (_verf, _ver)) def commitbasefile(self): """In case this snapshot is an incremental snapshot, base file is committed to the disk. If not, this method shouldn't be called. The absence of a base for an incremental backup raises a SBException. """ if self.isfull(): self.logger.debug("WARNING: Attempt of committing base file for "\ "full snapshot ' % s'." % self.getName()) else: if self.getBase(): _basef = self._fop.joinpath(self.getPath(), "base") self._fop.writetofile(_basef, self.getBase()) else: # base file was not found or base wasn't set. It MUST be full backup raise SBException(_("Base name must be set for incremental backup.")) def commitexcludefile(self): """ Commit exclude file on the disk (the list of Regex excludes). @raise SBException: if excludes hasn't been set """ _exf = self._fop.joinpath(self.getPath(), "excludes") self._fop.pickledump(self.__excludes, _exf) def commitflistFiles(self): """ Commit the include.list and exclude.list to the disk. @todo: simplify the written files! The *.tmp files are partly obsolete. """ if self._fop.path_exists(self.getIncludeFListFile()): raise SBException("includes.list should not exist at this stage") if self._fop.path_exists(self.getExcludeFListFile()): raise SBException("excludes.list should not exist at this stage") self._fop.writetofile(self.getIncludeFListFile(), "\n".join(self.__includeFlist.getEffectiveFileList())) self._fop.writetofile(self.getExcludeFListFile(), "\n".join(self.__excludeFlist.getEffectiveFileList())) # commit temporary lists #FIXME: unify creation and storage of tmp. files and names tmp_incl = self._fop.normpath(ConfigurationFileHandler().get_user_tempdir(), self._fop.get_basename(self.getIncludeFListFile())) tmp_excl = self._fop.normpath(ConfigurationFileHandler().get_user_tempdir(), self._fop.get_basename(self.getExcludeFListFile())) self._fop.writetofile(tmp_incl, "\n".join(self.__includeFlist.get_eff_filelist_not_nested())) self._fop.writetofile(tmp_excl, "\n".join(self.__excludeFlist.getEffectiveFileList())) def commitpackagefile(self): " Commit packages file on the disk" _packf = self._fop.joinpath(self.getPath(), "packages") if not self.getPackages() : self._fop.writetofile(_packf, "") else: self._fop.writetofile(_packf, self.getPackages()) def read_excludeflist_from_file(self): fe = self._fop.openfile_for_read(self.getExcludeFListFile()) _res = set(line.strip("\n") for line in fe) fe.close() return _res def __commit_archive(self, targethandler, publish_progress, supports_publish): " Make the backup on the disk " tar.mk_archive(self, targethandler, publish_progress, supports_publish) sbackup-0.11.6/src/sbackup/core/RestoreManager.py0000644000175000017500000002035112216122130020325 0ustar peerpeer# Simple Backup - handling of restoration processes # # Copyright (c)2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import tempfile import datetime from sbackup.core import SnapshotManager from sbackup.fs_backend import fam from sbackup.util import exceptions from sbackup.util import log from sbackup.ar_backend import tar class RestoreManager(object): """ """ def __init__(self, targethandler): """ """ self.logger = log.LogFactory.getLogger() self.__fam_target_hdl = targethandler self._fop = fam.get_file_operations_facade_instance() def restore(self, snapshot, _file): """ Restore one file or directory from the backup tdir with name file to its old location. All existing files must be moved to a "*.before_restore_$time" files. @param snapshot: @param file : """ self.restoreAs(snapshot, _file, None) def restoreAs(self, snapshot, _file, target, backupFlag = True, failOnNotFound = True) : """ Restore one file or directory from the backup tdir with name file to target (or to its old location if None if given to target). All existing files must be moved to a "*.before_restore_$time" files. @param snapshot: @param file : @param target: where to restore given file/dir (not the backup destination/snapshot dir) @param backupFlag: Set to false to make no backup when restoring (default = True) @param failOnNotFound: set to False if we don't want to fail if a file is not found (default is True) :todo: Re-factor and simplify! """ if snapshot is None: raise exceptions.SBException("Please provide a Snapshot") if _file is None: raise exceptions.SBException("Please provide a File/directory") _file = "%s%s" % (self._fop.pathsep, _file.lstrip(self._fop.pathsep)) self.logger.debug("Restore as\n\tsnapshot: `%s`\n\tfile (path in snapshot): `%s`\n\trestore target: `%s`"\ % (snapshot, _file, target)) if not snapshot.getSnapshotFileInfos().hasPath(_file) and not snapshot.getSnapshotFileInfos().hasFile(_file): if failOnNotFound: raise exceptions.SBException(_("File '%s' not found in the backup snapshot files list") % _file) else: self.logger.warning(_("File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, Skipped.")\ % {"filename": _file, "snapshotname" : snapshot.getName()}) return _snpname = self._fop.get_basename(snapshot.getName()) _arname = self._fop.get_basename(snapshot.getArchive()) _larpath = self.__fam_target_hdl.get_eff_fullpath(_snpname, _arname) self.logger.debug("eff. local path to archive: %s" % _larpath) suffix = None if backupFlag : now = datetime.datetime.now().isoformat("_").replace(":", ".") suffix = ".before_restore_" + now if target and self._fop.path_exists(target): self.logger.debug("Restore target is given and exists") if self._fop.is_dir(target) is True: self.logger.debug("Restore target is a directory (i.e. we extract into a directory)") #create a temp dir, extract inside then move the content _tmpdir = tempfile.mkdtemp(dir = target, prefix = 'sbackup-restore_') self.logger.debug("Restore tempdir: `%s`" % _tmpdir) tar.extract(snapshot.getArchive(), _larpath, _file, _tmpdir, bckupsuffix = suffix, splitsize = snapshot.getSplitedSize()) _file_in_target = self._fop.joinpath(target, self._fop.get_basename(_file)) _file_in_tmpdir = self._fop.joinpath(_tmpdir, _file) self.logger.debug("File in restore target: `%s`" % _file_in_target) self.logger.debug("File in restore tempdir: `%s`" % _file_in_tmpdir) if backupFlag: if self._fop.path_exists(_file_in_target): self._fop.force_move(_file_in_target, "%s%s" % (_file_in_target, suffix)) self._fop.force_move(_file_in_tmpdir, _file_in_target) self._fop.force_delete(_tmpdir) else: #the target is a file (i.e. the backuped file is restored under new name parent = self._fop.get_dirname(target) tar.extract(snapshot.getArchive(), _larpath, _file, parent, bckupsuffix = suffix, splitsize = snapshot.getSplitedSize()) else: # target is set to None or target not exists if target and not self._fop.path_exists(target) : #target != None but target doesn't exists self._fop.makedirs(target) tar.extract(snapshot.getArchive(), _larpath, _file, target, splitsize = snapshot.getSplitedSize()) else : # Target = None , extract at the place it belongs if self._fop.path_exists(_file) : # file exist: tar.extract(snapshot.getArchive(), _larpath, _file, target, bckupsuffix = suffix, splitsize = snapshot.getSplitedSize()) else : # file doesn't exist nothing to move, just extract tar.extract(snapshot.getArchive(), _larpath, _file, target, splitsize = snapshot.getSplitedSize()) def revert(self, snapshot, directory): """ Revert a directory to its snapshot date state. @param snapshot : The snapshot from which to revert @param dir : the dir to revert, use self._fop.pathsep for the whole snapshot """ self.revertAs(snapshot, directory, None) def __cleanBackupedFiles(self, directory , suffix): """ clean the backuped copies in the directory (dir) that ends with suffix @param dir: directory to clean up @param suffix: the suffix of backuped files """ pass def revertAs(self, snapshot, directory, targetdir): """ Revert a directory to its snapshot date state into a directory. We will restore the directory starting from the base snapshot to the selected one and clean the restore directory each time. @param snapshot : The snapshot from which to revert @param dir : the dir to revert, use self._fop.pathsep for the whole snapshot @param targetdir: The dir in which to restore files """ if not snapshot: raise exceptions.SBException("Please provide a Snapshot") if not directory: raise exceptions.SBException("Please provide a File/directory") snpman = SnapshotManager.SnapshotManager(self._fop.get_dirname(snapshot.getPath())) history = snpman.getSnpHistory(snapshot) history.reverse() _cnt = 0 for snp in history: self.logger.debug("Restoring '%(dirname)s' from snapshot '%(snapshotname)s'"\ % { "dirname" : directory, "snapshotname" : snp.getName() }) _bak = False if _cnt == 0: _bak = True _cnt += 1 self.restoreAs(snp, directory, targetdir, backupFlag = _bak, failOnNotFound = False) sbackup-0.11.6/src/sbackup/core/SnapshotManager.py0000644000175000017500000007614412216122130020514 0ustar peerpeer# Simple Backup - snapshot handling # # Copyright (c)2008-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`SnapshotManager` --- Snapshot handler class ==================================================================== .. module:: SnapshotManager :synopsis: Defines a snapshot handler class .. moduleauthor:: Jean-Peer Lorenz .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) """ from gettext import gettext as _ import traceback import datetime import time import types from sbackup.pkginfo import Infos from sbackup.fs_backend import fam from sbackup.ar_backend import tar from sbackup.ar_backend.tar import SnapshotFile from sbackup.ar_backend.tar import Dumpdir from sbackup.ar_backend.tar import SnapshotFileWrapper from sbackup.ar_backend.tar import ProcSnapshotFile from sbackup.ar_backend.tar import get_dumpdir_from_list import sbackup.util as Util from sbackup.util import constants from sbackup.core.snapshot import Snapshot from sbackup.util.log import LogFactory from sbackup.util.exceptions import SBException from sbackup.util.exceptions import NotValidSnapshotException from sbackup.util.exceptions import NotValidSnapshotNameException from sbackup.util.exceptions import RemoveSnapshotHasChildsError from sbackup.util.exceptions import NotSupportedError from sbackup.util.exceptions import FileAccessException _EXT_CORRUPT_SNP = ".corrupt" class SnapshotManager(object): """Class responsible for handling and managing of several snapshots. :todo: Remove instance variables 'status' and implement an observer\ pattern or progress function hooks! :note: Rebasing of snapshots is disabled due to severe performance issues. """ def __init__(self, destination): """Default constructor. Takes the path to the target backup directory as parameter. """ if not isinstance(destination, types.StringTypes): raise TypeError("Destination path of type string expected. Got %s instead"\ % type(destination)) self.logger = LogFactory.getLogger() self._fop = fam.get_file_operations_facade_instance() # This is the current directory used by this SnapshotManager self.__dest_path = destination # The list of the snapshots is stored the first time it's used, # so we don't have to re-get it later self.__snapshots = None # helper variables for displaying status messages self.statusMessage = None self.substatusMessage = None self.statusNumber = None def getStatus(self): """ :return: [statusNumber,statusMessage,substatusMessage] :todo: Remove/refactor this! """ return [self.statusNumber, self.statusMessage, self.substatusMessage] def get_snapshot_allformats(self, name): """Returns a certain snapshot, specified by its name, from the stored snapshots. If the snapshot could not be found, an exception is raised. :param name: the snapshot that is to be returned """ for snp in self.get_snapshots_allformats() : if snp.getName() == name : return snp raise SBException(_("Snapshot '%s' not found ") % name) def get_snapshots_allformats_by_timespan_ro(self, from_date, to_date, force_reload = False): """Read-only variant that returns a list with *all* found snapshots, according to the given parameters. All versions of snapshots were returned. No snapshot are being removed or renamed. """ snapshots = [] for snp in self.get_snapshots_allformats_ro(force_reload): if from_date <= snp.getName()[:10] <= to_date: snapshots.append(snp) snapshots.sort(key = Snapshot.getName, reverse = True) return snapshots def get_snapshots_allformats_by_date_ro(self, by_date, force_reload = False): snapshots = [] for snp in self.get_snapshots_allformats_ro(force_reload): if snp.getName().startswith(by_date): snapshots.append(snp) snapshots.sort(key = Snapshot.getName, reverse = True) return snapshots def get_snapshots_allformats_ro(self, force_reload = False): if self.__snapshots and not force_reload: pass else: self._read_snps_from_disk_allformats(read_only = True) snapshots = self.__snapshots snapshots.sort(key = Snapshot.getName, reverse = True) return snapshots def get_snapshots_allformats(self, fromDate = None, toDate = None, byDate = None, forceReload = False): """Returns a list with *all* found snapshots, according to the given parameters. All versions of snapshots were returned. The list is sorted from the latest snapshot to the earliest: - index 0 --- most recent snapshot - index -1 --- oldest snapshot. :param fromDate: eg. 2007-02-17 :param toDate: 2007-02-17 :param byDate: 2007-02-17 :param forceReload: True or false :return: list of snapshots :todo: Re-factor this method using the CQS pattern and by simplifying! (e.g. method `reload` + `get...` :todo: Separate into 'get_snapshots( force_reload=False )',\ 'get_snapshots_by_timespan' and 'get_snapshot_by_date'! :todo: Clarify whether to rename or to delete corrupt snapshots! """ snapshots = [] # list of found snapshots if fromDate and toDate: for snp in self.get_snapshots_allformats(): if fromDate <= snp.getName()[:10] <= toDate: snapshots.append(snp) elif byDate: for snp in self.get_snapshots_allformats(): if snp.getName().startswith(byDate): snapshots.append(snp) else: if self.__snapshots and not forceReload: pass else: self._read_snps_from_disk_allformats(read_only = False) snapshots = self.__snapshots return snapshots def _read_snps_from_disk_allformats(self, read_only = True): """Reads snapshots from the defined/set target directory and stores them in according class attribute. Unreadable snapshots are being renamed. """ self.__snapshots = [] listing = self._fop.listdir_fullpath(self.__dest_path) for _snppath in listing : _snpname = self._fop.get_basename(_snppath) try: self._fop.test_dir_access(_snppath) except FileAccessException, error: self.logger.info("Unable to access `%s'. Skipped." % _snppath) continue if _snpname.endswith(_EXT_CORRUPT_SNP): self.logger.info("Corrupt snapshot `%s` found. Skipped." % _snpname) continue try: self.__snapshots.append(Snapshot(_snppath)) except NotValidSnapshotException, error : if isinstance(error, NotValidSnapshotNameException) : self.logger.info(_("Invalid snapshot `%(name)s` found: Name of snapshot not valid.")\ % { 'name': str(_snpname) }) else: # rename only if name was valid but snapshot was invalid self.logger.info(_("Invalid snapshot `%(name)s` found: %(error_cause)s.")\ % { 'name': str(_snpname), 'error_cause' :error }) if not read_only: self.logger.info("Invalid snapshot `%s` is being renamed." % _snpname) if _snppath.endswith(".inc") or _snppath.endswith(".ful"): _ren_snppath = "%s%s" % (_snppath[:-4], _EXT_CORRUPT_SNP) else: _ren_snppath = "%s%s" % (_snppath, _EXT_CORRUPT_SNP) self._fop.rename(_snppath, _ren_snppath) self.__snapshots.sort(key = Snapshot.getName, reverse = True) def get_snapshots(self, fromDate = None, toDate = None, byDate = None, forceReload = False): """Returns a list with found snapshots that matches the current snapshot format, according to the given parameters. The list is sorted from the latest snapshot to the earliest: - index 0 --- most recent snapshot - index -1 --- oldest snapshot. :param fromDate: eg. 2007-02-17 :param toDate: 2007-02-17 :param byDate: 2007-02-17 :param forceReload: True or false :return: list of snapshots """ snps = [] snps_all = self.get_snapshots_allformats(fromDate, toDate, byDate, forceReload) for csnp in snps_all: if csnp.getVersion() == Infos.SNPCURVERSION: snps.append(csnp) self.__snapshots = snps # debugging output if self.logger.isEnabledFor(5): self.logger.debug("[Snapshots Listing - current format]") for csnp in snps: self.logger.debug(str(csnp)) ### return snps def _copy_empty_snar(self, snp_source, copydest): """Creates an empty SnapshotInfo-file with the name 'copydest' from the SnapshotInfo-file contained in given source snapshot. Empty means, that no content but the header is copied. @todo: Review the self-creation of header in the case no was found. Is this necessary at all? """ self.logger.debug("Create temporary SNARFILE to prepare merging") if not isinstance(snp_source, Snapshot): raise TypeError("Given parameter 'snp_source' must be of Snapshot "\ "type! Got %s instead." % type(snp_source)) if not isinstance(copydest, str): raise TypeError("Given parameter 'copydest' must be of string "\ "type! Got %s instead." % type(copydest)) # create a temporary snar file for merge result _tmpfinal = copydest # get snar header from current snapshots #XXX: Why not use getHeader here??? _snarf = open(snp_source.getSnarFile()) _header = _snarf.readline() if len(_header) > 0: # the SNAR file isn't empty sepcnt = 0 while sepcnt < 2: readchar = _snarf.read(1) if len(readchar) != 1: _snarf.close() raise SBException(_("The snarfile header is incomplete !")) if readchar == '\0': sepcnt += 1 _header += readchar _snarf.close() self.logger.debug("Current SNAR Header (NULL replaced by newline):"\ "\n%s" % (_header.replace("\x00", "\n"))) else: # the SNAR file is empty self.logger.debug("SNAR file empty, create the header manually") _snarf.close() _date = snp_source.getDate() _datet = datetime.datetime(_date['year'], _date['month'], _date['day'], _date['hour'], _date['minute'], _date['second']) # create temporary SNAR file and copy the retrieved header into it finalsnar = ProcSnapshotFile(SnapshotFile(_tmpfinal, True)) if _header: snpif = open(_tmpfinal, 'w') snpif.write(_header) snpif.close() else : finalsnar.setHeader(_datet) _header = finalsnar.getHeader() return finalsnar def _merge_snarfiles(self, target_snpfinfo, target_excludes, src_snpfinfo, res_snpfinfo): """Covers all actions for merging 2 given snar files into a single one. This is quite TAR specific - think it over where to place it! :Parameters: - `target_snpfinfo`: the resulting snapshot - `target_excludes`: set of the excludes file list of resulting snapshot - `src_snpfinfo`: the snapshot that should be merged into the target - `res_snpfinfo`: the name of the resulting SNAR file The method returns a list containing files that needs to be extracted from the archive that was merged in. :todo: Do we need to consider the order of the snar files? :todo: Needs more refactoring! (CQS) """ self.logger.info("Merging SNARFILEs to make the transfer") if not isinstance(target_snpfinfo, SnapshotFileWrapper): raise TypeError("Given parameter 'target_snpfinfo' must be of "\ "SnapshotFileWrapper "\ "type! Got %s instead." % type(target_snpfinfo)) if not isinstance(target_excludes, set): raise TypeError("Given parameter 'target_excludes' must be of "\ "type Set! "\ "Got %s instead." % type(target_excludes)) if not isinstance(src_snpfinfo, SnapshotFileWrapper): raise TypeError("Given parameter 'src_snpfinfo' must be of "\ "SnapshotFileWrapper "\ "type! Got %s instead." % type(src_snpfinfo)) if not isinstance(res_snpfinfo, SnapshotFileWrapper): raise TypeError("Given parameter 'res_snpfinfo' must be of "\ "SnapshotFileWrapper "\ "type! Got %s instead." % type(res_snpfinfo)) # print "Parent (base) snar file:\n%s" % src_snpfinfo # list for storage of files that need to be extracted from merge source files_to_extract = [] for target_record in target_snpfinfo.iterRecords(): _tmp_dumpdirs = [] #TODO: A similar method to getContent would be nice! _curdir = target_record[SnapshotFile.REC_DIRNAME] # get the content (dumpdir entries) for current directory _curcontent = target_snpfinfo.getContent(_curdir) for _dumpdir in _curcontent: # print "\n now processing dumpdir: %s" % _dumpdir _ctrl = _dumpdir.getControl() _filen = _dumpdir.getFilename() _ddir_final = None _was_excluded = False if _ctrl == Dumpdir.UNCHANGED: # Item was explicitly excluded and is therefore not included in child # _filenfull = os.path.join(_curdir, _filen) # print "Full path: %s" % (_filenfull) if self._fop.joinpath(_curdir, _filen) in target_excludes: self.logger.debug("Path '%s' was excluded. Not merged." % _filen) _was_excluded = True else: # Item has not changed and is therefore not included in child (i.e. target) snapshot. # look for the item in the parent (i.e. base/source) snapshot _basedumpd = get_dumpdir_from_list(\ src_snpfinfo.getContent(_curdir), _filen) _base_ctrl = _basedumpd.getControl() if _base_ctrl == Dumpdir.UNCHANGED: _ddir_final = _dumpdir elif _base_ctrl == Dumpdir.INCLUDED: _ddir_final = _basedumpd files_to_extract.append(self._fop.joinpath(_curdir, _filen)) else: raise SBException("Found unexpected control code "\ "('%s') in snapshot file '%s'."\ % (_ctrl, target_snpfinfo.get_snapfile_path())) elif _ctrl == Dumpdir.DIRECTORY: _ddir_final = _dumpdir elif _ctrl == Dumpdir.INCLUDED: _ddir_final = _dumpdir else: raise SBException("Found unexpected control code "\ "('%s') in snapshot file '%s'."\ % (_ctrl, target_snpfinfo.get_snpfile_Path())) if not _was_excluded: _tmp_dumpdirs.append(_ddir_final) # end of loop over dumpdirs _final_record = target_record[:SnapshotFile.REC_CONTENT] _final_record.append(_tmp_dumpdirs) # write to the SnarFile res_snpfinfo.addRecord(_final_record) return files_to_extract def __makeSnpFull(self, snapshot): """Make an inc snapshot to a full one. :param snapshot: the snapshot to be converted :type snapshot: `Snapshot` :return: the new full snapshot :rtype: Snapshot :todo: Is it really neccessary to create a new snapshot or is it enough to call `setPath`? -> It is necessary since paths to e.g. snar file have changed. :postcondition: The snapshot has the same childs as before. """ if snapshot.isfull(): self.logger.info(_("Snapshot '%s' is already Full, nothing to do (not changing it to full).") % snapshot.getName()) res_snp = snapshot else: childs = self._retrieve_childsnps(snapshot) if childs: fulname = snapshot.getName()[:-3] + 'ful' for _snp in childs: _snp.setBase(fulname) _snp.commitbasefile() path = snapshot.getPath() self._fop.rename(self._fop.joinpath(path, 'base'), self._fop.joinpath(path, 'base.old')) self._fop.rename(path, path[:-3] + 'ful') res_snp = Snapshot(path[:-3] + 'ful') # post-condition check # all childs are preserved postcond_child_names = self._retrieve_childsnps_names(res_snp) if len(childs) != len(postcond_child_names): raise AssertionError("Renaming of base of child snapshots was "\ "not successful.") for _chl in childs: if _chl.getName() not in postcond_child_names: raise AssertionError("Renaming of base of child snapshots "\ "was not successful.") return res_snp def _retrieve_childsnps(self, snapshot): """Retrieves all snapshots that rely on the given parent `snapshot` and returns a list containing all child snapshots. """ listing = self.get_snapshots(forceReload = False) child_snps = [] for snp in listing : if snp.getBase() == snapshot.getName() : child_snps.append(snp) return child_snps def _retrieve_childsnps_names(self, snapshot): """Retrieves names of all snapshots that rely on the given parent `snapshot` and returns a list containing all child snapshot names. """ listing = self._retrieve_childsnps(snapshot) child_snps = [] for snp in listing: child_snps.append(snp.getName()) return child_snps def _remove_standalone_snapshot(self, snapshot): if not self.is_standalone_snapshot(snapshot): raise RemoveSnapshotHasChildsError("The given snapshot '%s' is not stand-alone." % snapshot) self.logger.info("Removing '%s'" % snapshot.getName()) self._fop.delete(snapshot.getPath()) self.get_snapshots(forceReload = True) def is_standalone_snapshot(self, snapshot): _res = False _childs = self._retrieve_childsnps(snapshot = snapshot) if len(_childs) == 0: _res = True return _res def removeSnapshot(self, snapshot): """Public method that removes a given snapshot safely. The removal of a snapshot is more complicated than just to remove the snapshot directory since a snapshots could be the base of other snapshots. :param snapshot: the snapshot to be removed :type snapshot: `Snapshot` :note; Currently removal of freestanding snapshots is supported only. """ self._remove_standalone_snapshot(snapshot) def remove_snapshot_forced(self, snapshot): """Removes snapshot directory forcefully. """ self.logger.debug("Removing '%s'" % snapshot.getName()) self._fop.delete(snapshot.getPath()) self.get_snapshots(forceReload = True) def compareSnapshots(self, snap1, snap2): """Compare 2 snapshots and return and SBdict with the differences between their files. The format is {"file" : ("propsnap1|propsnap2",sonsbdict)}. """ raise NotSupportedError def getSnpHistory(self, snapshot): """ gets the list of preceding snapshots till the last full one :param snapshot : the given snapshot :return: a list of Snapshots starting from the most recent one to the full one :note: you'll need to reverse this list to make a revert """ if not snapshot : raise SBException("Please provide a snapshot to process") result = [] # add the first snapshot result.append(snapshot) current = snapshot while (current.getBaseSnapshot()) : current = current.getBaseSnapshot() result.append(current) # Just for DEBUG if self.logger.isEnabledFor(10) : # get the history history = "\n[%s history]" % snapshot.getName() for snp in result : history += "\n- %s" % snp.getName() self.logger.debug(history) return result def purge(self, purge, no_purge_snp): """Public method that processes purging of archive directory. :param mode: for the moment, only "log" and "simple" are supported :param no_purge: name of snapshot not being purged :todo: We should try to remove the snapshots from fresh to old to avoid multiple re-base operations! """ self.get_snapshots(forceReload = True) if purge == "log": self._do_log_purge(no_purge_snp) else: self._do_cutoff_purge(purge, no_purge_snp) self.get_snapshots(forceReload = True) def _do_log_purge(self, no_purge_snp = ""): """Logarithmic purge Keep progressivelly less backups into the past: Keep all backups from yesterday Keep one backup per day from last week. Keep one backup per week from last month. Keep one backup per month from last year. Keep one backup per quarter from 2nd last year. Keep one backup per year further in past. """ self.logger.info("Logarithmic purging") # compute years since begin of epoch: we need to go back this far _years_epoch = int(time.time() / (constants.SECONDS_IN_DAY * constants.DAYS_IN_YEAR)) purge_plan = [ { "title" : "Last week", "nperiod" : 7, "interval" : 1 }, { "title" : "Last month", "nperiod" : 3, "interval" : constants.DAYS_IN_WEEK }, { "title" : "Last year", "nperiod" : 11, "interval" : constants.DAYS_IN_MONTH }, { "title" : "2nd last year", "nperiod" : 4, "interval" : constants.DAYS_IN_QUARTER }, { "title" : "remaining years", "nperiod" : _years_epoch, "interval" : constants.DAYS_IN_YEAR } ] _max_age = 2 # start value for pent in purge_plan: self.logger.info("Logarithm Purging [%s]" % pent["title"]) _max_age = self.__purge_period(start = (_max_age - 1), nperiod = pent["nperiod"], interval = pent["interval"], no_purge_snp = no_purge_snp) def __purge_period(self, start, nperiod, interval, no_purge_snp): """period is given as `start` age and interval length in days. The period is repeated `nperiod` times. Within these timespans the defined number of backups must remain. """ _number_to_keep = 1 for j in range(0, nperiod): _min_age = start + (j * interval) _max_age = _min_age + (interval + 1) self._do_purge_in_timespan(_min_age, _max_age, _number_to_keep, no_purge_snp) return _max_age def _do_purge_in_timespan(self, min_age, max_age, number_to_keep, no_purge_snp = ""): """Simple purging is processed: all snapshots in timespan (i.e. younger than `max_age` and older than `min_age` are removed. Only freestanding snapshots are removed. Given snapshot `no_purge_snp` is never removed. The removal is terminated if `number_to_keep` snapshots remain. """ _min_age = int(round(min_age)) _max_age = int(round(max_age)) assert _max_age > _min_age, "Given parameter max. age should be greater than min. age" if _min_age > 0: self.logger.debug("Purge in timespan\nRemove freestanding snapshots younger "\ "than %(max_age)s and older than %(min_age)s days."\ % {"max_age" : _max_age, "min_age" : _min_age}) while True: _was_removed = False snapshots = self.get_snapshots() # sort order: idx 0 = most recent snapshots = _get_snapshots_younger_than(snapshots, _max_age) snapshots = _get_snapshots_older_than(snapshots, _min_age) # debugging output if self.logger.isEnabledFor(5): self.logger.debug("Snapshots in timespan - re-sorted]") for csnp in snapshots: self.logger.debug(str(csnp)) ### _nsnps = len(snapshots) _maxidx = _nsnps - number_to_keep # biggest valid index if _nsnps <= number_to_keep: break for _idx in range(_maxidx): snp = snapshots[_idx] if snp.getName() == no_purge_snp: self.logger.debug("`%s` skipped.") continue self.logger.debug("Checking '%s' for childs." % (snp)) childs = self._retrieve_childsnps(snapshot = snp) if len(childs) == 0: self.logger.debug("Snapshot '%s' has no childs "\ "-> is being removed." % (snp)) self.remove_snapshot_forced(snapshot = snp) # it's freestanding _was_removed = True break if _was_removed is False: break def _do_cutoff_purge(self, purge, no_purge_snp = ""): """Simple cut-off purging is processed: all snapshots older than a certain value are removed. During removal of snapshots the snapshot state (full, inc) is considered. """ try: purge = int(purge) except ValueError: purge = 0 if purge > 0: self.logger.info("Simple purge - remove freestanding snapshots older "\ "than %s days." % purge) while True: _was_removed = False snapshots = _get_snapshots_older_than(self.get_snapshots(), purge) for snp in snapshots: if snp.getName() == no_purge_snp: self.logger.debug("`%s` skipped.") continue self.logger.debug("Checking '%s' for childs." % (snp)) childs = self._retrieve_childsnps(snapshot = snp) if len(childs) == 0: self.logger.debug("Snapshot '%s' has no childs "\ "-> is being removed." % (snp)) self.remove_snapshot_forced(snapshot = snp) _was_removed = True break if _was_removed is not True: break def _get_snapshots_younger_than(snapshots, age): _res = [] for snp in snapshots: date = snp.getDate() snp_age = (datetime.date.today() - datetime.date(date['year'], date['month'], date['day'])).days if snp_age < age: _res.append(snp) return _res def _get_snapshots_older_than(snapshots, age): _res = [] for snp in snapshots: date = snp.getDate() snp_age = (datetime.date.today() - datetime.date(date['year'], date['month'], date['day'])).days if snp_age > age: _res.append(snp) return _res def debug_print_snarfile(filename): """Print function only for debugging. :param filename: full path of snar to be printed out :type filename: string """ _fop = fam.get_file_operations_facade_instance() if _fop.path_exists(filename): _snar = SnapshotFile(filename, writeFlag = False) print "\nSUMMARY of SNAR '%s':" % filename for _record in _snar.parseFormat2(): print "%s" % _record else: print "\nSUMMARY of SNAR '%s': file not found!" % filename def debug_snarfile_to_list(filename): """Helper function for debugging: the snar-file given by parameter 'filename' is converted into a list and this list is returned by the function. :param filename: full path of snar to be converted :type filename: string :return: list containing snar file entries """ _res = [] _fop = fam.get_file_operations_facade_instance() if _fop.path_exists(filename): _snar = SnapshotFile(filename, writeFlag = False) for _record in _snar.parseFormat2(): _res.append(_record) return _res sbackup-0.11.6/src/sbackup/pkginfo.py0000644000175000017500000000572212216122130016121 0ustar peerpeer# This Python file uses the following encoding: utf-8 # # Simple Backup - package info # # Copyright (c)2010,2013: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import os import socket from gettext import gettext as _ from sbackup import util class Infos(object): """Collects general informations about SBackup. `name` The application's full name `version` Full current version `description` some description @todo: Remove the smtpfrom info from here. """ NAME = "Simple Backup Suite" VERSION = util.get_version_number() DESCRIPTION = _("This is a user friendly backup solution for common desktop needs. If you want to help by submitting bugs, by translating or anything else please visit our website.") WEBSITE = "https://launchpad.net/sbackup/" COPYRIGHT = "2005-2013 The Simple Backup authors" AUTHORS = [_("Maintainers:"), "Jean-Peer Lorenz ", "Oumar Aziz Ouattara ", "", _("Former maintainers:"), "Aigars Mahinovs", "Jonh Wendell", "", _("Contributors:"), "Martin Schaaf", "Florian Achleitner", "Andreas Sliwka", "Rogach (platon7pronko)", "Felix Griewald (tiiunder)", "Marc Deslauriers", "Thibault Godouet", "Anton Feenstra", "Derek Ditch", "Bernd Wurst", "Simon Déziel", "drakosha", "bytebybyte", "Marcel Stimberg", "Oliver Gerlich" ] TRANSLATORS = "\n".join([_("translator-credits"), "", "Japanese translation: Thanks to Hajime Mizuno" ]) #TODO: remove snapshot version from here! SNPCURVERSION = "1.5" #TODO: remove hostname and mailsuffix from here! hostname = socket.gethostname() if "." in hostname: mailsuffix = hostname else: mailsuffix = hostname + ".ext" SMTPFROM = _("SBackup Daemon <%(login)s@%(hostname)s>") % { 'login' : os.getenv("USERNAME"), 'hostname': mailsuffix } sbackup-0.11.6/src/sbackup/resources.in0000644000175000017500000000021012216122130016437 0ustar peerpeer@prefix@/share/locale @prefix@/share/pixmaps @prefix@/share/applications @prefix@/share/sbackup @prefix@/bin @prefix@/share/doc/sbackup sbackup-0.11.6/src/sbackup/legacy_restore.py0000755000175000017500000004653012216122130017500 0ustar peerpeer# # sbackup - legacy support for restore operation # # Copyright (c)2013: Jean-Peer Lorenz # Copyright (c)2005-2008: Aigars Mahinovs # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import shutil import datetime import tempfile import filecmp import sys import os.path import re import threading import time import traceback import sbackup.util as Util # Attempt to load GTK bindings try: import pygtk pygtk.require("2.0") import gtk import gtk.glade except ImportError: print "Failed to load Python GTK/Gnome bindings. Please check your Gnome installation." sys.exit(1) try: import gnomevfs except ImportError: import gnome.vfs as gnomevfs from sbackup.ui import misc sys.excepthook = misc.except_hook_threaded _LEGACY_RESTOREGUI_GLADE = Util.get_resource_file('sbackup-legacy-restore.glade') class SRestore: def __init__(self): pass def restore( self, backup, spath, dpath = None ): """ Restore one file or directory from the backup tdir with name spath to dpath (or to its old location). All existing files must be moved to a "*.before_restore_$time" files. """ if not dpath: dpath = spath # Gather spath and dpath information if spath[0] == "/": spath = spath[1:] (sparent, sname) = os.path.split( spath ) if not sname: spath = sparent (sparent, sname) = os.path.split( sparent ) dpath = os.path.normpath( dpath ) (dparent, dname) = os.path.split( dpath ) if not dname: dpath = dparent (dparent, dname) = os.path.split( dpath ) now = datetime.datetime.now().isoformat("_").replace( ":", "." ) ver = str(gnomevfs.read_entire_file( backup+"/ver" )) try: if ver[:3] == "1.4": self.childlist = [x[1:] for x in gnomevfs.read_entire_file( backup+"/flist" ).split( "\000" ) if x == "/"+spath or x[1:len(spath)+2]==spath+"/"] else: print "Only snapshot version 1.4 is supported" return False except: print "E: Error opening backup snapshot metadata" return False if len(self.childlist) == 0: print "E: File not found in the backup snapshot" return False if os.path.exists(dpath): if os.path.isdir(dpath): tdir = tempfile.mkdtemp( dir=dpath ) self.extract( backup, spath, tdir ) for _file in self.childlist: if len(self.childlist)==1: bname = sname src = os.path.join( tdir, spath ) else: bname = _file[len(spath)+1:] src = os.path.join( tdir, spath, bname ) dst = os.path.join( dpath, bname ) if os.path.isdir(src): if not os.path.exists(dst): os.makedirs(dst) srcstat = os.stat( src ) os.chown( dst, srcstat.st_uid, srcstat.st_gid ) os.chmod( dst, srcstat.st_mode ) elif os.path.isfile(src) or os.path.islink(src): if os.path.exists(dst) and not filecmp.cmp(src, dst): shutil.move( dst, dst+".before_restore_"+now ) if not os.path.exists(dst): shutil.move( src, dst ) else: print "W: Path '%s' is neither directory nor file! Skipped." % src shutil.rmtree( tdir ) else: tdir = tempfile.mkdtemp( dir=dparent ) self.extract( backup, spath, tdir ) shutil.move( dpath, dpath+".before_restore_"+now ) shutil.move( os.path.join(tdir,spath), dpath ) shutil.rmtree( tdir ) else: tdir = tempfile.mkdtemp( dir=dparent ) self.extract( backup, spath, tdir ) shutil.move( os.path.join(tdir,spath), dpath ) shutil.rmtree( tdir ) return True def islocal( self, uri ): local = True try: if not gnomevfs.URI( uri ).is_local: local = False except: pass return local def extract( self, backup, spath, tdir ): tarline = "tar -xzp --occurrence=1 --ignore-failed-read -C '"+tdir+"' " if self.islocal( backup ): tarline += " -f '"+backup+"/files.tgz' '"+spath+"' >/dev/null 2>&1" os.system( tarline ) else: tarline += "'"+spath+"' 2>/dev/null" tsrc = gnomevfs.open( backup+"/files.tgz", 1) tdst = os.popen( tarline, "w" ) try: shutil.copyfileobj( tsrc, tdst, 100*1024 ) except gnomevfs.EOFError: pass tdst.close() tsrc.close() class SRestoreGTK: """ Main GUI application class. """ default_target = "/var/backup" target = default_target versions = [] def __init__(self): """ Initializes the application. """ # Setup glade and signals gtk.glade.textdomain("sbackup") self.signals = {"gtk_main_quit": gtk.main_quit, "on_customsrc_toggled": self.enable_custom, "on_treeview1_row_expanded": self.on_expand_row, "on_backup_changed": self.on_backup_changed, "on_apply_clicked": self.on_custom_apply, "on_move_cursor":self.on_selection_change, "on_restore":self.restore, "on_restore_as":self.restore_as, "on_customFolderButton_clicked": self.on_customFolderButton_clicked } self.widgets = gtk.glade.XML(_LEGACY_RESTOREGUI_GLADE) self.widgets.signal_autoconnect(self.signals) # Get handle to window self.window = self.widgets.get_widget("restore") self.widgets.get_widget("labelDefaultSource").set_text(self.default_target) # Load the backup tree from the default location self.init_tree() self.sel = self.flist_widget.get_selection() self.sel.set_mode( gtk.SELECTION_SINGLE ) self.load_tree(self.default_target) gtk.gdk.threads_init() # Start the main loop gtk.main() def init_tree(self): """ Initalizes the tree structure """ self.flist_widget = self.widgets.get_widget("treeview1") self.treestore = gtk.TreeStore( str ) self.flist_widget.set_model( self.treestore ) acolumn = gtk.TreeViewColumn( "Path", gtk.CellRendererText(), text=0 ) self.flist_widget.append_column( acolumn ) blist_widget = self.widgets.get_widget( "combobox1" ) self.blist = gtk.ListStore(str) blist_widget.set_model( self.blist ) cell = gtk.CellRendererText() blist_widget.pack_start( cell, True ) blist_widget.add_attribute( cell, "text", 0) def load_tree(self, target): """ Loads the tree information from the target backup directory """ self.treestore.clear() # Checking if the target directory is local or remote local = True try: if gnomevfs.URI( target ).is_local: target = gnomevfs.get_local_path_from_uri( target ) else: local = False except: pass self.local = local self.target = target # Checking if it is a readable directory if local: if not (os.path.exists( target ) and os.path.isdir( target ) and os.access( target, os.R_OK | os.X_OK ) ): self.treestore.append( None, ["Error: backups directory does not exist!"]) self.target = False else: if not (gnomevfs.exists( target ) and gnomevfs.get_file_info(target).type == 2): self.treestore.append( None, ["Error: backups directory does not exist!"]) self.target = False # Get list of backup directories r = re.compile(r"^(\d{4})-(\d{2})-(\d{2})_(\d{2})[\:\.](\d{2})[\:\.](\d{2})\.\d+\..*?\.(.+)$") listing = [] if local and self.target: listing = os.listdir( target ) listing = filter( r.search, listing ) elif self.target: try: d = gnomevfs.open_directory( target ) listing = [] for f in d: if f.type == 2 and f.name != "." and f.name != ".." and r.search( f.name ): listing.append( f.name ) except: pass # Check if these directories are complete and remove from the list those that are not for adir in listing[:]: if not gnomevfs.exists(self.target+"/"+adir+"/ver") : listing.remove( adir ) continue else : if str(gnomevfs.read_entire_file( self.target+"/"+adir+"/ver"))[:3] != "1.4": listing.remove( adir ) continue listing.sort() listing.reverse() self.vtree = {} if listing == []: self.treestore.append( None, ["Error: no backups found in the target directory"]) self.target = False else: for base in listing: if str(gnomevfs.read_entire_file(target+"/"+base+"/ver"))[:3] == "1.4": self.vtree[base] = str(gnomevfs.read_entire_file(target+"/"+base+"/flist")).split("\000") else: self.vtree[base] = str(gnomevfs.read_entire_file(target+"/"+base+"/flist")).split("\n") self.blist.clear() for base in listing: self.blist.append( [base] ) self.good = False self.on_selection_change() if self.target: self.treestore.append( None, ["Select any of the available backups to see list of files that can be restored."]) def on_customFolderButton_clicked(self, *args): dialog = gtk.FileChooserDialog("Choose a source folder", None, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) dialog.set_local_only(False) if dialog.run() == gtk.RESPONSE_OK: self.widgets.get_widget("entry1").set_text(dialog.get_uri()) dialog.destroy() def enable_custom(self, *args): """ Enables/Disables input box for the custom backup dir Reloads default dir on disabling """ if self.widgets.get_widget("radiobutton2").get_active(): self.widgets.get_widget("entry1").set_sensitive(True) self.widgets.get_widget("customFolderButton").set_sensitive(True) self.widgets.get_widget("button7").set_sensitive(True) self.widgets.get_widget("labelDefaultSource").set_sensitive(False) else: self.widgets.get_widget("entry1").set_sensitive(False) self.widgets.get_widget("customFolderButton").set_sensitive(False) self.widgets.get_widget("button7").set_sensitive(False) self.widgets.get_widget("labelDefaultSource").set_sensitive(True) self.load_tree(self.default_target) def on_backup_changed( self, combox ): """ Reset the file tree view. """ self.treestore.clear() self.treestore.append( None, ["dummy"]) self.show_dir( "", None ) def on_expand_row( self, tv, aiter, path, user_data=None): """ When a row in the file tree view is expanded, we populate it with children (unless they are there already). """ if self.treestore.iter_nth_child( aiter, 1 ): return self.show_dir( self.path_to_dir(path), aiter ) def path_to_dir( self, path ): """ Recievs path in the treestore (as tuple) and returns a directory path as string. """ g = list(path) p = "" while g != []: i = self.treestore.get_iter( tuple(g) ) p = "/" + self.treestore.get_value( i, 0 ) + p g = g[:-1] return p def show_dir(self, path, rootiter): """ Worker function - adds all files/directories from the filez list to the treestore at the rootiter. """ dummy = self.treestore.iter_children(rootiter) self.good = True base = self.get_active_text(self.widgets.get_widget("combobox1")) list2 = [] list3 = [] escapedFullPath = re.escape(path)+"/([^/]+/?)" for item in self.vtree[base]: m = re.match( escapedFullPath, item ) if m and not list2.count(m.group(1)) and not list3.count(m.group(1)[:-1]): if m.group(1)[-1] == "/": if list2.count(m.group(1)[:-1]): list2.remove(m.group(1)[:-1]) list3.append(m.group(1)[:-1]) else: list2.append( m.group(1) ) for d in list3: aiter = self.treestore.append( rootiter, [d] ) self.treestore.append( aiter, ["Loading ..."] ) for f in list2: self.treestore.append( rootiter, [f] ) self.treestore.remove( dummy ) def get_active_text(self, combobox): model = combobox.get_model() active = combobox.get_active() if active < 0: return None return model[active][0] def on_custom_apply(self, *args): """ Reload all backup info from a custom location """ self.load_tree(self.widgets.get_widget("entry1").get_text()) def on_selection_change(self, *args): """ Enable/disable restore buttons as selection changes """ (model, aiter) = self.sel.get_selected() if aiter and self.good: self.widgets.get_widget("button2").set_sensitive(True) self.widgets.get_widget("button3").set_sensitive(True) else: self.widgets.get_widget("button2").set_sensitive(False) self.widgets.get_widget("button3").set_sensitive(False) def _restore_init( self, *args): """ Internal function to prepare for restorin a file """ (store, aiter) = self.widgets.get_widget("treeview1").get_selection().get_selected() self.src = self.path_to_dir( store.get_path( aiter ) ) return aiter def _do_restore( self, src, dst): """ Internal function to ask for confirmation and call the real restore library func""" dialog = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_QUESTION, buttons=gtk.BUTTONS_YES_NO, message_format="Do you really want to restore backuped copy of '%s' to '%s' ?" % (src, dst)) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: while gtk.events_pending(): gtk.main_iteration(False) dialog = self.widgets.get_widget("restore_progress_dialog") dialog.show() progressBar = self.widgets.get_widget("progressbar") progressThread = ProgressThread(dialog, progressBar) progressThread.setDaemon(True) progressThread.start() tdir = self.target+"/"+self.get_active_text(self.widgets.get_widget("combobox1")) self.restoreThread = RestoreThread(tdir, src, dst, progressThread) self.restoreThread.setDaemon(True) self.restoreThread.start() def restore( self, *args): """ Restore selected path to its original location""" self._restore_init() self._do_restore( self.src, self.src ) def restore_as( self, *args): """ Restore selected path to a specific location""" aiter = self._restore_init() if self.treestore.iter_children( aiter ): # is a directory dialog = gtk.FileChooserDialog(title="Select restore location", action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN,gtk.RESPONSE_OK)) dialog.set_filename( self.src ) result = dialog.run() filename = dialog.get_filename() dialog.destroy() if result == gtk.RESPONSE_OK: self._do_restore( self.src, filename ) else: dialog = gtk.FileChooserDialog(title="Select restore location", action=gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN,gtk.RESPONSE_OK)) dialog.set_filename( self.src ) dialog.set_current_name( self.src ) result = dialog.run() filename = dialog.get_filename() dialog.destroy() if result == gtk.RESPONSE_OK: self._do_restore( self.src, filename ) class RestoreThread(threading.Thread): def __init__(self, tdir, src, dst, progressThread): threading.Thread.__init__(self) self.tdir = tdir self.src = src self.dst = dst self.alive = True self.progressThread = progressThread def run(self): try: r = SRestore() r.restore( self.tdir, self.src, self.dst ) del r except: _exc = traceback.format_exc() misc.show_errdialog_threaded(message_str = "An uncaught error "\ "occurred. Close this message window and restart the "\ "application.\n\nPlease report this error on "\ "https://bugs.launchpad.net/sbackup.", parent = None, headline_str = "Sorry, this should not have happened", secmsg_str = _exc) self.alive = False self.progressThread.cancel = True class ProgressThread(threading.Thread): def __init__(self, dialog, progressBar): threading.Thread.__init__(self) self.dialog = dialog self.progressBar = progressBar self.cancel = False def run(self): while not self.cancel: self.progressBar.pulse() time.sleep(0.5) self.dialog.destroy() sbackup-0.11.6/src/sbackup/dbus_service.py0000644000175000017500000003362712216122130017146 0ustar peerpeer# Simple Backup - DBus System Service # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # This code is based on examples published by # Red Hat Inc. # Collabora Ltd. # """ :mod:`sbackup.dbus_service` -- DBus System Service ==================================================== .. module:: dbus_service :synopsis: Provides DBus System Service. .. moduleauthor:: Jean-Peer Lorenz """ import os import uuid import optparse import gobject import dbus.service import dbus.mainloop.glib from sbackup.pkginfo import Infos from sbackup.util import log from sbackup.util import constants from sbackup.util import exceptions from sbackup.util.system import drop_privileges from sbackup.util.system import pid_exists #TODO: Further split of object's responsibility: sender object/receiver #TODO: Add module dbus_constants? __START = "start" __STOP = "stop" __RESTART = "restart" __valid_args = [__START, __STOP, __RESTART] class SBDbusException(dbus.DBusException): _dbus_error_name = constants.DBUS_EXCEPTION class SBackupdDBusObject(dbus.service.Object): def __init__(self, system_bus, object_path): dbus.service.Object.__init__(self, system_bus, object_path) self._system_bus = system_bus self.__backup_pid = constants.PID_UNKNOWN self.__retry_target_check = constants.RETRY_UNKNOWN self.__target = constants.TARGET_UNKNOWN self.__profilename = constants.PROFILE_UNKNOWN self.__space_required = constants.SPACE_REQUIRED_UNKNOWN @dbus.service.signal(constants.DBUS_INTERFACE) def progress_signal(self, checkpoint): pass @dbus.service.signal(constants.DBUS_INTERFACE) def event_signal(self, event, urgency): pass @dbus.service.signal(constants.DBUS_INTERFACE) def error_signal(self, error): pass @dbus.service.signal(constants.DBUS_INTERFACE) def targetnotfound_signal(self): pass @dbus.service.signal(constants.DBUS_INTERFACE) def alreadyrunning_signal(self): pass @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 'ss', out_signature = 'b') def emit_event_signal(self, event, urgency): self.event_signal(event, urgency) return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 's', out_signature = 'b') def emit_error_signal(self, error): self.error_signal(error) return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 'b') def emit_targetnotfound_signal(self): self.targetnotfound_signal() return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 'b') def emit_alreadyrunning_signal(self): self.alreadyrunning_signal() return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 'n', out_signature = 'b') def set_retry_target_check(self, retry): """ Valid values are: -1 unknown 0 False (do not retry) 1 True (retry) """ self.__retry_target_check = retry return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 'n') def get_retry_target_check(self): return self.__retry_target_check @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 'i', out_signature = 'b') def set_backup_pid(self, pid): """ """ self.__backup_pid = pid return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 'i') def get_backup_pid(self): """ """ return self.__backup_pid @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 's', out_signature = 'b') def set_target(self, target): """ """ self.__target = target return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 's', out_signature = 'b') def set_profilename(self, profilename): """ """ self.__profilename = profilename return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 'x', out_signature = 'b') def set_space_required(self, space): """ """ self.__space_required = space return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 's') def get_target(self): return self.__target @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 's') def get_profilename(self): return self.__profilename @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 'x') def get_space_required(self): return self.__space_required @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 's', out_signature = 'b') def emit_progress_signal(self, checkpoint): self.progress_signal(checkpoint) return True class SBackupDbusConnectionObject(dbus.service.Object): def __init__(self, system_bus, object_path, mainloop, keep_alive = False): dbus.service.Object.__init__(self, system_bus, object_path) self.__logger = log.LogFactory.getLogger() self._system_bus = system_bus self._mainloop = mainloop self._listeners = {} self._keep_alive = keep_alive self._id = None self._set_id() self._initialize_timer() def _set_id(self): pid = str(os.getpid()) oid = str(id(self)) uid = str(uuid.uuid4()) self._id = "%s:%s:%s" % (pid, oid, uid) def _initialize_timer(self): gobject.timeout_add(constants.INTERVAL_UNREGISTER_DEAD_CONN, self._unregister_dead_connections) def _unregister_dead_connections(self): self.__logger.debug("Check for dead connections") for _client in self._listeners.keys(): pid = self._listeners[_client][1] if not pid_exists(pid): self.__logger.info("connected client process does not exist. Removed.") self.unregister_connection(connection_id = _client) return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 'ss', out_signature = 's') def register_connection(self, name, pid): """ """ _res = "" self.__logger.debug("Register connection: %s (pid=%s)" % (name, pid)) _id = str(uuid.uuid4()) if self._listeners.has_key(_id): raise SBDbusException("The generated id is already in use. This is a bug :( Please report the issue to the developers.") else: self._listeners[_id] = (name, pid) _res = _id self.__logger.debug("INFO: My connections: %s" % str(self._listeners)) return _res @dbus.service.method(constants.DBUS_INTERFACE, in_signature = 's', out_signature = 'b') def unregister_connection(self, connection_id): """ @todo: Add some kind of regular insanity check, e.g. by checking PIDs given when registering whether the listeners are still running. """ _res = False self.__logger.debug("Unregister listener with id: %s" % connection_id) if not self._listeners.has_key(connection_id): raise SBDbusException("The given id is not registered.") else: del self._listeners[connection_id] _res = True if len(self._listeners) == 0: self.__logger.debug("Last listener was unregistered.") if self._keep_alive: self.__logger.info("But SBackupdDBusObject is kept alive.") else: self.__logger.info("SBackupdDBusObject is being terminated.") gobject.timeout_add(constants.DBUS_SERVICE_QUIT_PAUSE, self.quit) return _res @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = '') def quit(self): if self._mainloop: self._mainloop.quit() @dbus.service.signal(constants.DBUS_INTERFACE) def exit_signal(self): pass @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 'b') def emit_exit_signal(self): self.exit_signal() return True @dbus.service.method(constants.DBUS_INTERFACE, in_signature = '', out_signature = 's') def get_id(self): return self._id class SBackupDBusService(object): """This is the DBUS service that provide basic signals. """ def __init__(self, keep_alive = False): self._system_bus = None self._dbus_service = None self._remote_obj = None self._connection = None self._mainloop = None self._keep_alive = keep_alive def _initialize_mainloop(self): self._mainloop = gobject.MainLoop() def _initialize_dbus_service(self): if self._mainloop is None: raise AssertionError("ERR: Mainloop must be initialized before "\ "starting the dbus service.") self._system_bus = dbus.SystemBus() self._dbus_service = dbus.service.BusName(\ constants.DBUS_SERVICE, self._system_bus) self._remote_obj = SBackupdDBusObject(self._system_bus, constants.DBUS_OBJ_PATH) self._connection = SBackupDbusConnectionObject(self._system_bus, constants.DBUS_CONNECTION_OBJ_PATH, self._mainloop, keep_alive = self._keep_alive) def main(self): self._initialize_mainloop() self._initialize_dbus_service() self._mainloop.run() def is_running(): """ :todo: Retrieve the PID of the running service! """ res = False try: bus = dbus.SystemBus() dbus_object = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus') dbus_iface = dbus.Interface(dbus_object, 'org.freedesktop.DBus') services = dbus_iface.ListNames() except dbus.DBusException, error: raise exceptions.DBusException(str(error)) else: services.sort() for service in services: if service == constants.DBUS_SERVICE: res = True break return res def __launch_service(keep_alive = False): sbak_service = SBackupDBusService(keep_alive = keep_alive) sbak_service.main() def __stop_service(): try: _system_bus = dbus.SystemBus() remote_obj = _system_bus.get_object(constants.DBUS_SERVICE, constants.DBUS_CONNECTION_OBJ_PATH) except dbus.DBusException: remote_obj = None if remote_obj is not None: remote_obj.quit(dbus_interface = constants.DBUS_INTERFACE) def parse_cmdline(argv): usage = "Usage: %prog " + __START + "|" + __STOP + "|" + __RESTART + " [options] (use -h or --help for more infos)" version = "%prog " + Infos.VERSION prog = constants.DBUSSERVICE_FILE parser = optparse.OptionParser(usage = usage, version = version, prog = prog) parser.add_option("--keep-alive", action = "store_true", dest = "keep_alive", default = False, help = "don't terminate DBus service after last client was unregistered") (options, args) = parser.parse_args(argv[1:]) if len(args) != 1: parser.error("No command given") cmd = args[0] if cmd not in __valid_args: parser.error("Unknown command given") if cmd == "stop" and options.keep_alive: parser.error("Unable to stop the service and to keep it alive") return (cmd, options) def run(args): try: _cmd, _options = parse_cmdline(argv = args) drop_privileges() os.nice(5) dbus.mainloop.glib.DBusGMainLoop(set_as_default = True) _running = is_running() if _cmd == "start": if _running is True: print "Simple Backup DBus service is already running" else: __launch_service(keep_alive = _options.keep_alive) elif _cmd == "stop": if _running is True: __stop_service() else: print "Simple Backup DBus service is not running" elif _cmd == "restart": if _running is True: __stop_service() __launch_service(keep_alive = _options.keep_alive) exitcode = constants.EXCODE_SUCCESS except dbus.DBusException, error: print "Error in Simple Backup DBus service:\n%s" % str(error) exitcode = constants.EXCODE_GENERAL_ERROR return exitcode sbackup-0.11.6/src/sbackup/util/0000755000175000017500000000000012216122133015064 5ustar peerpeersbackup-0.11.6/src/sbackup/util/log.py0000644000175000017500000000775212216122130016227 0ustar peerpeer# Simple Backup - Logging facilities # # Copyright (c)2008-2010: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import logging import os.path def shutdown_logging(): logging.shutdown() class LogFactory(object): """ """ logger = None created_loggers = [] #create formatter formatter = logging.Formatter("%(asctime)s - %(levelname)s: %(message)s") debug_formatter = logging.Formatter("%(asctime)s - %(levelname)s in "\ "%(module)s.%(funcName)s(%(lineno)d): %(message)s") def __init__(self): pass def getLogger(name = None, logfile = None, level = 20) : """Returns last used logger instance. If no instance exists, a new one is created. @param name: The name of the logger @param logfile : default=False @param level: The level of the logger (default = logging.INFO(20) ) """ if LogFactory.logger : if name: if LogFactory.logger.name == name : return LogFactory.logger else : return LogFactory.__createLogger(name, logfile, level) else : return LogFactory.logger else : return LogFactory.__createLogger(name, logfile, level) getLogger = staticmethod(getLogger) def __createLogger(name = None, logfile = None, level = 20): """Private helper method that creates a new logger instance. To avoid the overwriting of previous settings, the names of already created loggers are stored. """ if not name: name = "SBackup" _formatter = LogFactory.formatter if level == logging.DEBUG: _formatter = LogFactory.debug_formatter #create logger LogFactory.logger = logging.getLogger(name) if name in LogFactory.created_loggers: pass else: LogFactory.created_loggers.append(name) LogFactory.logger.setLevel(level) #create console handler and set level and formatter ch = logging.StreamHandler() ch.setLevel(level) ch.setFormatter(_formatter) LogFactory.logger.addHandler(ch) if logfile: # create the logfile if not os.path.exists(logfile) : #make sure that the parent directory exist parentdir = os.path.dirname(os.path.abspath(logfile)) if not os.path.exists(parentdir): os.makedirs(parentdir) _writetofile(logfile, "SBackup '%s' Logger\r\n==============\r\n" % name) else : # clean the logfile os.rename(logfile, logfile + ".old") _writetofile(logfile, "SBackup '%s' Logger\r\n==============\r\n" % name) ch1 = logging.FileHandler(logfile) ch1.setLevel(level) ch1.setFormatter(_formatter) LogFactory.logger.addHandler(ch1) return LogFactory.logger __createLogger = staticmethod(__createLogger) def _writetofile(path, content) : _fobj = open(path, "w") _fobj.write(content) _fobj.close() sbackup-0.11.6/src/sbackup/util/exceptions.py0000644000175000017500000001102412216122130017612 0ustar peerpeer# Simple Backup - definition of custom exceptions # # Copyright (c)2008-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`exceptions` -- custom exceptions ====================================== .. module:: util.exceptions :synopsis: Defines custom exceptions .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) .. moduleauthor:: Jean-Peer Lorenz """ class ErrorDescription(object): def __init__(self, errorcode, errorname, errormessage): self.code = errorcode self.name = errorname self.message = errormessage def __str__(self): res = "code: %s name: %s message: %s" % (self.code, self.name, self.message) return res class SigTerminatedError(Exception) : """This Exception is thrown if the backup process receives a SIGTERM/SIGKILL signal. """ class SBException(Exception): """This class will help us distinguish Exception that we must handle (exceptions created by ourself) and exceptions due to programming errors (Python Exceptions). """ SBackupError = SBException class ResourceFileNotFoundError(SBackupError) : """This Exception is thrown if another application instance is already running. """ class InstanceRunningError(SBException) : """This Exception is thrown if another application instance is already running. """ class ApplicationLockError(SBException) : """This Exception is thrown if another application instance is already running. """ class BackupCanceledError(SBException) : """This Exception is thrown if the backup process is canceled from the indicator gui. """ class HookedScriptError(SBException) : """This Exception is thrown if a script run pre/post backup returns exitcodes != 0. """ class NotValidSnapshotException(SBException) : """ This Exception is thrown by Snapshot validation. """ class NotValidSnapshotNameException(NotValidSnapshotException): """Exception launched when the name of a snapshot is not valid """ class NotValidSectionException(SBException) : """This Exception is thrown by Config Section validation. """ class NonValidOptionException(SBException): """Thrown when a config option is not Valid """ class CorruptedSBdictException(SBException): """Thrown when a SBdict is corrupted """ class TimeoutError(SBException): """Thrown when an IO operation times out. """ class RemoveSnapshotHasChildsError(SBackupError): """Is raised if snapshot removal fails. """ class CopyFileAttributesError(SBException): """Thrown when a destination does not support file modes (e.g. some ftp servers or FAT filesystems). """ class NotSupportedError(Exception): """Thrown when trying to call a stub. """ class NotifyException(SBException) : """This Exception is thrown by notifiers and listeners. """ class DBusException(SBException) : """This Exception is thrown when problems with DBus occurs. """ class FileAccessException(SBException) : """This Exception is thrown when problems with remote paths occur. """ class FuseFAMException(FileAccessException): """Thrown when a Fuse mount fails """ class RemoteMountFailedError(FileAccessException): """This Exception is thrown when remote path is not mountable. """ class RemoteMountTestFailedError(FileAccessException): """This Exception is thrown when remote path is not mountable. """ class RemoteUmountFailedError(FileAccessException): """This Exception is thrown when remote path is not mountable. """ class FileAlreadyClosedError(SBException) : """This Exception is thrown when a file or stream cannot be closed because it is already closed. """ sbackup-0.11.6/src/sbackup/util/__init__.py0000644000175000017500000003760212216122130017202 0ustar peerpeer# Simple Backup - Miscellaneous utilities # # Copyright (c)2008-2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackup.util` -- Miscellaneous utilities ================================================ .. module:: util :synopsis: Provide functions for disk operations. .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) .. moduleauthor:: Jean-Peer Lorenz """ #TODO: Clean up this module! from gettext import gettext as _ import os import subprocess import tempfile import inspect import shutil import types import re import signal import sbackup from sbackup.util import local_file_utils from sbackup.util import exceptions from sbackup.util import constants from sbackup.util import structs from sbackup.util import log def __get_resource(resource_name, is_file = False): """Looks for certain resources installed by sbackup. The installation script writes into the 'resources' file where the files/resources are being stored. This function will look for them and return the appropriate path. @param resourceName: the ressource name, as complete as possible @param isFile: flag whether the resource looked up is a file @note: The resources file is required to be located in the root directory of the sbackup package. """ # print "Debug: Looking for '%s' (isFile=%s)" % (resourceName, isFile) tmp = inspect.getabsfile(sbackup) resfile = file(os.path.join(os.path.dirname(tmp), constants.RSRC_FILE), "r") resfilelines = resfile.readlines() resfile.close() for _dir in resfilelines: _dir = _dir.strip() # print "Debug: Searching in directory '%s'" % _dir if os.path.exists(_dir) and os.path.isdir(_dir): # only directories stored in resource file are considered if _dir.endswith(resource_name): if not is_file: # print "Debug: Directory found in '%s'" % _dir return _dir _flist = os.listdir(_dir) # print "Debug: directory listing is :" + str(_flist) for _item in _flist: _path = os.path.join(_dir, resource_name) if os.path.exists(_path) and _path.endswith(resource_name): if os.path.isdir(_path): if not is_file: # print "Debug: Directory found in '%s'" % _path return _path else: if is_file: # print "Debug: File found in '%s'" % _path return _path raise exceptions.ResourceFileNotFoundError("Unable to find `%s` in the resources list" % resource_name) def get_resource_file(resource_name): return __get_resource(resource_name, is_file = True) def get_resource_dir(resource_name): return __get_resource(resource_name, is_file = False) def get_locale_dir(): return get_resource_dir(constants.LOCALE_DIR) def get_locale_domain(): return constants.LOCALE_DOMAIN def get_version_number(): """Returns the version number that is stored in according 'metainfo' file. @todo: Implement similar naming as CPython does (version, version_info). """ ver_line = "VERSION=n.a." tmp = inspect.getabsfile(sbackup) resfile = file(os.sep.join([os.path.dirname(tmp), "metainfo"]), "r") resfilelines = resfile.readlines() resfile.close() for _line in resfilelines: _line = _line.strip() if _line.startswith("VERSION="): ver_line = _line versfull_t = ver_line.split("=") versfull = versfull_t[1] version_t = versfull.split("~") vers = version_t[0] # version-postfix is currently ignored return vers def launch(cmd, opts, env = None): """ launch a command and gets stdout and stderr outStr = a String containing the output from stdout" errStr = a String containing the error from stderr retVal = the return code (= 0 means that everything were fine ) @param cmd: The command to launch @return: (outStr, errStr, retVal) """ _logger = log.LogFactory.getLogger() # Create output log file outptr, outFile = tempfile.mkstemp(prefix = "output_") # Create error log file errptr, errFile = tempfile.mkstemp(prefix = "error_") # Call the subprocess using convenience method opts.insert(0, cmd) _logger.debug("Lauching : " + str(opts)) retval = subprocess.call(opts, stdin = None, stdout = outptr, stderr = errptr, env = env) # Close log handles os.close(errptr) os.close(outptr) outStr = local_file_utils.readfile(outFile) errStr = local_file_utils.readfile(errFile) local_file_utils.delete(outFile) local_file_utils.delete(errFile) return (outStr, errStr, retval) def readlineNULSep(fd, fd1): """ Iterator that read a NUL separeted file as lines @param fd: File descriptor @return: the gotten line @rtype: String """ _continue = 0 while _continue < 2 : c = fd.read(1) currentline = '' while c : if c == '\0' : # we got a line break currentline += c c = fd.read(1) else : # c is None # This else correspond to the while statement _continue += 1 c1 = fd1.read(1) currentline1 = '' while c1 : if c1 == '\0' : # we got a line break c1 = fd1.read(1) currentline1 += c1 else : # c1 is None # This else correspond to the while statement _continue += 1 if _continue == 1 : raise exceptions.SBException(\ "The length of flist and Fprops are not equals") yield (currentline, currentline1) def is_valid_regexp(aregex): """Checks if the given string is a valid regular expression. @type aregex: String @todo: Is an empty expression valid or not? Can we combine both checks? """ if not isinstance(aregex, types.StringTypes): raise TypeError("is_valid_regexp: Given parameter must be a string. "\ "Got %s instead." % (type(aregex))) _res = True try: dummy = re.compile(aregex) except re.error: _res = False return _res def is_empty_regexp(aregex): """Checks if the given parameter is empty, i.e. is None or a string containing only whitespaces. @type aregex: String """ if not isinstance(aregex, (types.StringTypes, types.NoneType)): raise TypeError("is_empty_regexp: Given parameter must be a string "\ "or None. Got %s instead." % (type(aregex))) _res = False if aregex is None: _res = True else: _stripped_aregex = aregex.strip() if _stripped_aregex == "": _res = True return _res def add_conf_entry(confline, entry, separator = ","): """Appends the given entry to the given configuration line. Entries in configurations are separated by specified token. @param confline: the string the entry is appended to @param entry: the string that is added @param separator: the token that separates the entries @type confline: String @type entry: String @type separator: String @return: the configuration line with the added entry @rtype: String @raise TypeError: If one of the given parameters is not of string type @todo: Review behaviour if the entry contains characters equal to the \ separator. """ __conf_entry_func_type_check(confline, entry, separator) _strip_confline = confline.strip(separator) if not has_conf_entry(confline, entry, separator): _strip_entry = entry _line = r"%s%s%s" % (_strip_confline, separator, _strip_entry) _line = _line.strip(separator) else: _line = _strip_confline return _line def remove_conf_entry(confline, entry, separator = ","): """Removes the given entry from the given string. Entries in configurations are separated by the specified token. Leading and trailing separators are taken into account. @param confline: the string from which the entry should be removed @param entry: the string that is removed @param separator: the token that separates the entries @type confline: String @type entry: String @type separator: String @return: the configuration line without the removed entry @rtype: String @raise TypeError: If one of the given parameters is not of string type """ __conf_entry_func_type_check(confline, entry, separator) _line = r"%s%s%s" % (separator, confline, separator) _mentry = r"%s%s%s" % (separator, re.escape(entry), separator) _line = re.sub(_mentry , separator, _line) _line = _line.strip(separator) return _line def has_conf_entry(confline, entry, separator = ","): """Checks whether the given `confline` contains the given entry. """ __conf_entry_func_type_check(confline, entry, separator) has_entry = False conf_t = confline.split(separator) for conf_e in conf_t: if conf_e == entry: has_entry = True break return has_entry def __conf_entry_func_type_check(confline, entry, separator): """Private helper function that does common type checking in the `conf_entry_*` functions. """ if not isinstance(confline, types.StringTypes): raise TypeError("Given parameter must be a string. "\ "Got %s instead." % (type(confline))) if not isinstance(entry, types.StringTypes): raise TypeError("Given parameter must be a string. "\ "Got %s instead." % (type(entry))) if not isinstance(separator, types.StringTypes): raise TypeError("Given parameter must be a string. "\ "Got %s instead." % (type(separator))) return None def _remove_dups(sequence): """Removes duplicate entries from the given list. This is not the most efficient implementation, however it provides safe behavior. """ if not isinstance(sequence, types.ListType): raise TypeError("Expected parameter of type 'list'. Got '%s' instead."\ % type(sequence)) _dest = [] for val in sequence: if val not in _dest: _dest.append(val) return _dest def _list_union_no_dups_safe(source_a, source_b): """Merges the given lists into a single list not containing any duplicate entries using the default way. """ if not isinstance(source_a, types.ListType): raise TypeError("Expected parameter of type 'list'. Got '%s' instead."\ % type(source_a)) if not isinstance(source_b, types.ListType): raise TypeError("Expected parameter of type 'list'. Got '%s' instead."\ % type(source_b)) _dest = _remove_dups(source_b) for val_a in source_a: if val_a not in _dest: _dest.append(val_a) return _dest def list_union(source_a, source_b): """Merges the given lists into a single list not containing any duplicate entries in a very efficient way. """ # this functions uses sets in order to merge the lists # doing so it is really fast compared to list operations # however, this only works if the lists do not contain # unhashable entries (such as other lists etc.) # in this case the default algorithm is used if not isinstance(source_a, types.ListType): raise TypeError("Expected parameter of type 'list'. Got '%s' instead."\ % type(source_a)) if not isinstance(source_b, types.ListType): raise TypeError("Expected parameter of type 'list'. Got '%s' instead."\ % type(source_b)) _logger = log.LogFactory.getLogger() fallback = False try: _set_a = set(source_a) _set_b = set(source_b) except TypeError: _logger.info("Lists contain unhashable types. Falling back on default.") fallback = True if fallback: _dest = _list_union_no_dups_safe(source_a, source_b) else: _set_dest = _set_a.union(_set_b) _dest = list(_set_dest) return _dest def get_humanreadable_size(size_in_bytes, binary_prefixes = False): """Converts given number into more readable values. @todo: Implement sophisicated class for this! @note: Have also a look at function `get_humanreadable_size_str`. """ if isinstance(size_in_bytes, types.StringTypes): size_in_bytes = long(size_in_bytes) factor = 1000 if binary_prefixes is True: factor = 1024 _mbytes = size_in_bytes / (factor * factor) _kbytes = (size_in_bytes % (factor * factor)) / factor _bytes = (size_in_bytes % (factor * factor)) % factor return (_mbytes, _kbytes, _bytes) def get_humanreadable_size_str(size_in_bytes, binary_prefixes = False): """Converts given number into readable string. @todo: Implement sophisicated class for this! """ _mb, _kb, _byt = get_humanreadable_size(size_in_bytes = size_in_bytes, binary_prefixes = binary_prefixes) if binary_prefixes is True: if _byt == 0: _res = _("%(mb)d MiB %(kb)d KiB") % {'mb' : _mb, 'kb' : _kb} else: _res = _("%(mb)d MiB %(kb)d KiB %(bytes)d") % {'mb' : _mb, 'kb' : _kb, 'bytes' : _byt} else: if _byt == 0: _res = _("%(mb)d MB %(kb)d kB") % {'mb' : _mb, 'kb' : _kb} else: _res = _("%(mb)d MB %(kb)d kB %(bytes)d") % {'mb' : _mb, 'kb' : _kb, 'bytes' : _byt} return _res def enable_timeout_alarm(): """Helper method that enables timeout alarm handling. @todo: separate class? should we store the previous signal handler and restore it later? """ # Set the signal handler signal.signal(signal.SIGALRM, sigalarm_handler) def set_timeout_alarm(timeout): """Sets the timeout to the given value. """ signal.alarm(timeout) def sigalarm_handler(signum, stack_frame): #IGNORE:W0613 """Signal handler that is connected to the SIGALRM signal. @raise TimeoutError: A `TimeoutError` exception is raised. """ raise exceptions.TimeoutError("Unable to open device.") def enable_termsignal(): signal.signal(signal.SIGTERM, sigterm_handler) def sigterm_handler(signum, stack_frame): #IGNORE:W0613 raise exceptions.SigTerminatedError("Application was terminated by signal %s." % signum) def enable_backup_cancel_signal(): signal.signal(constants.BACKUP_CANCEL_SIG, sigcancel_handler) def sigcancel_handler(signum, stack_frame): #IGNORE:W0613 """ see `man 7 signal` """ raise exceptions.BackupCanceledError sbackup-0.11.6/src/sbackup/util/local_file_utils.py0000644000175000017500000004121412216122130020746 0ustar peerpeer# Simple Backup - unified file handling using (Python's) native functions # # Copyright (c)2009-2010,2013: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`local_file_utils` --- unified file handling (local) ==================================================================== .. module:: local_file_utils :synopsis: common functions for unified file handling within local filesystems .. moduleauthor:: Jean-Peer Lorenz .. moduleauthor:: Ouattara Oumar Aziz (alias wattazoum) """ import os.path import shutil import pickle import stat import types import gzip import uuid from sbackup.util import pathparse from sbackup.util import exceptions from sbackup.util import constants from sbackup.util import system from sbackup.util import log #TODO: make these functions module functions? See article: Python is not Java PATHSEP = system.PATHSEP path_exists = os.path.exists is_dir = os.path.isdir listdir = os.listdir makedir = os.mkdir #, 0750) makedirs = os.makedirs #, 0750) chmod = os.chmod get_dirname = os.path.dirname get_basename = os.path.basename is_mount = os.path.ismount # TDOD: Evaluate alternate implementations: #def path_exists(path): # os.path.exists(path) # os.access(uri, os.F_OK) #def copyfile(src, dest): # """Copies given file and metadata # """ # if os.path.isdir(src): # raise ValueError("Given copy source is a directory, not a file") ##TODO: What happens if `dest` already exists? # if os.path.isfile(src): # shutil.copy2(src, dest) def copyfile(src, dst): """Copies given file and metadata including file permissions. If this fails a custom exception is raised. @param src: an existing file that should be copied @param dst: copy destination - an existing directory or full path to new file @return: None @raise CopyFileAttributesError: if the permissions could not be copied """ # only absolute paths are supported if not os.path.isabs(src): raise ValueError("Given copy source `%s` must be absolute" % src) if not os.path.isabs(dst): raise ValueError("Given copy destination `%s` must be absolute" % dst) # the source must be a file and exist if not os.path.exists(src): raise IOError("Given copy source `%s` does not exist" % src) if os.path.isfile(src): prep_src, prep_dst = _prepare_copy(src, dst) shutil.copyfile(prep_src, prep_dst) try: shutil.copystat(prep_src, prep_dst) except OSError: raise exceptions.CopyFileAttributesError(\ "Unable to copy file attributes (permissions etc.) of file `%s`." % src) else: _logger = log.LogFactory.getLogger() _logger.warning("Given copy source `%s` is not a file. Skipped." % src) def _prepare_copy(src, dst): """Helper function that prepares the given paths for copying using 'nssb_copy'. Source must be a file or symbolic link to a file! @todo: Implement test case for symbolic links! """ _src_file = os.path.basename(src) _src_dir = os.path.dirname(src) if os.path.isdir(dst): _dst_file = _src_file _dst_dir = dst elif dst.endswith(os.path.sep): _dst_file = _src_file _dst_dir = dst else: _dst_file = os.path.basename(dst) _dst_dir = os.path.dirname(dst) if not os.path.isdir(_dst_dir): raise IOError("Given copy destination '%s' does not exist" % _dst_dir) _dst_path = joinpath(_dst_dir, _dst_file) retval = (src, _dst_path) return retval def listdir_fullpath(path) : """List a directory. Returns full paths to entries. """ _lst = listdir(path) _res = [] for _ent in _lst: _res.append(joinpath(path, _ent)) return _res def path_writeable(path): _res = os.access(path, os.W_OK) return _res def normpath(*args): """Normalizes the given paths (i.e. concatenates them and removes trailing separators). @todo: Consistent handling of `normpath` (Quote: os.path.normpath - It should be understood that this may change the meaning of the path if it contains symbolic links!) :note: Be careful when using `normpath`. Consider `joinpath` instead. """ _path = os.path.join(*args) _path = pathparse.remove_trailing_sep(_path) # _path = os.path.normpath(_path) return _path def joinpath(*args): return pathparse.joinpath(*args) def is_link(path): spath = pathparse.remove_trailing_sep(path) res = os.path.islink(spath) return res def get_link(path): """Returns the target of given link `path`. Relative links remain unchanged (i.e. are not made absolute). """ if not is_link(path): raise ValueError("Given path is not a symbolic link.") _res = os.readlink(path) return _res def get_link_abs(path): """Returns the absolute target of given link `path`. Relative links are modified (i.e. are made absolute). """ _ln_target = get_link(path) if os.path.isabs(_ln_target): _res = _ln_target else: _res = os.path.join(os.path.dirname(path), _ln_target) _res = os.path.abspath(_res) return _res def delete(uri): """Deletes given file or directory (recursive). """ if os.path.isdir(uri) and not os.path.islink(uri): shutil.rmtree(uri, ignore_errors = False) #, onerror=_onerror) else: os.unlink(uri) def force_delete(path): """Forces removal of given file or directory (recursive). """ _add_write_permission(path, recursive = True) delete(path) def destinsrc(src, dst): src = os.path.abspath(src) dst = os.path.abspath(dst) if not src.endswith(os.path.sep): src += os.path.sep if not dst.endswith(os.path.sep): dst += os.path.sep return dst.startswith(src) def force_move(src, dst): """Modified version of `shutil.move` that uses `nssb_copytree` and even removes read-only files/directories. :note: it does not work (and won't never) if the `src` is located within a read-only directory. We'd need to manipulate the parent dir in that case. """ try: os.rename(src, dst) except OSError: if os.path.isdir(src): if destinsrc(src, dst): raise shutil.Error("Cannot move a directory '%s' into itself "\ "'%s'." % (src, dst)) # _copytree(src, dst, symlinks = True) #FIXME: copy symlinks (not the target) _copytree(src, dst, symlinks = False) force_delete(src) else: shutil.copy2(src, dst) force_delete(src) def _copytree(src, dst, symlinks = False): """mod of `shutil.copytree`. This doesn't fail if the directory exists, it copies inside. :param src: source path for copy operation :param dst: destination :param symlinks: copy symlinks? :type src: string :type dst: string """ names = os.listdir(src) if not os.path.exists(dst) : os.makedirs(dst) errors = [] for name in names: srcname = os.path.join(src, name) dstname = os.path.join(dst, name) try: if symlinks and os.path.islink(srcname): linkto = os.readlink(srcname) os.symlink(linkto, dstname) elif os.path.isdir(srcname): _copytree(srcname, dstname, symlinks) else: shutil.copy2(srcname, dstname) # XXX What about devices, sockets etc.? except (IOError, OSError), why: errors.append((srcname, dstname, str(why))) # catch the Error from the recursive copytree so that we can # continue with other files except shutil.Error, err: errors.extend(err.args[0]) try: shutil.copystat(src, dst) except OSError, why: errors.extend((src, dst, str(why))) if len(errors) > 0: raise shutil.Error, errors def createfile(filepath): """ Create an empty file @param filepath : The file path :todo: Review and improve! """ filepath = filepath.rstrip(os.sep) spl = filepath.split(os.sep) if len(spl) == 1 : writetofile(filepath, "") else: _dir = filepath[:-len(spl[len(spl) - 1])] if path_exists(_dir): writetofile(filepath, "") else: makedir(_dir) writetofile(filepath, "") def readfile(path): """Read a file from a given URI and returns a string with the read content. @rtype: String """ fobj = open(path, "r") value = fobj.read() fobj.close() return value def writetofile(path, content) : """ Write a String to a file. You don't have to open and close the file. - File = path to the file - StringToWrite = String to write into the file. """ fobj = open(path, "w") fobj.write(content) fobj.close() def openfile(uri, write = False): " opens a file for reading or writing. Default is reading " if write: return open(uri, "w") else: return open(uri, "r") def openfile_for_append(path): return open(path, "a+") def pickleload(path): """ Load a python object from the given pickle file @param file: the path of the pickle file """ f = openfile(path) result = pickle.load(f) f.close() return result def pickledump(datas, path): """ Dump the given datas into the file given @param datas: any type of python datas/object @param file : a file path to the file in wich the dump will be made """ f = openfile(path, True) pickle.dump(datas , f) f.close() def _add_write_permission(path, recursive = True): """Sets write permissions for user, group, and others for given directory or file (recursive). """ fstats = os.stat(path) fmode = fstats.st_mode fmode = fmode | system.UNIX_PERM_ALL_WRITE os.chmod(path, fmode) if os.path.isdir(path) and recursive is True: for _entry in os.listdir(path): _entrypath = os.path.join(path, _entry) if os.path.isdir(_entrypath) and not os.path.islink(_entrypath): _add_write_permission(_entrypath) else: _add_write_permission(_entrypath, recursive = False) def chmod_no_rwx_grp_oth(path): """Sets write permissions for user only for given directory or file (*not* recursive). """ try: fstats = os.stat(path) fmode = fstats.st_mode fmode = fmode & system.UNIX_PERM_GRPOTH_NORWX os.chmod(path, fmode) except Exception, error: _msg = "Unable to set permissions: %s" % str(error) _logger = log.LogFactory.getLogger() _logger.warning(_msg) return def rename(src, dst): # avoids (misused) move operations using `rename` _dstf = joinpath(get_dirname(src), get_basename(dst)) os.rename(src, _dstf) def rename_errors_ignored(src, dst): try: rename(src, dst) except OSError: pass def rename_rotating(src, dst, max_num, compressed = True): """Renames the given file `src` to `dst`. The destination (i.e. the new file name) is renamed in rotated manner prior the actual renaming process. If `compressed` is set to True, compressed files (*.gz) are considered. """ if not isinstance(src, types.StringTypes): raise TypeError("Expected string as source. Got %s instead." % type(src)) if not isinstance(dst, types.StringTypes): raise TypeError("Expected string as destination. Got %s instead." % type(dst)) if not isinstance(max_num, types.IntType): raise TypeError("Expected integer as max. number. Got %s instead." % type(max_num)) if max_num < 1: raise ValueError("Max. number must be greater than 0.") # at first: rotating rename of destination for _num in range(max_num, 0, -1): _rot_src = pathparse.append_str_to_filename(dst, str((_num - 1))) _rot_target = pathparse.append_str_to_filename(dst, str(_num)) if compressed is True: _rot_src = "%s.gz" % _rot_src _rot_target = "%s.gz" % _rot_target if path_exists(_rot_src): rename(_rot_src, _rot_target) # then rename the source file rename(src, dst) def compress_rotated_files(basename, max_num): """Compresses files with trailing number 0..max_num. """ if not isinstance(basename, types.StringTypes): raise TypeError("Expected string as basename. Got %s instead." % type(basename)) if not isinstance(max_num, types.IntType): raise TypeError("Expected integer as max. number. Got %s instead." % type(max_num)) if max_num < 1: raise ValueError("Max. number must be greater than 0.") for _num in range(max_num, -1, -1): _src = pathparse.append_str_to_filename(basename, str(_num)) if path_exists(_src): compress(_src) def compress(src, keep_original = False): if not isinstance(src, types.StringTypes): raise TypeError("Expected string as source. Got %s instead." % type(src)) out_file = "%s.gz" % src if path_exists(src) and os.path.isfile(src): f_in = open(src, 'rb') f_out = gzip.open(out_file, 'wb') f_out.writelines(f_in) f_out.close() f_in.close() if not keep_original: delete(src) def stat_device(path): _res = os.stat(path)[stat.ST_DEV] return _res def stat_inode(path): _res = os.stat(path)[stat.ST_INO] return _res def test_path(path, testdir_name, testfile_name, test_read = True): __logger = log.LogFactory().getLogger() testdir = os.path.join(path, testdir_name) testfile = os.path.join(testdir, testfile_name) __logger.info("Perform tests at specified location") try: __logger.debug("test access to specified path using native functions") _exists = path_exists(path) if bool(_exists) is False: raise exceptions.RemoteMountTestFailedError("Specified remote path is not accessable.") # test directory __logger.debug("Test testdir: %s" % testdir) _exists = path_exists(testdir) if bool(_exists) is True: raise exceptions.RemoteMountTestFailedError("Unable to create directory for testing purpose: Directory already exists.") __logger.debug("Create testdir") makedir(testdir) __logger.debug("Test testfile for existence") _exists = path_exists(testfile) if bool(_exists) is True: raise exceptions.RemoteMountTestFailedError("Unable to create file for testing purpose: File already exists.") _buffer = "Some arbitrary content: %s" % uuid.uuid4() __logger.debug("Write buffer: `%s` to file" % _buffer) writetofile(testfile, _buffer) if test_read is True: # and re-read __logger.debug("Re-read test file") _exists = path_exists(testfile) if bool(_exists) is False: raise exceptions.RemoteMountTestFailedError("Unable to open file for testing purpose: File does not exists.") _cont = readfile(testfile) if _cont != _buffer: raise exceptions.RemoteMountTestFailedError("Unable to read content from test file: content differs.") # clean-up __logger.debug("Remove file") delete(testfile) __logger.debug("Remove dir") delete(testdir) except (OSError, IOError), error: raise exceptions.RemoteMountTestFailedError(str(error)) def query_fs_info(path): _logger = log.LogFactory.getLogger() _size = constants.SIZE_FILESYSTEM_UNKNOWN _free = constants.FREE_SPACE_UNKNOWN try: _vstat = os.statvfs(path) except OSError, error: _logger.error("Error in `query_fs_info`: %s" % error) else: _size = _vstat.f_blocks * _vstat.f_bsize _free = _vstat.f_bavail * _vstat.f_bsize _logger.debug("FS info - size: %s free: %s" % (_size, _free)) return (_size, _free) sbackup-0.11.6/src/sbackup/util/tasks.py0000644000175000017500000001242112216122130016560 0ustar peerpeer# Simple Backup - implementation of threaded worker tasks # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """This module contains definitions of classes helping to process worker tasks within separate threads. """ import threading from sbackup.util import log class WorkerThread(object): """Class that encapsulates a single (long running) thread. The current implementation does not support control of the task's progress (due to it isn't necessary for tar operations). """ def __init__(self, task): """Default constructor. @param task: a callable object that actually represents the worker task @type task: callable object @raise TypeError: in case of type mismatch of given parameters """ self.__task = None self.__finish_callback = None self.__finish_args = None self.__thread = None self.__set_task(task) def __set_task(self, callback): """Private helper method that sets the callback function representing the actual worker task. @param callback: callable object representing the task to perform @type callback: callable object @return: None @raise TypeError: If the given parameter is not callable """ if not callable(callback): raise TypeError("The given task object object is not callable!") self.__task = callback def set_finish_callback(self, callback, *args): """Sets the given object as callback function/method that is invoked after finishing the worker thread. An arbitrary number of non-keyword parameters can be given. Since the worker task is performed in a separate thread one need to set a callback function e.g. for evaluating any results of the task. The result of the worker task is given as last parameter to this callback function, this is even valid for tasks that return 'nothing', i.e. None. @param callback: callable object that is called after finishing @type callback: callable object @param args: arbritrary number of parameters given to the callback function @return: None @raise TypeError: If the given callback function is not callable """ if not callable(callback): raise TypeError("The given callback object is not callable!") self.__finish_callback = callback self.__finish_args = args def __run_task(self, *args, **kwargs): """Private method that executes the worker task and afterwards calls the specified finish callback function (if any). Any exception raised within the worker task is catched and returned as result of the task. If no exception occurs the result of the worker task is returned as result. To determine if an exception was raised within the thread, check the type of the returned result. The given keyword and non-keyword parameters are given (as they are) to the worker task. @param args: non-keyword parameters given to the worker task @param kwargs: keyword parameters given to the worker task @return: None """ try: result = self.__task(*args, **kwargs) except Exception, exc: # if an exception was raised, use it as the result log.LogFactory.getLogger().exception(exc) result = exc final_args_lst = [] # if there is a function to call after finishing? if self.__finish_callback is not None: if self.__finish_args is not None: final_args_lst = [ _arg for _arg in self.__finish_args ] # append the worker task result to the arguments list final_args_lst.append(result) # now the final arguments list is converted into a tuple final_args = tuple(final_args_lst) self.__finish_callback(*final_args) def start(self, *args, **kwargs): """Public method that starts this worker thread. The given keyword and non-keyword parameters are given (as they are) to the worker task. @param args: non-keyword parameters given to the worker task @param kwargs: keyword parameters given to the worker task @return: None """ self.__thread = threading.Thread(target = self.__run_task, args = args, kwargs = kwargs) self.__thread.start() sbackup-0.11.6/src/sbackup/util/filecollect.py0000644000175000017500000006677512216122130017745 0ustar peerpeer# Simple Backup - collection of files and files metadata # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from gettext import gettext as _ import os import re import types from sbackup import util from sbackup.util import local_file_utils from sbackup.util import exceptions from sbackup.util import log #TODO: make this module independent from archive backend class FileCollectorStats(object): """Provides statistical information about files collected by `FileCollector` objects. These information encompass: * size of files being backuped * number of files being backuped. """ def __init__(self, followlinks = False): self.__followlinks = False self.set_followlinks(followlinks) # uncompressed size of snapshot (cummulative) self.__size_in_bytes = 0L self.__ndirs = 0L self.__nfiles = 0L self.__nsymlinks = 0L # for incremental counting (in case of full snapshot only `__nfile_incl` is used) self.__nfiles_incl = 0L self.__nfiles_skip = 0L self.__nfiles_new = 0L self.__nexcl_forced = 0L self.__nexcl_config = 0L def set_followlinks(self, followlinks): if not isinstance(followlinks, types.BooleanType): raise TypeError("Expected parameter of boolean type. "\ "Got %s instead." % type(followlinks)) self.__followlinks = followlinks def get_size_payload(self): """Returns the cumulated size of files being backuped in bytes. Additional overhead due to storage etc. is not considered. """ return self.__size_in_bytes def get_size_overhead(self, size_per_item): """Returns the cumulated size of overhead produced by files being backuped. The overhead is calculated based on the number of files and their overhead per file given as parameter. """ if not isinstance(size_per_item, types.IntType): raise TypeError("Expected parameter of integer type. "\ "Got %s instead." % type(size_per_item)) _overhead = (self.__ndirs + self.__nfiles_incl) * size_per_item if not self.__followlinks: _overhead += self.__nsymlinks * size_per_item return _overhead def get_count_files_total(self): """Returns the number of files. """ return self.__nfiles def get_count_files_incl(self): """Returns the number of files. """ return self.__nfiles_incl def get_count_files_skip(self): """Returns the number of files. """ return self.__nfiles_skip def get_count_files_new(self): """Returns the number of new included files. """ return self.__nfiles_new def get_count_dirs(self): """Returns the number of files. """ return self.__ndirs def get_count_symlinks(self): """Returns the number of files. """ return self.__nsymlinks def get_count_items_excl_forced(self): """Returns the number of files. """ return self.__nexcl_forced def get_count_items_excl_config(self): """Returns the number of files. """ return self.__nexcl_config def clear(self): """Clears collected data. """ self.__size_in_bytes = 0L self.__ndirs = 0L self.__nfiles = 0L self.__nsymlinks = 0L self.__nfiles_incl = 0L self.__nfiles_skip = 0L self.__nexcl_forced = 0L self.__nexcl_config = 0L self.__nfiles_new = 0L def add_size(self, value): """The given value is added to the cumulated file size. """ self.__size_in_bytes += value def count_file(self): """The file counter is increased by 1. """ self.__nfiles += 1 def count_incl_file(self): self.__nfiles_incl += 1 def count_new_file(self): self.__nfiles_new += 1 def count_skip_file(self): self.__nfiles_skip += 1 def count_dir(self): """The file counter is increased by 1. """ self.__ndirs += 1 def count_symlink(self): self.__nsymlinks += 1 def count_excl_forced(self): self.__nexcl_forced += 1 def count_excl_config(self): self.__nexcl_config += 1 class FileCollectorParentSnapshotFacade(object): """Class that provides simplified access to attributes of the parent snapshot (the base). The class is designed for use with `FileCollector`. """ def __init__(self): self.__logger = log.LogFactory.getLogger() # snapshot file (snar) of current snapshot's parent (base snapshot) # only set if the current one is incremental self.__base_snar = None self.__base_backup_time = None self.__base_snardict = None def set_base_snar(self, basesnar): """Sets the snapshot file (snar) of the base (parent) snapshot. @note: This implies that the current snapshot is incremental. """ # if not isinstance(basesnar, tar.SnapshotFile): # raise TypeError("Expected parameter of type 'SnapshotFile'. "\ # "Got %s instead." % type(basesnar)) self.__base_snar = basesnar self.__set_base_backup_time(basesnar.get_time_of_backup()) self.__set_base_snardict(basesnar.get_dict_format2()) def __set_base_backup_time(self, backup_time): """Sets the time the parent backup was created. The time is measured in seconds since beginning of the epoch (unix style). """ if not isinstance(backup_time, types.FloatType): raise TypeError("Expected parameter of floar type. "\ "Got %s instead." % type(backup_time)) self.__logger.debug("Backup time of parent snapshot: %s" % backup_time) self.__base_backup_time = backup_time def __set_base_snardict(self, snardict): """Sets the dictonary containing the parent snapshot file (snar file). """ if not isinstance(snardict, types.DictionaryType): raise TypeError("Expected parameter of dictionary type. "\ "Got %s instead." % type(snardict)) self.__base_snardict = snardict def get_base_snardict(self): """Returns the dictonary containing the parent snapshot file (snar file). """ return self.__base_snardict def get_base_backup_time(self): """Returns the time the parent backup was created. """ return self.__base_backup_time class FileCollector(object): """Responsible for the process of collecting files that are being backuped. The collecting process comprises of: * check the files are readable/accessable * apply exclusion rules (Regex) defined by user to the list of files * calculate the required space for the backup * prepare include and exclude file lists used by the backup process. """ def __init__(self, snp, configuration): self.__logger = log.LogFactory.getLogger() # current snapshot (the new one) self.__snapshot = None # flag whether the current snapshot is full or incremental self.__isfull = True self.__parent = FileCollectorParentSnapshotFacade() self.__collect_stats = FileCollectorStats() self.__configuration = None # stats of last processed file self.__stat_func = None self.__fstats = None self.__fislink = None self.__fisdir = None # list of Regular Expressions defining exclusion rules self.__excl_regex = [] # TODO: put list of compiled regex into `Snapshot` (i.e. compile them when setting the excludes). self.set_snapshot(snp) self.set_configuration(configuration) def set_snapshot(self, snp): """Sets the given snapshot as the currently processed snapshot. """ # if not isinstance(snp, snapshot.Snapshot): # raise TypeError("Expected parameter of type 'Snapshot'. "\ # "Got %s instead." % type(snp)) self.__snapshot = snp self.__set_isfull(isfull = snp.isfull()) self.__collect_stats.set_followlinks(followlinks = snp.isFollowLinks()) def set_configuration(self, configuration): """Sets the given object of type `FileCollectorConfigFacade`. """ if not isinstance(configuration, FileCollectorConfigFacade): raise TypeError("Expected parameter of type 'FileCollectorConfigFacade'. "\ "Got %s instead." % type(configuration)) self.__configuration = configuration def set_parent_snapshot(self, parent): """Sets the snapshot file (snar) of the base (parent) snapshot. @note: This implies that the current snapshot is incremental. """ # if not isinstance(parent, tar.SnapshotFile): # raise TypeError("Expected parameter of type 'SnapshotFile'. "\ # "Got %s instead." % type(parent)) self.__set_isfull(isfull = False) self.__parent.set_base_snar(parent) def get_stats(self): """Returns the collector stats object. """ return self.__collect_stats def __prepare_collecting(self): """The actual process of collecting is prepared (i.e. stats are cleared etc.). @note: Depending on setting `Follow links` are functions for testing file existance and retrieval of file stats selected here. """ if self.__snapshot.isFollowLinks(): self.__stat_func = os.stat else: self.__stat_func = os.lstat self.__collect_stats.clear() def __set_isfull(self, isfull): """Sets attribute `__isfull` to the given boolean value. Attribute `__isfull` is introduced because of performance concerns since the snapshot derives this information from its name on every request again. """ if not isinstance(isfull, types.BooleanType): raise TypeError("Expected parameter of boolean type. "\ "Got %s instead." % type(isfull)) self.__isfull = isfull # test of post-condition: isfull must be equal to the value in the snapshot if self.__isfull != self.__snapshot.isfull(): raise AssertionError("Values of attribute 'isfull' are "\ "inconsistent. Found value in snapshot: %s."\ % self.__snapshot.isfull()) def __is_not_accessable(self, path): """Tests whether the given `path` can be accessed (i.e. exists and is readable). """ # get the stats, If not possible, the file has to be exclude, return True try: self.__fstats = self.__stat_func(path) self.__fisdir = local_file_utils.is_dir(path) self.__fislink = local_file_utils.is_link(path) except Exception, _exc: #IGNORE:W0703 self.__logger.warning(_("File '%(file)s' is not accessable with error '%(error)s'.")\ % {'file' : path, 'error' : str(_exc)}) self.__fstats = None self.__fisdir = None self.__fislink = None return True # refuse a file if we don't have read access # The open() statement may hang indefinitely (LP Bug 184713) # taken from: http://docs.python.org/library/signal.html#example _res = False try: util.set_timeout_alarm(timeout = 5) fdscr = os.open(path, os.R_OK) os.close(fdscr) except exceptions.TimeoutError, _exc: self.__logger.warning(_("File '%(file)s' cannot be opened for read access. Operation timed out.")\ % {'file' : path}) _res = True except Exception, _exc: #IGNORE:W0703 self.__logger.warning(_("File '%(file)s' cannot be opened for read access with error '%(error)s'.")\ % {'file': path, 'error' : str(_exc)}) _res = True util.set_timeout_alarm(timeout = 0) # when file does not exist, the `open` fails and variable `fdscr` is not defined here # try: # os.close(fdscr) # except OSError: # pass return _res def __is_circular_symlink(self, path): if self.__fislink: if self.__snapshot.isFollowLinks(): ln_target = local_file_utils.get_link_abs(path) if path.startswith(ln_target): self.__logger.info(_("Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink.")\ % {'path' : path, 'ln_target' : ln_target}) return True #test passed return False def _is_excluded_by_name(self, path): """Decides whether or not a path has to be excluded by its name using the lists of defined * snapshot destination * regular expressions * blacklisted names. @return: True if the file has to be excluded, false if not """ if path == self.__configuration.get_target_dir(): self.__logger.info(_("File '%(file)s' is backup's target directory.") % {'file' : path}) return True # if the file is in exclude list, return true if self.__snapshot.is_path_in_excl_filelist(path): self.__logger.info(_("Path '%(file)s' defined in excludes list.") % {'file' : path}) return True # if the file matches an exclude regexp, return true # TODO: Regex are applied to the full path. Add a choice to apply Regex only to files, directories etc. for _regex in self.__excl_regex: _regex_res = _regex.search(path) if _regex_res is not None: self.__logger.info(_("File '%(file)s' matches regular expression '%(regex)s'.")\ % {'file' : path, 'regex' : str(_regex.pattern)}) return True #all tests passed return False def _is_excluded_by_size(self, path): """Decides whether or not a file is to be excluded by the configuration. It is not decided for the incremental exclusion. Currently, following configuration options are tested: * file size @return: True if the file has to be excluded, false if not """ #if the file is too big if self.__configuration.is_maxsize_enable(): if self.__fstats.st_size > self.__configuration.get_maxsize_limit(): self.__logger.info(_("File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s).")\ % {'file' : path, 'filesize' : str(self.__fstats.st_size), 'maxsize' : str(self.__configuration.get_maxsize_limit())}) return True #all tests passed return False def _is_excluded_by_force(self, path): """Private interface method which checks for forced exclusion of given `path` by calling the according test methods in turn. If this method returns True, the path *must* be excluded irrespectively it is explicitely included etc. @return: True if the file has to be excluded, false if not """ if self.__is_not_accessable(path) is True: return True elif self.__is_circular_symlink(path) is True: return True return False def _check_for_excludes(self, path): #, force_exclusion=False): """Checks given `path` for exclusion and adds it to the `ExcludeFlist` if required. Sub-directories are only entered in the case the `path` is not excluded. @param path: The path being checked for exclusion @note: Links are always backuped; TAR follows links (i.e. dereferences them = stores the actual content) only if option `followlinks` is set. A link targeting a directory yields 'islink=True' and 'isdir=True'. """ _excluded = False _stop_checking = False if self._is_excluded_by_name(path): if not self.__snapshot.is_subpath_in_incl_filelist(path): # add to exclude list, if not explicitly included; since paths can be nested, # it is checked for sub-paths instead of full paths self.__snapshot.addToExcludeFlist(path) self.__collect_stats.count_excl_config() _excluded = True elif self._is_excluded_by_force(path): # force exclusion e.g. path is defined in includes list but does not exist/is not accessable self.__snapshot.addToExcludeFlist(path) self.__collect_stats.count_excl_forced() _excluded = True elif self._is_excluded_by_size(path): if not self.__snapshot.is_subpath_in_incl_filelist(path): # add to exclude list, if not explicitly included; since paths can be nested, # it is checked for sub-paths instead of full paths self.__snapshot.addToExcludeFlist(path) self.__collect_stats.count_excl_config() _excluded = True if not _excluded: # path was not excluded, so do further tests (stats, enter dir...) if self.__fislink: self.__logger.debug("Symbolic link found: '%(path)s' -> '%(ln_target)s'."\ % {'path' : path, 'ln_target' : local_file_utils.get_link(path)}) self.__collect_stats.count_symlink() if not self.__snapshot.isFollowLinks(): # if `followlinks` is *disabled*, just count the link and finish _stop_checking = True if self.__fisdir: if _stop_checking: # i.e. `followlinks` is not enabled self.__collect_stats.count_file() self.__cumulate_size(path) else: # if it's a directory, enter inside try: for _dir_item in local_file_utils.listdir(path) : _dir_item = local_file_utils.joinpath(path, _dir_item) self._check_for_excludes(path = _dir_item) self.__collect_stats.count_dir() # the directory `path` except OSError, _exc: self.__logger.warning(_("Error while checking directory '%(dir)s': %(error)s.")\ % {'dir' : path, 'error' : str(_exc)}) self.__snapshot.addToExcludeFlist(path) # problems with `path` -> exclude it self.__collect_stats.count_excl_forced() else: # it's a file (may also a link target in case of enabled `followlinks` option) self.__collect_stats.count_file() self.__cumulate_size(path) def __cumulate_size(self, path): """ Files not contained in SNAR file are backuped in any case! (e.g. a directory was added to the includes) """ # self.__logger.debug("%s" % path) _incl_file = False if self.__isfull: # full snapshots do not have a base snar file _incl_file = True else: # we don't look at the access time since this was even modified during the last backup ftime = max(self.__fstats.st_mtime, self.__fstats.st_ctime) if path in self.__parent.get_base_snardict(): # self.__logger.debug("%s: is in snapshot file." % path) if ftime > self.__parent.get_base_backup_time(): self.__logger.debug("Delta=%s - %s: %s > %s" % ((ftime - self.__parent.get_base_backup_time()), path, ftime, self.__parent.get_base_backup_time())) _incl_file = True else: self.__logger.debug("%s: No yet included - included." % path) self.__collect_stats.count_new_file() _incl_file = True if _incl_file: self.__collect_stats.count_incl_file() self.__collect_stats.add_size(self.__fstats.st_size) else: self.__collect_stats.count_skip_file() def __compile_excl_regex(self): """Prepares (i.e. compiles) Regular Expressions used for excluding files from flist. """ self.__logger.debug("Prepare Regular Expressions used for file exclusion.") _rexclude = [] _snp_excl = self.__snapshot.getExcludes() if _snp_excl: for _regex in _snp_excl: if util.is_empty_regexp(_regex): self.__logger.warning(_("Empty regular expression found. Skipped.")) else: if util.is_valid_regexp(_regex): _regex_c = re.compile(_regex) _rexclude.append(_regex_c) else: self.__logger.warning(_("Invalid regular expression ('%s') found. Skipped.") % _regex) self.__excl_regex = _rexclude def __prepare_explicit_flists(self): """Paths (i.e. directories and files) defined in the configuration are added to the corresponding include/exclude file lists. These lists represent the explicitely defined includes and excludes. Includes are stronger than excludes! The config GUI avoids the definition of a file as included and excluded at the same time. The `ConfigManager` returns the last defined entry in the case of multiple definitions in section `dirconfig`. """ _config = self.__configuration if _config is None: raise ValueError("No configuration object set.") # set the list to backup (includes) and to exclude self.__logger.debug("Preparation of include and exclude lists.") if _config.has_dirconfig_entries() is False: self.__logger.warning(_("No directories to backup defined.")) else: for _dir, _incl in _config.get_dirconfig_local(): if _incl == 1: self.__snapshot.addToIncludeFlist(_dir) elif _incl == 0: self.__snapshot.addToExcludeFlist(_dir) # add the default excluded ones # TODO: why add an empty string? # TODO: put the default excludes into `ConfigManager`. # TODO: Remove this hack and replace it by proper shell pattern expansion (glob). _excludes = ["", "/dev/", "/proc/", "/sys/", "/tmp/"] if _config.get_target_dir() is not None: _excludes.append(_config.get_target_dir().rstrip(os.sep) + os.sep) for _excl in _excludes: self.__snapshot.disable_path_in_incl_filelist(_excl) # TODO: Even better: Remove this inconsistency and don't use TAR's shell patterns. Prefer pure Regex exclusion. # LP #638072: no wildcards in excludes list; # excluded directory yields in excluding contained files #FIXME: trailing slashes are not retained when writing excludes file! Since exclude items # are literally compared this can exclude more dirs/files than intended! for _excl in _excludes: self.__snapshot.addToExcludeFlist(_excl) # sanity check of the lists self.__snapshot.check_and_clean_flists() def collect_files(self): """Collects information about files that are included resp. excluded in the backup. """ self.__prepare_collecting() self.__compile_excl_regex() self.__prepare_explicit_flists() util.enable_timeout_alarm() # We have now every thing we need , the rexclude, excludelist, includelist and already stored self.__logger.debug("Creation of the complete exclude list.") # walk recursively into paths defined as includes (therefore don't call nested paths) for _incl in self.__snapshot.get_eff_incl_filelst_not_nested(): _incl = local_file_utils.normpath(_incl) self._check_for_excludes(_incl) class FileCollectorConfigFacade(object): """Provides a simplified and unified read-only access to configuration options required for file collection. Purpose is to de-couple class `ConfigManager` and `FileCollector` since only very little configuration settings are required in order to collect the files. """ def __init__(self, configuration, eff_local_targetdir): self.__configuration = None self.__eff_local_targetdir = eff_local_targetdir # needed to exclude paths == target self.__maxsize_enabled = False self.__maxsize = 0 self.__dirconfig = None self.__dirconfig_set = False self.set_configuration(configuration) def set_configuration(self, configuration): """Sets the given `configuration`. Corresponding attributes are set from this ConfigManager instance. """ # if not isinstance(configuration, ConfigManager): # raise TypeError("Expected parameter of type 'ConfigManager'. "\ # "Got %s instead." % type(configuration)) self.__configuration = configuration self.__set_maxsize_limit_from_config() self.__set_dirconfig_from_config() def __set_maxsize_limit_from_config(self): if self.__configuration is None: raise ValueError("No configuration set.") self.__maxsize_enabled = self.__configuration.has_maxsize_limit() self.__maxsize = self.__configuration.get_maxsize_limit() def __set_dirconfig_from_config(self): if self.__configuration is None: raise ValueError("No configuration set.") self.__dirconfig = self.__configuration.get_dirconfig_local() if self.__dirconfig is None: self.__dirconfig_set = False else: self.__dirconfig_set = True def is_maxsize_enable(self): return self.__maxsize_enabled def get_maxsize_limit(self): return self.__maxsize def get_target_dir(self): return self.__eff_local_targetdir def get_dirconfig_local(self): """Returns the directory configuration stored in a list of pairs (name, value). @rtype: List """ return self.__dirconfig def has_dirconfig_entries(self): """Returns True if the `dirconfig` has any entries. Purpose is improvement of performance when checking for entries in the `dirconfig` and hiding implementation details about format/storage of the list. """ return self.__dirconfig_set sbackup-0.11.6/src/sbackup/util/interfaces.py0000644000175000017500000001551012216122130017560 0ustar peerpeer# Simple Backup - interface definitions # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # def _get_notimplemented_msg(klass, method): _res = "Method `%s` is abstract in class `%s` but is not overridden" % (method, klass) return _res class ITargetHandler(object): def __init__(self): pass def initialize(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "initialize")) def is_initialized(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "is_initialized")) def terminate(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "terminate")) def dest_path_exists(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "dest_path_exists")) def query_dest_display_name(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "query_dest_display_name")) def query_mount_uri(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "query_mount_uri")) def query_dest_fs_info(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "query_dest_fs_info")) def test_destination(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "test_destination")) def set_initialize_callback(self, func): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "set_initialize_callback")) def set_terminate_callback(self, func): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "set_terminate_callback")) def set_destination(self, path): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "set_destination")) def get_destination(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "get_destination")) def set_configuration_ref(self, configuration): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "set_configuration_ref")) def get_eff_path(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "get_eff_path")) def get_eff_fullpath(self, *args): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "get_eff_fullpath")) def get_snapshot_path(self, snpname): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "get_snapshot_path")) def is_local(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "is_local")) def get_supports_publish(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "get_supports_publish")) def get_use_iopipe(self): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "get_use_iopipe")) def set_use_mainloop(self, use): raise NotImplementedError(_get_notimplemented_msg("ITargetHandler", "set_use_mainloop")) class IOperations(object): def __init__(self): pass @classmethod def path_exists(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "path_exists")) @classmethod def delete(cls, uri): raise NotImplementedError(_get_notimplemented_msg("IOperations", "delete")) @classmethod def force_delete(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "force_delete")) @classmethod def makedir(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "makedir")) @classmethod def makedirs(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "makedirs")) @classmethod def normpath(cls, *args): raise NotImplementedError(_get_notimplemented_msg("IOperations", "normpath")) @classmethod def openfile_for_write(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "openfile_for_write")) @classmethod def openfile_for_read(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "openfile_for_read")) @classmethod def openfile_for_append(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "openfile_for_append")) @classmethod def get_dirname(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "get_dirname")) @classmethod def get_basename(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "get_basename")) @classmethod def pickleload(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "pickleload")) @classmethod def pickledump(cls, datas, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "pickledump")) @classmethod def rename(cls, src, dst): raise NotImplementedError(_get_notimplemented_msg("IOperations", "rename")) @classmethod def readfile(cls, uri): raise NotImplementedError(_get_notimplemented_msg("IOperations", "readfile")) @classmethod def writetofile(cls, path, content): raise NotImplementedError(_get_notimplemented_msg("IOperations", "writetofile")) @classmethod def copyfile(cls, src, dest): raise NotImplementedError(_get_notimplemented_msg("IOperations", "copyfile")) @classmethod def listdir(cls, target) : raise NotImplementedError(_get_notimplemented_msg("IOperations", "listdir")) @classmethod def listdir_fullpath(cls, target) : raise NotImplementedError(_get_notimplemented_msg("IOperations", "listdir_fullpath")) @classmethod def force_move(cls, src, dst): raise NotImplementedError(_get_notimplemented_msg("IOperations", "force_move")) @classmethod def is_link(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "is_link")) @classmethod def is_dir(cls, path): raise NotImplementedError(_get_notimplemented_msg("IOperations", "is_dir")) @classmethod def close_stream(cls, file_desc): raise NotImplementedError(_get_notimplemented_msg("IOperations", "close_stream")) sbackup-0.11.6/src/sbackup/util/pathparse.py0000644000175000017500000003276512216122130017437 0ustar peerpeer# Simple Backup - pathname manipulation on string basis # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackup.util.pathparse` -- pathname manipulation on string basis ======================================================================== .. module:: pathparse :synopsis: pathname manipulation on string basis without file access .. moduleauthor:: Jean-Peer Lorenz """ import urlparse import urllib import datetime import types from sbackup.util import log from sbackup.util import system from sbackup.util import exceptions #TODO: Do we need to implement this module per backend? # uri schemes are used in legacy configuration files # we distinct between those two because of ssh/sftp # we use ssh and sftp separate: leave the decision to the users URI_SCHEME_LOCAL_FILE = 'file' URI_SCHEME_FTP = 'ftp' URI_SCHEME_SFTP = 'sftp' URI_SCHEME_SSH = 'ssh' # davs support currently disabled due to umount issues #URI_SCHEME_DAVS = 'davs' URI_SCHEME_NFS = 'nfs' URI_SCHEME_SMB = 'smb' VALID_URI_SCHEMES = [ URI_SCHEME_LOCAL_FILE, URI_SCHEME_FTP, URI_SCHEME_SFTP, URI_SCHEME_SSH, URI_SCHEME_NFS, URI_SCHEME_SMB # URI_SCHEME_DAVS ] # effective uri schemes are used for actual mount process of remote hosts URI_SCHEME_EFF_LOCAL_FILE = URI_SCHEME_LOCAL_FILE URI_SCHEME_EFF_FTP = URI_SCHEME_FTP #URI_SCHEME_EFF_DAVS = URI_SCHEME_DAVS URI_SCHEME_EFF_SFTP = URI_SCHEME_SFTP URI_SCHEME_EFF_SSH = URI_SCHEME_SSH URI_SCHEME_EFF_NFS = URI_SCHEME_NFS URI_SCHEME_EFF_SMB = URI_SCHEME_SMB VALID_EFF_URI_SCHEMES = [ URI_SCHEME_EFF_LOCAL_FILE, URI_SCHEME_EFF_FTP, URI_SCHEME_EFF_SFTP, URI_SCHEME_EFF_SSH, URI_SCHEME_EFF_NFS, URI_SCHEME_EFF_SMB # URI_SCHEME_EFF_DAVS ] URI_SCHEME_TO_EFF_URI_SCHEME = { URI_SCHEME_LOCAL_FILE : URI_SCHEME_EFF_LOCAL_FILE, URI_SCHEME_FTP : URI_SCHEME_EFF_FTP, URI_SCHEME_SFTP : URI_SCHEME_EFF_SFTP, URI_SCHEME_SSH : URI_SCHEME_EFF_SSH, URI_SCHEME_NFS : URI_SCHEME_EFF_NFS, URI_SCHEME_SMB : URI_SCHEME_EFF_SMB # URI_SCHEME_DAVS : URI_SCHEME_EFF_DAVS } class UriParser(object): def __init__(self): # the full destination uri i.e. uri scheme + server + path/directory as originally given self.__uri = "" self.__uri_scheme = "file" self.__eff_scheme = "" self.__hostname = "" self.__path = "" self.__port = None self.__username = None self.__password = None self.__clear() @property def uri(self): return self.__uri @property def uri_scheme(self): """Get current URI scheme retrieved from given URI. This is not the effective scheme.""" return self.__uri_scheme @property def hostname(self): return self.__hostname @property def path(self): return self.__path @property def port(self): _port = self.__port if _port is None: _port = "" return str(_port) @property def username(self): _user = self.__username if _user is None: _user = "" return _user @property def password(self): _pass = self.__password if _pass is None: _pass = "" return _pass def __clear(self): self.__uri = "" self.__uri_scheme = "file" self.__eff_scheme = "" self.__hostname = "" self.__path = "" self.__port = None self.__username = None self.__password = None def __str__(self): if self.__password is None: _pass = "None" else: _pass = "*" * len(self.__password) _res = [ #"URI: `%s`" % self.__uri, "Display name: %s" % self.query_display_name(), "URI scheme: %s" % self.__uri_scheme, "eff. scheme: %s" % self.__eff_scheme, "Hostname: `%s`" % self.__hostname, "Path: `%s`" % self.__path, "Port: %s" % self.__port, "Username: `%s`" % self.__username, "Password: `%s`" % _pass ] _res_str = "\n".join(_res) return _res_str def set_and_parse_uri(self, uri): _logger = log.LogFactory.getLogger() # contains password in plain text # _logger.debug("set and parse uri: %s" % uri) self.__clear() splituri = urlparse.urlsplit(uri, scheme = "", allow_fragments = False) self.__uri = splituri.geturl() # gets normalized URI splituri = urlparse.urlsplit(self.__uri, scheme = "", allow_fragments = False) # print "\nSplit uri:\n" # print "url: %s" % splituri.geturl() # print "scheme: %s" % splituri.scheme #IGNORE:E1103 # print "netloc: %s" % splituri.netloc #IGNORE:E1103 # print "path: %s" % splituri.path #IGNORE:E1103 # print "query: %s" % splituri.query #IGNORE:E1103 # print "fragment: %s" % splituri.fragment #IGNORE:E1103 # print "username: %s" % splituri.username # print "password: ????" # print "hostname: %s" % splituri.hostname # print "port: %s" % splituri.port # print "-------------------------" assert splituri.fragment == "" #IGNORE:E1103 assert splituri.query == "" #IGNORE:E1103 #LP #670646 ignore errors parsing port try: if splituri.port is not None: self.__port = splituri.port except ValueError: pass if splituri.username is not None: self.__username = urllib.unquote(splituri.username) if splituri.password is not None: self.__password = urllib.unquote(splituri.password) if splituri.hostname is None: self.__hostname = "" else: self.__hostname = splituri.hostname self.__path = urllib.quote(splituri.path) #IGNORE:E1103 # self.__uri_scheme = splituri.scheme #IGNORE:E1103 if splituri.scheme == "" and self.__uri.startswith("/"): #IGNORE:E1103 self.__uri_scheme = "file" else: self.__uri_scheme = splituri.scheme #IGNORE:E1103 self.__eff_scheme = _get_eff_uri_scheme(self.__uri_scheme) _logger.debug("UriParser:\n%s" % self) def __construct_display_name(self): _path = urllib.unquote(self.__path) if self.is_local(): _res = _path else: _user = "" _host = "" if self.__username is not None: _user = "%s@" % self.__username if self.__hostname is not None: _host = "%s" % self.__hostname _res = "%s://%s%s%s" % (self.__uri_scheme, _user, _host, _path) return _res def query_mount_uri(self): """ Include user in uri being mounted to maintain compliance with Nautilus mounts. """ _logger = log.LogFactory.getLogger() _host = "" if self.__hostname is not None: _host = "%s" % self.__hostname.rstrip("/") _user = "" if self.__username is not None: _user = "%s@" % urllib.quote(self.__username, "") _path = self.__path.strip("/") if _path != "": _path = "/%s" % _path _port = "" if self.__port is not None: _port = ":%s" % self.__port _res = "%s://%s%s%s%s" % (self.__eff_scheme, _user, _host, _port, _path) _logger.debug("get_mount_uri: %s" % _res) return _res def is_local(self): _local = False if self.__eff_scheme == "": raise ValueError("Effective scheme not set") if self.__eff_scheme == URI_SCHEME_EFF_LOCAL_FILE: _local = True return _local def query_display_name(self): return self.__construct_display_name() def construct_remote_uri_from_tupel(scheme, hostname, port, path, username, password): _logger = log.LogFactory.getLogger() if not isinstance(scheme, types.StringTypes): raise TypeError if not isinstance(hostname, types.StringTypes): raise TypeError if not isinstance(port, types.StringTypes): raise TypeError if not isinstance(path, types.StringTypes): raise TypeError if not isinstance(username, types.StringTypes): raise TypeError if not isinstance(password, types.StringTypes): raise TypeError if scheme not in VALID_URI_SCHEMES: raise ValueError # Within the user and password field, any ":", "@", or "/" must be encoded. _host = hostname.rstrip("/") _user = urllib.quote(username, "") _pass = "" _port = "" _path = path.strip("/") if _path != "": _path = "/%s" % _path if password != "": _pass = urllib.quote(password, "") _pass = ":%s" % _pass if _user != "" or _pass != "": _host = "@%s" % hostname if port != "": _port = ":%s" % port _res = "%s://%s%s%s%s%s" % (scheme, _user, _pass, _host, _port, _path) _logger.debug("construct_from_remote_tupel: %s" % _res) return _res #def _get_eff_uri_scheme(uri, uri_scheme): def _get_eff_uri_scheme(uri_scheme): """ :todo: can we construct the eff. scheme manually? aparently ssh is just hardlinked to sftp. """ # following does not work as expected! # _gfileobj = _GIOFILE(uri) # _uri_scheme = _gfileobj.get_uri_scheme() # _has = _gfileobj.has_uri_scheme(_uri_scheme) # if _has != True: # raise ValueError("URI scheme `%s` not supported by backend" % _uri_scheme) if uri_scheme not in VALID_URI_SCHEMES: raise exceptions.FileAccessException("URI scheme `%s` not supported by Simple Backup" % uri_scheme) _eff_scheme = URI_SCHEME_TO_EFF_URI_SCHEME[uri_scheme] if _eff_scheme not in VALID_EFF_URI_SCHEMES: raise exceptions.FileAccessException("Eff. URI scheme `%s` not supported by Simple Backup"\ % _eff_scheme) return _eff_scheme def append_time_to_filename(filename, filetype = ""): if not isinstance(filename, types.StringTypes): raise TypeError("Expected string. Got %s instead." % type(filename)) if not isinstance(filetype, types.StringTypes): raise TypeError("Expected string as file type. Got %s instead." % type(filetype)) if filetype != "" and not filetype.startswith("."): raise ValueError("Given file type must start with dot (.xyz).") _time = datetime.datetime.now().isoformat("_").replace(":", ".") _res = append_str_to_filename(filename, _time, filetype) return _res def append_str_to_filename(filename, str_to_append, filetype = ""): """If a file type (i.e. file extension) is specified, the string to append is put in front of the file type extension. Example: string to append = 123 filename = basename.log result without specifying a filetype = basename.log.123 result with specifying filetype '.log' = basename.123.log """ if not isinstance(filename, types.StringTypes): raise TypeError("Expected string as filename. Got %s instead." % type(filename)) if not isinstance(str_to_append, types.StringTypes): raise TypeError("Expected string to append. Got %s instead." % type(str_to_append)) if not isinstance(filetype, types.StringTypes): raise TypeError("Expected string as file type. Got %s instead." % type(filetype)) if filetype != "" and not filetype.startswith("."): raise ValueError("Given file type must start with dot (.xyz).") _filen = filename _ext = "" if filetype != "": if filename.endswith(filetype): _filen = filename.rstrip(filetype) _res = "%s.%s%s" % (_filen, str_to_append, filetype) return _res def remove_trailing_sep(path): spath = path.rstrip(system.PATHSEP) return spath def remove_leading_sep(path): spath = path.lstrip(system.PATHSEP) return spath def ensure_leading_sep(path): spath = "%s%s" % (system.PATHSEP, remove_leading_sep(path)) return spath def joinpath(*args): """Concatenates given paths (i.e. concatenates them and removes trailing separators). """ if len(args) == 0: _path = system.PATHSEP else: _path = "" for _arg in args: _path = "%s%s%s" % (_path, system.PATHSEP, remove_leading_sep(_arg)) if not args[0].startswith(system.PATHSEP): _path = remove_leading_sep(_path) _path = remove_trailing_sep(_path) return _path sbackup-0.11.6/src/sbackup/util/structs.py0000644000175000017500000003343012216122130017145 0ustar peerpeer# Simple Backup - Basic data structures # # Copyright (c)2009-2010: Jean-Peer Lorenz # Copyright (c)2007: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import os from sbackup.util.exceptions import SBException from sbackup.util.exceptions import CorruptedSBdictException class Singleton(type): def __init__(cls, name, bases, dic): #IGNORE:C0203 type.__init__(cls, name, bases, dic) cls.instance = None def __call__(self, *args, **kw): #IGNORE:C0203 if self.instance is None: self.instance = type.__call__(self, *args, **kw) return self.instance class SBdict(dict) : """ This is a structure used by sbackup to store flist and fprops . The structure is in fact a tree meant to : - ease the retrieval of the content of a folder - to optimise the use of memory to store the flist file by avoiding to store identical subpath. The flist file has this contents : /home /home/wattazoum /home/wattazoum/Desktop /home/wattazoum/Desktop/sbackup-test /home/wattazoum/Desktop/sbackup-test/d17 /home/wattazoum/Desktop/sbackup-test/d17/d3 /home/wattazoum/Desktop/sbackup-test/d17/d3/f4.txt /home/wattazoum/Desktop/sbackup-test/d17/d2 /home/user/Desktop/sbackup-test/d17/d3/f4.txt The goal of SBdict is to store the data this way /home ->wattazoum ->Desktop ->sbackup-test ->d17 ->d3 ->f4.txt ->d2 ->user ->Desktop ->sbackup-test ->d17 ->d3 ->f4.txt We use for that this node : { 'file' : [ 'props', sonNode ] } Example : { 'home' : [ 'props', { 'wattazoum' : [ 'props', { 'Desktop' : [ 'props', { 'sbackup-test' : [ 'props', { 'd17' : [ 'props', { 'd3' : [ 'props', { 'f4.txt' : [ 'props', None ] } ] , 'd2' : [ 'props', None ] } ] } ] } ] } ] , 'user' : [ 'props', { 'Desktop' : [ 'props', { 'sbackup-test' : [ 'props', { 'd17' : [ 'props', { 'd3' : [ 'props', { 'f4.txt' : [ 'props', None ] } ] } ] } ] } ] } ] } ] } We can save the memory for all subpathes but then, we might have a lost of speed when doing some search (comparing to putting the whole file in a Dictionary). @note: And yes, this penalty in speed is notable! We should replace it or at least provide a faster alternative. """ def __init__(self, mapping = None): if not mapping : dict.__init__(self) else : if type(mapping) == list and type(mapping[0]) == tuple and len(mapping[0]) == 2 : dict.__init__(self) for key, value in mapping : self.__setitem__(key, value) else : raise Exception ("Not implemented yet") # def __str__(self): # _out = [] # for _item in self: # _out.append("%s" % _item) # return "\n".join(_out) def getSon(self, path) : """ get the son SBdict of a path @param path: the path to get the son of @return: a SBdict or None if there were no son """ if self.has_key(path) : return self[path][1] else : raise SBException("'%s' not in SBdict" % path) def setSon(self, path, son): """ Set the son of a path (/!\ the props of the path will be set to None if the key didn't exist ) @param path: the path to set the son on @param son: the son as a SBdict """ if son != None and type(son) != SBdict : raise CorruptedSBdictException("You can't set '%s' as a son " % str(son)) if not self[path] or self[path][0] == None : self.__setitem__(path, [None, son]) else : self.__setitem__(path, [self[path][0], son]) def has_key(self, key) : """ Return True if the path have been found and false if not @param key: a path to search (/home/user/test/dir ) """ splited = key.split(os.sep, 1) if not dict.has_key(self, splited[0]) : return False else : # base dir found, we look for the son # if the son is empty, we found our element if len(splited) == 1 or not splited[1] : return True if self[splited[0]][1] != None : if type(self[splited[0]][1]) == SBdict : return self[splited[0]][1].has_key(splited[1]) else : raise CorruptedSBdictException("The value stored in the SBdict is Invalid : " + str(type(self[splited[0]][1]))) else : return False def __setitem__(self, key, value) : """ Add an item @param key: a string @param value: Value must be None , a String or a 2 length list with None or an SBdict on the second member @raise CorruptedSBdictException: """ valIsSubtree = False if value != None : if type(value) == list and len(value) == 2 and (value[1] is None or (value[1] != None and type(value[1]) == SBdict)) : valIsSubtree = True splited = key.split(os.sep, 1) if len(splited) == 1 or not splited[1] : # we are at the end of a path # we fallback to the normal behaviour if dict.has_key(self, splited[0]) : # The key exists item = dict.__getitem__(self, splited[0]) if not valIsSubtree : prop = value dict.__setitem__(self, splited[0], [prop, item[1]]) else : prop = value[0] if value[1] == None : dict.__setitem__(self, splited[0], [prop, item[1]]) else : dict.__setitem__(self, splited[0], value) else : #the key doesn't exist if not valIsSubtree : dict.__setitem__(self, splited[0], [value, None]) else : dict.__setitem__(self, splited[0], value) else : # path is composed , # we check if the base dir exists and get the props infos if dict.has_key(self, splited[0]) : item = dict.__getitem__(self, splited[0]) prop = item[0] if item[1] != None : if type(item[1]) != SBdict : raise CorruptedSBdictException("The value stored in the SBdict is Invalid : " + str(item[1])) son = item[1] else : son = SBdict() else: # get the properties of the base dir #s = os.lstat(splited[0]) #prop = str(s.st_mode)+str(s.st_uid)+str(s.st_gid)+str(s.st_size)+str(s.st_mtime) prop = None son = SBdict() son.__setitem__(splited[1], value) dict.__setitem__(self, splited[0], [prop, son]) def __delitem__(self, key): """ """ if not self.has_key(key) : return False if key == os.sep : dict.__delitem__(self, "") return True else : spl = key.rstrip(os.sep).split(os.sep) nkey = os.sep.join(spl[:len(spl) - 1]) last = spl[len(spl) - 1] dict.__delitem__(self.getSon(nkey), last) return True def __getitem__(self, key) : """ Return the item Value @param key: a path to search (/home/user/test/dir ) @return: False if the item is not found """ splited = key.split(os.sep, 1) if not dict.has_key(self, splited[0]) : return False else : # base dir found, we look for the son # if the son is empty, we found our element if len(splited) == 1 or not splited[1] : return dict.__getitem__(self, splited[0]) if self[splited[0]][1] != None : if type(self[splited[0]][1]) == SBdict : return self[splited[0]][1].__getitem__(splited[1]) else : raise CorruptedSBdictException("The value stored in the SBdict is Invalid : " + str(type(self[splited[0]][1]))) else : return False def iterkeys(self, _path = None) : """Returns an iterator that goes recursively through the full paths. Should return fullpath (means what?) """ if _path is None: # initialization _path = [] for dirname, (props, son) in dict.iteritems(self): _path.append(dirname) yield os.sep.join(_path) if son is None: _path.pop() else: for path in son.iterkeys(_path): yield path if len(_path) > 0 : _path.pop() def iteritems(self, _path = None) : """Iterator that goes recursively through the whole dictionary and returns paths and their properties. Every sub-path is considered. @return: (fullpath, props) """ if _path is None: # initialization _path = [] for dirname, (props, son) in dict.iteritems(self): _path.append(dirname) yield (os.sep.join(_path), props) if son is None: _path.pop() else: for path, prop in son.iteritems(_path): yield (path, prop) if len(_path) > 0 : _path.pop() def itervalues(self, _path = None) : """ an Iterator that gets recursively the full path Should return props """ if _path is None: # initialization _path = [] for dirname, (props, son) in dict.iteritems(self): _path.append(dirname) yield props if son is None: _path.pop() else: for prop in son.itervalues(_path): yield prop if len(_path) > 0 : _path.pop() def iterFirstItems(self, _path = None): """ an Iterator that gets recursively the path off first items Should return props """ if _path is None: # initialization _path = [] for dirname, (props, son) in dict.iteritems(self): _path.append(dirname) if props != None : yield os.sep.join(_path) _path.pop() else: if son is not None : for path in son.iterFirstItems(_path): yield path else : raise SBException("getting to an ending file without properties") if len(_path) > 0 : _path.pop() def getEffectiveFileList(self, path = None): """Iterator that returns the effective files list. Effective means that all 'end-nodes' or leafs of the tree are returned. Unlike method `iterkeys` are *not* all sub-paths returned. Paths are included in the effective list of files if their `props` are set (i.e. set to 0 or 1, not set to None) since this is not true for sub-paths. Moreover, paths can be 'disabled' (i.e. excluded from the effective list of files) by setting their `props` to None. """ for _file, _prop in self.iteritems(path): if _prop is not None: yield _file def get_eff_filelist_not_nested(self, path = None): """ an Iterator that return the effective files list to give to TAR. This means, some files won't appear because they are part of an included sub directory """ for _file in self.getEffectiveFileList(path): if not self.hasParentDirIncluded(_file) : yield _file def hasFile(self, _file): """Checks if the SBdict has a file. Unlike has_key, this will not match subdirectories name """ if not self.has_key(_file) : return False else : if self.__getitem__(_file)[0] is None : return False else : return True def contains_path(self, path): """Checks whether the given `path` is stored in this SBDict. Unlike `hasFile` this will also match sub-directories. """ if self.has_key(path) : return True return False def hasParentDirIncluded(self, path): """ Checks for a path if we have an effective parent dir @param path: The path to check @type path: like /d/d1/d2 """ if not path: return False splited = path.rsplit(os.sep, 1) _basename = splited[0] if self.__getitem__(_basename)[0] is not None: return True else: return self.hasParentDirIncluded(_basename) sbackup-0.11.6/src/sbackup/util/lock.py0000644000175000017500000001320712216122130016366 0ustar peerpeer# Simple Backup - lock file facilities # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`lock` --- lock file facilities ================================================ .. module:: lock :synopsis: Provides common lock file facilities .. moduleauthor:: Jean-Peer Lorenz """ from gettext import gettext as _ import types import os from sbackup.util import local_file_utils from sbackup.util import system from sbackup.util import exceptions from sbackup.util import log class ApplicationLock(object): def __init__(self, lockfile, processname, pid): if not isinstance(lockfile, types.StringTypes): raise TypeError("String for parameter `lockfile`expected") if not isinstance(processname, types.StringTypes): raise TypeError("String for parameter `processname`expected") if not isinstance(pid, types.IntType): raise TypeError("String for parameter `pid`expected") self.__lockfile = lockfile self.__processname = processname self.__pid = pid self.__logger = log.LogFactory.getLogger() def __prepare_lock_dir(self): _dir = os.path.dirname(self.__lockfile) if not local_file_utils.path_exists(_dir): try: os.mkdir(_dir) os.chmod(_dir, 0777) except (OSError, IOError), error: self.__logger.error("Unable to make lock directory: %s" % error) raise exceptions.ApplicationLockError def lock(self): """Sets a lock file. In 0.3 following changes take effect: * use fixed location (users and superusers); ignore settings in configuration files * existence of directory `sbackup` with mode 777 is assumed (no sticky bit set) """ self.__prepare_lock_dir() if local_file_utils.path_exists(self.__lockfile): if self.__is_lock_valid() is True: raise exceptions.InstanceRunningError(\ _("Another application instance is already running.")) else: self.__logger.info(_("Invalid lock file found. Is being removed.")) self.__force_unsetlock() try: local_file_utils.writetofile(self.__lockfile, str(self.__pid)) self.__logger.debug("Created lockfile `%s` with info `%s`." % (self.__lockfile, str(self.__pid))) except (OSError, IOError), error: self.__logger.error("Unable to create lock: %s" % error) raise exceptions.ApplicationLockError def __is_lock_valid(self): valid = False if local_file_utils.path_exists(self.__lockfile): # the lockfile exists, is it valid? try: last_pid = local_file_utils.readfile(self.__lockfile) last_pid = int(last_pid) except (OSError, IOError, ValueError), error: self.__logger.error("Error while reading lockfile: %s" % str(error)) last_pid = None if last_pid is not None: if system.pid_exists(pid = str(last_pid), processname = self.__processname): valid = True return valid def __is_lock_owned(self): owned = False if local_file_utils.path_exists(self.__lockfile): # the lockfile exists, is it valid? try: last_sb_pid = local_file_utils.readfile(self.__lockfile) last_sb_pid = int(last_sb_pid) except (OSError, IOError, ValueError), error: self.__logger.error("Error while reading lockfile: %s" % str(error)) last_sb_pid = None if last_sb_pid is not None: if last_sb_pid == self.__pid: owned = True return owned def unlock(self): """Remove lockfile. """ if local_file_utils.path_exists(self.__lockfile): if self.__is_lock_owned(): try: local_file_utils.delete(self.__lockfile) self.__logger.debug("Lock file '%s' removed." % self.__lockfile) except (OSError, IOError), _exc: self.__logger.error(_("Unable to remove lock file: %s") % str(_exc)) else: self.__logger.debug("Unable to remove lock: not owned by this process.") else: self.__logger.warning(_("Unable to remove lock file: File not found.")) def __force_unsetlock(self): """Remove lockfile. """ if local_file_utils.path_exists(self.__lockfile): try: local_file_utils.delete(self.__lockfile) self.__logger.debug("Lock file '%s' removed." % self.__lockfile) except (OSError, IOError), _exc: self.__logger.error(_("Unable to remove lock file: %s") % str(_exc)) else: self.__logger.info(_("Unable to remove lock file: File not found.")) sbackup-0.11.6/src/sbackup/util/notifier.py0000644000175000017500000000730012216122130017252 0ustar peerpeer# Simple Backup - general observer-notfifier implementation # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # from sbackup.util import constants # Handling of states and information provided by Dbus objects is # not ideal. Improve! class Subject(object): def __init__(self): self._observers = [] def attach(self, observer): if not observer in self._observers: self._observers.append(observer) def detach(self, observer): if observer in self._observers: self._observers.remove(observer) def notify(self, modifier = None): for observer in self._observers: if modifier != observer: observer.update(self) class Observer(object): def update(self, subject): raise NotImplementedError("Abstract method must be overridden in "\ "derived class!") class SBackupState(Subject): """Represents a single state and according data within the backup process. Whenever interesting data changes one can change the state and it is published to registered observers. :todo: Add type checking in setter methods! """ def __init__(self): Subject.__init__(self) self.__state = 'unknown' self.__urgency = 'info' self.__profilename = constants.PROFILE_UNKNOWN self.__space_required = constants.SPACE_REQUIRED_UNKNOWN self.__is_full = -1 self.__target = constants.TARGET_UNKNOWN self.__recent_error = 'None' self.clear_backup_properties() def clear_backup_properties(self): self.__profilename = constants.PROFILE_UNKNOWN self.__space_required = constants.SPACE_REQUIRED_UNKNOWN self.__is_full = -1 self.__target = constants.TARGET_UNKNOWN def set_state(self, state): """Observers are only notified, if the state has changed. """ self.__state = state self.notify() def get_state(self): return self.__state def set_urgency(self, urgency): """The urgency is used to distinguish several types of events. There are following urgencies: -critical -error -warning -info. """ self.__urgency = urgency def get_urgency(self): return self.__urgency def set_profilename(self, profilename): self.__profilename = profilename def get_profilename(self): return self.__profilename def set_recent_error(self, recent_error): self.__recent_error = recent_error def get_recent_error(self): return self.__recent_error def set_is_full(self, is_full): self.__is_full = is_full def set_target(self, target): self.__target = target def get_target(self): return self.__target def set_space_required(self, space): self.__space_required = space def get_space_required(self): return self.__space_required sbackup-0.11.6/src/sbackup/util/dbus_support.py0000644000175000017500000006241712216122130020176 0ustar peerpeer# Simple Backup - support of DBus functionality # # Copyright (c)2008-2010,2013: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`dbus_support` --- support of DBus functionality ==================================================================== .. module:: dbus_support :synopsis: Provides support of DBus functionality .. moduleauthor:: Jean-Peer Lorenz """ import os import time import types import dbus from sbackup import dbus_service from sbackup.util import log from sbackup.util import notifier from sbackup.util import structs from sbackup.util import constants from sbackup.util import system from sbackup.util import exceptions from sbackup.util import get_resource_file #DBUS_CONNECT_TIMEOUT_TOTAL_SECONDS = 15 # for given number of trials #DBUS_CONNECT_MAX_TRIALS = 3 DBUS_COMMUNICATE_PAUSE_SECONDS = 0.5 # seconds KWARG_DBUS_INTERFACE = "dbus_interface" class _DBusConnection(object): """Abstract base class that provides functionality for sending signals and calling methods over the dbus. """ def __init__(self, name): """Default constructor. :param logger: Instance of logger to be used. """ self._logger = log.LogFactory.getLogger() #TODO: maybe it is better to retrieve the logger on demand? self._name = name self._id = "" self._system_bus = None self._backup_obj = None self._connection_obj = None self._connected = False self._dbus_id = None self.__clear() def __clear(self): self._id = "" self._system_bus = None self._backup_obj = None self._connection_obj = None self._connected = False self._dbus_id = None def get_is_connected(self): return self._connected # def __do_connect(self, service, path, silent = False): # """Private helper method for connecting to service (i.e. importing the # remote object via DBus). # """ # remote_obj = None # timeout = DBUS_CONNECT_TIMEOUT_TOTAL_SECONDS # max_trials = DBUS_CONNECT_MAX_TRIALS # dur = timeout / max_trials # # trials = 0 # trials performed # connecting = True # while connecting: # try: # trials += 1 # self._logger.debug("Trying to connect to `%s` (trial no. %s)" % (service, # trials)) # remote_obj = self._system_bus.get_object(service, path) # connecting = False # if not silent: # self._logger.info("successfully connected to `%s` provided by `%s`" % (path, service)) # except dbus.DBusException, error: # if not silent: # self._logger.error("Error while getting service:\n%s" % (str(error))) # if trials == max_trials: # self._logger.debug("Number of max. trials reached - timeout!") # connecting = False # remote_obj = None # else: # self._logger.debug("Waiting %s sec. before re-connecting" % dur) # time.sleep(dur) # return remote_obj def __do_connect(self, service, path, silent = False): """Private helper method for connecting to service (i.e. importing the remote object via DBus). """ remote_obj = None try: self._logger.debug("Trying to connect to `%s`" % service) remote_obj = self._system_bus.get_object(service, path) if not silent: self._logger.info("successfully connected to `%s` provided by `%s`" % (path, service)) except dbus.DBusException, error: if not silent: self._logger.error("Error while getting service:\n%s" % (str(error))) remote_obj = None return remote_obj def connect(self, silent = True): """Connects passively to DBus service and registers this connection at the service. The service id is stored for later checks of the validity of the connection. Remote objects are set to None in case of failure. """ self.test_validity() if self._connected is True: if not silent: self._logger.info("Connection is already established.") else: _failure = False try: self._system_bus = dbus.SystemBus() self._backup_obj = self.__do_connect(constants.DBUS_SERVICE, constants.DBUS_OBJ_PATH, silent) self._connection_obj = self.__do_connect(constants.DBUS_SERVICE, constants.DBUS_CONNECTION_OBJ_PATH, silent) if (self._connection_obj is not None) and (self._backup_obj is not None): pid = os.getpid() self._id = self._connection_obj.register_connection(self._name, str(pid)) self._dbus_id = self._connection_obj.get_id() self._logger.debug("Registered with id: %s" % self._id) self._connected = True else: _failure = True error = "Unable to get remote object" except dbus.DBusException, error: _failure = True if _failure is True: self.__clear() if not silent: self._logger.error("Error while connecting to DBus service: %s" % error) else: self.test_validity() # if self._connected: # if not silent: # self._logger.info("Successfully connected to Dbus service with id: %s" % self._dbus_id) # else: # self._logger.warning("Unable to connect to Dbus service") def test_validity(self): """Tests whether connection is valid, i.e. exists and is the same connection as originally connected to. If connection is `invalid` everything is cleared and external callers (that use this instance) are required to call `connect` again. Moreover, it is required to re-connect any signal handlers. (This method does not return the result of the test due to CQS. Call `get_is_connected` instead.) """ valid = False failure = False dbus_id = None if self._connection_obj is not None: try: dbus_id = self._connection_obj.get_id() except dbus.DBusException, error: self._logger.error("Unable to get service while testing availibility: %s" % (str(error))) dbus_id = None failure = True if self._backup_obj is not None: try: self._backup_obj.get_backup_pid() except dbus.DBusException, error: self._logger.error("Unable to get service while testing availibility: %s" % (str(error))) failure = True if (failure is False) and (dbus_id is not None)\ and (self._id is not None) and (dbus_id == self._dbus_id): valid = True else: valid = False if valid is False: self.__clear() def quit(self): res = True if self._connected is True: if self._id != "": if self._connection_obj is not None: try: res = bool(self._connection_obj.unregister_connection(self._id)) except dbus.DBusException, error: self._logger.warning("Unable to unregister connection: %s" % (str(error))) res = False if res is True: self._logger.debug("Connection was successfully unregistered.") else: self._logger.warning("Unable to unregister connection (failed).") # else: # print "WARN: Unable to unregister connection (no client id)." # avoid warning when calling this method as singleton self.__clear() return res class DBusProviderFacade(_DBusConnection): """This class provides functionality for sending signals and calling methods over the dbus. The Dbus connection is only created on demand. In the case the user don't want to use it, no connection is created. The Provider is the only class that is able to send an Exit signal over the dbus. :todo: Singleton! """ __metaclass__ = structs.Singleton def __init__(self, name): """Default constructor. """ _DBusConnection.__init__(self, name) def _launch_dbusservice(self): """Launches the DBus service and establishes a placeholder connection in order to keep the service alive as long as this application is running. Call `finalize` to close the connection properly when terminating the application. """ dbus_launcher = get_resource_file(constants.DBUSSERVICE_FILE) system.exec_command_async(args = [dbus_launcher, "start"]) time.sleep(DBUS_COMMUNICATE_PAUSE_SECONDS) def ensure_connectivity(self): """Tests whether a connection is established and if not tries to connect. If necessary, the service is being launched. """ self.test_validity() if self.get_is_connected() is False: self.connect() if self.get_is_connected() is False: raise exceptions.DBusException("Unable to launch DBus service") assert self._connected is True assert self._backup_obj is not None assert self._connection_obj is not None def connect(self, silent = False): """Connects actively to DBus service and registers this connection at the service. If necessary, the service is being launched. The service id is stored for later checks of the validity of the connection. """ if dbus_service.is_running() is False: self._launch_dbusservice() _DBusConnection.connect(self) def __call_remote(self, func, *args, **kwargs): """Helper method for setter and signal emitter. """ if not kwargs.has_key(KWARG_DBUS_INTERFACE): kwargs[KWARG_DBUS_INTERFACE] = constants.DBUS_INTERFACE res = False # we can not re-connect from this method since this would make given callable func invalid if self.get_is_connected() is True: try: res = func(*args, **kwargs) except dbus.DBusException, error: self._logger.error("Error while DBus operation in `__call_remote`: %s\n(%s(%s, %s))" % \ (error, str(func), str(args), str(kwargs))) res = False res = bool(res) return res def emit_event_signal(self, event, urgency): """Used for sending a generic event over the signal dbus. This includes informations and warnings. :param event: the actually processed event :param urgency: how urgent the message is """ if not isinstance(event, types.StringTypes): raise TypeError("Parameter `event` of string type expected. Got %s instead." % str(type(event))) if not isinstance(urgency, types.StringTypes): raise TypeError("Parameter `urgency` of string type expected. Got %s instead." % str(type(urgency))) self.ensure_connectivity() res = self.__call_remote(self._backup_obj.emit_event_signal, event, urgency) assert isinstance(res, types.BooleanType) return res def emit_error_signal(self, error): """Used for sending an error signal over the signal dbus. :param profile: name of the current profile :param error: error message to be passed """ if not isinstance(error, types.StringTypes): raise TypeError("Parameter of string type expected. Got %s instead." % str(type(error))) self.ensure_connectivity() res = self.__call_remote(self._backup_obj.emit_error_signal, error) assert isinstance(res, types.BooleanType) return res def emit_targetnotfound_signal(self): self.ensure_connectivity() res = self.__call_remote(self._backup_obj.emit_targetnotfound_signal) assert isinstance(res, types.BooleanType) return res def set_backup_pid(self, pid): if not isinstance(pid, types.IntType): raise TypeError("Parameter of integer type expected. Got %s instead." % str(type(pid))) self.ensure_connectivity() res = self.__call_remote(self._backup_obj.set_backup_pid, pid) assert isinstance(res, types.BooleanType) return res def set_target(self, target): if not isinstance(target, types.StringTypes): raise TypeError("Parameter of string type expected. Got %s instead." % str(type(target))) self.ensure_connectivity() res = self.__call_remote(self._backup_obj.set_target, target) assert isinstance(res, types.BooleanType) return res def set_profilename(self, profilename): if not isinstance(profilename, types.StringTypes): raise TypeError("Parameter of string type expected. Got %s instead." % str(type(profilename))) self.ensure_connectivity() res = self.__call_remote(self._backup_obj.set_profilename, profilename) assert isinstance(res, types.BooleanType) return res def set_space_required(self, space): if not isinstance(space, (types.IntType, types.LongType)): raise TypeError("Parameter of string type expected. Got %s instead." % str(type(space))) space = long(space) self.ensure_connectivity() res = self.__call_remote(self._backup_obj.set_space_required, space) assert isinstance(res, types.BooleanType) return res def get_retry_target_check(self): """This method is an exception from intended strict separation of setter/getter methods into Provider/Client objects. Keep this method passive! :todo: Improve design of dbus service related code. """ retval = constants.RETRY_UNKNOWN self.test_validity() if self.get_is_connected() is True: try: retval = self._backup_obj.get_retry_target_check(dbus_interface = constants.DBUS_INTERFACE) except dbus.DBusException, error: self._logger.error("Error while dbus operation in `get_retry_target_check`: %s" % error) retval = constants.RETRY_UNKNOWN return retval def exit(self): """ """ self.ensure_connectivity() self.__call_remote(self._connection_obj.emit_exit_signal) res = self.quit() return res class DBusClientFacade(_DBusConnection): """This class provides functionality for sending signals and calling methods over the dbus. The sender needs a dbus connection. The Dbus connection is only created on demand. In the case the user don't want to use it, no connection is created. """ def __init__(self, name): """Default constructor. """ _DBusConnection.__init__(self, name) def connect_to_event_signal(self, handler): #TODO: raise an exception here when not connected to remote object? self.test_validity() if self.get_is_connected() is True: self._backup_obj.connect_to_signal('event_signal', handler, dbus_interface = constants.DBUS_INTERFACE) def connect_to_error_signal(self, handler): self.test_validity() if self.get_is_connected() is True: self._backup_obj.connect_to_signal('error_signal', handler, dbus_interface = constants.DBUS_INTERFACE) def connect_to_progress_signal(self, handler): self.test_validity() if self.get_is_connected() is True: self._backup_obj.connect_to_signal('progress_signal', handler, dbus_interface = constants.DBUS_INTERFACE) def connect_to_targetnotfound_signal(self, handler): self.test_validity() if self.get_is_connected() is True: self._backup_obj.connect_to_signal('targetnotfound_signal', handler, dbus_interface = constants.DBUS_INTERFACE) def connect_to_alreadyrunning_signal(self, handler): self.test_validity() if self.get_is_connected() is True: self._backup_obj.connect_to_signal('alreadyrunning_signal', handler, dbus_interface = constants.DBUS_INTERFACE) def connect_to_exit_signal(self, handler): signal = "exit_signal" self.test_validity() if self.get_is_connected() is True: self._connection_obj.connect_to_signal(signal, handler, dbus_interface = constants.DBUS_INTERFACE) def get_backup_pid(self): retval = constants.PID_UNKNOWN self.test_validity() if self.get_is_connected() is True: try: retval = self._backup_obj.get_backup_pid(dbus_interface = constants.DBUS_INTERFACE) except dbus.DBusException, error: self._logger.error("Error while dbus operation in `get_backup_pid`: %s" % error) retval = constants.PID_UNKNOWN return retval def get_target(self): retval = constants.TARGET_UNKNOWN self.test_validity() if self.get_is_connected() is True: try: retval = self._backup_obj.get_target(dbus_interface = constants.DBUS_INTERFACE) except dbus.DBusException, error: self._logger.error("Error while dbus operation in `get_target`: %s" % error) retval = constants.TARGET_UNKNOWN return retval def get_profilename(self): retval = constants.PROFILE_UNKNOWN self.test_validity() if self.get_is_connected() is True: try: retval = self._backup_obj.get_profilename(dbus_interface = constants.DBUS_INTERFACE) except dbus.DBusException, error: self._logger.error("Error while dbus operation in `get_profilename`: %s" % error) retval = constants.PROFILE_UNKNOWN return retval def get_space_required(self): retval = constants.SPACE_REQUIRED_UNKNOWN self.test_validity() if self.get_is_connected() is True: try: retval = self._backup_obj.get_space_required(dbus_interface = constants.DBUS_INTERFACE) except dbus.DBusException, error: self._logger.error("Error while dbus operation in `get_space_required`: %s" % error) retval = constants.SPACE_REQUIRED_UNKNOWN return retval def set_retry_target_check(self, retry): """This method is an exception from intended strict separation of setter/getter methods into Provider/Client objects. :todo: Improve design of dbus service related code. """ res = False self.test_validity() if self.get_is_connected() is True: try: res = self._backup_obj.set_retry_target_check(retry, dbus_interface = constants.DBUS_INTERFACE) except dbus.DBusException, error: self._logger.error("Error while setting value for `retry_target_check`: %s" % error) res = False else: self._logger.warning("Unable to set value for `retry_target_check`: No connection available.") res = bool(res) return res def emit_alreadyrunning_signal(self): res = False self.test_validity() if self.get_is_connected() is True: try: res = self._backup_obj.emit_alreadyrunning_signal(dbus_interface = constants.DBUS_INTERFACE) except dbus.DBusException, error: self._logger.error("Error while emitting `alreadyrunning_signal`: %s" % error) res = False else: self._logger.warning("Unable to emit `alreadyrunning_signal`: No connection available.") res = bool(res) return res class DBusNotifier(notifier.Observer): """Sends notifications as signals over the DBus. It uses an instance of DBusConnection for signaling. """ def __init__(self): notifier.Observer.__init__(self) self.__state = None self.__urgency = None self.__profilename = None self.__recent_error = None self.__target = None self.__space_required = None self.__logger = log.LogFactory.getLogger() self.__dbus = None def initialize(self): self.__setup_dbus() def publish_exit(self): """ :todo: Rename into something better (e.g. publish_exit?) """ try: self.__dbus.exit() except exceptions.DBusException: self.__logger.warning("Unable to publish exit over D-Bus") def __setup_dbus(self): self.__dbus = DBusProviderFacade(constants.DBUS_NOTIFIER_NAME) self.__dbus.connect() def update(self, subject): """Interface method for observer objects that is called by the observed subject. In the case of the `DBusNotifier` were notifications send over the bus. """ self.__logger.debug("Observer update") self.__state = subject.get_state() self.__urgency = subject.get_urgency() self.__profilename = subject.get_profilename() self.__recent_error = subject.get_recent_error() self.__target = subject.get_target() self.__space_required = subject.get_space_required() self.__attempt_notify() def __attempt_notify(self): """Private helper method that actually tries to notify over the DBus about several events. This method decides what signals are send over the bus. :return: the value returned by the signal (usually True) :todo: Remove urgency! """ state = self.__state urgency = self.__urgency self.__logger.debug("state: `%s` - urgency: `%s`" % (state, urgency)) ret_val = False if self.__dbus is not None: try: # update all properties ret_val = self.__dbus.set_target(self.__target) ret_val = self.__dbus.set_profilename(self.__profilename) ret_val = self.__dbus.set_space_required(self.__space_required) if state in ('start', 'finish', 'prepare', 'commit', 'backup-canceled'): ret_val = self.__dbus.emit_event_signal(state, urgency) elif state == 'error': ret_val = self.__dbus.emit_error_signal(str(self.__recent_error)) elif state == 'target-not-found': ret_val = self.__dbus.emit_targetnotfound_signal() else: raise ValueError("STATE UNSUPPORTED (%s)" % state) except exceptions.DBusException: self.__logger.warning("Unable to notifiy over D-Bus") ret_val = False return ret_val def get_session_name(): # a full DE is supposed session = "" gnome_found = False kde_found = False try: bus = dbus.SessionBus() bus.get_object('org.kde.ksmserver', '/KSMServer') session = "kde" kde_found = True except dbus.exceptions.DBusException, error: print "Unable to get KDE Session Manager: %s" % error kde_found = False try: bus = dbus.SessionBus() bus.get_object('org.gnome.SessionManager', '/org/gnome/SessionManager') session = "gnome" gnome_found = True except dbus.exceptions.DBusException, error: print "Unable to get Gnome Session Manager: %s" % error gnome_found = False if gnome_found and kde_found: raise AssertionError("Unable to get non-ambiguous desktop session: Gnome *and* KDE found") return session sbackup-0.11.6/src/sbackup/util/system.py0000644000175000017500000003536212216122130016770 0ustar peerpeer# Simple Backup - Operation System related utilities # # Copyright (c)2010,2013: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # UNIX specific implementations/definitions import os import pwd import grp import stat import subprocess import types import atexit import signal import glib PATHSEP = os.sep UNIX_PERM_ALL_WRITE = stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH UNIX_PERM_GRPOTH_NORWX = ~(stat.S_IRWXG | stat.S_IRWXO) COMMAND_GREP = "grep" COMMAND_PS = "ps" # default values for environment variable if not set # see: http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html # Note: do not remove trailing slashs, it does not work without them! ENVVAR_XDG_DATA_DIRS = "XDG_DATA_DIRS" DEFAULT_XDG_DATA_DIRS = "/usr/local/share/:/usr/share/" ENVVAR_PATH = "PATH" DEFAULT_PATH = "/usr/bin:/usr/local/bin:/bin" CLEAN_ENVIRONMENT = { # default Gnome environment "_" : "", "COLORTERM" : "", "DBUS_SESSION_BUS_ADDRESS" : "", "DEFAULTS_PATH" : "", "DESKTOP_SESSION" : "", "DISPLAY" : "", "GDM_KEYBOARD_LAYOUT" : "", "GDMSESSION" : "", "GDM_LANG" : "", "GNOME_KEYRING_PID" : "", "GNOME_KEYRING_CONTROL" : "", "GPG_AGENT_INFO" : "", "GTK_MODULES" : "", "HISTCONTROL" : "", "HOME" : "", "LANG" : "", "LC_ALL" : "", "LD_LIBRARY_PATH" : "", "LESSCLOSE" : "", "LESSOPEN" : "", "LOGNAME" : "", "MANDATORY_PATH" : "", "MANPATH" : "", "OLDPWD" : "", "PATH" : "", "PWD" : "", "PYTHONPATH" : "", "SESSION_MANAGER" : "", "SHELL" : "", "SHLVL" : "", "SPEECHD_PORT" : "", "SSH_AUTH_SOCK" : "", "TERM" : "", "USER" : "", "USERNAME" : "", "WINDOWID" : "", "XAUTHORITY" : "", "XDG_CONFIG_DIRS" : "", "XDG_DATA_DIRS" : "", "XDG_SESSION_COOKIE" : "", # additional KDE environment variables "KDE_FULL_SESSION" : "", "GS_LIB" : "", "DM_CONTROL" : "", "SSH_AGENT_PID" : "", "XDM_MANAGED" : "", "KDE_SESSION_VERSION" : "", "LD_BIND_NOW" : "", "GTK2_RC_FILES" : "", "WINDOWPATH" : "", "XCURSOR_THEME" : "", "KDE_SESSION_UID" : "", "QT_PLUGIN_PATH" : "" } def get_user_home_dir(): return os.path.expanduser('~') def get_user_config_dir(): _confdir = glib.get_user_config_dir() return _confdir def get_user_data_dir(): _datadir = glib.get_user_data_dir() return _datadir def get_pid(): _pid = os.getpid() return _pid def get_user_from_env(): """Returns the USER defined in current environment. If no USER is set, None is returned. """ _user = os.environ.get("USER", None) return _user def get_user_from_uid(): _user = pwd.getpwuid(os.getuid()).pw_name return _user def is_superuser(): _res = False if os.geteuid() == 0: _res = True return _res def switch_user(uid_name): """ """ starting_uid = os.getuid() # starting_gid = os.getgid() # starting_uid_name = pwd.getpwuid(starting_uid)[0] # print 'switch_user: started as %s/%s' % \ # (pwd.getpwuid(starting_uid).pw_name, # grp.getgrgid(starting_gid).gr_name) # print "UID: %s EUID: %s GID: %s" % (os.getuid(), os.geteuid(), os.getgid()) if os.getuid() != 0: # We're not root so, like, whatever dude # print "switch_user: already running as '%s'" % starting_uid_name return # If we started as root, drop privs and become the specified user/group if starting_uid == 0: # Get the uid/gid from the name running_uid = pwd.getpwnam(uid_name).pw_uid running_gid = pwd.getpwnam(uid_name).pw_gid # Try setting the new uid/gid try: os.setgid(running_gid) except OSError, e: print 'Could not set effective group id: %s' % e try: os.setgroups([running_gid]) except OSError, e: print 'Could not set associated groups: %s' % e try: os.setuid(running_uid) except OSError, e: print 'Could not set effective user id: %s' % e # Ensure a very convervative umask new_umask = 077 old_umask = os.umask(new_umask) # print 'drop_privileges: Old umask: %s, new umask: %s' % \ (oct(old_umask), oct(new_umask)) final_uid = os.getuid() final_gid = os.getgid() print 'drop privileges: running as %s/%s' % \ (pwd.getpwuid(final_uid).pw_name, grp.getgrgid(final_gid).gr_name) def drop_privileges(): switch_user(uid_name = 'nobody') def set_grp(groupname): # [Bug 112540] : Let the admin group have read access to the backup dirs if os.geteuid() == 0: try: _gid = grp.getgrnam(groupname).gr_gid os.setgid(_gid) except KeyError: # LP #696183: print "Group not changed to `%s`: unknown group" % groupname except OSError, error: print "Failed to set GID to `%s`: %s" % (groupname, error) def nice(): os.nice(5) def very_nice(): os.nice(20) def get_environment(): _env = os.environ return _env def set_default_environment(): """Sets required environment variables to their specified default values if not defined. This can happen e.g. some root shells where no environment variable for the freedesktop.org base directories are defined. """ _vars = { ENVVAR_XDG_DATA_DIRS : DEFAULT_XDG_DATA_DIRS, ENVVAR_PATH : DEFAULT_PATH } for var in _vars: val = os.environ.get(var) if val is None: os.environ[var] = _vars[var] def get_process_environment(pid): _envlst = None _envfile = "/proc/%s/environ" % pid try: fobj = open(_envfile, "rb") _envlst = [_var for _var in _readline_nullsep(fobj)] fobj.close() except (OSError, IOError), error: print "Unable to open Gnome session environment: %s." % error _envlst = None _env = None if _envlst is not None: _env = {} for _var in _envlst: if _var != "": _vars = _var.split("=", 1) if len(_vars) != 2: print "Unable to read environment variable '%s'. Skipped." % _var else: _env[_vars[0]] = _vars[1] return _env def get_clean_environment(): _clean_env = {} _env = get_environment() for _var in CLEAN_ENVIRONMENT: _val = _env.get(_var, "") if _val != "": _clean_env[_var] = _val return _clean_env def set_gio_env_from_session(): _set_envvar_from_session(key = 'SSH_AUTH_SOCK') _set_envvar_from_session(key = 'GNOME_KEYRING_CONTROL') _set_envvar_from_session(key = 'GNOME_KEYRING_PID') _set_envvar_from_session(key = 'XAUTHORITY') _set_envvar_from_session(key = 'GPG_AGENT_INFO') #=========================================================================== # key_kr = 'GNOME_KEYRING_CONTROL' # key_ssh = 'SSH_AUTH_SOCK' # _value = os.environ.get(key_kr) # if _value is None: # _session = get_session_name() # _env = get_session_environment(_session) # if _env is not None: # _nvalue = _env.get(key_kr) # if _nvalue is not None: # _nvalue = "%s/ssh" % _nvalue # print "Updating %s to: %s" % (key_ssh, _nvalue) # os.environ[key_ssh] = _nvalue #=========================================================================== def is_dbus_session_bus_set(): key = 'DBUS_SESSION_BUS_ADDRESS' _res = False _value = os.environ.get(key) if _value is not None: _res = True return _res def launch_dbus_if_required(): # launches a dbus session bus for GIO # # inspired by code from Duplicity/giobackend # originally written by Michael Terry (2009) # if not is_dbus_session_bus_set(): output = exec_command_stdout(['dbus-launch']) print "D-Bus session bus launched" for _line in output.split('\n'): print "\t%s" % _line _var = _line.split('=', 1) if len(_var) != 2: print "Unable to read environment variable '%s'. Skipped." % _line else: os.environ[_var[0]] = _var[1] if _var[0] == 'DBUS_SESSION_BUS_PID': # we need to kill the launched bus at termination try: _pid = int(_var[1]) atexit.register(os.kill, _pid, signal.SIGTERM) except ValueError, error: print "Unable to register dbus clean-up action: %s" % error def set_dbus_session_bus_from_session(): """Update dbus session bus address in order to connect to gvfsd from root consoles """ _set_envvar_from_session(key = 'DBUS_SESSION_BUS_ADDRESS') def set_display_from_session(): _set_envvar_from_session(key = 'DISPLAY') def _set_envvar_from_session(key): _value = os.environ.get(key) if _value is None: _env = get_session_environment() if _env is not None: _nvalue = _env.get(key) print "Updating %s to: %s" % (key, _nvalue) if _nvalue is not None: os.environ[key] = _nvalue #TODO: implement Singleton class for access to environment def get_session_environment(): #FIXME: support Unity, Mate, Cinnamon _sessionnames = ("x-session-manager", "gnome-session", "gnome-shell", "ksmserver", "xfce4-session") mod_env = None for _name in _sessionnames: if grep_pid(_name) is not None: mod_env = _get_session_env(session = _name) print "Desktop session %s found" % _name break if mod_env is None: print "No Desktop session found" return mod_env def _get_session_env(session): _mod_env = None _session_pid = grep_pid(processname = session) if _session_pid is None: print "Session `%s` not found" % session else: # print "Session `%s` PID: %s" % (session, _session_pid) _mod_env = get_clean_environment() _session_env = get_process_environment(pid = _session_pid) if _session_env is None: _mod_env = None else: _mod_env.update(_session_env) # debug_print_environment(_mod_env, "modified from desktop session") return _mod_env def debug_print_environment(env, description): print "\nEnvironment `%s`:" % description print "-----------------------------------------------------------------------------" for _var in env: print "%s: %s" % (_var, env[_var]) print "-----------------------------------------------------------------------------" def exec_command_async(args, env = None): if not isinstance(args, types.ListType): raise TypeError("List of arguments expected.") pid = subprocess.Popen(args, env = env).pid return pid def exec_command_stdout(args, env = None): """ :note: Standard output is hold in memory. Don't use this if you expect much output. """ if not isinstance(args, types.ListType): raise TypeError("List of arguments expected.") _output = subprocess.Popen(args, stdout = subprocess.PIPE, env = env).communicate()[0] _output = _output.strip() return _output def exec_command_returncode(args, env = None): """ """ if not isinstance(args, types.ListType): raise TypeError("List of arguments expected.") _ret = subprocess.call(args, env = env) return _ret def grep_pid(processname): """ note for using pgrep: The process name used for matching is limited to the 15 characters present in the output of /proc/pid/stat. Use the -f option to match against the complete command line /proc/pid/cmdline. therefore here a full RegEx is applied to complete command lines: pgreg -f "^(/(.+/)*)?processname($|\s+.+) """ _pid = None output = exec_command_stdout(args = ["pgrep", "-f", "^(/(.+/)*)?%s($|\s+.+)" % processname]) print "DEBUG: pgrep %s = %s" % (processname, output) try: _pid = int(output) except ValueError: # print "Unable to get PID of process '%s'." % processname _pid = None return _pid def pid_exists(pid, processname = None): """ @type pid: String """ if not isinstance(pid, types.StringTypes): raise TypeError("PID expected as string.") if processname is not None: if not isinstance(processname, types.StringTypes): raise TypeError("Process name expected as string.") _exists = False output = exec_command_stdout(args = [COMMAND_PS, "--no-headers", "-lF", "--pid", pid]) if output != "": if processname is None: _exists = True else: if processname in output: _exists = True return _exists def proc_exists(processname, env = None): if not isinstance(processname, types.StringTypes): raise TypeError("Process name expected as string.") if COMMAND_GREP in processname: raise ValueError("Name of checked process must not contain `%s`" % COMMAND_GREP) _exists = False cmd_ps = subprocess.Popen([COMMAND_PS, "ax", "--no-headers", "-lF"], stdout = subprocess.PIPE, env = env) cmd_v_grep = subprocess.Popen([COMMAND_GREP, "-v", COMMAND_GREP], stdin = cmd_ps.stdout, stdout = subprocess.PIPE, env = env) cmd_grep = subprocess.Popen([COMMAND_GREP, processname], stdin = cmd_v_grep.stdout, stdout = subprocess.PIPE, env = env) _output = cmd_grep.communicate()[0] _output = _output.strip() if _output != "": _exists = True return _exists def _readline_nullsep(fd): """ Iterator that read a NUL separeted file as lines @param fd: File descriptor @return: the gotten line @rtype: String """ _continue = True while _continue is True: c = fd.read(1) currentline = '' while c: if c == '\0' : # we got a line break currentline += c c = fd.read(1) else: # c is None _continue = False yield currentline sbackup-0.11.6/src/sbackup/util/constants.py0000644000175000017500000000723112216122130017452 0ustar peerpeer# Simple Backup - definition of common constants related to SBackup # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # #TODO: Add module dbus_constants? # values in milliseconds if not stated otherwise in variable name import signal ONE_SECOND = 1 ONE_SECOND_IN_MILLISEC = 1000 SECONDS_IN_HOUR = 3600 SECONDS_IN_DAY = 24 * SECONDS_IN_HOUR DAYS_IN_YEAR = 365 DAYS_IN_QUARTER = 91.25 DAYS_IN_MONTH = 30.5 DAYS_IN_WEEK = 7 TIMEOUT_RETRY_TARGET_CHECK_SECONDS = 300 INTERVAL_RETRY_TARGET_CHECK_SECONDS = 5 INDICATOR_LAUNCH_PAUSE_SECONDS = 3 TIMEOUT_INDICATOR_QUIT_SECONDS = 180 # timeout before quitting the indicator app DBUS_CHECK_INTERVAL_SECONDS = 50 DBUS_RECONNECT_INTERVAL_SECONDS = 50 AUTOEXIT_TIMEOUT_SECONDS = 300 AUTOEXIT_CHECK_INTERVAL_SECONDS = 300 INTERVAL_UNREGISTER_DEAD_CONN = 600000 # milliseconds DBUS_SERVICE_QUIT_PAUSE = 500 # settings RETRY_UNKNOWN = -1 RETRY_TRUE = 1 RETRY_FALSE = 0 PID_UNKNOWN = -1 SPACE_REQUIRED_UNKNOWN = -1 FREE_SPACE_UNKNOWN = -1 SIZE_FILESYSTEM_UNKNOWN = -1 TARGET_UNKNOWN = "" PROFILE_UNKNOWN = "" # TAR TAR_BLOCKSIZE = 512 # block size in Bytes, fixed in Tar, keep synced in multipleTarScript TAR_BLOCKING_FACTOR = 20 TAR_RECORDSIZE = TAR_BLOCKING_FACTOR * TAR_BLOCKSIZE TAR_VOLUME_SIZE_UNIT_IN_BYTES = 1024 ##TODO: Keep copy of this used in `sbackup-terminate` up-to-date! BACKUP_CANCEL_SIG = signal.SIGUSR1 # Name definitions DBUSSERVICE_FILE = "sbackup-dbusservice" INDICATORAPP_FILE = "sbackup-indicator" INDICATORAPP_NAME = "Simple Backup Indicator Application" DBUS_NOTIFIER_NAME = "Simple Backup DBus Notifier" TERMINATE_FILE = "sbackup-terminate" BACKUP_COMMAND = "sbackup" BACKUP_PROCESS_NAME = "Simple Backup Process" # icon filenames DEFAULT_ICON_FILENAME = "sbackup.png" NOTIFICATION_ICON_FILENAME = "sbackup32x32.png" CONFIG_ICON_FILENAME = "sbackup-conf.png" RESTORE_ICON_FILENAME = "sbackup-restore.png" # icon names (must be registered before using) INDICATOR_ATTENTION_ICON = "sbackup-attention" INDICATOR_ACTIVE_ICON = "sbackup-panel" INDICATOR_SUCCESS_ICON = "sbackup-success" # used in module `util` RSRC_FILE = "resources" LOCALE_DIR = "locale" LOCALE_DOMAIN = "sbackup" NOTIFICATION_DOMAIN = "sbackup" # dbus constants - keep copies of these up-to-date in `sbackup-progress` # and `org.sbackupteam.SimpleBackup.conf` and `Makefile` # configuration file name = dbus service! DBUS_SERVICE = "org.sbackupteam.SimpleBackup" DBUS_OBJ_PATH = "/SBackupProcess" DBUS_CONNECTION_OBJ_PATH = "/SBackupConnection" DBUS_INTERFACE = "org.sbackupteam.SimpleBackup.SBackupDbusInterface" DBUS_EXCEPTION = "org.sbackupteam.SBackupDbusException" # Global path definitions LOCKFILE_BACKUP_FULL_PATH = "/var/lock/sbackup/sbackup.lock" LOCKFILE_INDICATOR_FULL_PATH = "/var/lock/sbackup/sbackup-indicator.lock" # Exit codes EXCODE_SUCCESS = 0 EXCODE_GENERAL_ERROR = 1 EXCODE_INSTANCE_ALREADY_RUNNING = 3 EXCODE_KEYBOARD_INTERRUPT = 39 EXCODE_MAIL_ERROR = 38 EXCODE_BACKUP_ERROR = 38 sbackup-0.11.6/src/sbackup/util/prefs.py0000644000175000017500000000530112216122130016551 0ustar peerpeer# Simple Backup - handling of preferences # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackup.util.prefs` -- handling of preferences ====================================================== .. module:: prefs :synopsis: Handling of preferences applied to all profiles (in contrast to profile settings) .. moduleauthor:: Jean-Peer Lorenz """ import glib import gconf from sbackup.util import structs FS_BACKEND_GIO = "gio" FS_BACKEND_FUSE = "fuse" PREFS_FS_BACKEND = "/apps/sbackup/global-preferences/fs_backend" _PREFS_DEFAULTS = { PREFS_FS_BACKEND : FS_BACKEND_GIO } _PREFS_TYPES = { PREFS_FS_BACKEND : gconf.VALUE_STRING } class Preferences(object): __metaclass__ = structs.Singleton def __init__(self): self._client = gconf.client_get_default () def get(self, key): _type = _PREFS_TYPES[key] _value = self._get_value(key) if _value is None: # return default and set default in database (if possible) self._set_value(key, _PREFS_DEFAULTS[key]) _value = _PREFS_DEFAULTS[key] return _value def _get_value(self, key): _type = _PREFS_TYPES[key] _value = None if _type == gconf.VALUE_STRING: try: _value = self._client.get_string(key) _value = _value.lower() except glib.GError, error: print "Error while getting gconf setting: %s\nDefault value is used." % error except AttributeError: pass return _value def _set_value(self, key, value): _type = _PREFS_TYPES[key] if _type == gconf.VALUE_STRING: try: if self._client.key_is_writable(key): self._client.set_string(key, value) except glib.GError, error: print "Error while setting gconf value: %s\nError can be safely ignored: setting is not being changed." % error sbackup-0.11.6/po/0000755000175000017500000000000012216122130012303 5ustar peerpeersbackup-0.11.6/po/zh_TW.po0000644000175000017500000023217412216122130013707 0ustar peerpeer# Chinese (Taiwan) translation for sbackup # Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-09-25 00:27+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Chinese (Taiwan) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "SBackup 常駐 <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] 於 %(date)s 的報告" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "沒有指定的日誌檔。" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "無法找到日誌檔。" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "嚴重錯誤:未發現任何預設設定檔!\n" "\n" "現在將繼續進行其他設定檔的作業。" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "備份動作已被使用者取消。" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "取消備份作業時發生錯誤:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "備份過程中發生錯誤:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "傳送郵件時發生錯誤:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "之前遇到的錯誤:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "備份尚未開始。\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "這是一個滿足桌面需求且容易上手的備份解決方案。若您想要回報 bug、翻譯或協助其他事項,請造訪我們的網站。" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "維護者:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "前維護者:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "貢獻者:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Pin-hsien Li https://launchpad.net/~plesry\n" " yiulok https://launchpad.net/~lkinglok" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "無效的檔案類型。" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "「%s」的有效路徑並不可用" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "無法取得「%s」的有效路徑" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "目前分割功能無法和壓縮選項相容。" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "無法更改檔案「%s」的權限。" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "無法移除暫存檔案「%(file)s」:%(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "啟動 TAR 以進行增量備份。" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "未發現進行增量備份所需的 SNAR 檔。" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "回到完整備份模式。" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "啟動 TAR 以建立完整備份。" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "從成員名稱中移除前端的「/」。" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "從硬連結目標中移除前端的「/」。" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR 傳回了一個訊息:%s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR 傳回了訊息:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR 已順利完成執行。" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR 傳回了一個警告:%s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR 傳回了警告:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR 傳回了警告但成功完成執行。" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "無法成功完成執行。TAR 因為錯誤而被中斷。" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "無法中止後端作業:%s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "已包含" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "未改變" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "資料夾" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "陣列必須為字串" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Dumpir 不符合:「filename」是空的" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Dumpir 不符合:「control」是空的" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "檔案「%s」不存在。" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "snar 檔案的標頭檔並不完全。" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "需要快照檔案" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "資料夾不存在:%s。" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "從檔案「%s」讀取設定檔。" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "設定檔內的設定被設為預設值。設定檔為「%s」。" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "選項「target」已遺失,退出。" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "在執行設定檔時發生錯誤:\n" "\n" "%(error)s 於行 「%(line)s」。\n" "\n" "請檢查您的設定檔案。" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "無法將「%(parameter)s」評估為字典物件 (得到的值為 = 「%(value)r」)。" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "無法將「%(parameter)s」評估為字典物件 (得到的值為 = 「%(value)r」)" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "您必須提供一個字典物件。" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "[%(profile)s] 的日誌檔輸出至檔案「%(file)s」。" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "[%s] 的日誌檔並未輸出至檔案。" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "無法重新命名日誌檔 「%(src)s」->「%(dst)s」:%(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "無法讀取設定檔「%s」!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "「%(configfile)s」內的區塊 [%(section)s] 不應該存在,退出" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "設定檔沒有定義排程。從檔案系統中探測。" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "設定檔尚未從設定檔管理員中設置好" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "尚未設定接收端。" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "尚未設定 SMTP 伺服器。" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "帳號已設定,但尚未指定密碼。" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "密碼已設定,但尚未指定帳號。" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "憑證和密鑰檔已提供,但 SSL 選項 (smtptls=1) 尚未設置。\n" "選擇 SSL 以使用憑證和密鑰。" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "在指定 SSL 憑證或密鑰檔時,鑰匙檔或憑證是必須準備的。" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "預設設定檔" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "未知的設定檔" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "沒有限制" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "自訂" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 音樂檔" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI 影音檔" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG 影音檔" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka 影音檔" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG 多媒體容器" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD 映像檔" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "備份快照的檔案列表中未發現檔案「%s」" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "檔案「%(filename)s」未被發現於快照 [%(snapshotname)s] 的檔案列表,跳過。" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "未發現快照「%s」 " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "發現無效快照「%(name)s」:無效的快照名稱。" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "發現無效快照「%(name)s」:%(error_cause)s。" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "snar 檔案的標頭檔並不完全!" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "快照「%s」已經是完整的,不需做任何事 (不用將其變更為完整)。" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "準備備份作業" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "快照「%(name)s」建立。" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "基底設置為「%(value)s」。" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "設定包裝檔案。" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "當設定包裝列表時發生問題: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "設定要被排除的檔案。" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "將壓縮格式設定為「%s」" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "將檔案分割大小設定為 %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "選項「追隨符號連結」已啟用。" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "選項「追隨符號連結」已停用。" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "快照已經送出" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "在清理舊快照時發生錯誤:%s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "備份作業完成。" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "調查檔案系統並蒐集檔案資訊" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "備份摘要" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "資料夾數目:%s。" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "檔案總數:%s。" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "軟連結數量:%s。" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "快照內的檔案數量:%s。" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "新檔案數量 (加上已包含):%s。" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "增量快照中被跳過的檔案數量:%s。" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "強制排除的物件數量:%s。" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "設定排除的物件數量:%s。" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "所需最大可用空間為「%s」。" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "可用磁碟空間為「%s」。" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "目標資料夾沒有足夠空間給計劃的備份 (可用:%(freespace)s,所需:%(neededspace)s)。" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "無法複製日誌檔。檔案存取尚未初始化。" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "無法複製日誌檔:%s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "無法找到要複製進快照的日誌檔案。" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "沒有要複製日誌檔的快照。" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "設定檔作業因使用者要求而被取消\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "設定檔作業成功完成 (沒有任何錯誤)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "設定檔作業發生錯誤而失敗:%s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "備份目的地:%s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "無法找到目的資料夾。" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "再次嘗試仍無法找到目的資料夾。" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "目標資料夾「%(target)s」不存在。" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "無法存取目的地:%s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "快照不符合:__name 並未設置 " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "快照名稱「%s」和所要求條件不符合" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "快照不符合:__snapshotpath 並未設置 " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "快照的壓縮格式應該為「%s」,但並未發現與此相應的命名檔案" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "%(file)s 未包含有效的值。忽略不完整或不需備份的資料夾。 " #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "快照名稱無效:%s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "基底名稱無效:%s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "無效的快照名稱:%s" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "無法讀取必要檔案「ver」" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "必須設定基底名稱才能進行增量備份。" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "正在起始 FUSE 檔案存取管理員。" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "正在終止 FUSE 檔案存取管理員。" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "正在起始 GIO 檔案存取管理員。" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "正在終止 GIO 檔案存取管理員。" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "無法掛載:路徑尚未掛載" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "無法掛載:掛載時未發現路徑 (可能為本地)" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "無法掛載:%s" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "無法取消設置掛載旗標:路徑未被存放" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "路徑已被掛載。" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "路徑尚未被掛載。" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "使用 GIO 測試指定路徑是否存在" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "建立測試資料夾" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "測試檔案是否存在" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "建立檔案" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "重新讀取測試檔案" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "刪除檔案" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "刪除資料夾" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "無法匯入附加元件「%(plugin_name)s」:%(error_cause)s " #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "無法找到處理 ftp 站台所需的外部程式「curlftpfs」:%s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "無法將「%(server)s」掛載至「%(mountpoint)s」:%(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "FTP 範例如右:ftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "「%s」和範例「ftp://user:pass@server/anything」配對錯誤 (伺服器網址後面必須有「/」存在)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "無法找到處理 sftp 站台所需的外部程式「curlftpfs」:%s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "SFTP 範例如右:sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "「%s」和範例「sftp://user:pass@server/anything」配對錯誤 (伺服器網址後面必須有「/」存在)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "「%s」和範例「ssh://user:pass@example.com/home/」配對錯誤 (伺服器網址後面必須有「/」存在)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "sshfs 指令「%(command)s」沒有正常運作。輸出 => %(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "SSH 範例如右:ssh://user:pass@example.com:33/home/user/backup/" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "「%s」和範例「ssh://user:pass@example.com:21/home/」配對錯誤 (伺服器網址後面必須有「/」存在)" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "請確認遺失的路徑確實存在 (比如從外部硬碟掛載),或者將指定目標改成一個存在的路徑。" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" "當存取備份目的地時發生下列錯誤:\n" "\n" "%s。" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Simple Backup 錯誤" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "無法存取備份目的地" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "排程備份只供系統管理員使用。" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "名稱" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "檔案類型" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "啟用" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "設定檔名稱" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "於設定檔中發現無效或空白的正規表達式(「%s」)。已移除。" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "發現無效或空白的正規表達式\n" "於設定檔:\n" "「%s」\n" "\n" "這些表達式不會被使用,且\n" "已從設定檔中移除。" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "請確認遺失的路徑確實存在 (比如從外部硬碟掛載),或者將指定目標改成一個存在的路徑。" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" "備份目標「%s」並不存在。\n" "\n" "注意:目標將設定為預設值。在儲存設定前,請在目的設定頁面點選預設選項。" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "無法開啟備份目標" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" "%s\n" "\n" "一個使用預設值的備份設定檔已經建立。儲存新的設定以便使用,或者手動檢查您存在的設定檔。\n" "\n" "重要提醒:儲存將會覆寫您存在的無效設定。" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "目前設定檔:%s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "已經包含了此物件!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "已經排除了此物件!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "空白的表達式。請輸入一個有效的正規表達式。" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "提供的正規表達式無效。" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "空的檔案名稱或路徑。請輸入正確檔案名稱或路徑。" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "您輸入的路徑並不存在。要將這個不正確的路經加入?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "儲存設定於..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "一個備份作業正於背景中執行。\n" "\n" "您可以從通知區顯示的進度指示器中觀察進度。" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "備份作業開始" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "未預期的對話回復:%s" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "包含檔案..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "所有檔案" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "包含資料夾..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "排除檔案..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "排除資料夾..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "設定已變更" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "有未被儲存的變更。請在測試郵件設定前儲存或回復所作的變更。" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "測試郵件設定" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "測試失敗並傳回下列訊息:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "測試成功。" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "給予的表達式包含未支援的字元(「%s」)。目前沒辦法在排除表達式中使用這些字元。" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "未支援的字元" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "連接至遠端目的地" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "掛載成功 (沒有任何錯誤)" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "無法掛載主機" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "卸載成功 (沒有任何錯誤)" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "無法卸載主機" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "開始對遠端主機的測試" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "無法存取遠端目的地" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "通過所有測試" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "新設定檔的名稱是空的。請輸入一個有效的設定檔名。" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "無效的設定檔名稱" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "給予新設定檔的名稱已存在。請輸入另外一個名稱。" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "不支援設定檔重新命名。" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" "刪除組態設定檔?\n" "\n" "您正嘗試要移除一個組態設定檔。您之後將無法回復它。不確定要這麼做的話,請改用「啟用|停用」功能。\n" "\n" "您真的要刪除設定檔「%(name)s」?" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "將目前的設定檔設回預設值?\n" "這將用預設值覆蓋目前所編輯的設定檔:「%s」。\n" "\n" "這些預定義的設定值,建議多數使用者使用。在儲存設定變更前,請檢查這些設定是否符合您的需求。" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "已採用預設值。" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "無法移除預設設定檔\n" "\n" "預設設定檔無法被移除。若您只想使用一個設定檔,請將預設設定檔設定好。" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "無法移除預設設定檔\n" "\n" "預設設定檔無法被停用。若您只想使用一個設定檔,請將預設設定檔設定好。" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" "未發現任何備份設定檔\n" "\n" "沒有發現任何預設設定檔。這可能是因為您第一次執行 Simple Backup。已經建立一個使用預設值的設定檔。\n" "\n" "請依您的需求來調整設定並儲存以便使用。" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "請選擇一個設定檔。" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "在初始 pynotify 模組時發生問題" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "和 notification-daemon 的連接失敗:%s" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "Simple Backup" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "顯示訊息視窗" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "取消備份" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "遺失和 D-Bus 服務的連接。" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "重新連接成功" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "沒有備份作業正在執行,並遺失和 D-Bus 服務的連接。Simple Backup 指示器已被中止。" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "備份作業開始" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "備份作業結束" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "收到未知的 D-Bus 事件「%s」。" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "再試一次" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "嘗試在 Simple Backup 執行時開啟另外一個實體。" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "無法顯示視窗:%s" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "您真的要取消設定檔「%s」的備份作業?" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "取消進行中的備份作業?" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "無法取消備份作業。" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "設定檔:%s" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "備份檔大小:%s" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "%.1f%% 已完成" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "剩餘時間:%s" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "備份作業的 PID 被取消: %s" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "無法傳送訊息至作業 %s" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "使用 gksu 傳送訊息至作業 %s" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "使用 gksu 傳送訊息至作業 %s 失敗" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" "無法找到指定的目標資料夾\n" "\n" "未發現指定的目標資料夾「%s」。\n" "\n" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "您可以再次嘗試使用指定的目標,或是取消設定檔的執行。該指定目的地在 %s 秒前被自動使用過。" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "未知" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "不超過 1 分鐘" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "大約 2 分鐘" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "大約 3 分鐘" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "大約 4 分鐘" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "大約 5 分鐘" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "大約 %.0f 分鐘" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "進行中" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "完成" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "進程:未知" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "備份準備中" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "收集資料中" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "進程:取消" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "發生錯誤" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "另一個「Simple Backup 指示器」已經在執行當中。" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "GTK+ 初始化失敗:%s" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "%s (系統管理員模式)" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" "發生不預期的錯誤。關閉這個訊息窗並重啟本程式。\n" "\n" "請至 https://bugs.launchpad.net/sbackup 回報該錯誤。\n" "\n" "%s" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "抱歉,這本來不應該發生的" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "還原..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "還原至..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "回溯..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "回溯至..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "不適用" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "快照" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "版本" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "路徑" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "狀態" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "連接至目的地..." #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "指定的目錄不存在" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "就緒" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "未指定任何目的地" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "選擇一個來源資料夾" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "讀取快照..." #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "讀取資料夾內容..." #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "載入中 ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "讀取快照內的檔案..." #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "Simple Backup 復原錯誤" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "讀取快照時發生錯誤" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "這個快照是空的。" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "讀取備份快照..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "未發現任何該天的備份。" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "選擇還原位置" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "您真的要回溯「%s」?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "選擇回溯位置" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "您真的要回溯「%(source)s」至「%(dir)s」?" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "讀取快照中..." #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" "刪除選擇的快照「%s」將會移除您在這一時間所備份的資料。您無法復原這個動作。\n" "\n" "您確定要永遠刪除這個快照?" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "您真的要刪除快照嗎?" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" "當嘗試刪除快照時發生下列錯誤:\n" "%s" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "無法刪除快照" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" "選擇的快照「%s」已被更新的快照作為參考用的母快照。\n" "\n" "此快照必須先移除其所有子快照之後才能刪除。" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "無法移除快照" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "作業中斷" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "Simple Backup 還原" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "還原所選擇的檔案" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "正在進行「%s」的還原。" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "「%s」的還原成功。" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "「%s」的還原沒有成功。\n" "\n" "發生下列錯誤:\n" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "正在進行「%(source)s」\n" "至「%(dirname)s」的還原。" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "「%(source)s」\n" "至「%(dirname)s」的還原成功。" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "「%(source)s」\n" "至「%(dirname)s」的還原沒有成功。\n" "\n" "發生下列錯誤:\n" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "回溯所選擇的檔案" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "正在進行「%s」的回溯。\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "「%s」的回溯成功。" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "「%s」的回溯沒有成功。\n" "\n" "發生下列錯誤:\n" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "正在進行「%(source)s」\n" "至「%(dirname)s」的回溯。" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "「%(source)s」\n" "至「%(dirname)s」的回溯成功。" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "「%(source)s」\n" "至「%(dirname)s」的回溯沒有成功。\n" "\n" "發生下列錯誤:\n" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "%(mb)d MiB %(kb)d KiB" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d MiB %(kb)d KiB %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "%(mb)d MB %(kb)d kB" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "檔案「%(file)s」無法被存取,錯誤訊息「%(error)s」。" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "檔案「%(file)s」無法以讀取權限開啟。操作時間已逾時。" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "檔案「%(file)s」無法以讀取權限開啟,錯誤訊息「%(error)s」。" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "軟連結「%(path)s」->「%(ln_target)s」是循環軟連結。" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "檔案「%(file)s」是備份的目標資料夾。" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "路徑「%(file)s」已定義於排除列表中。" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "檔案「%(file)s」符合正規表達式「%(regex)s」。" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "檔案「%(file)s」超過檔案大小設限值 (%(filesize)s > %(maxsize)s)。" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "在檢查目錄「%(dir)s」時發生錯誤:%(error)s。" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "發現空白的正規表達式。已跳過。" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "發現無效的正規表達式(「%s」)。已跳過。" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "沒有定義要備份的資料夾。" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "有另外一個程式正在運行。" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "發現無效的鎖定檔。檔案已移除。" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "無法找到鎖定檔:%s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "無法找到鎖定檔:檔案未發現。" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "排除檔案類型" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "常見檔案類型:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "自定義檔案類型為 " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "副檔名" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "從正規表示法排除" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "輸入一條正規表達式。\n" "凡是符合表達式的檔案和資料夾將會從備份排除。" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "輸入要包括的遠端目標" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "選擇一個附加元件以取得格式" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "選擇您的附加元件:" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "檢查" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" "儲存變更的設定?\n" "\n" "設定已被變更。若您想要使用調整過的設定,您必須先儲存它。\n" "\n" "您要現在儲存設定嗎?" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "組態設定檔管理員" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "您可以設置多個組態設定檔,它們將在進行備份時執行。每個設定檔都有自己的一套設定組,包含備份目的地、備份格式等等。" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "組態設定檔" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "加入新的設定檔\n" "\n" "請輸入新設定檔所用的名稱,並用下方的勾選框來決定要啟用還是停用它。" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "設定檔名稱" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "啟用" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "檔案(_F)" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "儲存至..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "工具(_T)" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "設回預設設定..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "設定檔管理員..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "現在就建立備份" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "幫助(_H)" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "查看幫助主題(_V)" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "關於本程式(_A)" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "重新載入設定" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "儲存設定" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "現在就建立備份" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "開啟設定檔管理員" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "設定檔" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "無\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" "壓縮格式\n" "預設設定為無壓縮備份。" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "您可以將快照分割,以便備份在不支援大檔案的檔案系統上。若您要壓縮備份,此功能將無法使用。" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "每隔多久做一次完整備份" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "除非距最近一次的完整備份已超過設定的天數,否則將進行增量備份。" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "天" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "將備份存檔分割為若干塊" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "幫助" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "顯示有關設置 GUI 的幫助主題。" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "一般" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "要被包含的檔案和資料夾" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "移除" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "加入檔案" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "加入資料夾" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "包含" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "要被排除的檔案和資料夾" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "路徑" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "加入" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "檔案類型" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "正規\n" "表示法" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "備份檔案大小限制為" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "追隨符號連結" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "其他" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "排除" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "使用預設的備份資料夾" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "使用自訂的本地備份資料夾" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "選擇目的資料夾" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "使用遠端站台" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "連線..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "目前擁有的權限無法寫入指定目的資料夾。無法在此存放備份檔案。" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "目的" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "不要執行排程備份(_N)" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "簡易(_S)" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "這個選項將會在電腦運作的時候自動建立備份。 " #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "自訂(_C)" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "執行備份於" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Cron 定義時間" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "每小時\n" "每天\n" "每周\n" "每月" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "顯示關於排程備份的幫助主題。" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "欲設定排程 (即自動化) 備份時段,您可以簡單地選擇一個間隔,也可以用 cron 的時間配置來精確安排。有關 cron " "的時間格式定義詳見「man 5 crontab」。" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "定時" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "啟用老舊備份清理" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "簡易裁切式:備份經過幾天後將被清除" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "對數式" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" "分階段減少過去擁有的備份:\n" "保留昨天建立的所有備份\n" "保留上星期每天一個備份\n" "保留上個月每週一個備份\n" "保留去年每月一個備份\n" "保留前年至去年每季一個備份\n" "保留過去每年一個備份" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "顯示有關清理備份的幫助主題。" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "注意:如果存在新的完整備份快照,先前所有不完全和不可恢復的備份都將被刪除。" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "清除" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "清理舊的備份" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "記錄" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "Debug 只作為程式除錯用途。Info 是建議的設定" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "日誌等級" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "Debug 只作為程式除錯用途。Info 是建議的設定。" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "日誌檔案資料夾" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "從郵件傳送報告" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "從" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "SMTP 伺服器" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "連接埠" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "至" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "使用帳號和密碼" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "帳號" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "密碼" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "使用安全連線" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "選擇憑證檔案" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "密鑰" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "憑證" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "選擇鑰匙檔案" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "測試郵件設定(_M)" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "報表" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "警告" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "顯示有關預設值的幫助主題。" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "設置(_S)" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "設定遠端目標" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "服務類型" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "主機名稱" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "詳細資料" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "顯示密碼" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "連線(_C)" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "建立一個完整備份" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "還原" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "備份目的地" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "於說明瀏覽器中顯示手冊。" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "預設設定檔的目的地" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "將備份目的地設為預設設定檔所指定的位置" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "自訂目的地" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "從您的硬碟或遠端站台選擇一個備份目的地。準備好之後按「套用」。" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "選擇一個目的資料夾,或是在文字框中輸入遠端站台的 URI" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "將目的地變更為左邊文字欄內的指定路徑" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "選擇一個粗體標示的日期以獲取該天的備份列表。" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "可用的備份" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "刪除快照" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "刪除" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "快照歷史" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "目前基於:" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "選擇列表上的一個快照作為新的基底。" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "重定基底" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "快照管理" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "快照詳情" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "從選擇的快照中還原檔案/資料夾" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "從選擇的快照到其母快照為止,漸進還原檔案/資料夾" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "回溯" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "還原管理" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "匯出管理" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "頭條" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "內容" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "不需要為完整的快照「%s」重定基底" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "「%(snapshotToRebase)s」沒有「base」檔案,它可能已經損毀 " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "無法用快照重定基底於先前的版本:「%(snapshotToRebase)s」<=「%(NewBaseSnapshot)s」 " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "以「%(current)s」重定基底「%(base)s」" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "當取回快照「%s」時發生錯誤。" #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "快照「%s」的基底尚未設置。" #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "取消快照「%s」的取回" #, python-format #~ msgid "Unable to remove upgrade stamp: %s" #~ msgstr "無法移除升級標記:%s" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "從 v1.0 升級至 v1.2:%s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "升級至 v1.3:%s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "升級至 v1.4:%s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "升級至 v1.5:%s" #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "SNAR 檔案已經存在於快照「%s」。它沒有被覆寫。" #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "這些快照的格式已經過時。若您要使用它們,請使用「Simple Backup-Restoration」將它們升級。" #~ msgid "" #~ "There are snapshots with old snapshot format. Please upgrade these using the " #~ "Restoration tool if you want to use them." #~ msgstr "這些是基於舊版格式的快照。若您要使用它們,請使用復原工具將它們升級。" #, python-format #~ msgid "" #~ "Snapshot version is not supported (Only %(supportedversion)s is supported). " #~ "Version '%(currentversion)s' found. You should upgrade it. " #~ msgstr "" #~ "不支援該快照版本 (只支援 %(supportedversion)s )。發現「%(currentversion)s」版本。您應該要將它升級。 " #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "快照的版本大於支援版本!" #, python-format #~ msgid "" #~ "Upgrading the selected snapshot `%s` might corrupt your backup for this " #~ "particular point in time. You cannot undo this operation. It is recommended " #~ "to create a copy of the snapshot directory before upgrading it. The upgrade " #~ "process takes a while - be patient.\n" #~ "\n" #~ "Are you sure that you want to upgrade the snapshot now?" #~ msgstr "" #~ "升級選擇的快照「%s」可能會干擾您在這一時間所備份的資料。您無法復原這個動作。建議在升級快照前先建立一份副本。升級過程將會進行一段時間 ─ " #~ "請耐心等待。\n" #~ "\n" #~ "您確定要現在升級這個快照?" #~ msgid "Do you really want to upgrade snapshot?" #~ msgstr "您真的要升級快照嗎?" #, python-format #~ msgid "Upgrade snapshot '%s'" #~ msgstr "升級快照「%s」" #~ msgid "Snapshot was sucessfully upgraded." #~ msgstr "快照已成功升級。" #~ msgid "Simple Backup upgrade" #~ msgstr "Simple Backup 升級" #~ msgid "Upgrade finished" #~ msgstr "升級完成" #, python-format #~ msgid "" #~ "While attempting to upgrade snapshot the following error occurred:\n" #~ "%s" #~ msgstr "" #~ "當嘗試升級快照時發生下列錯誤:\n" #~ "%s" #~ msgid "Unable to upgrade snapshot" #~ msgstr "無法升級快照" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "您真的要將「%(current)s」代替「%(base)s」成為新的基底?" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "檔案「%(file)s」不存在。" #~ msgid "Upgrade snapshot" #~ msgstr "升級快照" #~ msgid "Upgrade" #~ msgstr "升級" sbackup-0.11.6/po/en_GB.po0000644000175000017500000023655112216122130013631 0ustar peerpeer# English (United Kingdom) translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:37+0000\n" "Last-Translator: starmaker \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "SBackup Daemon <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] Report of %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "No log file specified." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Unable to find log file." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Backup was cancelled by user." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Beim Abbruch der Sicherung trat ein Fehler auf:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Während der Sicherung trat ein Fehler auf:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Fehler beim Sender der E-Mail:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "The following error(s) occurred before:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Sicherung wurde nicht gestartet.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Maintainers:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Former maintainers:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Contributors:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "translator-credits\n" "\n" "Launchpad Contributions:\n" " Alessio Treglia https://launchpad.net/~quadrispro\n" " David Kovar https://launchpad.net/~kowy\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " John Drinkwater https://launchpad.net/~johndrinkwater\n" " Sohrab https://launchpad.net/~sohrab-naushad\n" " ciaran.mooney https://launchpad.net/~ciaran-mooney\n" " starmaker https://launchpad.net/~hernaninverso\n" " toomuch https://launchpad.net/~toomuch" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Invalid archive type." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Effective path for `%s` is not available" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Unable to get effective path for `%s`" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "For the moment split functionality is not compatible with compress option." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Unable to change permissions for file '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Unable to remove temporary file `%(file)s`: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Launching TAR to make incremental backup." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "Unable to find the SNAR file to make an incremental backup." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Falling back to full backup." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Launching TAR to make a full backup." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "Leading '/' from member names were removed." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "Leading '/' from hard link targets were removed." #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR returned a message: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR devolvió un mensaje:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR has been finished successfully." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR returned a warning: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR returned warnings:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR devolvió advertencias pero ha finalizado satisfactoriamente." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "Imposible completar satisfactoriamente. TAR finaizó con errores." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Unable to terminate backend process: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Included" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Not changed" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Directory" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "Line must be a string" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Dumpdir inconsistency : 'filename' is empty" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Dumpdir inconsistency : 'control' is empty" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "File '%s' does not exist." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "The snarfile header is incomplete." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "A SnapshotFile is required" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Directory does not exist: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Profile settings are being read from file '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Option 'target' is missing, aborting." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "You must provide a dictionary." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Log output for [%(profile)s] is directed to file '%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Log output for [%s] is not directed into a file." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "The config file '%s' couldn't be read!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "section [%(section)s] in '%(configfile)s' should not exist, aborting" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "No schedule defined in configuration file. Probing from filesystem." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "The config file is not set yet into this ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "No receiver set." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "No SMTP server set." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Username set but no password specified." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Password set but no username specified." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Default Profile" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Unknown Profile" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Unlimited" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Custom" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 Music" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI Video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG Video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matroska Video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Ogg Multimedia container" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD Images" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "File '%s' not found in the backup snapshot files list" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list. " "File skipped." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Snapshot '%s' not found " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "Invalid snapshot `%(name)s` found: Name of snapshot not valid." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "Invalid snapshot `%(name)s` found: %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "The snarfile header is incomplete !" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Preparando el proceso de backup" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Snapshot '%(name)s' is being made." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "Setting Base to '%(value)s'." #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "Setting packages File." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Problem when setting the packages list: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Setting Excludes File." #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "Formato de compresión configurado en `%s`" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "Setting size of archive chunks to %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Option 'Follow symbolic links' is enabled." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "Option 'Follow symbolic links' is disabled." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "La copia instantánea está siendo realizada" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "Error al purgar copias instantáneas antiguas: %s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Backup process finished." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "Inspeciona el sistema de archivos y colecta archivos info" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Resumen del backup" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Number of directories: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Total number of files: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Number of symlinks: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Number of files included in snapshot: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Number of new files (also included): %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "Number of files skipped in incremental snapshot: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Number of items forced to be excluded: %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Number of items to be excluded by config: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Maximum free size required is '%s'." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Available disk size is '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "Unable to copy log. File access is not initialised." #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "Unable to copy log file: %s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "Unable to find logfile to copy into snapshot." #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "No snapshot to copy logfile." #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "Processing of profile was cancelled on user request\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "Processing of profile successfully finished (no errors)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "Processing of profile failed with error: %s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Backup destination: %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Unable to find destination directory." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "Unable to find destination directory even after retry." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Target directory '%(target)s' does not exist." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "Unable to access destination: %s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "Snapshot is inconsistent: __name is not set " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Name of snapshot '%s' doesn't match requirement" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "Snapshot is inconsistent: __snapshotpath is not set " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" "%(file)s does not contain valid value. Ignoring incomplete or non-backup " "directory. " #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Name of Snapshot not valid : %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Name of base not valid : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "Invalid name of snapshot: %s" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "Unable to read mandatory file `ver`" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "Base name must be set for incremental backup." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Initialising FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Terminating FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "Initializing GIO File Access Manager." #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "Terminating GIO File Access Manager." #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "Unable to get mount: path is not mounted" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" "Unable to get mount: path not found when mounting (is probably local)" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "Unable to get mount: %s" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "Unable to un-set mount flag: path is not stored" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "Path is already mounted." #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "Path is not mounted." #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "Test specified path for existence using GIO" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "Create testdir" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "Test testfile for existence" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "Create file" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "Re-read test file" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Remove file" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "Remove dir" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Could not find external application 'curlftpfs' needed for handling of ftp " "sites: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "FTP schema is: ftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "Could not find external application 'curlftpfs' needed for handling of sftp " "sites: %s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "SFTP schema is like : sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" "While accessing the backup destination following error occurred:\n" "\n" "%s." #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Simple Backup error" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "Unable to access backup destination" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "Scheduled backups are available for Administrator users only." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Name" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "File Type" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Enable" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Profile Name" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Invalid or empty regular expression ('%s') found in configuration. Removed." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Unable to open backup target" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Current profile: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Already included item !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Already excluded item !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Empty expression. Please enter a valid regular expression." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "Provided regular expression is not valid." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "Empty filename or path. Please enter a valid filename or path." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Save configuration as..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "Backup process started" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "Unexpected dialogue response: %s" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Include file..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "All files" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Include folder..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Exclude file..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Exclude folder..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "Configuration has changed" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Test mail settings" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "The test failed with following output:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "The test was successful." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "Unsupported character" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "Connect to remote destination" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "Mount was successful (no errors)" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "Unable to mount host" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "Umount was successful (no errors)" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "Unable to unmount host" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "Perfom tests on remote host" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "Unable to access remote destination" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "All tests passed" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "The given name of the new profile is empty. Please enter a valid profile " "name." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Profile name not valid" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" "The given name of the new profile already exists. Please enter another name." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "Renaming of profiles is not supported." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "Default settings are being applied." #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. If you want to use a single profile, " "please set up the default profile accordingly." #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. If you want to use a single profile, " "please set up the default profile accordingly." #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "Please select a profile." #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "There was a problem initializing the pynotify module" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "Connection to notification-daemon failed: %s" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "Simple Backup" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "Show message windows" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "Cancel Backup" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "Connection to D-Bus service lost." #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "Re-connection was successful" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "Starting backup session" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "Ending backup session" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "Unknown D-Bus event `%s` received." #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "Try again" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" "Attempt at starting another instance of Simple Backup while this one is " "already running." #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "Unable to present window: %s" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "Do you really want to cancel the backup process of profile '%s'?" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "Cancel running backup process?" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "Unable to cancel backup process." #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "Profile: %s" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "Size of backup: %s" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "%.1f%% processed" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "Remaining time: %s" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "PID of backup process being canceled: %s" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "Unable to send signal to process %s" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "Sending signal using gksu to process %s" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "Sending signal using gksu to process %s failed" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "unknown" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "less than 1 minute" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "about 2 minutes" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "about 3 minutes" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "about 4 minutes" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "about 5 minutes" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "about %.0f minutes" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "In progress" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "finished" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "Progress: unknown" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "Backup is being prepared" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "Collecting file info" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "Progress: canceled" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "An error occurred" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "Another `Simple Backup Indicator` is already running." #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "Initialization of GTK+ failed: %s" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "%s (Administrator mode)" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "Sorry, this should not have happened" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Restore..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Restore as..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Revert..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Revert as..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "n.a." #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Snapshots" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Version" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Path" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "State" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "Connect to destination..." #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "Specified path does not exist" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Ready" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "No destination specified" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Choose a source folder" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "Reading snapshots..." #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "Reading directory content..." #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Loading ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "Reading files from snapshot..." #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "Simple Backup restore error" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "An error occurred while reading snapshot" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "This snapshot seems empty." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Reading backup snapshot..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "No backups found for this day." #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Select restore location" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "Do you really want to revert '%s'?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Select revert location" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "Do you really want to revert '%(source)s' to '%(dir)s'?" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "Reading snapshot..." #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "Do you really want to remove snapshot?" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" "While attempting to delete snapshot the following error occurred:\n" "%s" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "Unable to delete snapshot" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "Unable to remove snapshot" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "Termination in progress" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "Simple Backup restoration" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Restoring of selected files" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Restoring of '%s' is in progress." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "Restoring of '%s' was successful." #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Reverting selected files" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Reverting of '%s' is in progress.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "Reverting of '%s' was successful." #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "%(mb)d MiB %(kb)d KiB" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d MiB %(kb)d KiB %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "%(mb)d MB %(kb)d kB" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "File '%(file)s' is not accessible with error '%(error)s'." #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" "File '%(file)s' cannot be opened for read access. Operation timed out." #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "File '%(file)s' is backup's target directory." #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "Path '%(file)s' defined in excludes list." #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "File '%(file)s' matches regular expression '%(regex)s'." #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "Error while checking directory '%(dir)s': %(error)s." #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "Empty regular expression found. Skipped." #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "Invalid regular expression ('%s') found. Skipped." #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "No directories to backup defined." #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "Another application instance is already running." #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "Invalid lock file found. Is being removed." #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "Unable to remove lock file: %s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "Unable to remove lock file: File not found." #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Exclude file type" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standard file types:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Custom defined file type with " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "file extension" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Exclude by regex" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Enter the remote target to include" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Choose a plug-in to get the format" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Choose your plug-in :" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Check" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Configuration Profile Manager" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own settings including backup " "destination, backup format etc." #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Configuration profiles" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Profile name" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Enabled" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_File" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Save as..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Tools" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "Set default settings..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Profile Manager..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "Make backup now" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "_Help" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "_View all help topics" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "_About this program" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Reload configuration" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Save configuration" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Make a backup now" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Open the profile manager" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profiles" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "none\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" "Compression format\n" "Default is set to uncompressed backups." #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Do a full backup at least once every" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "days" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "Split backup archives into several chunks" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Help" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "Show help topic about configuration GUI." #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "General" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "Included files and directories" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Remove" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Add File" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Add Directory" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Include" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "Excluded files and directories" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Paths" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Add" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "File types" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Regular\n" "Expressions" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "Do not backup files bigger than" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Follow symbolic links" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Others" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Exclude" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Use default backup directory" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Use custom local backup directory" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Select the destination folder" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "Use a remote site" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "Connect..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destination" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "_No scheduled backups" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Simple" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" "This option will make a backup not at a precise time but when the computer " "is on. " #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Custom" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Do backups" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Cron time definition" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "hourly\n" "daily\n" "weekly\n" "monthly" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "Show help topic about scheduled backups." #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Schedule" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "Enable purging of old backups" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "Simple cut-off: Erase all backups older than" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logarithmic" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "Show help topic about purging of backups." #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Purging" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Cleaning old backups" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Logging" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" "Debug is just for debbuging purpose. Info is the recommended setting." #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Log level" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" "Debug is just for debbuging purpose. Info is the recommended setting." #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Log file directory" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Report by mail" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "From" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "SMTP server" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Port" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "To" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Use a username and password" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Username" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Password" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Use secure connection" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Choose a certificate file" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Key" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificate" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Choose a key file" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Test _mail settings" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Report" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Warning" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "Show help topic about default values." #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "_Set" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "Set remote target" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "Type of service" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "Hostname" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "Details" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "Show password" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "_Connect" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "Make a full backup" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Restore files/directories" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Restore Source Folder" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Available backups:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Use custom:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Use default:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Files and Folders to restore" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restore" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Restore As..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "Backup destination" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Displays the manual in Help browser." #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "Default profile's destination" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" "Set backup destination to the place specified in default configuration " "profile" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "Custom destination" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "Choose a destination folder. For remote sites fill URI in text field" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "Change destination to path specified in left text field" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "Select a bold printed date to get the list of backups for that date." #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "Available backups" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "Delete snapshot" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Delete" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Snapshot History" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "Current base:" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "Select a snapshot on this list to rebase on it." #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "Rebase" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Snapshot Management" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "Snapshot details" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "Restores files/directories from the selected snapshot" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Revert" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Restoration Management" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Export Management" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Headline" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Content" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "No need to rebase a full snapshot '%s'" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Rebasing '%(current)s' on '%(base)s'" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "An error occurred when pulling snapshot '%s'." #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "Base of snapshot '%s' is not set." #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Cancelling pull of snapshot '%s'" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Upgrading from v1.0 to v1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Upgrading to v1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Upgrading to v1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Upgrading to v1.5: %s" #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "" #~ "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "The version of the snapshot is greater than the supported one!" #~ msgid "Unable to upgrade snapshot" #~ msgstr "Unable to upgrade snapshot" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "Do you really want to rebase '%(current)s' on '%(base)s' ?" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "File '%(file)s' does not exist." #~ msgid "Upgrade" #~ msgstr "Upgrade" #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #, python-format #~ msgid "Unable to remove upgrade stamp: %s" #~ msgstr "Unable to remove upgrade stamp: %s" #~ msgid "" #~ "There are snapshots with old snapshot format. Please upgrade these using the " #~ "Restoration tool if you want to use them." #~ msgstr "" #~ "There are snapshots with old snapshot format. Please upgrade these using the " #~ "Restoration tool if you want to use them." #, python-format #~ msgid "" #~ "Upgrading the selected snapshot `%s` might corrupt your backup for this " #~ "particular point in time. You cannot undo this operation. It is recommended " #~ "to create a copy of the snapshot directory before upgrading it. The upgrade " #~ "process takes a while - be patient.\n" #~ "\n" #~ "Are you sure that you want to upgrade the snapshot now?" #~ msgstr "" #~ "Upgrading the selected snapshot `%s` might corrupt your backup for this " #~ "particular point in time. You cannot undo this operation. It is recommended " #~ "to create a copy of the snapshot directory before upgrading it. The upgrade " #~ "process takes a while - be patient.\n" #~ "\n" #~ "Are you sure that you want to upgrade the snapshot now?" #~ msgid "Do you really want to upgrade snapshot?" #~ msgstr "Do you really want to upgrade snapshot?" #, python-format #~ msgid "" #~ "Snapshot version is not supported (Only %(supportedversion)s is supported). " #~ "Version '%(currentversion)s' found. You should upgrade it. " #~ msgstr "" #~ "Snapshot version is not supported (Only %(supportedversion)s is supported). " #~ "Version '%(currentversion)s' found. You should upgrade it. " #~ msgid "Simple Backup upgrade" #~ msgstr "Simple Backup upgrade" #, python-format #~ msgid "" #~ "While attempting to upgrade snapshot the following error occurred:\n" #~ "%s" #~ msgstr "" #~ "While attempting to upgrade snapshot the following error occurred:\n" #~ "%s" #, python-format #~ msgid "Upgrade snapshot '%s'" #~ msgstr "Upgrade snapshot '%s'" #~ msgid "Snapshot was sucessfully upgraded." #~ msgstr "Snapshot was sucessfully upgraded." #~ msgid "Upgrade finished" #~ msgstr "Upgrade finished" #~ msgid "Upgrade snapshot" #~ msgstr "Upgrade snapshot" sbackup-0.11.6/po/kk.po0000644000175000017500000015471012216122130013260 0ustar peerpeer# Kazakh translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:36+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Kazakh \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " arruah https://launchpad.net/~arruah" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Өзім қалаған" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Барлық файлдарды" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Жол" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "күн" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Жалпы" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Жолдары" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Мақсат" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Қалпына келтіру" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/de.po0000644000175000017500000025434412216122130013247 0ustar peerpeer# German translation for sbackup # Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:45+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "SBackup Daemon <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] Bericht vom %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Es wurde keine Protokolldatei angegeben." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Protokolldatei konnte nicht gefunden werden." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Kritischer Fehler: Es wurde keine Konfiguration für das Standardprofil " "gefunden!\n" "\n" "Es wird mit den verbleibenden Profilen fortgefahren." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Die Sicherung wurde vom Benutzer abgebrochen." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Während des Abbruchs der Sicherung ist ein Fehler aufgetreten:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Während der Sicherung trat folgender Fehler auf:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Fehler beim Versenden der E-Mail:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "Die folgenden Fehler sind bisher aufgetreten:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Sicherung wird nicht ausgeführt.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Eine benutzerfreundliche Backup-Lösung für alltägliche Aufgaben im Desktop-" "Bereich. Falls Du mithelfen möchtest, z.B. durch das Melden von Fehlern, " "Übersetzen der Anwendung usw. besuche unsere Webseite." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Betreuer:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Ehemalige Betreuer:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Mitwirkende:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Übersetzer\n" "\n" "Launchpad Contributions:\n" " Achim Richter https://launchpad.net/~marabu\n" " Andreas Meyer https://launchpad.net/~meyer-greiz\n" " Andreas Tarp https://launchpad.net/~andreas-tarp\n" " Dirk Salewski https://launchpad.net/~dsalewski-deactivatedaccount\n" " Georg Engelmann https://launchpad.net/~georg-engelmann\n" " Jacek Zmudzki https://launchpad.net/~jacek-zmudzki\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Johnny https://launchpad.net/~johnnym1\n" " Kai Schroeder https://launchpad.net/~kai-schroeder\n" " Martin Schaaf https://launchpad.net/~mascha\n" " Martin Schröder https://launchpad.net/~martinschroeder\n" " Matthias Rosenkranz https://launchpad.net/~rose\n" " Matthäus Brandl https://launchpad.net/~matthaeus\n" " Steffen Banhardt https://launchpad.net/~steffenbanhardt\n" " toomuch https://launchpad.net/~toomuch" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Ungültiger Archivtyp." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Effektiver Pfad für `%s` ist nicht verfügbar" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Kann keinen gültigen Pfad für `%s` finden" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "Zur Zeit ist das Aufteilen von Sicherungen nicht kompatibel zur " "Komprimierungsfunktion." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Zugriffsrechte für Datei '%s' konnten nicht geändert werden." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Temporäre Datei `%(file)s` konnte nicht entfernt werden: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Ausführen von TAR um eine inkrementelle Sicherung zu erstellen." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" "Die SNAR-Datei zur Erstellung einer inkrementellen Sicherung wurde nicht " "gefunden." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" "Es wird auf die Erstellung einer vollständigen Sicherung ausgewichen." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Ausführen von TAR um eine vollständige Sicherung zu erstellen." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "Führende '/' wurden von den Pfaden im Archiv entfernt." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" "Führende '/' wurden von den Zielen harter Verknüpfungen im Archiv entfernt." #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR gab folgende Mitteilung zurück: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR gab folgende Mitteilungen zurück:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR wurde erfolgreich beendet." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR lieferte eine Warnung: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR lieferte Warnungen:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR gab Warnungen zurück, konnte aber erfolgreich beendet werden." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" "Sicherung war nicht erfolgreich. TAR wurde aufgrund von Fehlern vorzeitig " "beendet." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Der Hintergrund-Prozess konnte nicht beendet werden: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Aufgenommen" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Nicht geändert" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Verzeichnis" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "Zeile muss eine Zeichenkette sein" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Verzeichnis zum Ablegen ist inkonsistent: 'filename' ist leer" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Verzeichnis zum Ablegen ist inkonsistent: 'control' ist leer" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "Die Datei '%s' existiert nicht." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "Kopf der SNAR-Datei ist unvollständig." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "Eine Sicherungsdatei wird benötigt" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Das Verzeichnis existiert nicht: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Einstellungen des Profils werden gelesen aus Datei '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Einstellungen des Profils werden auf die Standardwerte gesetzt. " "Konfigurationsdatei wird auf Datei '%s' festgelegt." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Angabe der Option 'target' fehlt, Abbruch" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "Fehler beim Verarbeiten der Konfiguration:\n" "\n" "%(error)s in Zeile `%(line)s`.\n" "\n" "Bitte die Konfigurationsdatei überprüfen." #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Parameter '%(parameter)s' konnte nicht als assoziatives Feld (Dictionary) " "ausgewertet werden (übergebener Wert = '%(value)r')." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "Parameter '%(parameter)s' konnte nicht als assoziatives Feld (Dictionary) " "ausgewertet werden (value got = '%(value)r' )" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "Ein assoziatives Feld (Dictionary) muss übergeben werden." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Logausgabe für [%(profile)s] wird in Datei '%(file)s' umgeleitet." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Logausgabe für [%s] wird nicht in eine Datei umgeleitet." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" "Protokolldatei konnte nicht umbenannt werden '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "Konfigurationsdatei '%s' konnte nicht eingelesen werden!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" "Abschnitt [%(section)s] in '%(configfile)s' sollte nicht existieren, Abbruch" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" "Kein Zeitplan in der Konfiguration definiert. Untersuchung des Dateisystems." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" "Die Konfigurationsdatei wurde in diesem ConfigManager noch nicht gesetzt" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "Kein Empfänger gesetzt." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Kein SMTP-Server gesetzt." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Benutzername gesetzt, jedoch kein Passwort festgelegt." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Passwort gesetzt, jedoch kein Benutzername festgelegt." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "Es wurde eine Zertifikatsdatei und eine Schlüsseldatei festgelegt, obwohl " "die Option SSL (smtptls=1) nicht gesetzt ist.\n" "Aktivieren Sie SSL, um ein Zertifikat und einen Schlüssel zu verwenden." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "Wenn ein SSL Zertifikat oder eine Schlüsseldatei festgelegt wurde, ist die " "Angabe einer Schlüsseldatei bzw. eines Zertifikats notwendig." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Standardprofil" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Unbekanntes Profil" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Unbegrenzt" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Benutzerdefiniert" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3-Musik" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI-Videos" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG-Videos" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matroska-Videos" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG-Multimedia-Container" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD-Abbilder" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Datei '%s' konnte in der Sicherungsdatei nicht gefunden werden." #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "Datei '%(filename)s' wurde nicht in der Dateiliste der Sicherung " "[%(snapshotname)s] gefunden. Wird übersprungen." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Sicherung '%s' wurde nicht gefunden " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" "Ungültige Sicherung `%(name)s` gefunden: Name der Sicherung ist nicht gültig." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "Ungültige Sicherung `%(name)s` gefunden: %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "Dateikopf der 'snar'-Datei ist unvollständig!" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" "Sicherung '%s' ist bereits eine vollständige Sicherung, es gibt nichts zu " "tun (wird nicht in eine volle Sicherung umgewandelt)." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Vorbereitung des Sicherungsvorgangs" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Sicherung '%(name)s' wird erstellt." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "Festlegen der Ausgangssicherung auf '%(value)s'." #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "Erstellen der Paket-Liste." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Problem beim Festlegen der Paketliste: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Schreiben der 'Nicht Sichern'-Liste." #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "Komprimierung festgelegt auf `%s`" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "Größe der Teilarchive festgelegt auf %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Option 'Symbolischen Links folgen' ist aktiviert." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "Option 'Symbolischen Links folgen' ist nicht aktiviert." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "Sicherung wird geschrieben" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "Fehler während des Entfernens alter Sicherungen: %s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Sicherungsvorgang wurde beendet." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "Untersuchen des Dateisystems und sammeln der Dateiinformationen" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Zusammenfassung der Sicherung" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Anzahl von Verzeichnissen: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Gesamtanzahl von Dateien: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Anzahl symbolischer Verknüpfungen: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Anzahl der in diesen Schnappschuss eingeschlossenen Dateien: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Anzahl neuer Dateien (ebenfalls eingeschlossen): %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" "Anzahl übersprungener Dateien in diesem inkrementellen Schnappschuss: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Anzahl von Elementen, die ausgeschlossen werden mussten: %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" "Anzahl von Elementen, die auf Grund von Benutzereinstellungen ausgeschlossen " "wurden: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Maximal benötigter freier Speicherplatz ist '%s'." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Verfügbarer Speicherplatz ist '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "Für die geplante Sicherung ist nicht genügend freier Speicher im " "Zielverzeichnis verfügbar (frei: %(freespace)s, benötigt: %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" "Protokolldatei konnte nicht kopiert werden. Dateizugriff wurde nicht " "initialisiert." #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "Protokolldatei konnte nicht kopiert werden: %s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "Logdatei wurde nicht gefunden." #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "Keine Sicherung vorhanden um das Log zu kopieren." #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" "Die Bearbeitung des Sicherungsprofils wurde auf Wunsch des Benutzers " "abgebrochen\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" "Die Bearbeitung des Sicherungsprofils wurde erfolgreich beendet (keine " "Fehler)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" "Die Bearbeitung des Sicherungsprofils ist fehlgeschlagen. Fehler: %s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Sicherungsziel: %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Zielverzeichnis konnte nicht gefunden werden." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" "Zielverzeichnis konnte auch nach einem weiteren Versuch nicht gefunden " "werden." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Zielverzeichnis '%(target)s' existiert nicht." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "Auf das Zielverzeichnis konnte nicht zugegriffen werden: %s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "Schnappschuss ist inkonsistent: __name ist nicht festgelegt " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Name der Sicherung '%s' erfüllt Anforderung nicht" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "Schnappschuss ist inkonsistent: __snapshotpath ist nicht festgelegt " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "Das Format der Sicherung sollte '%s' sein, jedoch wurde ein entsprechend " "benannte Datei nicht gefunden" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" "%(file)s enthält keinen gültigen Wert. Unvollständiges oder unbekanntes " "Verzeichnis wird ignoriert. " #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Name der Sicherung ist ungültig: %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Name der Ausgangssicherung ist ungültig: %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "Ungültiger Name der Sicherung: %s" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "Die notwendige Datei `ver` konnte nicht gelesen werden" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" "Für eine inkrementelle Sicherung muss der Name einer Ausgangssicherung " "festgelegt sein." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Initialisierung des FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Beendigung des FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "Initialisierung des GIO Dateizugriffs." #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "Beendigung des GIO Dateizugriffs." #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "Mountpunkt konnte nicht ermittelt werden: Pfad ist nicht eingebunden" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" "Mountpunkt konnte nicht ermittelt werden: Einzubindener Pfad wurde nicht " "gefunden (ist wahrscheinlich lokal)" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "Mountpunkt konnte nicht ermittelt werden: %s" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" "Mountflag konnte nicht zurück gesetzt werden: Pfad wurde nicht gesichert" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "Pfad ist bereits eingebunden." #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "Pfad ist nicht eingebunden." #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "Testen des festgelegten Pfades auf Existenz mittels GIO" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "Erstelle Testverzeichnis" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "Testdatei auf Existenz prüfen" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "Datei erstellen" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "Testdatei erneut einlesen" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Datei entfernen" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "Verzeichnis entfernen" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" "Plugin `%(plugin_name)s` konnte nicht importiert werden: %(error_cause)s " #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Konnte externe Anwendung 'curlftpfs' nicht finden. Diese wird zur Handhabung " "von FTP Sites benötigt: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" "'%(server)s' konnte nicht in '%(mountpoint)s' eingebunden werden: %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" "Schema für FTP ist: " "ftp://benutzername:passwort@servername.com/ein_beliebiger_pfad" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Beim Auflösen des FTP-Adressformates 'ftp://user:pass@server/anything' ist " "ein Fehler aufgetreten: '%s' (auf den Servernamen muss zwingend '/' folgen)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "Für die Verwendung von SFTP-Zielen wird das externe Programm 'curlftpfs' " "benötigt. Das Programm 'curlftpfs' wurde nicht gefunden: %s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" "Das Format für SFTP-Adressen lautet: sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Beim Auflösen des SFTP-Adressformates 'sftp://user:pass@server/anything' ist " "ein Fehler aufgetreten: '%s' (auf den Servernamen muss zwingend '/' folgen)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Beim Auflösen des SSH-Adressformates 'ssh://user:pass@example.com/home/' ist " "ein Fehler aufgetreten: '%s' (auf den Servernamen muss zwingend '/' folgen)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "Das sshfs-Kommando '%(command)s' wurde nicht korrekt ausgeführt. Ausgabe => " "%(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "Schema für SSH ist: " "ssh://benutzername:passwort@servername.com:portnummer/ein_beliebiger_pfad" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" "Fehler beim Prüfen des Schema " "'ssh://benutzername:passwort@servername.com:portnummer/ein_beliebiger_pfad' " "mit '%s' (Der Schrägstrich '/' nach der Serverangabe ist notwendig)." #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" "Bitte stellen sie sicher, dass das fehlende Verzeichnis existiert (z.B. " "durch Einhängen einer externen Festplatte) oder ändern sie den Wert für das " "Zielverzeichnis entsprechend." #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" "Während des Zugriffs auf das Backup Zielverzeichnis ist folgender Fehler " "aufgetreten:\n" "\n" "%s." #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Simple Backup Fehler" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "Auf das Sicherungsziel konnte nicht zugegriffen werden" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "Sicherungen nach Zeitplan sind nur für Administratoren möglichen." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Name" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Dateityp" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Profil verwenden" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Name des Profils" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Ungültigen oder leeren Regulären Ausdruck ('%s') in der Konfiguration " "gefunden. Wurde entfernt." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Ungültige oder leere Reguläre Ausdrücke in\n" "der Konfiguration gefunden:\n" "'%s'\n" "\n" "Diese Ausdrücke werden nicht benutzt und wurden\n" "aus der Konfiguration entfernt." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Bitte stellen Sie sicher, dass das fehlende Verzeichnis existiert (z. B. " "indem sie eine externe Festplatte einbinden) oder ändern sie das festgelegte " "Zielverzeichnis auf ein existierendes Verzeichnis." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" "Ziel der Sicherung `%s` existiert nicht.\n" "\n" "Achtung: Das Sicherungsziel wird auf den Standardwert zurück gesetzt. Prüfen " "sie dies bitte im Reiter 'Zielverzeichnis' bevor sie die Änderungen " "speichern." #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Zielverzeichnis der Sicherung konnte nicht geöffnet werden" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" "%s\n" "\n" "Es wurde ein Sicherungsprofil, welches die Standardwerte verwendet, erzeugt. " "Bitte die neuen Einstellungen speichern um sie zu verwenden oder die " "existierende Konfigurationsdatei manuell überprüfen.\n" "\n" "Wichtiger Hinweis: Speichern des Profils überschreibt die existierenden " "ungültigen Einstellungen." #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Aktuelles Profil: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Eintrag ist bereits enthalten!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Eintrag ist bereits ausgeschlossen!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" "Leeres Suchmuster. Bitte geben Sie einen gültigen regulären Ausdruck als " "Suchmuster an." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "Der angegebene reguläre Ausdruck ist nicht gültig." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Leerer Dateiname oder Pfad. Bitte geben Sie einen gültigen Dateinamen oder " "Pfad an." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "Der angegebene Pfad scheint nicht zu existieren. Soll dieser inkorrekte Pfad " "hinzugefügt werden?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Konfiguration speichern unter..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "Ein Sicherungsvorgang wird im Hintergrund ausgeführt.\n" "\n" "Sie können den Fortschritt der Sicherung mit Hilfe des Statusindikators im " "Benachrichtigungsbereich überwachen." #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "Sicherungsvorgang gestartet" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "Unerwartete Dialog Antwort: %s" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Datei hinzufügen..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Alle Dateien" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Ordner hinzufügen..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Datei ausschliessen..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Ordner ausschliessen..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "Konfiguration wurde geändert" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "Es gibt ungesicherte Änderungen. Bitte sichere die Konfiguration oder mache " "die Änderungen rückgängig um die E-Mail-Einstellungen zu testen." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Testen der Einstellungen für E-Mail" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "Der Test schlug mit folgender Ausgabe fehl:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "Der Test war erfolgreich." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" "Der übergebene Ausdruck enthält nicht unterstützte Zeichen ('%s'). Es ist " "zur Zeit nicht möglich diese Zeichen in 'Nicht Sichern'-Ausdrücken zu " "verwenden." #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "Nicht unterstütztes Zeichen" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "Verbinde mit entferntem Ziel" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "Einhängen war erfolgreich (keine Fehler)" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "Einhängen des Servers fehlgeschlagen" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "Aushängen war erfolgreich (keine Fehler)" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "unmounten des Ziels fehlgeschlagen" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "Führe Tests auf entferntem Computer durch" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "Zugriff auf entfernten Server erfolglos" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "Alle Tests erfolgreich abgeschlossen" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "Der übergebene Profilname ist leer. Bitte einen gültigen Profilnamen " "eingeben." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Profilname nicht gültig" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" "Der übergebene Profilname wird bereits verwendet. Bitte einen anderen " "Profilnamen eingeben." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "Das Umbenennen von Profilen wird nicht unterstützt." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" "Lösche Konfigurationsdatei?\n" "\n" "Sie versuchen eine Konfigurationsprofil zu löschen. Rückgängigmachen der " "Aktion ist unmöglich. Wenn sie nicht sicher sind, nutzen sie bitte " "alternativ die \"aktivieren|deaktivieren\" Funktion.\n" "\n" "Möchten sie das Profil '%(name)s' wirklich löschen?" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "Standardwerte für das aktuelle Profil setzen?\n" "Es werden die Standardwerte für das derzeitig bearbeitete Profil '%s' wieder " "hergestellt.\n" "\n" "Diese vordefinierten Einstellungen sind für die meisten Anwender empfohlen. " "Vor dem Speichern der geänderten Konfiguration sollte überprüft werden, ob " "diese Einstellungen passend für den konkreten Anwendungsfall sind." #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "Standardwerte werden gesetzt." #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Löschen des Standardprofils nicht möglich\n" "\n" "Das Standardprofil kann nicht gelöscht werden. Wenn sie nur ein einziges " "Profil nutzen wollen konfigurieren sie bitte das Standardprofil entsprechend." #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Löschen des Standardprofils nicht möglich\n" "\n" "Das Standardprofil kann nicht deaktiviert werden. Wenn sie nur ein einziges " "Profil nutzen wollen konfigurieren sie bitte das Standardprofil entsprechend." #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" "Kein Backupprofil gefunden.\n" "\n" "Es wurde kein Standardprofil gefunden. Sie haben Simple Backup vermutlich " "zum ersten mal gestartet. Ein Backup Profil mit Standardwerten wurde " "erstellt.\n" "\n" "Bitte passen sie die Werte an ihre Bedürfnisse an und speichern sie das " "Profil um es anschließend nutzen zu können." #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "Bitte ein Profil wählen." #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "Es gab ein Problem beim Laden des pynotify Modul." #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "Verbindung zu Benachrichtigungsdienst fehlgeschlagen: %s" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "Simple Backup" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "Dialogfenster anzeigen" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "Sicherung abbrechen" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "Verbindung zu D-Bus Dienst verloren." #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "Verbindung wiederhergestellt" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" "Verbindung zum D-Bus Dienst wurde unterbrochen und es findet keine Sicherung " "statt. Simple Backup Statusanzeige wird beendet." #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "Sicherungsvorgang wird gestartet" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "Sicherungsvorgang wird beendet" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "Unbekanntes D-Bus Ereignis `%s` erhalten." #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "Erneut versuchen" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" "Es wurde versucht eine weitere Instanz von Simple Backup zu starten obwohl " "bereits diese Instanz läuft." #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "Fenster konnte nicht angezeigt werden: %s" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" "Soll der Sicherungsvorgang des Profils '%s' wirklich abgebrochen werden?" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "Laufenden Sicherungsvorgang abbrechen?" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "Sicherungsvorgang konnte nicht abgebrochen werden." #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "Profil: %s" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "Größe der Sicherung: %s" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "%.1f%% erledigt" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "Verbleibende Zeit: %s" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "PID des abzubrechenden Sicherungsvorgangs: %s" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "Konnte kein Signal an Prozess %s senden" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "Sende Signal mittels gksu an Prozess %s" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "Senden des Signals mittels gksu an Prozess %s fehlgeschlagen" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" "Angegebener Zielordner nicht verfügbar\n" "\n" "Der angegebene Pfad '%s' kann nicht gefunden werden.\n" "\n" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" "Sie können erneut versuchen das festgelegt Sicherungsziel zu verwenden oder " "den Sicherungsvorgang abbrechen. Die festgelegte Sicherung wird in %s " "Sekunden automatisch erneut verwendet." #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "unbekannt" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "weniger als 1 Minute" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "ungefähr 2 Minuten" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "ungefähr 3 Minuten" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "ungefähr 4 Minuten" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "ungefähr 5 Minuten" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "ungefähr %.0f Minuten" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "Vorgang läuft" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "Fertiggestellt" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "Fortschritt: unbekannt" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "Sicherung wird vorbereitet" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "Dateiinformationen sammeln" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "Fortschritt: abgebrochen" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "Ein Fehler trat auf" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "Eine andere `Simple Backup Statusanzeige` läuft bereits." #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "Initialisierung von GTK+ fehlgeschlagen: %s" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "%s (Administrator-Modus)" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" "Ein unbekannter Fehler ist aufgetreten. Schließen Sie dieses Fenster und " "starten Sie die Anwendung neu.\n" "\n" "Bitte melden Sie diesen Fehler unter: https://bugs.launchpad.net/sbackup.\n" "\n" "%s" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "Entschuldigung, das hätte nicht passieren dürfen" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Wiederherstellen..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Wiederherstellen unter..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Rückgängig machen..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Rückgängig machen unter..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "k.A." #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Sicherungen" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Version" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Pfad" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Status" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "Verbinde mit Zielverzeichnis..." #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "Der angegebene Pfad existiert nicht" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Fertig" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "Kein Sicherungsziel angegeben" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Wählen Sie einen Quellordner" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "Einlesen der Sicherungen..." #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "Einlesen des Verzeichnisinhalts..." #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Lade ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "Einlesen der Dateien der Sicherung..." #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "Simple Backup Wiederherstellungsfehler" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "Während des Einlesen der Sicherung ist ein Fehler aufgetreten" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "Diese Sicherung scheint leer zu sein." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Lese Sicherungsschnappschuss" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "Keine Sicherungen für dieses Datum gefunden." #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Ort für die Wiederherstellung auswählen" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "Sollen die Änderungen an '%s' wirklich rückgängig gemacht werden?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Auswahl eines Verzeichnisses um Änderungen rückgängig zu machen" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" "\"Sollen die Änderungen an '%(source)s' wirklich nach '%(dir)s' rückgängig " "gemacht werden?\"" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "Einlesen der Sicherung..." #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" "Wenn sie die gewählte Sicherungsdatei '%s' löschen, geht die Sicherung für " "diesen Zeitpunkt verloren. Sie können die Aktion nicht rückgängig machen.\n" "\n" "Sind Sie sicher, dass Sie die Sicherungsdatei endgültig löschen wollen?" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "Möchten Sie diese Sicherung wirklich entfernen?" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" "Beim Löschen der Sicherung trat folgender Fehler auf:\n" "%s" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "Sicherung konnte nicht gelöscht werden" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" "Die gewählte Sicherungsdatei '%s' wird von aktuelleren Sicherungen als " "Grundlage verwendet.\n" "\n" "Löschen Sie alle abhängigen Sicherungen, um diese Sicherungsdatei löschen zu " "können." #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "Konnte Sicherung nicht entfernen." #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "Aktion wird abgebrochen" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "Simple Backup Wiederherstellung" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Wiederherstellung der ausgewählten Dateien" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Die Wiederherstellung von '%s' wird durchgeführt." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "Wiederherstellung von '%s' war erfolgreich." #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Die Wiederherstellung von '%s' schlug fehl.\n" "\n" "Folgender Fehler trat auf:\n" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Wiederherstellung von '%(source)s'\n" "nach '%(dirname)s' wird ausgeführt." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Wiederherstellung von '%(source)s'\n" "nach '%(dirname)s' war erfolgreich." #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Die Wiederherstellung von '%(source)s'\n" "to '%(dirname)s' schlug fehl.\n" "\n" "Folgender Fehler trat auf::\n" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Änderungen an ausgewählten Dateien werden rückgängig gemacht" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Rückgängig machen von '%s' wird durchgeführt.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "Rückgängig machen von '%s' war erfolgreich." #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Die Wiederherstellung von '%s' war nicht erfolgreich.\n" "\n" "Es trat folgender Fehler auf:\n" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Rückgängig machen von '%(source)s'\n" "nach '%(dirname)s' wird durchgeführt." #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Rückgängig machen von '%(source)s'\n" "nach '%(dirname)s' war erfolgreich." #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Die Wiederherstellung von '%(source)s' nach '%(dirname)s' " "war nicht erfolgreich.\n" "\n" "Es trat folgender Fehler auf:\n" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "%(mb)d MiB %(kb)d KiB" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d MiB %(kb)d KiB %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "%(mb)d MB %(kb)d kB" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" "Auf Datei '%(file)s' kann nicht zugegriffen werden. Fehler '%(error)s'." #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" "Datei '%(file)s' kann nicht zum Lesen geöffnet werden. Zeitüberschreitung " "beim Öffnen." #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" "Datei '%(file)s' kann nicht zum Lesen geöffnet werden. Fehler '%(error)s'." #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" "Symbolische Verknüpfung '%(path)s' -> '%(ln_target)s' erzeugt einen " "Kreisbezug." #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "Pfad '%(file)s' ist das Zielverzeichnis der Sicherung." #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "Pfad '%(file)s' ist in der 'Nicht Sichern'-Liste vorhanden." #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "Pfad '%(file)s' erfüllt den Regulären Ausdruck '%(regex)s'." #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" "Datei '%(file)s' überschreitet die maximale Dateigröße ( %(filesize)s > " "%(maxsize)s)." #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "Fehler beim Testen des Verzeichnisses '%(dir)s': %(error)s." #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "Leerer Regulärer Ausdruck gefunden. Wird ausgelassen." #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "Ungültiger Regulärer Ausdruck ('%s') gefunden. Wird ausgelassen." #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "Keine Verzeichnisse zum Sichern festgelegt." #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "Eine andere Instanz des Programms läuft bereits." #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "Ungültige Lock-Datei gefunden. Wird entfernt." #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "Lock-Datei konnte nicht entfernt werden: %s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" "Die Lock-Datei konnte nicht entfernt werden, da die Datei nicht gefunden " "wurde." #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Dateityp ausschließen" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standard Dateitypen:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Selbstdefinierter Dateityp mit " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "Dateierweiterung" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Ausschließen mittels Suchmuster (regulärer Ausdruck)" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Geben Sie einen regulären Ausdruck an.\n" "Dateien und Ordner, die diesem Ausdruck entsprechen, werden von der " "Sicherung ausgeschlossen." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" "Geben Sie einen entfernten Ordner/Datei an, der gesichert werden soll" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Wählen Sie ein Plugin um das Format zu bestimmen" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Wählen Sie Ihr Plugin:" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Prüfen" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" "Geänderte Konfiguration speichern?\n" "\n" "Die Konfiguration wurde geändert. Soll die geänderte Konfiguration verwendet " "werden, so muss sie gespeichert werden.\n" "\n" "Soll die Konfiguration jetzt gespeichert werden?" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Profilverwaltung" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" "Sie können mehrere Profile einrichten, die ausgeführt werden, wenn eine " "Sicherung durchgeführt wird. Jedes Profil hat seine eigenen Einstellungen, " "die Sicherungsziel, Format der Sicherung etc. enthalten." #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Einstellungsprofile" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "Hinzufügen eines Profils\n" "\n" "Bitte den Namen des neuen Profils angeben und festlegen ob das Profil aktiv " "bzw. inaktiv sein soll." #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Profilname" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Aktiviert" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_Datei" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Speichern unter..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Werkzeuge" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "Standardwerte setzen..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Profilverwaltung..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "Die Sicherung jetzt durchführen" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "_Hilfe" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "_Hilfethemen" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "Info" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Einstellungen neu laden" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Konfiguration speichern" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Sicherung jetzt erstellen" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Profilverwaltung öffnen" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profile" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "none\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" "Kompressionsformat\n" "Der Standard sind unkomprimierte Sicherungen." #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" "Die Sicherung kann in kleinere Dateien aufgeteilt werden, um Sicherung auf " "Dateisystemen abzulegen, die keine beliebig großen Dateien unterstützen. " "Diese Funktion kann nicht in Verbindung mit komprimierten Sicherungen " "verwendet werden." #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Vollständige Sicherung mindestens alle" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" "Bis zur festgelegten Anzahl an Tagen seit der letzten vollständigen " "Sicherung werden inkrementelle Sicherungen erstellt." #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "Tage" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "Teile die Sicherungsarchive in mehrere Teile" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Hilfe" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "Hilfe zu den Einstellungen mittels grafischer Oberfläche zeigen." #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Allgemein" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "Einbezogene Dateien und Verzeichnisse" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Entfernen" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Datei hinzufügen" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Ordner hinzufügen" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Zu sichernde Daten" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "Ausgeschlossene Dateien und Verzeichnisse" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Pfade" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Hinzufügen" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Dateitypen" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Reguläre\n" "Ausdrücke" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "Keine Dateien sichern, die größer sind als" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Symbolischen Verknüpfungen folgen" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Sonstige" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Nicht Sichern" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Standardverzeichnis für Sicherungen verwenden" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Benutzerdefiniertes lokales Sicherungs-Verzeichnis verwenden" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Zielverzeichnis auswählen" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "Einen entfernten Speicher verwenden" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://benutzername:kennwort@beispiel.com/entfernt/ordner/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "Verbinde..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" "Das ausgewählte Zielverzeichnis ist mit den derzeitigen Zugriffsrechten " "nicht beschreibbar. Sicherungen können dort nicht abgelegt werden." #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Zielverzeichnis" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "_Keine geplanten/automatischen Sicherungen" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Einfach" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" "Mit dieser Einstellung wird die Sicherung nicht zu einer bestimmten Zeit " "durchgeführt, sondern, wenn der Computer eingeschaltet ist. " #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Benutzerdefiniert" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Sicherungen erstellen" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Cron-Ausdruck" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "Stündlich\n" "Täglich\n" "Wöchentlich\n" "Monatlich" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "Hilfe zu geplanten Sicherungen anzeigen." #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "Geplante/Zeitgesteuerte (d.h. automatische) Sicherungen können durch " "das einfache Auswählen des gewünschten Intervalles oder durch die Festlegung " "eines benutzerdefinierten Cron-Ausdruckes konfiguriert werden. Siehe \"man 5 " "crontab\" für das Format der Cron-Ausdrücke." #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Zeitplan" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "Löschen von alten Sicherungen einschalten" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "Einfaches Entfernen: Löschen aller Sicherungen älter als" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logarithmisches Entfernen" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" "In die Vergangenheit weniger werdend behalten:\n" "Eine Sicherung von gestern behalten\n" "Eine Sicherung pro Tag aus der letzten Woche behalten\n" "Eine Sicherung pro Woche aus dem letzten Monat behalten\n" "Eine Sicherung pro Monat aus dem letzten Jahr behalten\n" "Eine Sicherung pro Vierteljahr aus dem vorletzen Jahr behalten\n" "Eine Sicherung pro Jahr aus jedem vorherigen Jahr behalten." #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "Hilfe zum Aufräumen von Sicherungen anzeigen." #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Hinweis: Darüber hinaus werden alle unvollständigen und nicht " "wiederherstellbaren Sicherungen gelöscht, sofern eine vollständige Sicherung " "eines späteren Zeitpunktes verfügbar ist." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Aufräumen" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Alte Sicherungen säubern" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Protokollieren" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" "Die empfohlene Einstellung ist 'Info'. Die Einstellung 'Debug' ist für " "Entwicklerzwecke vorgesehen." #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Protokollierungsstufe" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" "'Debug' dient der Fehlerbehebung. Die empfohlene Einstellung is 'Info'." #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Verzeichnis der Protokolldatei" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Bericht per E-Mail" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "Absender" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "SMTP-Server" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Portnummer" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "An" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Benutzername und Kennwort verwenden" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Benutzername" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Kennwort" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Sichere Verbindung benutzen" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Zertifikatsdatei auswählen" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Schlüssel" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Zertifikat" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Schlüsseldatei auswählen" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Testen der _Mail Einstellungen" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Berichte" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Achtung" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "Zeige das Hilfethema zu Standardwerten." #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "_Setzen" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "Entferntes Ziel festlegen" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "Art des Dienstes" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "Rechnername" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "Details" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "Passwort anzeigen" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "_Verbinden" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "Eine vollständige Sicherung durchführen" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Dateien/Verzeichnisse wiederherstellen" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Quellordner wiederherstellen" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Verfügbare Datensicherungen:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Eigene Einstellung verwenden:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Standard verwenden:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Wiederherzustellende Dateien und Ordner" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Wiederherstellen" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Wiederherstellen als..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "Sicherungsziel" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Zeigt das Handbuch im Hilfebrowser." #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "Standardziel für Profile" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" "Den Ort der Sicherung auf den Ort einstellen, der im Standard-Profil " "angegeben ist." #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "Eigenes Ziel" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" "Wählen Sie einen Ort für die Sicherung auf Ihrer Festplatte oder an einem " "entfernten Ort. Klicken Sie Anwenden, wenn Sie fertig sind." #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" "Wählen Sie einen Ziel-Ordner. Für entfernte Orte tragen Sie die URI in das " "Textfeld ein." #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "Das Ziel in den Pfad ändern, der im linken Textfeld definiert ist" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" "Wählen Sie ein fett gedrucktes Datum aus, um eine Liste mit Sicherungen für " "dieses Datum zu erhalten." #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "Verfügbare Sicherungen" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "Schnappschuss löschen" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Entfernen" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Verlauf der Sicherungen" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "Derzeitige Datengrundlage:" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" "Wählen Sie aus dieser Liste eine Sicherung aus um diese als " "Ausgangssicherung zu verwenden." #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "Ausgangssicherung umstellen" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Verwaltung von Sicherungen" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "Details der Sicherung" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "Wiederherstellung von Dateien/Ordner aus der ausgewählten Sicherung" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" "Rekursive Wiederherstellung von Dateien/Ordner aus der ausgewählten " "Sicherung beginnend mit der ersten Ausgangssicherung" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Änderungen rückgängig machen" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Wiederherstellung" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Export-Verwaltung" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Überschrift" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Inhalt" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "" #~ "Die Datengrundlage einer vollständigen Sicherung '%s' braucht nicht " #~ "umgestellt werden" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "'%(snapshotToRebase)s' enthält keine 'base'-Datei, es ist möglicherweise " #~ "beschädigt " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Die Datengrundlage eine Sicherung kann nicht auf eine jüngere Sicherung " #~ "umgestellt werden: '%(snapshotToRebase)s' <= '%(NewBaseSnapshot)s' " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Ändern der Basis von '%(current)s' auf '%(base)s'" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "Während des Lesens der Sicherung '%s' ist ein Fehler aufgetreten." #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "Ausgangssicherung des Sicherung '%s' ist nicht gesetzt." #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Zugriff auf Sicherung '%s' abgebrochen" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Umstellung von v1.0 auf v1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Umstellung auf v1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Umstellung auf v1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Umstellung auf v1.5: %s" #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "" #~ "Die SNAR-Datei existiert bereits für die Sicherung '%s'. Sie wird nicht " #~ "überschrieben." #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "Die Version der Sicherung ist neuer als die unterstützten Versionen!" #~ msgid "Unable to upgrade snapshot" #~ msgstr "Upgrade der Sicherung konnte nicht durchgeführt werden" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "" #~ "Möchten Sie wirklich die Basis von '%(current)s' auf '%(base)s' ändern?" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "Datei '%(file)s' existiert nicht." #~ msgid "Upgrade" #~ msgstr "Version umstellen" #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "" #~ "Es gibt Sicherungen die in einem veralteten Sicherungsformat gespeichert " #~ "wurden. Bitte diese Sicherungen mit Hilfe der Anwendung 'Simple Backup " #~ "Wiederherstellung' upgraden um sie zu verwenden." #, python-format #~ msgid "Unable to remove upgrade stamp: %s" #~ msgstr "Upgrade-Hinweis konnte nicht entfernt werden: %s" #~ msgid "" #~ "There are snapshots with old snapshot format. Please upgrade these using the " #~ "Restoration tool if you want to use them." #~ msgstr "" #~ "Es sind snapshots in einem alten Format vorhanden. Bitte konvertieren sie " #~ "diese mit Hilfe des Restoration Tools um sie nutzen zu können." #, python-format #~ msgid "" #~ "Snapshot version is not supported (Only %(supportedversion)s is supported). " #~ "Version '%(currentversion)s' found. You should upgrade it. " #~ msgstr "" #~ "Diese Version der Sicherung wird nicht unterstützt (nur Version " #~ "%(supportedversion)s wird unterstützt). Version '%(currentversion)s' wurde " #~ "gefunden. Sie sollten die Sicherung upgraden. " #, python-format #~ msgid "" #~ "While attempting to upgrade snapshot the following error occurred:\n" #~ "%s" #~ msgstr "" #~ "Beim Versuch die Sicherung zu aktualisieren trat folgender Fehler auf:\n" #~ "%s" #~ msgid "Do you really want to upgrade snapshot?" #~ msgstr "Möchten Sie die Sicherung wirklich aktualisieren?" #, python-format #~ msgid "Upgrade snapshot '%s'" #~ msgstr "Sicherung aktualisieren '%s'" #~ msgid "Snapshot was sucessfully upgraded." #~ msgstr "Sicherung wurde erfolgreich aktualisiert." #~ msgid "Upgrade finished" #~ msgstr "Upgrade beendet" #~ msgid "Simple Backup upgrade" #~ msgstr "Einfache Aktualisierung der Sicherungsdatei" #, python-format #~ msgid "" #~ "Upgrading the selected snapshot `%s` might corrupt your backup for this " #~ "particular point in time. You cannot undo this operation. It is recommended " #~ "to create a copy of the snapshot directory before upgrading it. The upgrade " #~ "process takes a while - be patient.\n" #~ "\n" #~ "Are you sure that you want to upgrade the snapshot now?" #~ msgstr "" #~ "Wenn Sie die gewählte Sicherungsdatei '%s' aktualisieren, kann das Ihre " #~ "Sicherung für diesen Zeitpunkt zerstören. Sie können die Aktion nicht " #~ "rückgängig machen. Es wird empfohlen, dass Sie eine Kopie der " #~ "Sicherungsdatei erstellen, bevor Sie sie aktualisieren. Der " #~ "Aktualisierungsprozess dauert eine Weile, haben Sie einen Augenblick " #~ "Geduld.\n" #~ "\n" #~ "Sind Sie sicher, dass Sie die Sicherungsdatei jetzt aktualisieren möchten?" #~ msgid "Upgrade snapshot" #~ msgstr "Sicherungsdatei aktualisieren" sbackup-0.11.6/po/pt.po0000644000175000017500000016006512216122130013276 0ustar peerpeer# Portuguese translation for sbackup # Copyright (c) 2006 Rosetta Contributors and Canonical Ltd 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:41+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Equipa de Tradutores do Ubuntu PT , 2007.\n" "\n" "Launchpad Contributions:\n" " Almufadado https://launchpad.net/~almufadado\n" " Carlos Manuel https://launchpad.net/~crolidge\n" " Fyda https://launchpad.net/~rvcortes\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Rui Pereira https://launchpad.net/~ruifpereira" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalizado" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Musíca MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Vídeo AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Vídeo MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Vídeo Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Conteúdo Multimédia OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Imagens de CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Ficheiro '%s' não encontrado na lista de pontos de restauro" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Item já incluído !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Item já excluído !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" "A expressão está vazia. Por favor entre com uma expressão normal válida." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "O nome do ficheiro ou o caminho estão vazios. Por favor entre com uma " "expressão normal válida." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Todos os Ficheiros" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Caminho" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Escolha um directório de origem" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "A Carregar ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Seleccione a localização para onde vai fazer o restauro" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Excluir tipo de ficheiro" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Tipos de ficheiros padrão:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Tipo de ficheiros definido personalizado com " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "extensão do ficheiro" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Excluir por regex" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Introduza uma expressão regular.\n" "Ficheiros e pastas coincidentes com esta expressão serão excluídos da " "salvaguarda." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Aplicação de Cópia de Segurança Simples" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Fazer uma salvaguarda total pelo menos uma vez a cada" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dias" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Geral" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Adicionar Ficheiro" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Adicionar Pasta" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Incluir" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Caminhos" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Tipos de ficheiro" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Excluir" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Usar pasta local de cópia personalizada" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Escolher a pasta de destino" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://utilizador:senha@exemplo.com/remoto/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destino" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Nota: Adicionalmente, todas as cópias de segurança incompletas e " "irrecuperáveis serão apagadas desde que haja uma captura de cópia de " "segurança feita posteriormente." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "A expurgar" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "A limpar cópias de segurança antigas" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Restaurar ficheiros/directorias" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Restaurar Pasta de Fonte" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Salvaguardas disponíveis:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Usar personalizado:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Usar padrão:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Ficheiros e Pastas a restaurar" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restaurar" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Restaurar como..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Reverter" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/sbackup.pot0000644000175000017500000015422312216122130014466 0ustar peerpeer# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with " "'%s' (The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/zh_CN.po0000644000175000017500000015741312216122130013657 0ustar peerpeer# Simplified Chinese translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:46+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Simplified Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "未指定日志文件。" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "找不到日志文件。" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "严重错误:缺省配置中无设置文件!\n" "现在继续处理剩下的配置。" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "备份被用户取消" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "备份时出错:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "发送邮件时出错:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "之前遇到的错误:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "维护者:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "贡献者:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " xyb https://launchpad.net/~xieyanbo\n" " 冯超 https://launchpad.net/~rainofchaos\n" " 唐微南 https://launchpad.net/~twn39" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "无法改变文件 '%s' 的权限。" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "TAR 返回信息:%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "包含" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "目录" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "文件‘%s’不存在." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "定制" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 音乐" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI 视频" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG 视频" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka 视频" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG 多媒体容器" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD 镜像" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "已经包含该项 !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "已经排除该项 !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "表达式为空。请输入合法的正则表达式。" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "文件名或路径为空。清输入合法的文件名或路径。" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "所有文件" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "路径" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "选择源文件夹" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "正在载入..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "选择恢复位置" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "排除的文件类型" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "标准文件类型" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "自定义文件类型 " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "文件后缀" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "通过正则表达式排除" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "输入正则表达式。\n" "符合此表达式的文件和目录不会被备份。" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "简单备份工具" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "进行备份,至少每" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "天" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "普通" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "添加文件" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "添加目录" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "包括" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "路径" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "文件类型" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "排除" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "使用自定义备份目录" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "选择目标文件夹" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "目标" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "注意:如果存在新的备份快照,将会删除额外的不完全和不可恢复的备份" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "清除" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "清除陈旧的备份" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "恢复文件/目录" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "恢复原始文件夹" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "可用的备份:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "使用自定义:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "使用默认:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "要恢复的文件和文件夹" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "恢复" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "恢复为..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/ca.po0000644000175000017500000015654312216122130013244 0ustar peerpeer# Catalan translation for sbackup # Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-09-24 23:52+0000\n" "Last-Translator: Siegfried Gevatter \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Jordi Mallach \n" "\n" "Launchpad Contributions:\n" " Jordi Mallach https://launchpad.net/~jordi\n" " Siegfried Gevatter https://launchpad.net/~rainct" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalitzat" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Música MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Vídeo AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Vídeo MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Vídeo Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Contenidor multimèdia OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Imatges de CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Nom" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "L'expressió està buida. Introduïu una expressió regular vàlida." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "El nom de fitxer o camí és buit. Introduïu un nom de fitxer o camí vàlid." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Tots els fitxers" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Ruta" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Tria un directori d'origen" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "S'està carregant..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Seleccioneu una ubicació per a la restauració" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Verifica" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Fes una còpia sencera almenys cada" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dies" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "General" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Afegeix un fitxer" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Afegeix un directori" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Inclou" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Camins" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Tipus de fitxers" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Exclou" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://nomusuari:contrasenya@exemple.com/dir/remot/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destí" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Nota: A més, totes les còpies de seguretat incompletes i no " "recuperables seran esborrades sempre que hi hagi una còpia de seguretat " "completa posterior." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "S'està buidant" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Nom d'usuari/a" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Contrasenya" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Restaura fitxers/directoris" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Còpies de seguretat disponibles:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Utilitza personalitzat:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Utilitza el predeterminat:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Arxius i Directoris a restaurar" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restaura" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Anomena i restaura..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Revertir" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/pt_BR.po0000644000175000017500000016165512216122130013667 0ustar peerpeer# Portuguese/Brazil translation of sbackup. # Copyright (C) 2006 THE sbackup'S COPYRIGHT HOLDER # This file is distributed under the same license as the sbackup package. # Jonh Wendell , 2006. # # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:39+0000\n" "Last-Translator: Vítor Avelino \n" "Language-Team: Portuguese/Brazil \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Nenhum arquivo de log especificado" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Foi impossível achar o arquivo de log." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Erro Crítico: Nenhum arquivo de configuração padrão encontrado no perfil." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Backup cancelado pelo usuário" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Um erro ocorreu durante o cancelamento da cópia de segurança:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Um erro ocorreu durante o processo de cópia:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Erro ao enviar email:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "O(s) seguinte(s) erro(s) ocorreu(ram) antes de:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Backup não está sendo iniciado.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Isso é uma solução amigável de backup para as necessidades comuns de uma " "estação de trabalho. Se você quer ajudar mandando bugs, traduzindo ou " "qualquer outra coisa por favor visite nossa página." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Mantenedores:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Colaboradores:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Jonh Wendell \n" "\n" "Launchpad Contributions:\n" " Alexsandro Haag https://launchpad.net/~alexsandro-haag\n" " Jonh Wendell https://launchpad.net/~wendell\n" " Kauan Mocelin https://launchpad.net/~kauanmocelin\n" " Leonardo Gregianin https://launchpad.net/~leogregianin\n" " Vítor Avelino https://launchpad.net/~vitoravelino" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Tipo de arquivo inválido" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Impossível remover o arquivo temporário '%(file)s': %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Iniciando TAR para fazer backup incremental." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" "Não foi possível encontrar o arquivo SNAR para fazer um backup incremental." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "A opção 'target' está faltando, abortando." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" "O arquivo de configuração ainda não está configurado nesse ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Perfil Padrão" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Perfil Desconhecido" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalizada" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Música MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Vídeo AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Vídeo MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Vídeo Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Multimídia OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Imagem de CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" "Arquivo '%s' não encontrado na lista de arquivos do snapshot de backup" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Snapshot '%s' não encontrado " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Item já incluso!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Item já excluído!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Expressão vazia. Por favor, entre com uma expressão regular válida." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Nome de arquivo ou pasta vazio. Por favor, digite um nome de pasta ou " "arquivo válido." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Todos os arquivos" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Caminho" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Escolha uma pasta origem" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Carregando..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Escolha onde restaurar" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Excluir por tipo de arquivo" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Tipos de arquivo comuns:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Tipo personalizado, com a extensão: " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "extensão de arquivo" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Excluir por expressão regular" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Entre com uma expressão regular.\n" "\n" "Arquivos e pastas que casam com essa expressão serão excluídos do backup." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Faça um backup completo uma vez a cada" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dias" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Geral" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Adicionar Arquivo" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Adicionar Pasta" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Inclusões" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Pastas" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Tipos de arquivos" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Exceções" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Usar uma pasta personalizada" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Selecione a pasta de destino" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://login:senha@exemplo.com/pasta/remota/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destino" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Nota: Adicionalmente todos os backups incompletos e irrecuperáveis " "serão apagados assim que um backup completo seja feito depois." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Limpeza" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Limpando backups antigos" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Restaurar arquivos/pastas" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Pasta origem do backup" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Backups disponíveis:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Usar personalizado:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Usar padrão:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Arquivos e Pastas a restaurar" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restaurar" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Restaurar Como..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Conteúdo" sbackup-0.11.6/po/ar.po0000644000175000017500000015451412216122130013257 0ustar peerpeer# Arabic translation for sbackup # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:24+0000\n" "Last-Translator: Oumar Aziz OUATTARA \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Oumar Aziz OUATTARA https://launchpad.net/~wattazoum" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/bg.po0000644000175000017500000016617312216122130013251 0ustar peerpeer# Bulgarian translation for sbackup # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:29+0000\n" "Last-Translator: Svetoslav Stefanov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" "X-Poedit-Country: BULGARIA\n" "X-Poedit-Language: Bulgarian\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Svetoslav Stefanov https://launchpad.net/~svetlisashkov" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Включени" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Папка" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Липсва цел, прекъсване." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" "Конфигурационният файл все още не е зададен в този Мениджър на настройки" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Профил по подразбиране" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Непознат профил" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Неограничено" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Потребителски" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Музика MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Видео AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Видео MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Видео Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Мултимедиен контейнер OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Изображения на CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Файлът '%s' не е открит в списъка с файлове в моментния архив" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Не е открит моментния архив %s' " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Името на моментния архив '%s' не съвпада с изискванията" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "Предполага се, че форматът за компресиране на моментния архив трябва да е " "'%s', но съответния правилно именуван файл не е открит" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Невалидно име на моментния архив: %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Невалидно име на база : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "'%(server)s' не може да се монтира в '%(mountpoint)s' : %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "Схемата на SFTP е: sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Име" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Тип на файл" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Включване" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Име на профил" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Празен израз. Моля въведете валиден регулярен израз." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Празно име на файл или път за достъп. Моля въведете валидно име на файл и ли " "път за достъп." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Всички файлове" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Проверка на настройките на пощата" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Моментни архиви" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Версия" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Път" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Състояние" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Изберете изходна папка" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Зареждане..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "Този моментен архив изглежда празен" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Изберете място за възстановяване" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Изключване на файловия тип" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Стандартни файлови типове:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Ръчно определен файлов тип с " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "разширение на файл" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Изключване по регулярен израз" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Въведете регулярен израз.\n" "Файловете и папките, които отговарят на него, ще бъдат изключени от " "архивиране." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Въведете отдалечена цел" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Изберете приставка за да получите формата" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Изберете приставка:" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Проверка" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Профили с настройки" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_Файл" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Инструменти" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "_Помощ" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Профили" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "без\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Извършване на пълно архивиране най-малко веджъж на" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "дни" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Общи" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Добавяне на файл" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Добавяне на папка" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Включване" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Пътища" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Типове файлове" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Други" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Изключване" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Използване на потребителска локална папка за архивиране" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Изберете папка" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Местоположение" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Логаритмично" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Забележка: Допълнително всички незавършени и невъзстановими архиви ще " "бъдат изтрити, стига да има пълен архив, направен на по-късна дата." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Прочистване" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Изчистване на старите архиви" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" "Debug е само за проследяване/изчистване на грешки. Препоръчителната " "настройка е Info." #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Папка за запис на файла с дневника" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Използване на потребителско име и парола" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Потребителско име" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Парола" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Ключ" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Сертификат" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Отчет" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Възстановяване" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Изтриване" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "История на моментните архиви" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Управление на моментните архиви" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Връщане" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Управление на възстановяването" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Управление на изнасянето" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Надграждане от в1.0 към в1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Надграждане към в1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Надграждане към в1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Надграждане към в1.5: %s" #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "Версията на моментния архив е по-висока от поддържаната!" #~ msgid "Upgrade" #~ msgstr "Надграждане" sbackup-0.11.6/po/cs.po0000644000175000017500000020061712216122130013256 0ustar peerpeer# Czech translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:42+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Není určen logovací soubor." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Nemohu najít logovací soubor." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Kritická chyba: Konfigurační soubor pro výchozí profil nebyl nalezen!\n" "\n" "Pokračuje se zpracováním zbývajících profilů." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Záloha byla zrušena uživatelem." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Nastala chyba při rušení zálohy:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Během zálohování došlo k chybě:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Chyba při odesílání e-mailu:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Zálohování není spuštěno..\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Tento program je jednoduché řešení pro zálohování. Pokud chcete upozornit na " "chyby v programu, překladu nebo čemkoliv jiném, navštivte naši webovou " "stránku." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Správci:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Dřívější správci:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Přispěli:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Kovar https://launchpad.net/~kowy\n" " Jan Hrdina https://launchpad.net/~jan-hrdina\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Kabi https://launchpad.net/~kubat-jan\n" " Michal Jaros https://launchpad.net/~klaksunek\n" " Petr Ferschmann https://launchpad.net/~petr-ferschmann\n" " Vladimír Burian https://launchpad.net/~vburian" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Neplatný typ archivu." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Efektivní cesta k `%s` není k dispozici" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Nelze získat efektivní cestu pro `%s`" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "V současné době není rozdělovací metoda kompatibilní s možností komprese." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Nelze změnit oprávnění pro soubor '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Nelze odstranit dočasný soubor `%(file)s`: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Adresář" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "Soubor '%s' neexistuje." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Adresář neexistuje: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Nastavení profilu se čte ze souboru '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Nastavení profilu je nastaveno na výchozí hodnoty. Konfigurační soubor je " "nastaven na '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" "Výstup souboru protokolu pro [%(profile)s] je přesměrován do souboru " "'%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Výstup souboru protokolu pro [%s] nesměřuje do souboru." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "Nelze přejmenovat soubor protokolu '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "Konfigurační soubor '% s' nelze číst!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Žádný SMTP server není nastaven." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Uživatelské jméno je nastaveno, ale není uvedeno heslo." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Heslo je nastaveno, ale není uvedeno uživatelské jméno." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Výchozí profil" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Neznámý profil" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Bez omezení" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Vlastní" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Hudba MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Video AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Video MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Video Matroska" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Multimediální kontejner OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Obrazy CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Soubor '%s' nebyl v seznamu souborů záložních obrazů nalezen." #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Příprava procesu zálohování" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Volba \"Následovat symbolické odkazy\" je povolena." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Zálohovací proces ukončen." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Počet adresářů: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Celkový počet souborů: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Počet symbolických odkazů: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Počet nových souborů (také zahrnutých): %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Počet položek vynuceně vyřazených: %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Počet položek vyřazených konfigurací: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Maximální požadované volné místo je '%s'." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Dostupné místo na disku je '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "Nedostatek volného místa v cílovém adresáři pro plánovanou zálohu (volno: " "%(freespace)s, požadováno: %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "Nelze kopírovat soubor protokolu: %s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "Zpracování profilu bylo zrušeno na žádost uživatele\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "Zpracování profilu úspěšně dokončeno (bez chyb)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "Zpracování profilu se nezdařilo, chyba: %s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Cíl zálohování: %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Nelze najít cílový adresář." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "Nepodařilo se najít cílový adresář ani opakovaně." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Cílový adresář '%(target)s' neexistuje." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Odstranit soubor" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "Odstranit adresář" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "Nepodařilo se najít externí aplikaci 'curlftpfs' potřebnou pro obsluhu sftp " "stránek: %s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "chyba Simple Backup" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Název" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Typ souboru" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Povolit" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Název profilu" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "V konfiguraci byl nalezen neplatný nebo prázdný regulární výraz ('%s'). " "Odstraněn." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "V konfiguraci byly nalezeny neplatné nebo prázdné\n" "regulární výrazy:\n" "'%s'\n" "\n" "Tyto výrazy nebudou použity a byly vymazány z konfigurace." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Současný profil: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Položka již byla vybrána!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Položka již byla odebrána!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Prázdný výraz. Prosím zadejte správný regulární výraz." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "Prázdný soubor nebo cesta. Prosím zadejte správný soubor nebo cestu." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "Zdá se, že cesta, kterou jste zadali, neexistuje. Chcete přidat tuto chybnou " "cestu?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Uložit konfiguraci jako..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "Zálohovací proces je nyní spuštěn v pozadí.\n" "\n" "Můžete sledovat průběh zálohování pomocí indikátoru stavu zobrazeného v " "oznamovací oblasti." #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "Zálohovací proces začal" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Přidat soubor..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Všechny soubory" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Přidat složku..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Vypustit soubor..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Vypustit složku..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "Konfigurace změněna" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "Jsou zde neuložené změny. Prosím, uložte konfiguraci nebo vraťte tyto změny " "před testováním nastavení e-mailu." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Otestovat nastavení e-mailu" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "Test se nezdařil s následujícím výstupem:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "Test byl úspěšný." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "Připojit se ke vzdálenému umístění" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "Nebyl zadán název tohoto nového profilu. Zadejte prosím platný název profilu." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Název profilu není platný" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "Tento název nového profilu již existuje. Prosím, zadejte jiné jméno." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "Přejmenování profilů není podporováno." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" "Odstranit konfiguraci profilu?\n" "\n" "Pokoušíte se odstranit konfigurační profil. Nebudete ho moci obnovit. Pokud " "si nejste jisti, použijte místo tohoto funkci 'povolit|vypnout'.\n" "\n" "Opravdu chcete smazat tento profil '%(name)s'?" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "Nastavit výchozí hodnoty pro aktuální profil?\n" "Toto obnoví výchozí hodnoty pro aktuálně editovaný profil: '%s'.\n" "\n" "Tyto předdefinované nastavení jsou doporučené pro většinu uživatelů. Před " "uložením změněné konfigurace zkontrolujte, zda je vhodná pro vaše použití." #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Nelze odstranit výchozí profil\n" "\n" "Výchozí profil nelze odstranit. V případě, že chcete používat jen jeden " "profil, prosím nastavte podle toho výchozí profil." #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Nelze odstranit výchozí profil\n" "\n" "Výchozí profil nelze vypnout. V případě, že chcete používat jen jeden " "profil, prosím nastavte podle toho výchozí profil." #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" "Profil zálohy nenalezen.\n" "\n" "Nebyl nalezen žádný výchozí profil. Pravděpodobně spouštíte Simple Backup " "poprvé. Byl vytvořen profil zálohy s použitím výchozích hodnot.\n" "\n" "Upravte prosím nastavení podle svých potřeb a uložte jej." #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "Prosím, vyberte profil." #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "Připojení k démonu notifikace selhalo: %s" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "Simple Backup" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "Zkusit znovu" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "Profil: %s" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "Velikost zálohy: %s" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "Zbývající čas: %s" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "Jiný `Simple Backup indikátor` už běží." #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Obnovit..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Obnovit jako..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Verze" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Cesta" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "Připojit se k umístění..." #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Vyberte zdrojový adresář" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Načítání ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Vyberte umístění pro obnovu" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Přidat typ souboru" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standardní typ souboru:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Vlastní definice typu souboru s " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "příponou souboru" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Odebrat regulárním výrazem" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Zadejte regulární výraz.\n" "Soubory a adresáře odpovídající tomuto výrazu budou vyřazeny ze zálohování." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Konfigurace správce profilů" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" "Můžete nastavit více konfiguračních profilů, které jsou použity při " "provádění zálohy. Každý profil má svou vlastní sadu nastavení, včetně " "umístění zálohy, formátu apod." #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Konfigurace profilů" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "Přidat nový profil\n" "\n" "Zadejte prosím název nového profilu a zaškrtněte patřičný přepínač k jeho " "povolení, resp. zakázání." #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Název profilu" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Povolit" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Jednoduché zálohování" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_Soubor" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Uložit jako..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Nástroje" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "Nastavit výchozí nastavení..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Správce profilů..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "Vytvořit zálohu nyní" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "Ná_pověda" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "_Zobrazit všechna témata nápovědy" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "_O tomto programu" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Znovu načíst konfiguraci" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Uložit konfiguraci" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Vytvořit zálohu nyní" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Otevřít správce profilů" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profily" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "žádný\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" "Kompresní formát\n" "Výchozí hodnota je nastavena na nekomprimované zálohy." #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Provést úplnou zálohu nejméně jedenkrát za" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dny/dní" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "Rozdělit záložní archivy do několika kusů" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Nápověda" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "Zobrazit téma nápovědy o konfiguraci grafického rozhraní." #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Obecné" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "Přidané soubory a adresáře" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Odstranit" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Přidat soubor" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Přidat adresář" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Zahrnout" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "Vyjmuté soubory a adresáře" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Umístění" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Přidat" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Typ souboru" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Regulární\n" "výrazy" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "Nezálohovat soubory větší než" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Následovat symbolické odkazy" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Další" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Vypustit" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Použít výchozí umístění zálohy" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Použít vlastní lokální umístění zálohy" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Vybrat cílový adresář" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "Použít vzdálené umístění" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://uživatelské_jméno:heslo@example.com/vzdálená/složka/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "Připojit..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" "Do vybraného cíle nelze zapisovat se současnými oprávněními. Zálohy zde " "nemohou být uloženy.." #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Umístění" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "_Žádné naplánované zálohy" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Jednoduše" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Vlastní" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Zálohovat" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Definice času ve formátu cron" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "hodinově\n" "denně\n" "týdně\n" "měsíčně" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "Zobrazit téma nápovědy o plánování záloh." #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "Můžete nastavit plánované (tj. automatické) zálohování buďto " "jednoduše vybráním intervalu, nebo přesně vlastní cron definicí. Viz \"man 5 " "crontab\" pro informace o formátu cron definice času." #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Plán" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "Povolit čištění starých záloh" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "Jednoduché smazání: Vymazat všechny zálohy starší než" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logaritmické" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" "Zachovávat postupně do minulosti méně záloh:\n" "Ponechat všechny zálohy ze včerejška\n" "Ponechat jednu zálohu za den z minulého týdne\n" "Ponechat jednu zálohu za týden z minulého měsíce\n" "Ponechat jednu zálohu za měsíc z minulého roku.\n" "Ponechat jednu zálohu za čtvrtletí předloňského roku\n" "Ponechat jednu zálohu za rok dál do minulosti" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "Zobrazit téma nápovědy o čištění záloh." #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Poznámka: Všechny nekompletní a neobnovitelné zálohy budou smazány " "hned po vytvoření nového obrazu daného umístění." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Čištění" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Čištění starých záloh" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Zaznamenávání" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Úroveň záznamu" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Adresář se souborem protokolu" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Hlášení poštou" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "Od" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "SMTP server" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Port" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "Komu" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Použít uživatelské jméno a heslo" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Uživ. jméno" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Heslo" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Použít zabezpečené spojení" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Vyberte soubor s certifikátem" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Klíč" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certifikát" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Vyberte soubor s klíčem" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Otestovat nastavení e-_mailu" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Hlášení" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Varování" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "Zobrazit téma nápovědy o výchozích hodnotách." #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "Na_stavit" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "Podrobnosti" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "Zobrazit heslo" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "_Připojit" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "Provést úplnou zálohu" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Obnovit soubory/adresáře" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Zdrojový adresář pro obnovu" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Dostupné zálohy" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Použít vlastní" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Použít výchozí" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Soubory a adresáře k obnovení" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Obnovit" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Obnovit jako..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Zobrazit manuál v Prohlížeči dokumentace" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "Dostupné zálohy" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Smazat" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Vrátit" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Titulek" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Obsah" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "Soubor '%(file)s' neexistuje." #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Aktualizace na v1.3: %s" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Aktualizace z v1.0 na v1.2: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Aktualizace na v1.5: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Aktualizace na v1.4: %s" sbackup-0.11.6/po/uk.po0000644000175000017500000016153612216122130013276 0ustar peerpeer# Ukrainian translation for sbackup # Copyright (c) 2006 Rosetta Contributors and Canonical Ltd 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:52+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Перекладачі\n" "\n" "Launchpad Contributions:\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Lufa https://launchpad.net/~yuriy.smetana\n" " Vlad Kozlovskyy https://launchpad.net/~dbdeveloper" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Власні:" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Аудіо-файли у форматі MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Файли Відео AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Файли Відео MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Файли Відео Матроска" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Мультимедійний контейнер OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Образи компакт-дисків" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Файл '%s' не знайдено у резервному знімку списку файлів" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Цей елемент вже включено !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Цей елемент вже виключено !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Порожній вираз. Будь-ласка введіть коректний регулярний вираз." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Порожні ім'я файлу або шлях. Будь-ласка введіть коректне ім'я файлу або шлях." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Усі файли" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Шлях" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Виберіть каталог-джерело" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Завантаження ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Вкажить мисцезнаходження архиву" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Виключати файли типу" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Стандартні типи файлів:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Вручну визначений тип файлу з " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "розширення файлу" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Виключати за регулярним виразом" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Введіть регулярний вираз.\n" "Файли та директорії, що будуть відповідати цьому виразу резервуватись не " "будуть." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Набір для простого резервування" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Робити повне резервне копіювання, щонайменше раз на" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "днів" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Загальне" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Додати файл" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Додати каталог" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Включити" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Шляхи" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Фільтр:" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Виключені" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Використовувати власну директорію резервування" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Виберіть каталог призначення" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Місце призначення" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Зауваження: Додатково усі незакінчені та невідновлювані копії буде " "вилучено як тільки новий повний знімок системи буде зроблено." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Очистка" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Знищення старих резервних копій" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Відновлення файлів/директорій" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Папка з резервними копіями" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Доступні резервні копії:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Використ.власний:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Використ.стандартний:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Файли і Папки для відновлення" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Відновлення" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Відновити як..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/ko.po0000644000175000017500000015716612216122130013274 0ustar peerpeer# Korean translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:21+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Bundo https://launchpad.net/~kang-bundo\n" " jongjun https://launchpad.net/~whdwnsdl" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "사용자 설정" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 음악" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI 비디오" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG 비디오" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka 비디오" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG 멀티미디어 컨테이너" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD 이미지" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "이미 포함된 항목 !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "이미 제외된 항목 !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "표현을 없애라. 올바른 명령어를 입력하시오." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "파일 이름 또는 경로를 없애라. 올바른 파일 이름 또는 경로를 입력하시오." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "모든 파일" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "경로" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "원본 폴더 선택" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "불러오는 중..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "복원 위치를 선택" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "제외할 파일 유형" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "표준 파일 유형 선택:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "모든 파일 형식을 추가하려면 " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "파일 확장자" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "정규 표현식을 입력" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "정규식을 입력하세요.\n" "정규 표현식에 일치하는 파일 및 폴더를 백업 대상에서 제외됩니다." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "심플 백업 스위트" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "전체 백업을 다음 간격으로" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "일" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "일반" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "파일 추가" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "폴더 추가" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "포함" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "경로" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "파일 형식" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "제외할 파일" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "백업 대상을 사용자 지정 폴더" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "선택한 대상 폴더" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://아이디:비밀 번호@호스트 주소/디렉터리이름/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "대상" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "주의 : 새로운 완전한 백업이 만들어진 때는 모든 불완전한 백업은 삭제됩니다." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "자동 삭제" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "오래된 백업을 삭제" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "복원할 파일/폴더" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "복원할 원본 폴더" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "사용 가능한 백업:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "사용자 지정 사용:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "기본값 사용:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "복원할 파일과 폴더" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "복원" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "다른 위치에 복원..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/fa.po0000644000175000017500000015476712216122130013255 0ustar peerpeer# Persian translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:18+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Persian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Artin https://launchpad.net/~artin" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "سفارشی" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "همه‌ی پرونده‌ها" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "مسیر" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "انتخاب کردن پوشه‌ی منبع" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "در حال بارگیری..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "روز" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "عمومی‌‌" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "مسیرها" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "استثنا" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "مقصد" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/ru.po0000644000175000017500000017332312216122130013302 0ustar peerpeer# Russian translation for sbackup # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-14 05:46+0000\n" "Last-Translator: Andrey Olykainen \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "Служба SBackup <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] журнал от %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Файл журнала не указан." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Невозможно найти файл журнала." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Критическая ошибка: не найден конфигурационный файл для профиля по-" "умолчанию!\n" "\n" "Продолжаем обработку оставшихся профилей." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Резервное копирование отменено пользователем." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Произошла ошибка во время отмены резервного копирования:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Произошла ошибка во время резервного копирования:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Ошибка при отправке письма:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "До этого произошли следующие ошибки:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Резервное копирование не начинается.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Это удобное решение для резервного копирования. Если вы хотите помочь нам " "поиском ошибок, переводом или чем-нибудь еще пожалуйста, посетите наш веб-" "сайт." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Разработчики:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Прежние сопровождающие" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Помогавшие:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Alexey Balmashnov https://launchpad.net/~a.balmashnov\n" " Alexey Kotlyarov https://launchpad.net/~koterpillar\n" " Andrey Olykainen https://launchpad.net/~andrey.olykainen\n" " Andrey Zhekov https://launchpad.net/~x3ro.daemon\n" " Anton Snigiryov https://launchpad.net/~berkuteagle\n" " Artem Vorotnikov https://launchpad.net/~vorot93\n" " AsstZD https://launchpad.net/~eskaer-spamsink\n" " Eugene Marshal https://launchpad.net/~lowrider\n" " Gofer https://launchpad.net/~vovka\n" " Ignat Loskutov https://launchpad.net/~softwayer\n" " Igor Zubarev https://launchpad.net/~igor.zubarev\n" " Ivan Kliouchenkov https://launchpad.net/~quick\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Pavlenty https://launchpad.net/~pavlenty\n" " XPEH https://launchpad.net/~akidyarov\n" " arruah https://launchpad.net/~arruah\n" " zdes06@mail.ru https://launchpad.net/~zdes06" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Неверный тип архива." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "На текущий момент функция разделения не совместима со сжатием." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Невозможно изменить права доступа для файла '%s'" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Невозможно удалить временный файл '%(file)s' : %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Запуск TAR для создания инкрементальной резервной копии." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" "Невозможно найти SNAR-файл для создания инкрементальной резервной копии." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Возврат к полной резервной копии." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Запуск TAR для создания полной резервной копии." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR вернул сообщение: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR вернул сообщения:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR завершен успешно." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "Предупреждение от TAR: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR вернул предупреждения:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR выдал предупреждение, но завершился успешно." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "Не удалось завершить успешно. TAR прервался из-за ошибок." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Невозможно завершить фоновый процесс: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Включен" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Без изменений" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Каталог" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "Файл '%s' не существует." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "Заголовок SNAR-файла неполный." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "Требуется Snapshot-файл" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Каталог не существует: %s" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Настройки профиля читаются из файла: '%s'" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Настройки профиля установлены в стандартные значения. Установлен файл " "конфигурации '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "Вы должны предоставить словарь." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Вывод журнала для [%(profile)s] направлен в файл '%(file)s'" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Вывод журнала для [%s] не направлен в файл." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" "Невозможно переименовать файл журнала '%(src)s' -> '%(dst)s' : %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "Невозможно прочитать файл конфигурации '%s' !" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "Нет получателя." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Не выбран сервер SMTP." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Имя пользователя установлено, но пароль не задан." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Пароль установлен, но имя пользователя не задано." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Стандартный профиль" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Неизвестный профиль" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Без ограничений" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 МБ" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 МБ" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 МБ" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 ГБ (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 ГБ (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Пользовательский" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Музыка MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Видео AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Видео MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Видео Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Мультимедиа OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Образы CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Количество директорий: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Всего файлов: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Доступное дисковое пространство '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "Создать файл" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Удалить файл" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Пункт уже включён !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Пункт уже исключён !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" "Пустое выражение. Пожалуйста, введите правильное регулярное выражение." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Пустое имя файла или путь. Пожалуйста, введите правильное имя файла или путь." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Все файлы" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Местоположение" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Выберите исходный каталог" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Загрузка..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Выберите место для восстановления" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Исключить тип файлов" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Стандартные типы файлов:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Другой тип файла с расширением " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr " " #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Исключить при помощи регулярного выражения" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Введите регулярное выражение.\n" "Файлы и каталоги, соответствующие этому выражению, будут исключены из " "резервной копии." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Пакет автоматической архивации" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Создавать полную копию по крайней мере один раз в" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "дней" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Общие" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Добавить файл" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Добавить каталог" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Включить" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Пути" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Типы файлов" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Исключить" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Использовать пользовательский локальный каталог резервных копий" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Выбрать каталог назначения" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://имя:пароль@сервер/ката/лог/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Назначение" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Примечание: все неполные и невосстановимые резервные копии будут " "удалены, как только завершится полное резервное копирование." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Очистка" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Очистка старых резервных копий" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Восстановить файлы/каталоги" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Восстановить исходный каталог" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Доступные резервные копии:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Использовать пользовательскую настройку:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Использовать по умолчанию:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Файлы и каталоги для восстановления" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Восстановить" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Восстановить как..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Обновление до v1.3: %s" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Обновление с 1.0 до v1.2: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Обновление до v1.5: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Обновление до v1.4: %s" sbackup-0.11.6/po/sv.po0000644000175000017500000015747712216122130013320 0ustar peerpeer# Swedish translation for sbackup # Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:50+0000\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Ulrik Sverdrup, Andreas Henriksson, Daniel Nylander 2006.\n" "\n" "Launchpad Contributions:\n" " Daniel Nylander https://launchpad.net/~yeager\n" " Ulr https://launchpad.net/~u78qir8a9\n" " anonym https://launchpad.net/~launch-mailinator" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Kunde inte ändra rättigheter för filen \"%s\"." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Standardprofil" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Anpassad" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3-musik" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI-video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG-video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka-video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG Multimedia-behållare" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Cd-avbilder" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Redan inkluderat objekt!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Redan exkluderat objekt!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Blankt uttryck. Ange ett giltigt reguljärt uttryck." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Blankt filnamn eller sökväg. Ange ett giltigt filnamn eller en giltig sökväg" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Alla filer" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Sökväg" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Välj en källmapp" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Läser in ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Välj plats för återskapning" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Undanta filtyp" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standardfiltyper:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Anpassad definierad filtyp med " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "filändelse" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Undanta med reguljärt uttryck" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Ange ett reguljärt uttryck.\n" "Filer och kataloger som matchar uttrycket kommer att undantas från " "säkerhetskopian." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Kör en komplett säkerhetskopiering minst en gång varje" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dagar" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Allmänt" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Lägg till fil" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Lägg till katalog" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Inkludera" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Sökvägar" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Filtyper" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Undanta" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Använd anpassad lokal katalog för säkerhetskopior" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Välj målmappen" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://användarnamn:lösenord@exempel.se/sökväg/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Mål" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Observera: Utöver detta kommer alla ofullständiga och oåterställbara " "säkerhetskopior att raderas så länge det finns en senare fullständig " "säkerhetskopia." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Rensar" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Rensar gamla säkerhetskopior" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Återskapa filer/kataloger" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Återskapa källmapp" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Tillgängliga säkerhetskopior:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Använd anpassad:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Använd standard:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Filer och mappar att återskapa" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Återskapa" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Återskapa som..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Ta bort" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Exporthantering" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Rubrik" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Innehåll" sbackup-0.11.6/po/tr.po0000644000175000017500000016102712216122130013277 0ustar peerpeer# Turkish translation for sbackup # Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:38+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Yedekleme kullanıcı tarafından iptal edildi." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Yedekleme iptal edilirken bir hata oluştu." #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Yedekleme sırasında bir hata oluştu:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "E-posta gönderilirken hata oluştu:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Yedekleme başlatılmadı.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Katkıda Bulunanlar:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "çevirmen-teşekkürler\n" "\n" "Launchpad Contributions:\n" " Baris Ozyurt https://launchpad.net/~barisozyurt\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Muhammet Kara https://launchpad.net/~muhammet-k\n" " Translate it https://launchpad.net/~guglcimeil\n" " mete13 https://launchpad.net/~muratcakir13\n" " webdr https://launchpad.net/~drumut" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Geçersiz arşiv tipi" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "'%s' dosyası bulunamadı." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Profil ayarları dosyadan okunuyor '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Kullanıcı adı belirlendi fakat şifre belirlenmedi." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Şifre belirlendi fakat kullanıcı adı belirlenmedi." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Öntanımlı profil" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Bilinmeyen Profil" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Sınırsız" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Özel" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 Müziği" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI Vidyosu" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG Vidyosu" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka Vidyosu" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG Çokluortam kapsayıcısı" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD Görüntüleri" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Yedekleme işlemi tamamlandı" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Yedekleme özeti" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Toplam dosya sayısı: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "En az '%s' boş alan gerekli." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Kullanılabilir disk boyutu '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "Kullanıcının isteği üzerine profil işlemi iptal edildi\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "Profil işlemi başarıyla tamamlandı(Hatasız)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "Dosya Transfer Protokolü(FTP)" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "Ağ Dosya Sistemi(NFS)" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "Dosya oluştur" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Dosyayı sil" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Basit yedekleme hatası" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "İsim" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Dosya Türü" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Nesne zaten seçili !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Nesne zaten seçili değil !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Boş anlatım. Lütfen geçerli normal anlatım girin" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Boş dosya ya da yol adı. Lütfen geçerli bir dosya adı ya da yolu girin." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Tüm dosyalar" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Yol" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Bir kaynak klasörü seçin" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Yükleniyor..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Geri yükleme konumunu seçin" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Dosya türünü dahil etme" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standart dosya türleri:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "dosya uzantısı" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "gün" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Genel" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Dosya Ekle" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Dizin Ekle" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "İçer" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Yollar" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Dosya türleri" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Dışarda bırak" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Özel yerel yedekleme dizinini kullan" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Hedef dizini seçin" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://kullanıcıadı:parola@deneme.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Hedef" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Eski yedekler temizleniyor" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Kullanılabilir yedekler:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Özel kullan:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Geri yüklenecek Dosyalar ve Klasörler" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Geri yükle" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Farklı Geri Yükle..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "v1.0'dan v1.2'ye yükseltiliyor:%s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "v14'e yükseltiliyor:%s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "v13'e yükseltiliyor:%s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "v15'e yükseltiliyor:%s" sbackup-0.11.6/po/lv.po0000644000175000017500000015717112216122130013300 0ustar peerpeer# Latvian translation of SBackup. # Copyright (C) 2006 Free Software Foundation, Inc. # Aigars Mahinovs , 2006. # Eduards Cauna , 2006. # # msgid "" msgstr "" "Project-Id-Version: SBackup 0.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-09-25 00:09+0000\n" "Last-Translator: Aigars Mahinovs \n" "Language-Team: Latvian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Latviešu tulkojums: Aigars Mahinovs\n" "\n" "Launchpad Contributions:\n" " Aigars Mahinovs https://launchpad.net/~aigarius" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Specifisks" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 mūzika" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG multimedijas konteineris" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD attēlfaili" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Šis ieraksts jau ir iekļauts!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Šis ieraksts jau ir izkļauts!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Tukšs regulārais izteikums. Lūdzu ievadiet regulāru izteikumu." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "Tukš faila vai mapes vārds. Lūdzu ievadiet faila vai mapes vārdu." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Visus failus" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Ceļš" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Izvēlieties atjaunošanas avotu" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Ielādēju ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Izvēlieties atjaunošanas vietu" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Neiekļaut failu tipus" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standarta failu tipi:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Lietotāja definētais faila tips ar " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "paplašinājumu" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Neiekļaut pēc regulārās izteiksmes" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Ievadiet regulāro izteiksmi (regex).\n" "Faili un mapes, kas atbildīs šai izteiksmei, rezerves kopijās netiks " "iekļauti." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Veikt pilnu rezerves kopiju vismaz reizi" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dienās" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Vispārīgi" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Pievienot failu" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Pievienot mapi" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Iekļaut" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Faili/Mapes" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Failu tipi" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Neiekļaut" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Lietot īpašu vietējo rezerves kopiju mapi" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Izvēlieties mērķa mapi" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Mērķis" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Piezīme: Papildus tiek arī dzēstas visas nepilnīgi izveidotās un " "neatjaunojami sabojātās rezerves kopijas, tiklīdz pec viņām tiek atrasta " "veiksmīgi pabeigta rezerves kopija." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Dzēsšana" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Veco rezerves kopiju dzēsšana" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Atjaunot failus/mapes" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Atjaunošanas Avots" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Pieejamās rezerves kopijas:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Ipašs:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Pēc noklusējuma" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Atjaunojamie Faili un Mapes" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Atjaunot" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Atjaunot kā ..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/sw.po0000644000175000017500000015462112216122130013305 0ustar peerpeer# Swahili translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:43+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Swahili \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Christoph Wickert https://launchpad.net/~cwickert" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Benutzerdefiniert" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 Musik" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI Video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG Video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka Video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/en_CA.po0000644000175000017500000020666212216122130013624 0ustar peerpeer# English (Canada) translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:26+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: English (Canada) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "No log file specified." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Unable to find log file." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "The following error(s) occurred before:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Invalid archive type." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "For the moment split functionality is not compatible with compress option." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Unable to change permissions for file '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Launching TAR to make incremental backup." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "Unable to find the SNAR file to make an incremental backup." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Falling back to full backup." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Launching TAR to make a full backup." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "Leading '/' from member names were removed." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "Leading '/' from hard link targets were removed." #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR has been finished successfully." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR returned a warning: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR returned warnings:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Included" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Not changed" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Directory" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "Line must be a string" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Dumpdir inconsistency : 'filename' is empty" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Dumpdir inconsistency : 'control' is empty" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "File '%s' does not exist." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "The snarfile header is incomplete." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "A SnapshotFile is required" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Directory does not exist: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Profile settings are being read from file '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Option 'target' is missing, aborting." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "You must provide a dictionary." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Log output for [%(profile)s] is directed to file '%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Log output for [%s] is not directed into a file." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "The config file '%s' couldn't be read!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "section [%(section)s] in '%(configfile)s' should not exist, aborting" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "No schedule defined in configuration file. Probing from filesystem." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "The config file is not set yet into this ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "No receiver set." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "No SMTP server set." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Username set but no password specified." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Password set but no username specified." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Default Profile" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Unknown Profile" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Unlimited" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Custom" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 Music" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI Video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG Video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka Video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG Multimedia container" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD Images" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "File '%s' not found in the backup snapshot files list" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Snapshot '%s' not found " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "The snarfile header is incomplete !" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Snapshot '%(name)s' is being made." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "Setting Base to '%(value)s'." #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "Setting packages File." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Problem when setting the packages list: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Setting Excludes File." #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Option 'Follow symbolic links' is enabled." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "Option 'Follow symbolic links' is disabled." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Backup process finished." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Number of directories: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Total number of files: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Number of symlinks: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Number of files included in snapshot: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Number of new files (also included): %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "Number of files skipped in incremental snapshot: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Number of items forced to be excluded: %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Number of items to be excluded by config: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Maximum free size required is '%s'." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Available disk size is '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "Unable to find logfile to copy into snapshot." #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "No snapshot to copy logfile." #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Target directory '%(target)s' does not exist." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "Snapshot is inconsistent: __name is not set " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Name of snapshot '%s' doesn't match requirement" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "Snapshot is inconsistent: __snapshotpath is not set " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Name of Snapshot not valid : %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Name of base not valid : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "Base name must be set for incremental backup." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Initializing FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Terminating FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Could not find external application 'curlftpfs' needed for handling of ftp " "sites: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "FTP schema is: ftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "Could not find external application 'curlftpfs' needed for handling of sftp " "sites: %s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "SFTP schema is like : sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "Scheduled backups are available for Administrator users only." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Name" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "File Type" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Enable" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Profile Name" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Invalid or empty regular expression ('%s') found in configuration. Removed." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Unable to open backup target" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Current profile: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Already included item !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Already excluded item !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Empty expression. Please enter a valid regular expression." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "Provided regular expression is not valid." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "Empty filename or path. Please enter a valid filename or path." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Save configuration as..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Include file..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "All files" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Include folder..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Exclude file..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Exclude folder..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "Configuration has changed" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Test mail settings" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "The test failed with following output:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "The test was successful." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "Unsupported character" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "The given name of the new profile is empty. Please enter a valid profile " "name." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Profile name not valid" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" "The given name of the new profile already exists. Please enter another name." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "Renaming of profiles is not supported." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "%s (Administrator mode)" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Restore..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Restore as..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Revert..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Revert as..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Snapshots" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Version" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Path" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "State" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Ready" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Choose a source folder" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Loading ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "An error occurred while reading snapshot" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "This snapshot seems empty." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Reading backup snapshot..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "No backups found for this day." #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Select restore location" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "Do you really want to revert '%s'?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Select revert location" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "Do you really want to revert '%(source)s' to '%(dir)s'?" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Restoring of selected files" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Restoring of '%s' is in progress." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "Restoring of '%s' was successful." #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Reverting selected files" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Reverting of '%s' is in progress.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "Reverting of '%s' was successful." #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d MiB %(kb)d KiB %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "File '%(file)s' is not accessible with error '%(error)s'." #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" "File '%(file)s' cannot be opened for read access. Operation timed out." #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "File '%(file)s' is backup's target directory." #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "Path '%(file)s' defined in excludes list." #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "File '%(file)s' matches regular expression '%(regex)s'." #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "Error while checking directory '%(dir)s': %(error)s." #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "Empty regular expression found. Skipped." #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "Invalid regular expression ('%s') found. Skipped." #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "No directories to backup defined." #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "Invalid lock file found. Is being removed." #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "Unable to remove lock file: %s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Exclude file type" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standard file types:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Custom defined file type with " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "file extension" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Exclude by regex" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Enter the remote target to include" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Choose a plug-in to get the format" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Choose your plug-in :" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Check" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Configuration Profile Manager" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Configuration profiles" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Profile name" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Enabled" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_File" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Save as..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Tools" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "Set default settings..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Profile Manager..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "_Help" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "_View all help topics" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "_About this program" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Reload configuration" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Save configuration" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Make a backup now" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Open the profile manager" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profiles" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "none\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Do a full backup at least once every" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "days" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Help" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "Show help topic about configuration GUI." #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "General" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Remove" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Add File" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Add Directory" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Include" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Paths" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Add" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "File types" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Regular\n" "Expressions" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "Do not backup files bigger than" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Follow symbolic links" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Others" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Exclude" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Use default backup directory" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Use custom local backup directory" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Select the destination folder" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destination" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "_No scheduled backups" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Simple" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Custom" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Do backups" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Cron time definition" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "hourly\n" "daily\n" "weekly\n" "monthly" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "Show help topic about scheduled backups." #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Schedule" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "Simple cut-off: Erase all backups older than" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logarithmic" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "Show help topic about purging of backups." #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Purging" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Cleaning old backups" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Logging" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" "Debug is just for debbuging purpose. Info is the recommended setting." #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Log level" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" "Debug is just for debbuging purpose. Info is the recommended setting." #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Log file directory" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Report by mail" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "From" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "SMTP server" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Port" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "To" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Use a username and password" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Username" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Password" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Use secure connection" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Choose a certificate file" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Key" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificate" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Choose a key file" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Test _mail settings" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Report" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Warning" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "Show help topic about default values." #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "_Set" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restore" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Displays the manual in Help browser." #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Delete" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Snapshot History" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "Select a snapshot on this list to rebase on it." #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "Rebase" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Snapshot Management" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Revert" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Restoration Management" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Export Management" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Headline" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Content" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "No need to rebase a full snapshot '%s'" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Rebasing '%(current)s' on '%(base)s'" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "An error occurred when pulling snapshot '%s'." #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "Base of snapshot '%s' is not set." #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Cancelling pull of snapshot '%s'" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Upgrading from v1.0 to v1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Upgrading to v1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Upgrading to v1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Upgrading to v1.5: %s" #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "" #~ "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "The version of the snapshot is greater than the supported one!" #~ msgid "Unable to upgrade snapshot" #~ msgstr "Unable to upgrade snapshot" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "Do you really want to rebase '%(current)s' on '%(base)s' ?" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "File '%(file)s' does not exist." #~ msgid "Upgrade" #~ msgstr "Upgrade" sbackup-0.11.6/po/fr.po0000644000175000017500000025265412216122130013270 0ustar peerpeer# French translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2013-01-11 16:14+0000\n" "Last-Translator: Olivier Maury \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-12 05:07+0000\n" "X-Generator: Launchpad (build 16420)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "Démon Sbackup <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[Sbackup] [%(profile)s] Rapport du %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Aucun fichier journal indiqué." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Impossible de trouver le fichier journal." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Erreur critique : aucun fichier de configuration trouvé pour le profil par " "défaut !\n" "Continuer maintenant à traiter les profils restants." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Sauvegarde annulée par l'utilisateur." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Une erreur est survenue durant l'annulation de la sauvegarde:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Une erreur est survenue durant la sauvegarde :" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Erreur pendant l'envoi de courriel." #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "Les erreurs suivantes ont eu lieu avant:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "La sauvegarde n'a pas encore démarré.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Voici une solution de sauvegarde conviviale pour les usages courants en " "bureautique. Si vous souhaitez aider en soumettant des bugs, en traduisant " "ou quoique que se soit d'autre, merci de visiter notre site internet." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Mainteneurs :" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Anciens contributeurs :" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Contributeurs :" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Djiboun https://launchpad.net/~djiboun\n" " Eric Noel https://launchpad.net/~profnoel\n" " François Tissandier https://launchpad.net/~baloo\n" " Gwendal Jabot https://launchpad.net/~gwendal-jabot\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " LEROY Jean-Christophe https://launchpad.net/~celtic2-deactivatedaccount\n" " NSV https://launchpad.net/~nsv\n" " Olivier Maury https://launchpad.net/~olivier-maury\n" " Olivier Tétard https://launchpad.net/~otetard\n" " Pierre Slamich https://launchpad.net/~pierre-slamich\n" " gilles chaon https://launchpad.net/~g-chaon\n" " manu https://launchpad.net/~manu.pintor" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Type d'archive invalide" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Le chemin utilisé pour '%s' n'est pas disponible" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Impossible d'obtenir le chemin utilisé pour '%s'" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "Pour le moment la fonctionnalité scinder n'est pas compatible avec l'option " "compression." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Impossible de changer la permission du fichier '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Impossible d'effacer le fichier temporaire `%(file)s`: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Lancement de TAR pour faire une sauvegarde incrémentielle." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" "Impossible de trouver le fichier SNAR pour faire une sauvegarde " "incrémentielle." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Retour à une sauvegarde complète." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Lancement de TAR pour faire une sauvegarde complète." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "La barre oblique '/' précédant le nom du membre a été supprimée." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "La barre oblique '/' précédant le lien de la cible a été supprimée." #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR a envoyé le message: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR a envoyé le message:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR terminé avec succès." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR a envoyé l'avertissement: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR a envoyé l'avertissement:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR a envoyé un avertissement, mais a complété avec succès." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "Impossible d'achever avec succès. TAR a terminé avec des erreurs." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Impossible d'achever le processus en arrière-plan: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Inclus" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Inchangé" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Répertoire" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "La ligne doit être une chaîne de caractères" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Inconsistance de 'Dumpdir' : 'nom fichier' est vide" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Inconsistance de 'Dumpdir' : 'control' est vide" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "Le fichier '%s' n'existe pas." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "L'entête du snarfile est incomplet." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "Un fichier d'Instantané est requis" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Le répertoire n'existe pas:%s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Les réglages du profil sont lus à partir du fichier '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Les réglages du profil sont faits avec les valeurs par défaut. Le fichier de " "configuration est '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "L'option 'cible' est manquante, abandon." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "Erreur pendant le traitement de la configuration :\n" "\n" "%(error)s ligne(s) `%(line)s`.\n" "\n" "Veuillez vérifier votre fichier de configuration." #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Impossible d'évaluer '%(parameter)s' comme un dictionnaire (valeur obtenue = " "'%(value)r')." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "Impossible d'évaluer '%(parameter)s' comme un dictionnaire (valeur obtenue = " "'%(value)r' )" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "Vous devez fournir un dictionnaire." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Le journal pour [%(profile)s] sera écrit dans '%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "La journal pour [%s] n'est pas écrit dans un fichier." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" "Impossible de renommer le fichier journal '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "Le fichier de configuration '%s' ne peut être lu!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" "La section [%(section)s] dans '%(configfile)s' ne devrait pas exister. " "Abandon." #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" "Pas de calendrier défini dans le fichier de configuration. Recherche dans le " "système de fichier." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" "Le fichier de configuration n'est pas encore précisé dans ce ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "Pas de destination défini." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Pas de serveur SMTP défini." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Nom d'utilisateur défini, mais pas le mot de passe." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Mot de passe défini, mais pas le nom d'utilisateur." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "Un certificat et un fichier clé sont fournis alors que l'option SSL " "(smtptls=1) n'est pas activé.\n" "Sélectionnez SSL afin d'utiliser le certificat et la clé." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "Lors de la spécification d'un certificat SSL ou d'un fichier clé, un fichier " "clé resp. certifié est obligatoire." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Profil par défaut" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Profil inconnu" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Illimité" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 Mo" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 Mo" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 Mo" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 Go (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 Go (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personnalisé" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Musique MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Vidéo AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Vidéo MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Vidéo Matroska" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Conteneur multimédia OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Images CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Le fichier '%s' est absent de la liste de fichiers de l'instantané" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "Le fichier '%(filename)s' est absent de la liste de fichiers de l'instantané " "[%(snapshotname)s], Ignorée." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "L'instantané '%s' non trouvé. " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" "L'instantané `%(name)s` est invalide raison: Le nom de l'instantané n'est " "pas valide." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "L'instantané `%(name)s` est invalide raison: %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "L'entête du fichier SNAR est incomplète !" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "L'instantané '%s' est déjà plein, abandon de l'opération." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Préparation du processus de sauvegarde" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Instantané '%(name)s' en cours de création." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "Réglage de la Base à '%(value)s'." #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "Réglage des fichiers de sauvegarde." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Il y a un problème lors du réglage de la liste des paquets. " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Réglage des exclusions de fichiers." #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "Réglage du format de compression à `%s`" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "Réglage de la taille des parties d'archive à %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "L'option 'suivre les liens symboliques' est activée." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "L'option 'Suivre les liens symboliques' est désactivée." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "Un instantané est en cours" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "Erreur pendant le nettoyage des anciens instantanés: %s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Le processus de sauvegarde est terminé." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" "Inspection du système de fichiers et collecte des informations sur les " "fichiers" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Résumé de la sauvegarde" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Nombre de répertoires : %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Nombre total de fichiers : %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Nombre de liens symboliques : %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Nombre de fichiers inclus dans l'instantané : %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Nombre de nouveaux fichiers (également inclus) : %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "Nombre de fichiers ignorés dans l'instantané incrémental : %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Nombre de fichiers exclus de force : %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Nombre de fichiers exclus selon la configuration : %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "L'espace libre maximum requis est '%s'." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "L'espace disque disponible est '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "Il n'y a pas assez d'espace disponible dans le répertoire cible pour la " "sauvegarde planifiée (libre:%(freespace)s, requis: %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" "Impossible de copier le journal. L'accès au fichier n'est pas initialisé." #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "Impossible de copier le fichier journal : %s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" "Impossible de trouver le fichier de journal à copier dans l'instantané." #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "Aucun instantané pour copier le fichier de rapport." #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "Le traitement du profil a été annulé à la demande de l'utilisateur\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "Traitement du profil terminé avec succès (pas d'erreurs)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "Le traitement du profil a échoué à cause de l'erreur : %s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Destination de la sauvegarde : %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Impossible de trouver le répertoire de destination." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" "Impossible de trouver le répertoire de destination après une nouvelle " "tentative." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Le répertoire de destination '%(target)s' n'existe pas." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "Impossible d'accéder à la destination : %s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "L'instantané est incohérent:__name n'est pas réglé " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Le nom de l'instantané '%s' ne correspond pas au schéma attendu." #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "L'instantané est incohérent:__snapshotpath n'est pas réglé " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "Le format de compression de l'instantané est censé être '%s' mais le fichier " "correctement nommé n'a pas été trouvé." #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" "%(file)s ne contient pas de valeur valide. Les dossiers incomplets ou sans " "rapport avec la sauvegarde seront ignorés. " #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Le nom de l'instantané est invalide : %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Nom du parent invalide : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "Nom de l'instantané invalide : %s" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "Impossible de lire le fichier obligatoire 'ver'" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" "Le nom de la base doit être sélectionné pour une sauvegarde incrémentielle." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Initialisation du gestionnaire d'accès aux fichiers FUSE." #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Clôture du gestionnaire d'accès aux fichiers FUSE." #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "Initialisation du gestionnaire d'accès aux fichiers GIO." #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "Clôture du gestionnaire d'accès aux fichiers GIO." #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "Impossible d'obtenir le montage: le chemin n'est pas monté." #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" "Impossible d'obtenir le montage: aucun chemin trouvé pendant le montage (est " "probablement local)" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "Impossible de de monter: %s" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" "Impossible de désactiver le drapeau de montage: le chemin n'est pas conservé." #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "Le chemin est déjà monté." #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "Le chemin n'est pas monté." #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "Vérification du chemin spécifié utilisant GIO" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "Créer un répertoire de test" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "Vérification de l'existence de testfile" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "Créer un fichier" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "Relecture du fichier test" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Supprimer le fichier" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "Supprimer le dossier" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" "Impossible de d'importer le module externe `%(plugin_name)s`: " "%(error_cause)s " #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Impossible de trouver l'application externe 'curlftpfs' nécessaire à la " "gestion des destinations FTP: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "Impossible de monter %(server)s' sur '%(mountpoint)s' : %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "Le schéma FTP est : ftp://utilisateur:motdepasse@serveur/repertoire" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Problème sur la correspondance du schéma 'ftp://user:pass@server/anything' " "avec '%s' (le '/' après 'server' est obligatoire)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "Impossible de trouver l'application externe 'curlftpfs' nécessaire à la " "gestion des sites sftp : %s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" "Le modèle SFTP est : sftp://utilisateur:mot_de_passe@serveur/suite_du_chemin" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Problème sur la correspondance du schéma 'sftp://user:pass@server/anything' " "avec '%s' (le '/' après 'server' est obligatoire)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Problème sur la correspondance du schéma 'ssh://user:pass@example.com/home/' " "avec '%s' (le '/' après 'server' est obligatoire)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "La commande sshfs '%(command)s' ne s'est pas exécutée normalement. Résultat " "=> %(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "Le schéma SSH est le suivant : " "ssh://utilisateur:motdepasse@serveur.com:33/home/user/backup/" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" "Impossible de faire correspondre le schéma " "'ssh://utilisateur:motdepasse@serveur.com:21/home/' avec '%s' (Le '/' après " "le nom du serveur est obligatoire)" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" "S.V.P., assurez-vous que le répertoire manquant existe (en montant un disque " "externe par exemple) ou changez la cible spécifiée." #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" "En accédant à la destination de la sauvegarde, l'erreur suivante s'est " "produite.\n" "\n" "%s." #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Erreur Simple Backup" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "Impossible d'accéder à la destination de sauvegarde" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" "Les sauvegardes programmées sont disponibles seulement pour les " "administrateurs." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Nom" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Type de Fichier" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Activé" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Nom du profil" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Une expression régulière invalide ou vide ('%s') a été trouvée dans la " "configuration et supprimée." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Des expressions régulières invalides ou vides ont été trouvées\n" "dans le fichier de configuration :\n" "'%s'\n" "\n" "Ces expressions ne sont pas utilisées et ont été\n" "supprimées de la configuration." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Assurez vous s'il vous plait que le répertoire manquant existe (par exemple " "en montant un disque externe) ou en changer le répertoire de destination à " "un répertoire existant." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" "La cible de la sauvegarde '%s' n'existe pas.\n" "\n" "Attention: La cible utilisée sera celle par défaut. Vérifier ceci dans la " "page des réglages de la destination avant de sauvegarder la configuration." #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Impossible d'ouvrir la destination de sauvegarde." #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" "%s\n" "\n" "Un profil de sauvegarde utilisant les valeurs par défaut a été créé. " "Enregistrez la nouvelle configuration afin de l'utiliser ou vérifiez " "manuellement votre fichier de configuration existant.\n" "\n" "Important : Sauvegarder va écraser la configuration invalide existante." #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Profil actuel : %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Élément déjà ajouté !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Élément déjà enlevé !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Expression vide. Veuillez entrer une expression régulière valide." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "L'expression régulière fournie est invalide." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Nom de fichier ou chemin vide. Veuillez entrer un nom de fichier ou un " "chemin valide." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "Le chemin que vous avez entré ne semble pas exister. Voulez-vous tout de " "même le conserver ?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Sauver la configuration en tant que ..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "Un processus de sauvegarde s'effectue actuellement en arrière-plan.\n" "\n" "Vous pouvez surveiller l'avancement de la sauvegarde au moyen de " "l'indicateur d'état situé dans la zone de notification." #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "Processus de sauvegarde démarré" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "Réponse de dialogue inattendue: %s" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Inclure le fichier ..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Tous fichiers" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Inclure le répertoire ..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Exclure le fichier ..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Exclure le répertoire ..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "La configuration a été modifiée." #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "Il y a des modifications non sauvegardées. Merci de sauver la configuration " "ou de réinitialiser ces changements avant de tester les réglages courriel." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Tester les réglages courriel" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "Le test a échoué avec le résultat suivant :" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "Le test est réussi." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" "L'expression fournie contient des caractères non supportés ('%s'). Il n'est " "actuellement pas possible d'utiliser ces caractères dans les expressions " "d'exclusion." #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "Caractère non supporté." #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "Connexion à la destination distante" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "Le montage a réussi (pas d'erreurs)" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "Impossible de monter l'hôte" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "La démontage a réussi (pas d'erreurs)" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "Impossible de démonter l'hôte" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "Tests de performances sur l'hôte distant" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "Impossible d'accéder à la destination distante" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "Tous les tests ont réussi" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "Le nom fourni pour le nouveau profil est vide. Merci d'entrer un nom de " "profil valide." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Le nom de profil n'est pas valide." #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" "Le nom donné au nouveau profil existe déjà. Merci d'entrer un autre nom." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "Le changement de nom des profils n'est pas pris en charge." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" "Effacer le profil de configuration ?\n" "\n" "Vous essayez de supprimer un profil de configuration. Vous ne serez pas en " "mesure de le restaurer. Si vous n'êtes pas sûr, utilisez plutôt la " "fonctionnalité 'activer|désactiver'.\n" "\n" "Voulez-vous vraiment supprimer le profil '%(name)s' ?" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "Activer les réglages par défaut pour le profil courant ?\n" "Cette opération va restaurer les réglages par défaut pour le profil en cours " "d'édition: '%s'.\n" "\n" "Ces réglages par défaut sont recommandés pour la plupart des utilisateurs. " "Merci de vérifier s'ils conviennent à votre usage avant de sauvegarder la " "configuration." #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "Les réglages par défaut sont appliqués." #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Impossible de supprimer le profil par défaut\n" "\n" "Le profil par défaut ne peut être enlevé. Dans le cas où vous voulez " "utiliser seulement un seul profil, s.v.p. mettre en place le profil par " "défaut en conséquence." #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Impossible de supprimer le profil par défaut\n" "\n" "Le profil par défaut ne peut être désactivé. Dans le cas où vous voulez " "utiliser seulement un seul profil, s.v.p. mettre en place le profil par " "défaut en conséquence." #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" "Aucun profil de sauvegarde trouvé.\n" "\n" "Pas de profil par défaut a été constaté. Vous utilisez probablement Simple " "Backup pour la première fois. Un profil de sauvegarde utilisant les valeurs " "par défaut a été créé.\n" "\n" "S.V.P., modifier les paramètres selon vos besoins et enregistrer la " "configuration afin de l'utiliser." #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "Veuillez sélectionner un profil." #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "Échec de l'initialisation du module de notification" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "La connexion au démon de notification a échoué : %s" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "Simple Backup" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "Montrer les fenêtres de notification" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "Annuler la Sauvegarde" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "Connection to D-Bus service lost." #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "La reconnexion a réussi" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" "Pas de sauvegarde en cours et la connexion au service D-Bus est perdu. " "L'indicateur Simple Backup est terminé." #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "Démarrage d'une session de sauvegarde" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "Fin de la session de sauvegarde" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "Réception de l'événement D-Bus '%s' reçu." #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "Réessayer" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" "Tentative de démarrage d'une autre instance de Simple Backup alors que celui-" "ci est déjà en cours d'exécution." #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "Impossible d'afficher la fenêtre:%s" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" "Êtes-vous certain de vouloir annuler le processus de sauvegarde du profil " "'%s'?" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "Annuler le processus de sauvegarde en cours d'exécution?" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "Impossible d'annuler le processus de sauvegarde." #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "Profil : %s" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "Taille de la sauvegarde: %s" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "%.1f%% effectué" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "Temps restant : %s" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "Le PID du processus de sauvegarde est annulé: %s" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "impossible d'envoyer un signal au processus: %s" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "Envoie d'un signal en utilisant gksu au processus %s" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "L'envoie d'un signal en utilisant gksu au processus %s a échoué" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" "Impossible de trouver le répertoire cible indiqué\n" "\n" "Le répertoire cible indiqué '%s' n'existe pas.\n" "\n" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" "Vous pouvez essayer d'utiliser à nouveau la cible spécifiée ou annuler " "l'exécution du profil. La destination spécifiée sera automatiquement " "utilisée dans %s secondes." #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "inconnu" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "Il y a moins d'une minute" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "Il y a 2 minutes" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "Il y a environ 3 minutes" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "Il y a environ 4 minutes" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "Il y a environ 5 minutes" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "Il y a environ %.0f minutes" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "En cours" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "Terminé" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "Progression : inconnue" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "La sauvegarde est en préparation" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "Collecte des informations sur les fichiers" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "Progression : annulée" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "Une erreur est survenue" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "Un autre 'Indicateur Simple Backup' est déjà en cours d'exécution." #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "L'initialisation de GTK+ a échoué : %s" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "%s (mode administrateur)" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" "Une erreur non interceptée s'est produite. Fermer cette fenêtre et " "redémarrer l'application.\n" "\n" "S'il vous plaît, signalez cette erreur sur " "https://bugs.launchpad.net/sbackup.\n" "\n" "%s" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "Désolé, cela n'aurait pas du se produire" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Restoration ..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Restoration en tant que ..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Rétrograder ..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Rétrograder comme ..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "n.d." #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Instantanés" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Version" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Chemin" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "État" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "Connexion à la destination..." #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "Les chemins spécifiés n'existent pas" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Prêt" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "Aucune destination spécifiée" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Choisissez un dossier source" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "Lecture des instantanés..." #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "Lecture du contenu du répertoire..." #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Chargement en cours..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "Lecture des fichiers de l'instantané..." #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "Erreur de restauration Simple Backup" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "Une erreur s'est produite pendant la lecture de l'instantané." #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "Cet instantané semble vide." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Lecture de la sauvegarde ..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "Pas de sauvegarde trouvée pour ce jour." #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Sélectionnez l'emplacement de restauration" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "Voulez-vous vraiment rétrograder '%s'?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Choisissez la destination de la rétrogradation." #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "Voulez-vous vraiment rétrograder '%(source)s' vers '%(dir)s'?" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "Lecture de l'instantané..." #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" "La suppression de l'instantané sélectionné '%s' supprimera votre sauvegarde " "à ce point précis dans le temps. Cette opération est irréversible.\n" "\n" "Êtes-vous certain que vous souhaitez supprimer l'instantané?" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "Voulez-vous vraiment supprimer l'instantané ?" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" "Lors de la suppression de l'instantané, l'erreur suivante est arrivée :\n" "%s" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "Impossible d'effacer l'instantané" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" "L'instantané sélectionné '%s' est référencé par des instantanés plus récents " "comme instantané de base.\n" "\n" "Effacer tous ces instantanés dépendants pour supprimer cet instantané." #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "Impossible de supprimer l'instantané" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "Annulation en cours" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "Restauration de Simple Backup" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Restauration des fichiers sélectionnés" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Restauration de '%s' en cours" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "Restauration de '%s' réussi" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "La restauration de '%s' n'a pas abouti.\n" "\n" "L'erreur suivante s'est produite:\n" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Restauration de '%(source)s'\n" "dans '%(dirname)s' en cours." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Restauration de '%(source)s'\n" "dans '%(dirname)s' a réussi." #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "La restauration de '%(source)s'\n" "vers '%(dirname)s' n'a pas abouti.\n" "\n" "L'erreur suivante s'est produite:\n" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Rétrograder les fichiers sélectionnés" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Rétrogradation de '%s' en cours.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "La rétrogradation de '%s' a réussi." #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "La rétrogradation de '%s' n'a pas abouti\n" "\n" "L'erreur suivante s'est produite:\n" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Rétrogradation de '%(source)s' \n" "dans '%(dirname)s' en cours." #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "La rétrogradation de '%(source)s'\n" "vers'%(dirname)s' a réussi." #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "La rétrogradation de '%(source)s'\n" "vers '%(dirname)s' n'a pas abouti\n" "\n" "L'erreur suivante s'est produite:\n" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "%(mb)d Mo %(kb)d Ko" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d Mo %(kb)d Ko %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "%(mb)d MB %(kb)d kB" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "Le fichier '%(file)s' n'est pas accessible, erreur '%(error)s'" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" "Impossible d'ouvrir le fichier '%(file)s' en lecture. Délai dépassé pour " "l'opération." #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" "Le fichier '%(file)s' ne peut être ouvert en lecture, erreur '%(error)s'" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" "Le lien symbolique '%(path)s' -> '%(ln_target)s' est un lien symbolique " "circulaire." #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" "Le fichier '%(file)s' est le répertoire de destination de la sauvegarde." #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "Le chemin '%(file)s' est défini dans la liste des exclusions." #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" "Le fichier '%(file)s' correspond à l'expression régulière '%(regex)s'." #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" "Le fichier '%(file)s' excède la taille maximale de fichier ( %(filesize)s > " "%(maxsize)s)." #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "Erreur lors de la vérification du répertoire '%(dir)s' : %(error)s." #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "Une expression régulière vide a été trouvée et ignorée." #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "L'expression régulière ('%s') invalide a été ignorée." #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "Aucun répertoire de destination de la sauvegarde n'a été défini." #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "Une autre instance de l'application est déjà en cours d'exécution." #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "Fichier verrou invalide. En cours de suppression." #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "Impossible de supprimer le fichier verrou : %s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" "Impossible de supprimer le fichier de verrouillage: Fichier non trouvé." #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Exclure un type de fichier" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Types standards de fichiers" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Types de fichiers personnalisés définis par " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "extension de fichier" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Exclure par regex (expression régulière)" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Entre une expression régulière.\n" "Les fichiers et les répertoires correspondant à cette expression seront " "exclus de la sauvegarde." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Entrer une cible distante à inclure" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Choisir le plugin pour connaitre le format" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Choisir son plugin" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Vérifier" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" "Sauvegarder la nouvelle configuration?\n" "\n" "La configuration a été modifiée. Si vous désirez l'utiliser, vous devez la " "sauvegarder.\n" "\n" "Désirez-vous sauvegarder la configuration?" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Configuration du gestionnaire de profil" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" "Vous pouvez configurer plusieurs profils de configuration qui sont traités " "lors de l'exécution d'une sauvegarde. Chaque profil a son propre ensemble de " "paramètres, dont la destination de sauvegarde, le format de la sauvegarde, " "etc." #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Profils de Configuration" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "Ajouter un nouveau profil\n" "\n" "Veuillez entrer le nom du nouveau profil et cocher la case afin de l'activer " "ou de le désactiver." #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Nom du profil" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Activé" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Solution de sauvegarde « Simple Backup »" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_Fichier" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Enregistrer sous..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Outils" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "Définir les paramètres par défaut..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Gestionnaire de profil..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "Faire une sauvegarde maintenant" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "Aid_e" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "So_mmaire" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "À _propos de ce programme" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Recharger la configuration" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Sauvegarder la configuration" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Faire une sauvegarde maintenant" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Ouvrir le gestionnaire de profil" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profils" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "aucun\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" "Format de compression\n" "Par défaut, la sauvegarde s'effectue sans compression." #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" "Vous pouvez scinder l'instantané afin d'effectuer une sauvegarde dans un " "système de fichier ne supportant pas les gros fichiers. Cette fonction ne " "peut être utilisée si la sauvegarde est compressée." #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Faire une sauvegarde complète au moins tous les" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" "À moins que depuis le nombre de jours renseignés une sauvegarde complète ait " "été faite, une sauvegarde incrémentielle sera réalisée." #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "Jours" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "> " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "Mio" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "Scinder l'archive de sauvegarde en plusieurs parties." #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Aide" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" "Voir la rubrique d'aide sur la configuration de l'interface graphique." #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Général" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "Fichier et répertoires inclus" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Supprimer" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Ajouter un Fichier" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Ajouter un Répertoire" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Inclure" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "Fichier et répertoires exclus" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Chemins" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Ajouter" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Types de fichiers" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Expressions\n" "Régulières" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "Ne pas sauvegarder les fichiers plus gros que" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Suivre les liens symboliques" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Autres" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Exclure" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Utiliser le dossier de sauvegarde par défaut" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Utiliser un répertoire de sauvegarde local personnalisé" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Choisir le répertoire de destination" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "Utiliser un site distant" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://nomdutilisateur:motdepasse@exemple.fr/distant/repertoire/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "Se connecter..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" "La destination choisie n'est pas accessible en écriture avec les droits " "actuels. Les sauvegardes ne peuvent y être stockées." #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destination" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "_Aucune sauvegarde programmée" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Simple" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" "Cette option fera une sauvegarde à un moment opportun lorsque l'ordinateur " "est en fonction. " #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Personnalisé" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Faire les sauvegardes" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Entrée cron" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "heure\n" "quotidienne\n" "hebdomadaire\n" "mensuelle" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "Afficher l'aide à propos des sauvegardes planifiées" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "Vous pouvez planifier le calendrier de sauvegarde afin d'effectuer " "des archives à intervalles réguliers ou plus finement en personnalisant une " "tâche cron. Consulter \"man 5 crontab\" pour connaitre le format des entrées " "cron." #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Planification" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "Activer la purge des anciennes sauvegardes" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "Simple: Effacer toutes les archives plus vieilles que" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logarithmique" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" "Conserver de moins en moins d'anciennes sauvegardes\n" "Conserver toutes les sauvegardes de la veille\n" "Conserver une sauvegarde par jour de la semaine dernière\n" "Conserver une sauvegarde par semaine du mois dernier\n" "Conserver une sauvegarde par mois de l'année dernière\n" "Conserver une sauvegarde par trimestre de l'avant dernière année\n" "Conserver une sauvegarde par année antérieure" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "Voir la rubrique d'aide sur le nettoyage des sauvegardes." #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Note : De plus, toutes les sauvegardes non terminées ou non " "récupérables seront effacées tant qu'il y a une sauvegarde complète faite " "plus tard." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Nettoyage" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Nettoyage des anciennes sauvegardes" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Journalisation" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "Debug est juste pour le déboguage.Info est la valeur recommandée" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Niveau du journal" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" "Debug est uniquement pour le déboguage. Info est la valeur recommandée" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Répertoire du fichier journal" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Rapport via courriel" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "De" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "Serveur SMTP" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Port" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "À" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Utiliser un nom d'utilisateur et un password" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Nom d'utilisateur :" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Mot de passe :" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Utiliser une connexion sécurisée" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Choisissez un fichier de certificat" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Clé" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificat" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Choisissez un fichier de clés" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Tester les réglages courriel" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Rapport" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Avertissement" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "Voir la rubrique d'aide sur les valeurs par défaut." #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "Définir" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "Définir la cible distante" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "Type de service" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "Serveur" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "Détails" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "Afficher le mot de passe" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "Se _connecter" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "Faire une sauvegarde complète" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Restaurer les fichiers/répertoires" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Restaurer le répertoire d'origine" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Sauvegardes disponibles :" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Utiliser les réglages personnalisés :" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Utiliser les réglages par défaut :" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Fichiers et répertoires à restaurer" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restaurer" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Restaurer en tant que..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "Destination de la sauvegarde<\\b>" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Affiche le manuel dans le navigateur d'aide." #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "Destination du profil par défaut" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" "Définir la destination de la sauvegarde comme celle indiquée dans le profil " "de configuration par défaut" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "Destination personnalisée" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" "Choisissez la destination de sauvegarde sur votre disque dur ou sur un site " "distant. Appuyez ensuite sur Appliquer." #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" "Choisissez un dossier de destination. Pour les sites distants, renseignez " "l'URI dans le champ de texte" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" "Changer la destination par le chemin spécifié dans le champ de texte à gauche" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" "Choisissez une date en gras pour obtenir la liste des sauvegardes à cette " "date." #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "Sauvegardes disponibles" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "Supprimer l'instantané" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Supprimer" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Historique des instantanés" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "Base active:" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "Sélectionner l'instantané dans la liste pour l'appliquer comme base." #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "Changer la base" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Gestion de l'instantané" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "Détails de l'instantané" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "Restaurer les fichiers/répertoires de l'instantané sélectionné" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" "Restaurer les fichiers / répertoires de manière récursive à partir de " "l'instantané de base vers l'instantané sélectionné" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Rétrograder" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Gestion de la restoration" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Gestion de l'exportation" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Titre" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Contenu" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "" #~ "Il n'est pas nécessaire de changer la base d'une sauvegarde complète '%s'" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "%(snapshotToRebase)s' n'a pas le fichier 'base'. Il se pourrait qu'il soit " #~ "cassé. " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Nous ne pouvons pas changer la base d'une sauvegarde à une sauvegarde " #~ "postérieure : '%(snapshotToRebase)s' <= '%(NewBaseSnapshot)s' " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Changement de la base de '%(current)s' à '%(base)s'" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "" #~ "Une erreur s'est produite lors de la récupération de l'instantané '%s'." #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Mise à jour de v1.0 à v1.2 : %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Mise à jour à v1.3 : %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Mise à jour à v1.4 : %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Mise à jour à v1.5 : %s" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "Voulez vous vraiment changer la base de '%(current)s' à '%(base)s' ?" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "Le fichier '%(file)s' n'existe pas." #~ msgid "Upgrade" #~ msgstr "Mettre à jour" #~ msgid "" #~ "There are snapshots with old snapshot format. Please upgrade these using the " #~ "Restoration tool if you want to use them." #~ msgstr "" #~ "Il y a des instantanés comportant un ancien format. Veuillez les mettre à " #~ "niveau en utilisant l'utilitaire de Restauration si vous voulez les utiliser." #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "La base de l'instantané '%s' n'est pas réglée," #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Abandon de l'export du contenu de l'instantané '%s'" #, python-format #~ msgid "Unable to remove upgrade stamp: %s" #~ msgstr "Impossible de supprimer la marque de la mise à jour: %s" #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "" #~ "Le fichier SNAR existe déjà pour l'instantané '%s'. Il ne sera pas écrasé." #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "" #~ "Il y a des instantanés utilisant un format obsolète. Pour les utiliser, " #~ "faire une mise à jour de ceux-ci en utilisant 'Simple Backup-Restoration'." #~ msgid "Upgrade snapshot" #~ msgstr "Mise à jour de l'instantané" #~ msgid "Do you really want to upgrade snapshot?" #~ msgstr "Voulez-vous vraiment mettre à jour l'instantané?" #~ msgid "Snapshot was sucessfully upgraded." #~ msgstr "L'instantané a été mise à jour avec succès." #, python-format #~ msgid "" #~ "Snapshot version is not supported (Only %(supportedversion)s is supported). " #~ "Version '%(currentversion)s' found. You should upgrade it. " #~ msgstr "" #~ "La version de l'instantané n'est pas prise en charge (uniquement " #~ "%(supportedversion)s est supportée). La version actuel est " #~ "'%(currentversion)s'. Vous devriez le mettre à jour. " #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "La version de l'instantané est supérieure à celle supportée." #, python-format #~ msgid "" #~ "Upgrading the selected snapshot `%s` might corrupt your backup for this " #~ "particular point in time. You cannot undo this operation. It is recommended " #~ "to create a copy of the snapshot directory before upgrading it. The upgrade " #~ "process takes a while - be patient.\n" #~ "\n" #~ "Are you sure that you want to upgrade the snapshot now?" #~ msgstr "" #~ "La mise à niveau de l'instantané sélectionné '%s' peut corrompre votre " #~ "sauvegarde pour ce point précis dans le temps. Cette opération est " #~ "irréversible. Il est recommandé de créer une copie du répertoire de " #~ "l'instantané avant la mise à niveau. Le processus de mise à niveau prend un " #~ "certain temps - soyez patient.\n" #~ "\n" #~ "Êtes-vous certain que vous souhaitez mettre à niveau l'instantané maintenant?" #, python-format #~ msgid "Upgrade snapshot '%s'" #~ msgstr "Mise à jour de l'instantané '%s'" #~ msgid "Simple Backup upgrade" #~ msgstr "Mise à niveau de Simple Backup" #~ msgid "Upgrade finished" #~ msgstr "La mise à niveau est terminée" #, python-format #~ msgid "" #~ "While attempting to upgrade snapshot the following error occurred:\n" #~ "%s" #~ msgstr "" #~ "Lors de la mise à jour de l'instantané, l'erreur suivante est arrivée :\n" #~ "%s" #~ msgid "Unable to upgrade snapshot" #~ msgstr "Échec de la mise à jour de l'instantané." sbackup-0.11.6/po/oc.po0000644000175000017500000016036612216122130013260 0ustar peerpeer# Occitan (post 1500) translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-19 02:41+0000\n" "Last-Translator: Cédric VALMARY (Tot en òc) \n" "Language-Team: Occitan (post 1500) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Cap de fichièr jornal pas indicat." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Impossible de trobar lo fichièr jornal." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Salvament anullat per l'utilizaire." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "I a agut una error pendent la còpia de seguretat :" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "Las érrors seguentas se son produchas abans :" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Manteneires :" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Contributors :" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Cédric VALMARY (Tot en òc) https://launchpad.net/~cvalmary" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Tipe d'archiu invalid" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Inclús" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Pas cambiat" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Dorsièr" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "Un SnapshotFile es requesit" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "L'opcion 'target' es absenta. Abandon !" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Perfil per defaut" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Perfil desconegut" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Illimitat" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 Mio" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 Mio" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 Mio" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 Gio (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 Gio (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalizar" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Musica MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Vidèo AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Vidèo MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Vidèo Matroska" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Imatges de CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Nom del parent invalid : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Nom" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Tipe de fichièr" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Activar" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Nom del perfil" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Perfil actual : %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Totes los fichièrs" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Testar lo parametratge mail" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Restablir..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Restabliment en tant que ..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Captura" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Version" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Camin" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Estat" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Prèst" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Cargament en cors..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Lectura del salvament ..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Restabliment de '%s' en cors" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Retrogradacion de '%s' en cors.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Exclure un tipe de fichièr" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Tipes de fichièrs estandard :" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "extension de fichièr" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Verificar" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Perfils de Configuracion" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Nom del perfil" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Activat" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_Fichièr" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Enregistrar jos..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Espleches" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "_Ajuda" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Enregistrar la configuracion" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Perfils" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "pas cap\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "jorns" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "Mio" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Ajuda" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "General" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Suprimir" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Apondre un fichièr" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Apondre un repertòri" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Inclure" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Camins" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Apondre" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Tipes de fichièrs" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Regular\n" "Expressions" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Autres" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Exclaure" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destinacion" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Personalizat" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Planning" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logaritmic" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Netejament" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Jornal" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Nivèl de jornal" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "De" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "Servidor SMTP" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Pòrt" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "A" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Nom d'utilizaire" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Senhal" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Utilizar una connexion securizada" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Clau" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificat" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Rapòrt" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Avertiment" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "_Definir" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restablir" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Suprimir" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Restablir" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Gestion de l'exportacion" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Entèsta" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Contengut" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Mesa a jorn de v1.0 a v1.2 : %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Mesa a jor a v1.3 : %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Mesa a jorn a v1.4 : %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Mesa a jorn a v1.5 : %s" #~ msgid "Upgrade" #~ msgstr "Metre a jorn" sbackup-0.11.6/po/en_AU.po0000644000175000017500000020667012216122130013645 0ustar peerpeer# English (Australia) translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:35+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: English (Australia) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "No log file specified." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Unable to find log file." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "The following error(s) occurred before:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Invalid archive type." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "For the moment split functionality is not compatible with compress option." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Unable to change permissions for file '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Launching TAR to make incremental backup." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "Unable to find the SNAR file to make an incremental backup." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Falling back to full backup." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Launching TAR to make a full backup." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "Leading '/' from member names were removed." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "Leading '/' from hard link targets were removed." #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR has been finished successfully." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR returned a warning: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR returned warnings:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Included" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Not changed" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Directory" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "Line must be a string" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Dumpdir inconsistency : 'filename' is empty" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Dumpdir inconsistency : 'control' is empty" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "File '%s' does not exist." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "The snarfile header is incomplete." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "A SnapshotFile is required" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Directory does not exist: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Profile settings are being read from file '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Option 'target' is missing, aborting." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "You must provide a dictionary." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Log output for [%(profile)s] is directed to file '%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Log output for [%s] is not directed into a file." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "The config file '%s' couldn't be read!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "section [%(section)s] in '%(configfile)s' should not exist, aborting" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "No schedule defined in configuration file. Probing from filesystem." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "The config file is not set yet into this ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "No receiver set." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "No SMTP server set." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Username set but no password specified." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Password set but no username specified." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Default Profile" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Unknown Profile" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Unlimited" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Custom" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 Music" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI Video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG Video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka Video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG Multimedia container" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD Images" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "File '%s' not found in the backup snapshot files list" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Snapshot '%s' not found " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "The snarfile header is incomplete !" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Snapshot '%(name)s' is being made." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "Setting Base to '%(value)s'." #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "Setting packages File." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Problem when setting the packages list: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Setting Excludes File." #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Option 'Follow symbolic links' is enabled." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "Option 'Follow symbolic links' is disabled." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Backup process finished." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Number of directories: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Total number of files: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Number of symlinks: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Number of files included in snapshot: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Number of new files (also included): %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "Number of files skipped in incremental snapshot: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Number of items forced to be excluded: %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Number of items to be excluded by config: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Maximum free size required is '%s'." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Available disk size is '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "Unable to find logfile to copy into snapshot." #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "No snapshot to copy logfile." #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Target directory '%(target)s' does not exist." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "Snapshot is inconsistent: __name is not set " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Name of snapshot '%s' doesn't match requirement" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "Snapshot is inconsistent: __snapshotpath is not set " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Name of Snapshot not valid : %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Name of base not valid : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "Base name must be set for incremental backup." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Initialising FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Terminating FUSE File Access Manager." #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Could not find external application 'curlftpfs' needed for handling of ftp " "sites: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "FTP schema is: ftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "Could not find external application 'curlftpfs' needed for handling of sftp " "sites: %s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "SFTP schema is like : sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "Scheduled backups are available for Administrator users only." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Name" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "File Type" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Enable" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Profile Name" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Invalid or empty regular expression ('%s') found in configuration. Removed." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Unable to open backup target" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Current profile: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Already included item !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Already excluded item !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Empty expression. Please enter a valid regular expression." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "Provided regular expression is not valid." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "Empty filename or path. Please enter a valid filename or path." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Save configuration as..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Include file..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "All files" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Include folder..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Exclude file..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Exclude folder..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "Configuration has changed" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Test mail settings" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "The test failed with following output:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "The test was successful." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "Unsupported character" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "The given name of the new profile is empty. Please enter a valid profile " "name." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Profile name not valid" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" "The given name of the new profile already exists. Please enter another name." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "Renaming of profiles is not supported." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "%s (Administrator mode)" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Restore..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Restore as..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Revert..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Revert as..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Snapshots" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Version" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Path" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "State" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Ready" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Choose a source folder" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Loading ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "An error occurred while reading snapshot" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "This snapshot seems empty." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Reading backup snapshot..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "No backups found for this day." #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Select restore location" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "Do you really want to revert '%s'?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Select revert location" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "Do you really want to revert '%(source)s' to '%(dir)s'?" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Restoring of selected files" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Restoring of '%s' is in progress." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "Restoring of '%s' was successful." #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Reverting selected files" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Reverting of '%s' is in progress.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "Reverting of '%s' was successful." #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d MiB %(kb)d KiB %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "File '%(file)s' is not accessible with error '%(error)s'." #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" "File '%(file)s' cannot be opened for read access. Operation timed out." #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "File '%(file)s' is backup's target directory." #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "Path '%(file)s' defined in excludes list." #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "File '%(file)s' matches regular expression '%(regex)s'." #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "Error while checking directory '%(dir)s': %(error)s." #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "Empty regular expression found. Skipped." #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "Invalid regular expression ('%s') found. Skipped." #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "No directories to backup defined." #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "Invalid lock file found. Is being removed." #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "Unable to remove lock file: %s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Exclude file type" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standard file types:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Custom defined file type with " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "file extension" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Exclude by regex" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Enter the remote target to include" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Choose a plug-in to get the format" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Choose your plug-in :" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Check" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Configuration Profile Manager" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Configuration profiles" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Profile name" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Enabled" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_File" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Save as..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Tools" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "Set default settings..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Profile Manager..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "_Help" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "_View all help topics" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "_About this program" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Reload configuration" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Save configuration" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Make a backup now" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Open the profile manager" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profiles" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "none\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Do a full backup at least once every" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "days" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Help" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "Show help topic about configuration GUI." #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "General" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Remove" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Add File" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Add Directory" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Include" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Paths" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Add" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "File types" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Regular\n" "Expressions" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "Do not backup files bigger than" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Follow symbolic links" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Others" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Exclude" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Use default backup directory" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Use custom local backup directory" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Select the destination folder" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destination" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "_No scheduled backups" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Simple" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Custom" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Do backups" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Cron time definition" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "hourly\n" "daily\n" "weekly\n" "monthly" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "Show help topic about scheduled backups." #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Schedule" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "Simple cut-off: Erase all backups older than" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logarithmic" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "Show help topic about purging of backups." #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Purging" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Cleaning old backups" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Logging" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" "Debug is just for debbuging purpose. Info is the recommended setting." #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Log level" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" "Debug is just for debbuging purpose. Info is the recommended setting." #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Log file directory" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Report by mail" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "From" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "SMTP server" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Port" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "To" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Use a username and password" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Username" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Password" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Use secure connection" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Choose a certificate file" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Key" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificate" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Choose a key file" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Test _mail settings" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Report" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Warning" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "Show help topic about default values." #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "_Set" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restore" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Displays the manual in Help browser." #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Delete" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Snapshot History" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "Select a snapshot on this list to rebase on it." #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "Rebase" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Snapshot Management" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Revert" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Restoration Management" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Export Management" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Headline" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Content" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "No need to rebase a full snapshot '%s'" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Rebasing '%(current)s' on '%(base)s'" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "An error occurred when pulling snapshot '%s'." #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "Base of snapshot '%s' is not set." #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Cancelling pull of snapshot '%s'" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Upgrading from v1.0 to v1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Upgrading to v1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Upgrading to v1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Upgrading to v1.5: %s" #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "" #~ "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "The version of the snapshot is greater than the supported one!" #~ msgid "Unable to upgrade snapshot" #~ msgstr "Unable to upgrade snapshot" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "Do you really want to rebase '%(current)s' on '%(base)s' ?" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "File '%(file)s' does not exist." #~ msgid "Upgrade" #~ msgstr "Upgrade" sbackup-0.11.6/po/is.po0000644000175000017500000015700312216122130013264 0ustar peerpeer# Icelandic translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:34+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Icelandic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Pétur Ingi Egilsson https://launchpad.net/~petur" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Sérniðið" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 Tónlist" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI Video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG Video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka Video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG Margmiðlunar skrár" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD myndir" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Þessi skrá/mappa hefur þegar verið valin !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Hef þegar útilokað þennan hlut" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Tóm segð. Sláðu in gilda regexp segð." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Tómt skráarheiti eða tóm slóð. Sláðu inn gilt skráarheiti eða gilda slóð." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Allar skrár" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Slóð" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Veldu áfangastað" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Hleð ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Veldu staðsetningu fyrir endurheimtu gögnin" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Útiloka skáargerð" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Hefðbundin skráarsnið" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Skráarsnið sem enda á " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "." #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Útiloka með regex" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Sláðu inn regex segð.\n" "Skrár og möppur sem passa við segðina verða útilokaðar frá afritunartökuni." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Framkvæma heildarafritun á amk." #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "daga fresti." #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Almennt" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Bæta við skrá" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Bæta við möppu" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Til afritunar" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Slóðir" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Gerðir" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Útiloka" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Nota valda möppu undir afritun" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Veldu möppu" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://notandi:lykilorð@tölvunafn/slóð/á/möppu" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Áfangastaður" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Ath: Til viðbótar þá verður öllum ókláruðum og skemmdum afritum hent svo " "lengi sem það er til nýrri útgáfa." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Geymsla afrita" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Hreinsa gömul afrit" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Endurheimta skrár/möppur" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Endurheimta Upphafsmöppu" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Afritunartökur á skrá" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Nota sérsnið:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Nota sjálfgefið:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Skrár og Möppur sem hægt er að endurheimta" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Endurheimta" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Endurheimta Sem..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/el.po0000644000175000017500000016053312216122130013253 0ustar peerpeer# Greek translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:53+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Kainourgiakis Giorgos https://launchpad.net/~kaingeo\n" " Thanos Lefteris https://launchpad.net/~alefteris\n" " attikon https://launchpad.net/~attikon\n" " christosvas https://launchpad.net/~christosvas" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Προσαρμοσμένo" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Μουσική MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Βίντεο AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Βίντεο MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Βίντεο Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Περιέκτης πολυμέσων OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Εικόνες CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Το αντικείμενο έχει ήδη συμπεριληφθεί!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Το αντικείμενο έχει ήδη εξαιρεθεί!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Κενή έκφραση. Παρακαλώ εισάγετε μια έγκυρη πρόταση." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Κενό όνομα αρχείου ή διαδρομή. Παρακαλούμε εισάγετε ένα έγκυρο όνομα αρχείου " "ή διαδρομή." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Όλα τα αρχεία" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Θέση" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Επιλέξτε ένα φάκελο προέλευσης" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Γίνεται φόρτωση ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Επιλογή προορισμού επαναφοράς" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Εξαίρεση τύπου αρχείου" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Στάνταρντ τύποι αρχείων:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Προσαρμοσμένα καθορισμένος τύπος αρχείου με " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "επέκταση αρχείου" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Απλή Σουίτα Αντιγράφων Ασφαλείας" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Δημιουργία αντιγράφων ασφαλείας τουλάχιστον κάθε" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Γενικά" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Προσθήκη Αρχείου" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Προσθήκη Καταλόγου" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Συμπερίληψη" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Διαδρομές" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Τύποι αρχείων" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Εξαίρεση" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Χρήση προσαρμοσμένου τοπικού καταλόγου φύλαξης" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Επιλέξτε το φάκελο προορισμού" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Προορισμός" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Εκκαθάριση" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Έλεγχος παλαιών αντιγράφων ασφαλείας" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Επαναφορά αρχείων/καταλόγων" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Επαναφορά Φακέλου Προέλευσης" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Διαθέσιμα αντίγραφα ασφαλείας:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Χρήση προσαρμοσμένου" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Χρήση προεπιλεγμένων:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Αρχεία και Φάκελοι για επαναφορά" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Επαναφορά" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Επαναφορά Ως..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/da.po0000644000175000017500000015706112216122130013241 0ustar peerpeer# Danish translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 14:02+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Mads Lundby https://launchpad.net/~lundbymads-gmail\n" " Martin Hansen https://launchpad.net/~mh-mail" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Brugerdefineret" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3-musik" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI-video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG-video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka-video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG-multimediebeholder" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Cd-aftryk" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Element allerede inkluderet !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Element allerede udeladt !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Tomt udtryk. Indtast et gyldigt regulært udtryk." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "Tomt filnavn eller sti. Indtast et gyldigt filnavn eller sti." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Alle filer" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Sti" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Vælg en kildemappe" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Indlæser ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Vælg et sted at gendanne til" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Udelad filtype" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standard filtyper:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Brugerdefineret filtype med " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "filendelse" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Udelad ud fra reg. udtryk" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Indtast regulært udtryk.\n" "Filer og mapper som matcher dette udtryk vil blive udeladt fra backup." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simpelt program til backup" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Lav en fuldstændig backup mindst én gang hver" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dag" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Generelt" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Tilføj fil" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Tilføj mappe" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Medtag" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Stier" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Filtyper" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Udelad" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Anvend brugerdefineret lokal backupmappe" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Vælg destinationsmappe" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh:/brugernavn:adgangskode@eksempel.dk/fjern/mappe/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Placering" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Bemærk: Herudover vil alle ukomplette backupper og backupper, der " "ikke kan reddes, blive slettet, så længe der findes et komplet backup-" "øjebliksbillede, som er dannet senere." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Oprydning" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Oprydning i gamle backupper" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Gendan filer/mapper" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Kildemappe til gendannelse" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Tilgængelige backupper:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Anvend brugerdefineret:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Anvend standard:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Filer og mapper til gendannelse" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Gendan" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Gendan som..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/ro.po0000644000175000017500000015461612216122130013300 0ustar peerpeer# Romanian translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:23+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " George Silviu Enea https://launchpad.net/~premamotion" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalizat" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Detaliu deja inclus!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Detaliu deja exclus!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/he.po0000644000175000017500000015452112216122130013247 0ustar peerpeer# Hebrew translation for sbackup # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-09-25 00:04+0000\n" "Last-Translator: itzik_b \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " itzik_b https://launchpad.net/~itzik-b" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "פרופיל ברירת מחדל" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/es.po0000644000175000017500000022633612216122130013266 0ustar peerpeer# Spanish translation for sbackup # Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2012-02-22 19:44+0000\n" "Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] Reporte del %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "No se especificó un archivo de registro." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "No se encontró ningún archivo de registro." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Error crítico: ¡no se ha encontrado el archivo de configuración para el " "perfil predeterminado!" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Copia de seguridad cancelada por el usuario." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Se produjo un error durante la cancelación de copia de seguridad:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Ocurrió un error durante el respaldo:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Error al enviar el correo electrónico:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "Ocurrieron el/los siguiente(s) errores antes de:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "La copia de seguridad no se ha iniciado.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Esta es una solución de copias de seguridad amigable para las necesidades " "comunes de los equipos de escritorio. Si desea ayudar reportando errores, " "mediante la traducción o cualquier otra cosa por favor visite nuestro sitio " "web." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Desarrolladores principales:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Mantenedores anteriores" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Colaboradores:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "traductor-créditos\n" "\n" "Launchpad Contributions:\n" " Adolfo Jayme Barrientos https://launchpad.net/~fitoschido\n" " Daniel Bernal https://launchpad.net/~afterxleep.-\n" " Emilio Vega Roa https://launchpad.net/~tehxnik\n" " Gonzalo L. Campos Medina https://launchpad.net/~gcamposm\n" " Horacio Arroyo https://launchpad.net/~deblike\n" " Ignacio Hidalgo https://launchpad.net/~hipernacho\n" " Javier García Díaz https://launchpad.net/~jgd\n" " Jorge Prediger https://launchpad.net/~jorgeprediger\n" " Marcelo Kobs https://launchpad.net/~kobops\n" " Oscar Soto https://launchpad.net/~oscarfsoto\n" " Paco Molinero https://launchpad.net/~franciscomol\n" " Ricardo Pérez López https://launchpad.net/~ricardo\n" " Roberto Serrano Diaz-Grande https://launchpad.net/~robertoserrano83\n" " Rodrigo Jose Luis Brun Vera https://launchpad.net/~rodrigolbrunv\n" " adn https://launchpad.net/~adn-throatwobblermangrove\n" " nh3oh https://launchpad.net/~nh3oh-com1\n" " Ángel Eduardo https://launchpad.net/~arcnor" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Tipo de archivo inválido." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "La ruta efectiva para «%s» no esta disponible" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Imposible de obtener una dirección efectiva para «%s»" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "Por el momento la funcionalidad de cortar no es compatible con la opción de " "compresión." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "No se pudieron cambiar los permisos del archivo «%s»" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "No se pudo eliminar el archivo temporal «%(file)s»: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Ejecutando TAR para realizar respaldo incremental." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" "No se pudo encontrar el archivo SNAR para realizar un respaldo incremental." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Retroceder a copia de seguridad completa." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Lanzando TAR para realizar Copia de respaldo completa" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "El carácter «/» de los nombres de los miembros fueron retirados." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "El carácter «/» de los enlaces fijos se eliminó" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR ha devuelto un mensaje: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR ha devuelto estos mensajes:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR ha terminado correctamente." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR devolvió un aviso: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "Avisos de TAR:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR devolvió avisos pero finalizó correctamente." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "No se pudo finalizar correctamente. TAR finalizo con errores." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Imposible de terminar un proceso interno : %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Incluido" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Sin cambios" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Directorio" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "La línea ha de ser una cadena" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Directorio de volcado inconsistente : «filename» esta vacio" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Directorio de volcado inconsistente : «control» esta vacio" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "El archivo «%s» no existe" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "La cabecera del archivo SNAR esta incompleta." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "Se requiere un archivo de instantánea" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "El directorio no existe: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" "Las configuraciones del perfil se están leyendo desde el archivo «%s»." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "La configuración del perfil se ajusta a los valores predeterminados. El " "archivo de configuración se establece en «%s»." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Falta la opción «destino» , abortando." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "Error durante el procesamiento de la configuración:\n" "\n" "%(error)s en la linea «%(line)s».\n" "\n" "Por favor revise su archivo de configuración." #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Imposible de evaluar «%(parameter)s» como diccionario (valor obtenido = " "«%(value)r»)." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "No se ha podido evluar '%(parameter)s' como diccionario (valor obtenido= " "'%(value)r' )" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "Debe proporcionar un diccionario." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" "Salida del registro de eventos para [%(profile)s] fue direccionado al " "archivo '%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "La salida del registro [%s] no fue direccionada al archivo." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" "Imposible de renombrar el archivo de registros de eventos '%(src)s'-" ">'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "No se puede leer el arhivo de configuración «%s»!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" "La sección [%(section)s] en '%(configfile)s' no debería existir, abortando" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" "No hay tarea programada definida en el archivo de configuración. Probando " "desde el sistema de archivo." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" "El archivo de configuración no está listo todavía en el ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "No hay ningún receptor establecido." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "No se ha configurado un servidor SMTP." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" "Se ha configurado un nombre de usuario pero no se ha especificado una " "contraseña." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" "Se ha configurado una contraseña pero no se ha especificado un nombre de " "usuario." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "Un certificado y el archivo de licencia es dado mientras la opción de SSL " "(smtptls=1) no ha sido agregado.\n" "Seleccionar SSL en el orden para usar el certificado y el archivo de " "licencia." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "Cuando especifica un Certificado o un archivo de licencia, el archivo de " "licencia responde.El certificado es obligatorio." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Perfil predeterminado" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Perfil desconocido" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Sin límite" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalizado" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Música MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Vídeo AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Vídeo MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Vídeo Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Contenedor multimedia OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Imágenes de CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" "Archivo «%s» no encontrado en la lista de archivos de la instantánea de la " "copia de seguridad" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "Archivo '%(filename)s'no encontrado en la lista de archivos de la " "instantánea [%(snapshotname)s] , Ignorado." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "No se ha encontrado la instantánea «%s» " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" "Instantánea no valida `%(name)s` Encontrado: El nombre de la instantánea no " "es valido." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "Instantánea no valida «%(name)s» Encontrado: %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "¡La cabecera del archivo SNAR no está completa!" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "La imagen'%s' esta llena, nada que ver (no se cambia esta llena)." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Preparación del proceso de copia de seguridad" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Se está haciendo la Instantánea '%(name)s'." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "Configurando Base a '%(value)s'." #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "Configurando archivo de paquetes." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Hubo un problema al configurar la lista de paquetes: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Ajustes de archivos excluidos." #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "Ajustes del formato de compresión para '%s'" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "Ajustes del tamaño para partes de archivos para %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Opción 'Seguir links simbolicos' esta habilitada." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "La opción 'Seguir links simbólicos' esta deshabilitada." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "La instantanea está siendo confirmada" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "Error mientras se limpiaban las instantáneas antiguas: %s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Ha finalizado el proceso de respaldo." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "Inspeccionando el sistema de archivos y recolectando información" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Resumen de la copia de seguridad" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Número de directorios: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Número total de archivos: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Número de enlaces simbólicos: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Número de archivos incluidos en la instantánea: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Número de archivos nuevos (también incluidos): %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "Número de archivos omitidos en la instantánea incremental: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Numero de elementos forzados a ser excluidos : %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Número de elementos excluidos por configuración: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "El maximo tamaño libre requerido es «%s»." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "El tamaño de disco disponible es «%s»." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "No hay suficiente espacio en el directorio elegido para la copia de " "seguridad planeada(libre: %(freespace)s, requerido %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" "Imposible de copiar el archivo de registros.El acceso al archivo no se fue " "iniciado." #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "Imposible de copiar el archivo de registros : %s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" "No se puede encontrar el archivo de registro para copiar en la imagen" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "No hay instantánea a la que copiar el archivo de registro." #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "El procesamiento del perfil fue cancelado a petición del usuario\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "El procesamiento del perfil termino exitosamente (No Hubo errores)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "El procesamiento del perfil fallo con error:%s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Destino de la copia de seguridad: %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Imposible de encontrar el directorio de destino." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" "Imposible de encontrar el directorio de destino aun despues de reintentar." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "No existe el directorio de destino '%(target)s'." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "Imposible de acceder al destino: %s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "La instantánea es inconsistente: _name no está definido " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "El nombre de la instantánea «%s» no coincide con los requerimientos" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "La instantánea es inconsistente: _snapshotpath no está definido " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "Se supone que el formato de compresión de la instantánea es «%s» pero no se " "encontró el archivo con un nombre correcto" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" "%(file)s No contiene un valor valido. Ignorando incompleto o no existe el " "directorio de la copia de seguridad. " #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Nombre de instantánea no válido: %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Nonbre de base no valido : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "Nombre invalido del snapshot: %s" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "No se puede leer el archivo obligatorio 'ver'" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "Un nombre base debe ser definido para respaldo incremental." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Inicializando el Manejador de Acceso a Archivos FUSE." #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Finalizando el Manejador de Acceso a Archivos FUSE." #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "Inicializando el Manejador de Acceso a Archivos GIO." #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "Finalizando el Manejador de Acceso a Archivos GIO." #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "Imposible de montar: la ruta no fue montada" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" "Imposible montar: No se encontró la ruta cuando se montó (probablemente es " "local)" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "Imposible de montar: %s" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "No se puede montar el conjunto: la ruta no se almacena" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "La ruta ya está montada." #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "La ruta no está montada." #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "prueba de ruta de acceso especificada usando GIO" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "Crear directorio de prueba" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "Prueba la existencia de archivo de prueba" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "Crear archivo" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "Releer archivo de prueba" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Eliminar archivo" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "Eliminar directorio" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" "Imposible de importar complemento «%(plugin_name)s»: %(error_cause)s " #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "No se pudo encontrar la aplicación externa «curlftpfs» necesaria para tratar " "con sitios FTP: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "No se ha podido montar «%(server)s» en «%(mountpoint)s»: %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "El esquema FTP es: ftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error de concordancia del esquema «ftp://user:pass@server/anything» con «%s» " "(se requiere «/» después del nombre del servidor)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "No se pudo encontrar una aplicación externa «curlftpfs» necesitado para el " "manejo de los sitios sftp: %s" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" "El esquema de una dirección SFTP es: sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error de concordancia del esquema 'sftp://user:pass@server/anything' con " "«%s» (se requiere '/' después del nombre del servidor)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Error de concordancia del esquema «ssh://user:pass@server/anything» con «%s» " "(se requiere «/» después del nombre del servidor)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "El comando sshfs '%(command)s' no se ejecutó en forma normal. Información de " "salida => %(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "El esquema SSH es como : ssh://user:pass@example.com:33/home/user/backup/" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" "Por favor, asegúrese de que el directorio perdido existe (p.ej. montando un " "disco externo) o cambiando el destino especificado." #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" "Mientras se accedía al destino de la copia de seguridad, el siguiente error " "ha ocurrido:\n" "\n" "%s." #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Error Simple Backup" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "Imposible de accede al destino de la copia de seguridad" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" "Las tareas programadas de copias de seguridad solamente están disponibles " "para usuarios Administradores." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Nombre" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Tipo de archivo" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Activar" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Nombre del perfil" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Invalida o vacia exprecion regular ('%s') encontrada en configuraciones. " "Removida" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Invalida o vacia exprecion regular encontrada en las configuraciones:\n" "'%s'\n" "Estas expreciones no son usadas y fueron removidas de la configuracion." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Por favor, asegúrese de que el directorio no encontrado existe (por ejemplo, " "montando un disco externo) o cambie el objetivo especificado por otro que " "exista." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" "Destino de la copia de seguridad `%s` no existe.\n" "\n" "Atención: El destino será configurado a sus valor predeterminado. Revise " "esto en la página de configuración de destino antes de guardar la " "configuración." #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Incapaz de abrir el destino de la copia de seguridad" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" "%s\n" "\n" "Un perfil de respaldo se ha creado usando los valores predeterminados. " "Guarde la nueva configuración para utilizarla o revise manualmente su " "archivo de configuración existente.\n" "\n" "Nota importante: Guardando sobrescribirá su configuración inválida existente." #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Perfil actual: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "¡Elemento ya incluido!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "¡Elemento ya excluido!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Expresión vacía. Por favor, introduzca una expresión regular válida." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "La expresión regular proporcionada no es válida." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Nombre de archivo o ruta vacíos. Por favor, introduzca un nombre de archivo " "o una ruta válidos." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "Parece que la ruta que ha ingresado no existe. Desea agregar esta ruta " "incorrecta?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Guardar configuración como..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "Un proceso de respaldo es ejecutado ahora en segundo plano.\n" "\n" "Puede monitorear el progreso de la copia de seguridad por medio del " "notificador de estado mostrado en el área de notificación." #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "Proceso de copia de seguridad iniciado" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "Respuesta de diálgo inesperada: %s" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Incluir archivo..." #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Todos los archivos" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Incluir directorio..." #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Excluir archivo..." #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Excluir directorio..." #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "La configuración ha cambiado" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "Esas son modificaciones no guardadas. Por favor guardar la configuracion o " "revertir aquellos cambios despues de testear la configuracion del email." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Comprobar las configuraciones de correo-e" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "La prueba falló con la siguiente información de salida:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "La prueba se ha realizado correctamente." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" "La expresión dada contiene caracteres no soportados ('%s'). Actualmente no " "es posible usar estos caracteres en expresiones de exclusión." #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "Caracter no permitido" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "Conectar a destino remoto" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "El montaje fue exitoso (no hubo errores)" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "Imposible de montar Host" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "El desmontaje fue exitoso (No hubo errores)" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "Imposible de desmontar anfitrión" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "Realizar pruebas en host remoto" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "Imposible acceder al destino remoto" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "Todas las pruebas fueron pasadas" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "El nombre dado al nuevo perfil esta vacio. Por favor ingrese un nombre de " "perfil valido." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Nombre del perfil no válido" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" "El nombre dado al nuevo perfil existe actualmente. Por favor ingrese otro " "nombre." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "El renombre de perfiles no esta soportado." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "Valores por defecto siendo aplicados." #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "Por favor selecione un perfil." #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "hubo un problema inicializando el módulo pynotify" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "Fallo la conexión al servicio de notificación: %s" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "Simple Backup" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "Mostrar ventana de mensajes" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "Copia de seguridad cancelada" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "Se perdió la conexión con el servicio D-Bus." #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "La reconeccion fue exitosa" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "Iniciando sesión de copia de seguridad" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "Finalizando sesión de copia de seguridad" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "Reintente" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "No se puede presentar la ventana: %s" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "Cancelar el proceso de copia de seguridad en ejecución?" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "No se puede cancelar el proceso de copia de seguridad." #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "Perfil: %s" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "Tamaño de la copia de seguridad: %s" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "%.1f%% procesados" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "Tiempo restante: %s" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "desconocido" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "menos de 1 minuto" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "cerca de 2 minutos" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "cerca de 3 minutos" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "cerca de 4 minutos" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "cerca de 5 minutos" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "cerca de %.0f minutos" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "En curso" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "terminado" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "Progreso: desconocido" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "Se esta preparando la copia de seguridad" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "Recopilando información de aarchivo" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "Progreso: cancelado" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "Ocurrió un error" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "La inicialización de GTK+ ha fallado: %s" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "%s (Modo administrador)" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "Esto no debería ocurrir" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Restaurar…" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Restaurar como..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Revertir..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Revertir como..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "n.a." #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Instantáneas" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Versión" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Ruta" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Estado" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "Conectar con destino..." #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "La ruta especificada no existe" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Preparado" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "No se especifico un destino" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Seleccione una carpeta de origen" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "Leyendo instantáneas..." #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "Leyendo contenido del directorio..." #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Cargando…" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "Leyendo archivos desde la instantánea..." #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "Simple Backup error al restaurar" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "Un error ocurrió mientras se leía la instantánea" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "Esta instantánea parece vacía." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Preparando instantánea de copia de seguridad..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "No se encontraron respaldos para este día" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Seleccione la ubicación para la restauración" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "De verdad quieres volver a '%s'?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Seleccionar ubicación de reversión" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "Leyendo instantánea..." #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "¿Quiere eliminar la instantánea?" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "Imposible eliminar la instantánea" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "No se puede eliminar la instantanea" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Restauración de archivos seleccionados" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "La restauración de «%s» se está realizando." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "La restauración de '%(source)s'\n" "a '%(dirname)s' se está realizando." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Revertiendo archivos seleccionados" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "La reversión de «%s» se está realizando.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "%(mb)d MiB %(kb)d KiB" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d MiB %(kb)d KiB %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "%(mb)d MB %(kb)d kB" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "No se definieron directorios para realizar copias de seguridad." #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "No se puede eliminar el archivo de bloqueo: %s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "No se puede eliminar el archivo de bloqueo: No existe el archivo." #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Excluír tipos de archivo" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Tipos de archivo estándar:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Tipos de archivo personalizados definidos con " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "extensión del archivo" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Excluir por expresión regular" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Introduzca una expresión regular.\n" "Los archivos y directorios que concuerden con esta expresión serán excluidos " "de la copia de seguridad." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Introduce el objetivo remoto a incluir" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Elija un complemento para obtener el formato" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Elija su complemento:" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Verificar" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Administrador de Configuración de Perfil" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Perfiles de configuración" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Nombre del perfil" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Activado" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_Archivo" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Guardar como..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Herramientas" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Administrador de Perfiles..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "Hacer copia de seguridad ahora" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "_Ayuda" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "_Ver todos los temas de ayuda" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "_Sobre este programa" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Recargar configuración" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Guardar configuración" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Hacer copia de seguridad ahora" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Abrir el administrador de perfiles" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Perfiles" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "ninguno\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Realizar una copia de seguridad completa al menos una vez cada" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "días" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Ayuda" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "General" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Eliminar" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Añadir archivo" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Añadir directorio" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Incluir" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Rutas" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Agregar" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Tipos de archivo" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Seguir los enlaces simbólicos" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Otros" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Excluir" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Usar directorio de copias de seguridad predeterminado" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Usar directorio local personalizado de copia de seguridad" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Seleccione la carpeta de destino" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "Usar un sitio remoto" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://usuario:contraseña@ejemplo.com:/directorio/remoto" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "Conectar..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destino" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Simple" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Personalizado" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Hacer copias de seguridad" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Programar" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logarítmico" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Nota: Además, se borrarán todas las copias de seguridad incompletas e " "irrecuperables cuando exista una copia de seguridad completa llevada a cabo " "posteriormente." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Borrando" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Limpiando copias de seguridad antiguas" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Acceso" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" "Debug es justamente para propositos de debbuging.Info es la configuracion " "recomendada" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Nivel de registro" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Directorio de archivos de registro" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Reporte por correo" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "Desde" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "Servidor SMTP" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Puerto" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "Para" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Usar nombre de usuario y contraseña" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Nombre de usuario" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Contraseña" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Usar conexión segura" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Eija un Archivo de Certificado" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Clave" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificado" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Elegir un archivo de clave" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Probar configuración de _correo" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Informe" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Advertencia" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "Mostrar tema de ayuda sobre los valores predeterminados." #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "_Configurar" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "Tipo de servicio" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "Nombre de Host" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "Detalles" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "Mostrar contraseña" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "_Conectar" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "Hacer una copia de seguridad completa" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Restaurar archivos/directorios" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Carpeta de origen de la restauración" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Copias de seguridad disponibles:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Usar personalizado:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Usar predeterminado:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Archivos y carpetas a restaurar" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restaurar" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Restaurar como..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "Destino de la copia de seguridad" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Mostrar el manual en el visor de ayuda." #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "Destino personalizado" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" "Seleccionar el destino de la copia de seguridad en su disco duro o en un " "sitio remoto. Presione aplicar cuando esta listo." #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" "Escoja un directorio de destino. Para sitios remotos colocar el URI en el " "campo de texto" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "Copias de seguridad disponibles" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "Eliminar instantánea" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Eliminar" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Historial de instantáneas" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "Bae actual:" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Gestión de instantáneas" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "Detalles de la instantánea" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Revertir" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Gestión de restauraciones" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Gestión de exportaciones" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Título" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Contenido" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Actualizando de v1.0 a v1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Actualizando a v1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Actualizando a v1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Actualizando a v1.5: %s" #~ msgid "Unable to upgrade snapshot" #~ msgstr "No se pudo actualizar la instantánea" #~ msgid "Upgrade" #~ msgstr "Actualizar" #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Rebasando '%(current)s' en '%(base)s" #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "" #~ "Hay fotografias almacenadas en formatos de fotografia en desuso.Por favor " #~ "mejora la calidad usando el restaurador de copia de seguridad simple (Simple " #~ "Backup-Restoration) Si los desea usar" #~ msgid "Upgrade finished" #~ msgstr "Actualización terminada" #, python-format #~ msgid "Unable to remove upgrade stamp: %s" #~ msgstr "No se pudo eliminar la marca de actualización: '%s'" #~ msgid "Simple Backup upgrade" #~ msgstr "Actualización Simple Backup" #~ msgid "Snapshot was sucessfully upgraded." #~ msgstr "La instantánea se actualizo con éxito." #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "El archivo '%(file)s' no existe." #~ msgid "Upgrade snapshot" #~ msgstr "Actualizar instantánea" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "No hay necesidad de rehacer una instantánea completa «%s»" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "'%(snapshotToRebase)s' no tiene un archivo «base», puede estar roto " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "No se puede rehacer una instantánea en una más nuevo : " #~ "'%(snapshotToRebase)s' <= '%(NewBaseSnapshot)s' " #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "Ocurrió un error al tomar la instantánea «%s»." #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "" #~ "El archivo SNAR ya existía en la instantánea «%s». No se ha sobreescrito." #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "¡La versión de la instantánea es mayor que la permitida!" #, python-format #~ msgid "Upgrade snapshot '%s'" #~ msgstr "Actualizar instantánea «%s»" #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "La base de la instantánea «%s» no se ha configurado." #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Cancelar la instantanea a la fuerza '%s'" sbackup-0.11.6/po/it.po0000644000175000017500000021201012216122130013253 0ustar peerpeer# Italian translation for sbackup # Copyright (c) 2006 Rosetta Contributors and Canonical Ltd 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:43+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "Demone SBackup <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] Rapporto del %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Nessun file di registro specificato." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Impossibile trovare il file di registro." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Errore critico: non è stato trovato alcun file di configurazione per il " "profilo predefinito.\n" "\n" "Continuare elaborando i profili rimanenti." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Backup annullato dall'utente." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Si è verificato un errore durante l'annullamento del backup:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Si è verificato un errore durante il backup:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Errore durante l'invio dell'email:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "Si sono verificati i seguenti errori:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Il backup non è stato avviato.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Questa è una soluzione di backup di facile utilizzo per le esigenze dei " "comuni desktop. Per contribuire segnalando bug, traducendo o facendo " "qualunque altra cosa visitare il sito web del progetto." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Manutentori:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Precedenti manutentori:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Contributori:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Ubuntu Italian Translators, https://launchpad.net/~ubuntu-l10n-it, 2006-" "2007\n" "\n" "Launchpad Contributions:\n" " Alessio Treglia https://launchpad.net/~quadrispro\n" " Claudio Arseni https://launchpad.net/~claudio.arseni\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " LoReNicolò https://launchpad.net/~god121-p-l\n" " Luca Ferretti https://launchpad.net/~elle.uca\n" " Lucius https://launchpad.net/~lucius-ald\n" " Michele Angrisano https://launchpad.net/~darksun88-deactivatedaccount\n" " Milo Casagrande https://launchpad.net/~milo\n" " Riccardo Angelino https://launchpad.net/~riccardoangelino\n" " enubuntu https://launchpad.net/~enubuntu\n" " frazar0 https://launchpad.net/~frazar0\n" " katane https://launchpad.net/~skorpio1066" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Tipo di archivio non valido." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Il percorso effettivo per \"%s\" non è disponibile" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Impossibile ottenere il percorso effettivo per \"%s\"" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "Al momento la funzione di divisione non è compatibile con l'opzione di " "compressione." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Impossibile cambiare i permessi per il file \"%s\"." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Impossibile rimuovere il file temporaneo \"%(file)s\": %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Avvio di TAR per eseguire backup incrementale." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" "Impossibile trovare il file SNAR per eseguire un backup incrementale." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Ripiegare sul backup completo." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Avvio di TAR per eseguire backup completo." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "La \"/\" principale è stata rimossa dai nomi dei membri." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "La \"/\" principale è stata rimossa dai collegamenti hard link" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR ha restituito un messaggio: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR ha restituito dei messaggi:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR è stato completato con successo." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR ha restituito un avviso: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR ha restituito avvisi:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR ha restituito degli avvisi ma e' stato completato con successo." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" "Impossibile completare con successo. TAR è stato terminato con errori." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Impossibile terminare il processo in backend: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Incluso" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Invariato" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Directory" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "La riga deve essere una stringa" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Directory di dump inconsistente: «filename» è vuoto" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Directory di dump inconsistente: «control» è vuoto" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "Il file «%s» non esiste." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "Intestazione del file snar incompleta." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "È richiesto un file immagine" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "La directory non esiste: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Le impostazioni del profilo vengono lette dal file «%s»." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Le impostazioni di profilo sono regolate ai valori di default. Il file di " "configurazione è impostato a '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Opzione «target» mancante, chiusura in corso." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "Errore durante nell'elaborazione della configurazione:\n" "\n" "%(error)s alla linea `%(line)s`.\n" "\n" "Si prega di controllare il file di configurazione." #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Impossibile considerare «%(parameter)s» come un dizionario (valore ottenuto " "= «%(value)r»)." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "Impossibile considerare «%(parameter)s» come un dizionario (valore ottenuto " "= «%(value)r»)" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "È necessario fornire un dizionario." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Output del registro di [%(profile)s] inviato al file «%(file)s»." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Output del registro di [%s] non inviato a nessun file." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" "Impossibile rinominare il file di registro «%(src)s»->«%(dst)s»: %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "Il file di configurazione '%s' non può essere letto!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" "sezione [%(section)s] in «%(configfile)s» inesistente, chiusura in corso" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" "Nessuna pianificazione definita nel file di configurazione. Interrogazione " "del filesystem." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" "Il file di configurazione non è ancora impostato in questo ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "Nessun destinatario impostato." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Nessun server SMTP impostato." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Nome utente impostato ma nessuna password specificata." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Password impostata ma nome utente non specificato." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "Un certificato e una chiave sono stati forniti mentre l'opzione SSL " "(smtptls=1) non è stata impostata.\n" "Selezionare SSL per poter utilizzare certificato e chiave." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "Quando si imposta un certificato SSL o una chiave è obbligatorio inserire il " "certificato." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Profilo predefinito" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Profilo sconosciuto" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Illimitato" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalizzato" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Musica MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Video AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Video MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Video Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Contenitore multimediale OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Immagini CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" "Il file «%s» non è stato trovato nell'elenco dei file dell'immagine di backup" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "File '%(filename)s' non trovati nella lista file immagine " "[%(snapshotname)s], Saltato." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Immagine «%s» non trovata " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" "Immagine non valido `%(name)s` non trovato: Nome dell' immagine non valido." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "Immagine non valido `%(name)s` non trovato: %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "L'intestazione del file snar è incompleta." #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" "Immagine «%s» già completa, nulla da fare (non viene modificata in completa)." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Preparazione del processo di backup" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Immagine «%(name)s» creata." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "Base impostata a «%(value)s»." #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "File dei pacchetti impostato." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Problemi durante l'impostazione dell'elenco pacchetti: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Impostazione file esclusi." #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "Impostare il formato di compressione a `%s`" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "Impostazione delle dimensioni dei pezzi di repertorio %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "L'opzione «Segui collegamenti simbolici» è abilitata." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "L'opzione «Segui collegamenti simbolici» è disabilitata." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "Lo snapshot è stato invitato." #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "Si sono verificati degli errori cancellando vecchi snapshots: %s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Backup completato." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" "Sto inspezionando il file system per collezionare le informazioni sui files" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Riepilogo di backup" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Numero di directory: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Numero totale di file: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Numero di collegamenti simbolici: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Numero di file inclusi nell'immagine: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "Numero di file saltati nell'immagine incrementale: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Numero di elementi forzati ad essere esclusi: %s" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Numero di oggetti da escludere come da configurazione: %s" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Lo spazio libero massimo richiesto è '%s'" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "La dimensione dello spazio disponibile su disco è '%s'" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "Spazio disponibile non sufficiente nella directory per il backup pianificato " "(libero: %(freespace)s, richiesto: %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" "Impossibile copiare il registro. L'accesso al file non è inizializzato." #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "Impossibile copiare il file di registro: %s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "Impossibile trovare il logfile da copiare in snapshot." #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "Nessuna immagine per copiare il file di registro" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" "Elaborazione del profilo è stata annullata su richiesta dell'utente\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "Elaborazione del profilo terminato con successo (nessun errore)\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "Elaborazione del profile non riuscita con errore: %s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Destinazione del backup: %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Impossibile trovare la directory di destinazione." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" "Impossibile trovare la directory di destinazione anche dopo il nuovo " "tentativo." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "La directory di destinazione «%(target)s» non esiste." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "Impossibile accedere alla destinazione: %s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "L'immagine è inconsistente: _name non impostato " #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Il nome dell'immagine «%s» non corrisponde ai requisiti" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "L'immagine è inconsistente: __snapshotpath non impostato " #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" "Il formato di compressione delle immagini dovrebbe essere «%s», ma il file " "corrispondente non è stato trovato" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" "%(file)s non contiene valori validi. Ignorata directory incompleta o non di " "backup. " #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Nome dell'immagine non valido: %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Nome della base non valido: %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "Nome dell'immagine non valido: %s" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "Impossibile leggere il file obbligatorio \"ver\"" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "Il nome di base deve essere impostato per il backup incrementale." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Inizializzazione del gestore di accesso ai file FUSE." #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Chiusura del gestore di accesso ai file FUSE." #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "Inizializzazione del gestore di accesso ai file GIO." #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "Chiusura del gestore di accesso ai file GIO." #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "Il percorso è già montato." #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "Il percorso non è montato." #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" "Impossibile importare il plugin \"%(plugin_name)s\": %(error_cause)s " #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Impossibile trovare l'applicazione esterna «curlftpfs» necessaria per " "l'utilizzo di siti ftp: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "Impossibile montare «%(server)s» in «%(mountpoint)s»: %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "Lo schema FTP è: ftp://utente:password@server/qualcosa" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Errore di corrispondenza tra «ftp://utente:password@server/cartella» e «%s» " "(la «/» dopo server è obbligatoria)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "Un indirizzo SFTP è simile a: sftp://utente:password@server/cartella" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Errore di corrispondenza tra «sftp://utente:password@server/cartella» e «%s» " "(la «/» dopo server è obbligatoria)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Errore di corrispondenza tra «ssh://utente:password@esempio.it/home/» e «%s» " "(la «/» dopo server è obbligatoria)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "Il comando sshfd '%(command)s' non viene eseguito normalmente. Output => " "%(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "Lo schema SSH è simile a : ssh://user:pass@example.com:33/home/user/backup" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" "Errore nella corrispondenza dello schema " "'ssh://user:pass@example.com:21/home' con '%s' (Lo '/' dopo il server è " "obbligatorio)" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Errore di Simple Backup" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "I backup programmati sono disponibili solo per gli amministratori." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Nome" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Tipo di file" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Abilita" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Nome del profilo" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Espressione regolare (\"%s\") vuota o non valida trovata nella " "configurazione. Rimossa." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Espressioni regolari vuote o non valide trovate\n" "nel file di configurazione:\n" "\"%s\"\n" "\n" "Queste espressioni non sono state usate e sono\n" "state rimosse dalla configurazione." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Assicurarsi che la directory mancante esista (es. montando un disco esterno) " "o cambiare la destinazione con una esistente." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" "La destinazione del backup \"%s\" non esiste.\n" "\n" "Attenzione: la destinazione dovrà essere impostata al valore predefinito. " "Controllare questi parametri nella pagina delle impostazioni della " "destinazione prima di salvare la configurazione." #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Impossibile aprire l'oggetto di backup" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" "%s\n" "\n" "È stato creato un profilo di backup usando i valori predefiniti. Salvare la " "nuova configurazione per utilizzarla o controllare manualmente il file di " "configurazione esistente.\n" "\n" "Nota importante: il salvataggio sovrascriverà la configurazione non valida " "esistente." #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Profilo attuale: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Oggetto già incluso." #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Oggetto già escluso." #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Espressione vuota. Inserire un'espressione regolare valida." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "L'espressione regolare fornita non è valida." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Nome file o per percorso vuoto. Inserire un nome file o un percorso valido." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" "Sembra che il percorso selezionato non esista. Aggiungere questo percorso " "non corretto?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Salva la configurazione come..." #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "Un processo di backup è ora eseguito in background.\n" "\n" "È possibile controllarne l'avanzamento utilizzando l'indicatore di stato " "mostrato nell'area di notifica." #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "Processo di backup avviato" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Tutti i file" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Provare le impostazioni delle email" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Ripristina..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Ripristina come..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Reimposta..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Reimposta come..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Immagini" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Versione" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Percorso" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Stato" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Pronto" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Scegliere una cartella" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Caricamento..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "Questa immagine sembra vuota." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Lettura dell'immagine di backup..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Seleziona posizione di ripristino" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Selezionare la posizione di reimpostazione" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Ripristino del file selezionato" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Ripristino di «%s» in corso." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Ripristino di «%(source)s»\n" "in «%(dirname)s» in corso." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Reimpostazione dei file selezionati" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Reimpostazione di «%s» in corso.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Reimpostazione di «%(source)s»\n" "in «%(dirname)s» in corso." #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Escludi tipo di file" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Tipi di file standard:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Tipo di file definito dall'utente con " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "estensione del file" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Escludi con espressione regolare" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Inserire un'espressione regolare.\n" "I file e le directory corrispondenti a a questa espressione verranno esclusi " "dal backup." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Inserire la destinazione remota da includere" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Scegliere un plugin per ottenere il formato" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Scegliere il plugin:" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Controllo" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Profili di configurazione" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Strumento di backup" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_File" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "S_trumenti" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "A_iuto" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profili" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "Nessuno\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Eseguire un backup integrale almeno ogni:" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "giorni" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Generale" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Aggiungi file" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Aggiungi cartella" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Includi" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Percorsi" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Formati dei file" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Altri" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Escludi" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Usare la directory di backup personalizzata" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Seleziona cartella di destinazione" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://nomeutente:password@esempio.it/directory/remota/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destinazione" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logaritmica" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Nota: gli ulteriori backup incompleti e irrecuperabili verranno " "cancellati finché vi sarà sempre un backup completo." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Pulizia" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Eliminazione vecchi backup" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "Debug è solo per il debug. L'impostazione raccomandata è Info" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Directory del file del registro" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Utilizzare nome utente e password" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Nome utente" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Password" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Chiave" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificato" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Rapporto" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Ripristina file e directory" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Cartella da cui ripristinare" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Backup disponibili:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Personalizzata:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Predefinita:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "File e cartelle da ripristinare" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Ripristina" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Ripristina come..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Elimina" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Storia dell'immagine" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "Selezionare un'immagine nell'elenco per creare la nuova base." #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "Creare la nuova base" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Gestione immagine" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Reimposta" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Gestione ripristino" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Gestione esportazione" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Intestazione" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Contenuto" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "Non è necessario creare la nuova base di un'immagine completa «%s»" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "«%(snapshotToRebase)s» non ha un file «base», potrebbe essere danneggiato " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Impossibile creare la nuova base su un'immagine precedente: " #~ "«%(snapshotToRebase)s» <= «%(NewBaseSnapshot)s» " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Creare la nuova base «%(current)s» su «%(base)s»" #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Annullamento del prelevamento dell'immagine «%s»" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Aggiornamento dalla versione 1.0 alla 1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Aggiornamento alla versione 1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Aggiornamento alla versione 1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Aggiornamento alla versione 1.5: %s" #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "La versione dell'immagine è superiore a quella supportata." #~ msgid "Unable to upgrade snapshot" #~ msgstr "Impossibile aggiornare l'immagine" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "Creare la nuova base «%(current)s» su «%(base)s»?" #~ msgid "Upgrade" #~ msgstr "Aggiorna" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "" #~ "Si è verificato un errore durante il prelevamento dell'immagine «%s»." #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "Base dell'immagine «%s» non impostata." #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "" #~ "Esistono snapshot in formati precedenti. Usare 'Simple Backup-Restoration' " #~ "se si vuole usarli, grazie." #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "Il file SNAR esiste già per lo snapshot '%s'. Non sarà sovrascritto." sbackup-0.11.6/po/sr.po0000644000175000017500000016115412216122130013277 0ustar peerpeer# Serbian translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:38+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Bojan Bogdanović https://launchpad.net/~bojce" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Прилагођен" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "МП3 музика" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "АВИ видео" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "МПЕГ видео" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Матрјошка видео" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "ОГГ мултимедија контејнер" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "ЦД слике" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Ставка је већ укључена !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Ставка је већ искључена !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Неисправан израз. Молимо унесите исправан израз." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Празно име датотеке или путања. Молимо унесите исправно име датотеке или " "путању." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Све датотеке" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Путања" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Одаберите изворишни директоријум" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Учитавање ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Одаберите локацију за обнављање" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Искључи тип датотеке" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Стандардни типови датотека" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Прилагођено дефинисање типова датотека са " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "екстензија датотеке" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Искључи на основу Рег.Из." #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Унеси регуларан израз.\n" "Датотеке и директоријуми који се поклапају са овим изразом биће икључени из " "резервне копије." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Направи пуну резервну копија бар једном сваког" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "дана" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Опште" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Додај датотеку" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Додај директоријум" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Укључи" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Пyтање" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Врсте датотека" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Искључи" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Користи прилагођен локални директоријум за резервне копије" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Одаберите циљни директоријум" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://username:password@example.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Одредиште" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Забелешка: Додатно све непотпуне и неповратне резервне копије биће " "избрисане кад год постоји комплетна резервна копија направљена " "касније." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Брисање" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Чишћење старих резервних копија" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Обнови датотеке/директоријуме" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Обнови изворни директоријум" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Доступне резервне копије" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Користи прилагођен:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Користи подразумеван:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Датотеке и директоријуми за обнављање" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Обнављање" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Обнови као..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/nb.po0000644000175000017500000016314412216122130013253 0ustar peerpeer# Norwegian Bokmal translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:46+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Fant ikke loggfil" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Kritisk feil: Fant ingen konfigurasjonsfil for standardprofilen!\n" "\n" "Fortsetter å prosessere gjenværende filer." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Sikkerhetskopiering ble stoppet av bruker." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Det oppsto en feil under kansellering av sikkerhetskopiering:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Det oppsto en feil under lagring:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Klarte ikke å sende epost:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "Følgende feil oppsto før:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Sikkerhetskopiering ikke startet.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Dette er en enkel sikkerhetskopieringsløsning for vanlige brukere. Hvis du " "ønsker å hjelpe til ved å rapportere feil, oversette eller noe annet, besøk " "nettstedet vårt." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Ansvarlige:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Tidligere ansvarlige:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Bidragsytere:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "oversettere\n" "\n" "Launchpad Contributions:\n" " Christoffer Heggem https://launchpad.net/~ch-fu3\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " KaiO https://launchpad.net/~kaio-okai\n" " Karl Eivind Dahl https://launchpad.net/~foralle.org" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Feil type arkiv" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Stien til `%s` er ikke tilgjengelig" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Klarte ikke å finne stien til `%s`" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "Det er for tiden ikke mulig å kombinere oppdeling med kompresjon." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Klarte ikke å endre rettighetene for fila '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Klarte ikke å slette den midlertidige fila `%(file)s`: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" "Åpner komprimeringsprogrammet TAR for å lage inkrementell sikkerhetskopi." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "Klarte ikke å finne SNAR-fil for å lage inkrementell sikkerhetskopi" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Går tilbake til full sikkerhetskopiering." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Åpner komprimeringsprogrammet TAR for å lage full sikkerhetskopi." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "Skråstrek '/' foran navn ble fjernet." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "Skråstrek '/' foran lenkemål ble fjernet." #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "Komprimeringsprogrammet TAR rapporterte:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "Komprimeringsprogrammet TAR avsluttet korrekt." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "Komprimeringsprogrammet TAR sendte en advarsel: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "Komprimeringsprogrammet TAR sendte advarslene:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" "Komprimeringsprogrammet TAR sendte advarsler men avsluttet uten problemer." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" "Klarte ikke å avslutte korrekt. Komprimeringsprogrammet TAR avsluttet med " "feil." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Klarte ikke å avslutte bakgrunnsprosessen: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Inkludert" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Uendret" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Mappe/folder" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "Linja må være tekst (streng)" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Ukjent profil" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Ubegrenset" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Alternativ" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 -Musikk" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI -Video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG -Video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matroska -Video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG Multimediabeholder" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD-Speilinger" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Plassering av sikkerhetskopi: %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Klarte ikke å finne plassering for sikkerhetskopi." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" "Klarte ikke å finne plassering for sikkerhetskopi (forsøkte flere ganger)." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Folder/mappe '%(target)s' finnes ikke." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "Fikk ikke tilgang til: %s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Navn" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Filtype" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Allerede inkludert!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Allerede ekskludert!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Tom syntaks. -Vennligst skriv en gyldig ordinær syntaks." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Filnavnet eller stien er tom. Vennligst gi et gyldig filnavn eller sti." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Alle filene" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Sti" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Velg en kildemappe" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Laster ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Velg mål for gjenopprettelse" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Ekskluder filtype" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standard filtyper:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Egendefinert filtype med " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "filendelse" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Ekskluder med regex" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Skriv en regular expression.\n" "Filer og mapper som fanges under denne expression vil bli eksludert fra " "sikkerhetskopi." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Utfør full sikkerhetskopi minst en gang pr." #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dager" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Genrelt" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Legg til fil" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Legg til mappe" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "inkluder" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Stier" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Filtyper" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Ekskluder" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Bruk egendefinert mappe for sikkerhetskopiering" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Velg målmappe" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://brukernavn:passord@eksempel.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Målmappe" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Merk: Alle ukomplette og uopprettelige sikkerhetskopier vil bli " "slettet, men bare viss det finnes en full sikkerhetskopi av nyere " "dato." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Opprenskning" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Renser gamle sikkerhetskopier" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Gjenopprett filer/mapper" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Gjenopprett Kildemappe" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Tilgjengelige sikkerhetskopier:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Bruk egendefinert:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Bruk standard:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Filer og Mapper å igjenopprette" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Gjenopprett" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Gjenopprett som..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Overskrift" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Innhold" sbackup-0.11.6/po/pl.po0000644000175000017500000023512312216122130013264 0ustar peerpeer# Polish translation for sbackup # Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2006. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:39+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "Demon programu SBackup <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Nie określono pliku dziennika." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Nie można odnaleźć pliku dziennika." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Błąd krytyczny: nie odnaleziono pliku ustawień dla domyślnego profilu!\n" "\n" "Przetwarzanie pozostałych profili będzie kontynuowane." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Tworzenie kopii zapasowej zostało anulowane przez użytkownika." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Wystąpił błąd podczas anulowania wykonywania kopii zapasowej:" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Wystąpił błąd podczas wykonywania kopii zapasowej:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Wystąpił błąd podczas wysyłania poczty elektronicznej:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "Poniższy błąd (błędy) wystąpił wcześniej:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Wykonywanie kopii zapasowej nie zostało rozpoczęte.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Umożliwia w prosty sposób tworzenie kopii zapasowych. Informacje na temat " "pomocy przy rozwoju programu dostępne są w witrynie internetowej." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Opiekunowie:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Byli opiekunowie:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Współtwórcy:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Rafał Ryba \n" "\n" "Launchpad Contributions:\n" " Jarek Witkowski https://launchpad.net/~jarek-witkowski\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Piotr Sokół https://launchpad.net/~psokol\n" " fafek2 https://launchpad.net/~fafek2" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Niepoprawny typ archiwum." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Brak efektywnej ścieżki dla „%s”" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Nie można pozyskać efektywnej ścieżki dla „%s”" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "Na razie dzielenie skompresowanego archiwum nie jest możliwe." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Nie można zmienić uprawnień dla pliku '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Nie można usunąć pliku tymczasowego „%(file)s”: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Uruchamianie programu TAR w celu wykonania kopii przyrostowej." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "Nie można odnaleźć pliku SNAR w celu wykonania kopii przyrostowej." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Powracanie do kompletnej kopii zapasowej." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "Uruchamianie programu TAR w celu wykonania kompletnej kopii." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "Program TAR zwrócił informację: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "Program TAR zwrócił informacje:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "Program TAR został poprawnie zakończony." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" "Program TAR zwrócił ostrzeżenie:\n" "%s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "Program TAR zwrócił ostrzeżenia:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "Program TAR zwrócił ostrzeżenia ale został poprawnie zakończony." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "Program TAR został zakończony z błędami." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Nie można zakończyć procesu modułu obsługi: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Dołączone" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Niezmieniony" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Katalog" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "Wiersz musi być ciągiem" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "Plik „%s” nie istnieje." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "Nagłówek pliku snar jest niekompletny." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Katalog nie istnieje: %s" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Odczytywanie profilu ustawień z pliku „%s”" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Przywrócono domyśle wartości ustawień profilu. Plik ustawień zapisano jako " "„%s”." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Brakuje opcji 'cel', przerywam." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Dziennik profilu „%(profile)s” jest zapisywany do pliku „%(file)s”." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Dziennik profilu „%s” nie jest zapisywany do pliku." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" "Nie można zmienić nazwy pliku dziennika „%(src)s” na „%(dst)s”: %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "Nie można wczytać pliku ustawień „%s”!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" "sekcja [%(section)s] w '%(configfile)s' nie powinna istnieć, przerywam" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" "Brak harmonogramu kopii zapasowej w pliku ustawień. Przeszukiwanie ustawień " "systemu." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "Nie określono odbiorcy." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Nie określono serwera SMTP." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Nie określono hasła." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Nie określono nazwy użytkownika." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Domyślny profil" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Nieznany profil" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Brak ograniczeń" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Własne" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Nagrania dźwięku w formacie MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Nagrania wideo w formacie AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Nagrania wideo w formacie MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Nagrania wideo w formacie Matroska" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Kontenery multimediów OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Obrazy płyt CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Nie odnaleziono pliku „%s” na liście zrzutu danych kopii zapasowej." #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "Nie odnaleziono pliku „%(filename)s” na liście zrzutu danych " "„%(snapshotname)s”. Pominięto." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Nie odnaleziono zrzutu danych „%s” " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "Wykryto niepoprawny zrzut danych „%(name)s”: niepoprawna nazwa." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "Odnaleziono niepoprawny zrzut danych „%(name)s”: %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "Nagłówek pliku SNAR jest niekompletny!" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "Zrzut danych „%s” jest już kompletny. Brak czynności do wykonania." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Przygotowywanie do wykonania kopii zapasowej" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Wykonywanie zrzutu danych „%(name)s”." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Określanie wykluczonych położeń" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "Ustawianie formatu kompresji na „%s”" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "Ustawianie rozmiaru fragmentów archiwum na %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Opcja „Podążanie za dowiązaniami symbolicznymi” jest włączona." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "Opcja „Podążanie za dowiązaniami symbolicznymi” jest wyłączona." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "Wystąpił błąd podczas usuwania przestarzałych zrzutów danych: %s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Zakończono wykonywanie kopii zapasowej." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "Analizowanie systemu plików i zbieranie informacji o plikach" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Podsumowanie kopii zapasowej" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Ilość katalogów: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Ogólna ilość plików: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Ilość dowiązań symbolicznych: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Ilość plików uwzględnionych w zrzucie danych: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Ilość uwzględnionych nowych plików: %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" "Ilość plików pominiętych podczas wykonywania przyrostowego zrzutu danych: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Ilość elementów wykluczonych przymusowo: %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Ilość elementów wykluczonych na podstawie ustawień: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Maksymalna wymagana ilość wolnej przestrzeni wynosi %s." #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Dostępna ilość przestrzeni dyskowej wynosi %s." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "Brak wystarczającej ilości wolnej przestrzeni w położeniu docelowym dla " "planowanej kopii zapasowej (wolna: %(freespace)s, wymagana %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" "Nie można skopiować pliku dziennika. Dostęp do pliku nie został zainicjowany." #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "Nie można skopiować pliku dziennika: %s" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" "Nie można odnaleźć pliku dziennika w celu skopiowania go do zrzutu danych." #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "Przetwarzanie profilu zostało anulowane na życzenie użytkownika.\n" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "Przetwarzanie profilu zostało zakończone pomyślnie.\n" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "Przetwarzanie profilu zostało zakończone z błędem: %s\n" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "Położenie docelowe kopii zapasowej: %s" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Nie można odnaleźć położenia docelowego." #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "Nie można odnaleźć położenia docelowego po ponownej próbie." #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "Położenie docelowe „%(target)s” nie istnieje." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "Nie można uzyskać dostępu do położenia docelowego: %s" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Nazwa zrzutu danych „%s” nie pasuje do wymaganej." #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Niepoprawna nazwa zrzutu danych: %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Niepoprawna nazwa bazy: %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "Niepoprawna nazwa zrzutu danych: %s" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "Należy określić nazwę bazy dla przyrostowej kopii zapasowej." #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "Inicjowanie menedżera dostępu FUSE" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "Kończenie działania menedżera dostępu plików FUSE" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "SFTP" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "SSH" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "FTP" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "Inicjowanie menedżera dostępu GIO" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "Kończenie działania menedżera dostępu GIO" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "NFS" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "SMB" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "Położenie jest już zamontowane." #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "Położenie nie jest zamontowane." #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "Utwórz plik" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "Usuń plik" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "Usuń katalog" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "Nie można zaimportować wtyczki „%(plugin_name)s”: %(error_cause)s. " #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Nie odnaleziono programu „curlftpfs” potrzebnego do obsługi położeń ftp: %s." #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" "Nie udało się zamontować „%(server)s” w katalogu „%(mountpoint)s”: %(error)s." #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" "Wzór adresu FTP: ftp://nazwa\\_użytkownika:hasło@nazwa\\_komputera/zdalne\\" "_położenie" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Wystąpił błąd podczas dopasowywania ciągu „%s” do wzoru „ftp://nazwa\\" "_użytkownika:hasło@nazwa\\_serwera/zdalne\\_położenie” (znak „/” jest " "wymagany po nazwie serwera)." #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" "Nie odnaleziono programu „curlftpfs” potrzebnego do obsługi położeń sftp: %s." #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" "Wzór adresu SFTP: sftp://nazwa\\_użytkownika:hasło@nazwa\\_komputera/zdalne\\" "_położenie" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Wystąpił błąd podczas dopasowywania ciągu „%s” do wzoru „sftp://nazwa\\" "_użytkownika:hasło@nazwa\\_serwera/zdalne\\_położenie” (znak „/” jest " "wymagany po nazwie serwera)." #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Wystąpił błąd podczas dopasowywania ciągu „%s” do wzoru „ssh://nazwa\\" "_użytkownika:hasło@nazwa\\_serwera/zdalne\\_położenie” (znak „/” jest " "wymagany po nazwie serwera)." #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" "Polecenie sshfs „%(command)s” nie zostało wykonane poprawnie. Wyjście: " "%(erroroutput)s " #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" "Wzór adresu SSH: ssh://nazwa\\_użytkownika:hasło@nazwa_komputera:33/zdalne\\" "_położenie" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" "Wystąpił błąd podczas dopasowywania ciągu „%s” do wzoru „ssh://nazwa\\" "_użytkownika:hasło:21@nazwa\\_serwera/zdalne\\_położenie” (znak „/” jest " "wymagany po nazwie serwera)." #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" "Proszę upewnić się, że nieodnaleziony katalog istnieje (np. montując nośnik " "pamięci) lub zmienić położenie docelowe." #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" "Wystąpił błąd podczas próby dostępu do położenia docelowego kopii " "zapasowej:\n" "\n" "%s." #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "Błąd narzędzia prostego tworzenia kopii zapasowej" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "Nie można uzyskać dostępu do położenia docelowego kopii zapasowej" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" "Harmonogram kopii zapasowych jest dostępny tylko dla użytkowników " "posiadających uprawnienia administratorskie." #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Nazwa" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Typ pliku" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Włączenie" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Nazwa profilu" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" "Napotkano niepoprawne lub puste wyrażenie regularne „%s” w ustawieniach. " "Usunięto." #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" "Napotkano na niepoprawne lub puste wyrażenie\n" "regularne w pliku ustawień:\n" "„%s”\n" "\n" "Wyrażenia te nie są używane i zostały\n" "usunięte z ustawień." #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Proszę upewnić się, że brakujący katalog istnieje (np. montując określony " "nośnik) lub zmienić wprowadzony katalog na taki, który istnieje." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" "Położenie docelowe „%s” nie istnieje.\n" "\n" "Uwaga: zostanie użyte domyślne położenie docelowe. Proszę sprawdzić " "ustawienia przed zapisaniem konfiguracji." #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "Nie można otworzyć położenia docelowego" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "Bieżący profil: %s" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Element został już uwzględniony!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Element został już wykluczony!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" "Nie wprowadzono wyrażenia. Proszę wpisać prawidłowe wyrażenie regularne." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "Podane wyrażenie regularne nie jest poprawne." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Pusta nazwa pliku lub ścieżka. Proszę wpisać prawidłową ścieżkę lub nazwę " "pliku." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "Wprowadzona ścieżka nie istnieje. Dodać ją?" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "Wybór pliku" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" "Proces wykonywania kopii zapasowej jest przeprowadzany w tle. Jego postęp " "jest wyświetlany w obszarze powiadamiania." #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "Rozpoczęto tworzenie kopii zapasowej" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "Wybór pliku" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Wszystkie pliki" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "Wybór katalogu" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "Wybór pliku" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "Wybór katalogu" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "Ustawienia zostały zmienione" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" "Zmiany ustawień nie zostały zapisane. Proszę zapisać ustawienia lub cofnąć " "je przed rozpoczęciem testowania ustawień poczty elektronicznej." #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Testowanie ustawień poczty" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "Test został zakończony z następującym błędem:" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "Test został zakończony pomyślnie." #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" "Wprowadzone wyrażenie zawiera nieobsługiwane znaki („%s”). W tej chwili nie " "ma możliwości użycia tych znaków określając wykluczone elementy ." #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "Nieobsługiwany znak" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "Zamontowano (brak błędów)" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "Nie można zamontować zdalnego położenia" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "Odmontowano (brak błędów)" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "Nie można odmontować zdalnego położenia" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "Nie można uzyskać dostępu do zdalnego położenia" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "Wszystkie testy zostały zakończone pomyślnie" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" "Nazwa nowego profilu jest pusta. Proszę podać prawidłową nazwę profilu." #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "Niepoprawna nazwa profilu" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "Nazwa nowego profilu już istnieje. Proszę podać inną nazwę." #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "Zmiana nazw profili nie jest obsługiwana." #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" "Usuwanie profilu ustawień\n" "\n" "Nie ma możliwości przywrócenia usuniętego profilu. W celu wyłączenia profilu " "należy odznaczyć pole wyboru „Włączenie” na liście profilów.\n" "\n" "Usunąć profil ustawień „%(name)s”?" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" "Przywracanie domyślnych wartości\n" "\n" "Predefiniowane ustawienia są rekomendowane dla większości użytkowników. " "Proszę sprawdzić czy będą one odpowiednie przed zapisaniem zmienionej " "konfiguracji profilu.\n" "\n" "Przywrócić domyślne wartości dla profilu ustawień „%s”?" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "Zastosowywanie domyślnych ustawień." #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Usuwanie profilu ustawień\n" "\n" "Nie można usunąć domyślnego profilu ustawień. W przypadku gdy zachodzi " "potrzeba użycia tylko jednego profilu, należy skonfigurować jedynie profil " "domyślny." #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" "Wyłączanie profilu ustawień\n" "\n" "Nie można wyłączyć domyślnego profilu ustawień. W przypadku gdy zachodzi " "potrzeba użycia tylko jednego profilu, należy skonfigurować jedynie profil " "domyślny." #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" "Brak profilu ustawień\n" "\n" "Prawdopodobnie program został uruchomiony pierwszy raz. Utworzono profil " "ustawień kopii zapasowych używając wartości domyślnych.\n" "\n" "Proszę zmodyfikować ustawienia w zależności od potrzeb i zapisać je, aby móc " "ich użyć." #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "Proszę wybrać profil." #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "wystąpiły problemy podczas inicjacji modułu pynotify" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "Nie udało się połączyć z demonem powiadamiania: %s" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "Proste tworzenie kopii zapasowej" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "Anuluj" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "Połączenie z usługą D-Bus zostało przerwane." #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "Połączono ponownie" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "Rozpoczynanie sesji kopii zapasowej" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "Kończenie sesji kopii zapasowej" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "Odebrano nieznane zdarzenie usługi D-Bus „%s”." #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "Spróbuj ponownie" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "Nie można wyświetlić okna: %s" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "Anulować wykonywanie kopii zapasowej profilu „%s”?" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "Anulować wykonywanie kopii zapasowej?" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "Nie można anulować wykonywania kopii zapasowej." #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "Profil: %s" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "Rozmiar kopii: %s" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "Ukończono %.1f%%" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "Pozostały czas: %s" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "Identyfikator procesu anulowanej kopii zapasowej: %s" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "Nie można wysłać sygnału do procesu %s" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "Wysyłanie sygnału do procesu %s, przy użyciu programu gksu" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "Nie udało się wysłać sygnał do procesu %s, przy użyciu programu gksu" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" "Nie odnaleziono położenia\n" "\n" "Nie można odnaleźć położenia docelowego „%s”.\n" "\n" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "nieznany" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "mniej niż 1 minuta" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "około 2 minuty" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "około 3 minuty" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "około 4 minut" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "około 5 minut" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "około %.0f minut" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "W trakcie" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "zakończono" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "Postęp: nieznany" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "Przygotowywanie kopii zapasowej" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "Gromadzenie informacji o plikach" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "Postęp: anulowano" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "Wystąpił błąd" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "Nie udało się zainicjować GTK+: %s" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" "Wystąpił nieoczekiwany błąd. Proszę zamknąć to okno i uruchomić ponownie " "program.\n" "\n" "Proszę zgłosić wiadomość o tym błędzie pod adresem " "https://bugs.launchpad.net/sbackup.\n" "\n" "%s" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "Program uległ awarii. Przepraszamy." #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Przywróć..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "Przywróc jako..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Przywróć rekurencynie..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Przywróć rekurencyjnie jako..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "n/d" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Zrzuty danych" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Wersja" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Ścieżka" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Stan" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "Wprowadzone położenie nie istnieje" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Gotowy" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "Nie określono położenia docelowego" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Wybierz folder źródłowy" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "Odczytywanie zrzutu danych..." #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "Odczytywanie zawartości katalogu..." #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Wczytywanie..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "Odczytywanie plików zrzutu danych..." #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "Wystąpił błąd podczas wczytywania zrzutu danych" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "Zrzut danych jest pusty." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Odczytywanie zrzutu danych kopii zapasowej..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "Nie odnaleziono kopii zapasowych wykonanych we wskazanym dniu." #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Wybór położenia" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "Przywrócić rekurencyjnie „%s”?" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Wybór położenia" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "Przywrócić rekurencyjnie „%(source)s” do położenia „%(dir)s”?" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "Odczytywanie zrzutu danych..." #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" "Usunięcie zaznaczonego zrzutu danych „%s” spowoduje nieodwracalne " "wykasowanie kopii zapasowej wykonanej w określonym czasie.\n" "\n" "Usunąć zrzut danych?" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "Usuwanie zrzutu danych" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" "Wystąpił błąd podczas próby usunięcia zrzutu danych:\n" "%s" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "Nie można usunąć zrzutu danych" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "Nie można usunąć zrzutu danych" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "Kończenie działania" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "Proste przywracanie kopii zapasowej" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Przywracanie wskazanych plików" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Przywracanie '%s' trwa." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "Przywrócono „%s”." #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Nie udało się przywrócić „%s”.\n" "\n" "Wystąpił następujący błąd:\n" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Przywracanie'%(source)s'\n" "do '%(dirname)s' trwa." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Przywrócono „%(source)s”\n" "do położenia „%(dirname)s”." #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Nie udało się przywrócić „%(source)s”\n" "do położenia „%(dirname)s”.\n" "\n" "Wystąpił następujący błąd:\n" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Przywracanie rekurencyjne wskazanych plików" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Trwa przywracanie rekurencyjne „%s”.\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "Przywrócono rekurencyjnie „%s”." #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Nie udało się przywrócić rekurencyjnie „%s”.\n" "\n" "Wystąpił następujący błąd:\n" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Trwa przywracanie rekurencyjne „%(source)s”\n" "do położenia „%(dirname)s”." #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" "Przywrócono rekurencyjnie „%(source)s”\n" "do położenia „%(dirname)s”." #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" "Nie udało się przywrócić rekurencyjnie „%(source)s”\n" "do położenia „%(dirname)s”.\n" "\n" "Wystąpił następujący błąd:\n" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "%(mb)d MiB %(kb)d KiB" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "%(mb)d MiB %(kb)d KiB %(bytes)d" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "%(mb)d MB %(kb)d kB" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "%(mb)d MB %(kb)d kB %(bytes)d" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "Nie można uzyskać dostępu do pliku „%(file)s”: %(error)s." #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" "Brak uprawnień do odczytania pliku „%(file)s”. Przekroczono limit czasu " "operacji." #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "Brak uprawnień do odczytania pliku „%(file)s”: %(error)s." #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" "Dowiązanie symboliczne „%(path)s” do położenia „%(ln_target)s” jest " "rekurencyjne." #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "Położenie „%(file)s” jest położeniem docelowym kopii zapasowej." #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" "Ścieżka „%(file)s” została wprowadzona na listę wykluczonych położeń." #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "Plik „%(file)s” pasuje do wyrażenia regularnego „%(regex)s”." #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" "Plik „%(file)s” przekroczył dopuszczalny rozmiar (%(filesize)s > " "%(maxsize)s)." #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "Wystąpił błąd podczas sprawdzania katalogu „%(dir)s”: %(error)s." #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "Napotkano puste wyrażenie regularne. Pomijanie." #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "Napotkano niepoprawne wyrażenie regularne („%s”). Pomijanie" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" "Nie zdefiniowano katalogów dla których ma zostać utworzona kopia zapasowa" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "Inne wystąpienie programu jest aktualnie uruchomione." #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "Odnaleziono niepoprawny plik blokady. Usuwanie." #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "Nie można usunąć pliku blokady: %s" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "Nie można usunąć pliku blokady: nie odnaleziono pliku." #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Wyłącz typ pliku" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standardowe typy plików:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Samodzielnie określony typ pliku o " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "rozszerzeniu" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Wprowadzanie wyrażenia regularnego" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Proszę wprowadzić wyrażenie regularne.\n" "Pliki i katalogi pasujące do niego, zostaną wykluczone podczas wykonywania " "kopii zapasowej." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Proszę wybrać wtyczkę:" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" "Zapisywanie ustawień\n" "\n" "Konfiguracja została zmieniona. W celu użycia nowych ustawień, należy je " "zapisać.\n" "\n" "Zapisać ustawienia?" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "Menedżer profili ustawień" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" "Można skonfigurować kilka profili, które będą przetwarzane podczas " "wykonywania kopii zapasowej. Każdy profil posiada swój zestaw ustawień, " "wliczając w to położenie docelowe, format kopii itp." #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Profile ustawień" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "Dodawanie nowego profilu\n" "\n" "Proszę wprowadzić nazwę nowego profilu. Aby włączyć lub wyłączyć " "przetwarzanie profilu, należy odpowiednio ustawić stan pola wyboru poniżej." #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "Nazwa profilu" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "Włączenie" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Proste narzędzie kopii zapasowych" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "_Plik" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "Zapisz jako..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "_Narzędzia" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "Przywróć domyślne ustawienia..." #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "Menedżer profilów..." #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "Utwórz kopię zapasową" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "Pomo_c" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "_Spis treści" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "_O programie" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "Wczytuje ponownie ustawienia" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "Zapisuje ustawienia" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "Tworzy kopię zapasową" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "Otwiera menedżer profilów ustawień" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profile" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "Brak\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "Format kompresji:" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" "Dzieli zrzut danych w celu wykonania kopii zapasowej na systemach plików nie " "obsługujących plików o dużych rozmiarach. Tej opcji nie można użyć dla " "skompresowanych archiwów." #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Wykonywanie pełnej kopii co" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" "Wstrzymuje wykonanie kompletnej kopii zapasowej i wykonuje kopie przyrostowe " "dopóki nie minie określony czas od wykonania ostatniej kompletnej kopii" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dni" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "Dzielenie archiwum kopii zapasowej na fragmenty:" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "Pomoc" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Ogólne" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "Uwzględnione pliki i katalogi" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "Usuń" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Dodaj plik" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Dodaj katalog" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Uwzględnione" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "Wykluczone pliki i katalogi" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Ścieżki" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "Dodaj" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Typy plików" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" "Wyrażenia\n" "regularne" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "Wykluczanie plików o rozmiarze większym niż" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "Podążanie za dowiązaniami symbolicznymi" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Inne" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Wykluczone" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "Domyślny katalog kopii zapasowych" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Katalog lokalny" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Wybór katalogu" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "Katalog zdalny" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://nazwaużytkownika:hasło@przykladowy.pl/zdalny/katalog" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "Połącz..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" "Brak uprawnień do zapisywania we wskazanym położeniu. Kopia zapasowa nie " "może być w nim przechowywana." #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Położenie docelowe" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "_Brak" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "_Prosty" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" "Wykonuje kopie zapasowe nie o określonym czasie ale kiedy komputer jest " "włączony. " #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "_Własny" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "Wykonywanie kopii zapasowej" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "Definicja czasu programu Cron:" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "co godzinę\n" "co dzień\n" "co tydzień\n" "co miesiąc" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" "Harmonogram kopii zapasowych można skonfigurować w sposób prosty - " "wybierając okres ich automatycznego wykonywania lub precyzyjny - określając " "reguły wykonywania przez program cron. Podręcznik programu cron (man 5 " "crontab) zawiera szczegółowy opis formatowania reguł." #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "Harmonogram" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "Usuwanie przestarzałych kopii zapasowych" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "Proste - usuwa wszystkie kopie starsze niż" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logarytmicze" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" "Przechowuje mniejszą ilość kopii starszych, tzn:\n" "wszystkie kopie z poprzedniego dnia,\n" "jedną kopię z każdego dnia ostatniego tygodnia,\n" "jedną kopię z każdego tygodnia ostatniego miesiąca,\n" "jedną kopię z każdego miesiąca ostatniego roku,\n" "jedną kopię z każdego kwartału ostatnich dwóch lat,\n" "jedną kopię z każdego roku w przypadku dłuższego okresu." #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Uwaga: Dodatkowo wszystkie niekompletne i nie możliwe do przywrócenia " "kopie zapasowe są kasowane tak długo, jak tylko istnieje pełna migawka kopii " "zapsowej stworzona później." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Usuwanie" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Usuwanie starych kopii zapasowych" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "Dziennik" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" "Wartość „Debug” jest przeznaczona do diagnozowania błędów. Rekomendowana " "wartość to „Info”." #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "Poziom szczegółów:" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" "Wartość „Debug” jest przeznaczona do diagnozowania błędów. Rekomendowana " "wartość to „Info”." #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Położenie pliku dziennika:" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "Poczta elektroniczna" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "Od" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "Serwer SMTP" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "Port" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "Do" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Uwierzytelnianie przy pomocy nazwy użytkownika i hasła" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Nazwa użytkownika:" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Hasło:" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "Nawiązywanie bezpiecznego połączenia" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "Wybór pliku" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "Klucz" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certyfikat" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "Wybór pliku" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "Przetestuj _ustawienia" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "Raportowanie" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "Ostrzeżenie" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "_Przywróć" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "Określanie zdalnego położenia" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "Typ usługi:" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "Nazwa komputera:" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "Szczegóły" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "Wyświetlanie hasła" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "_Połącz" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "Wykonanie kompletnej kopii" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Przywróc pliki lub katalogi" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Folder źródłowy przywracania" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Dostępne kopie zapasowe:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Użyj własnego:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Użyj domyślnego:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Pliki i foldery do przywrócenia" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Przywróć" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Przywróć jako..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "Położenie docelowe" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "Wyświetla podręcznik pomocy w przeglądarce dokumentacji" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "Profilu domyślnego" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "Ustawia położenie kopii zapasowej określone w domyślnym profilu" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "Własne" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" "Wprowadza własne lokalne lub zdalne położenie kopii zapasowej. Proszę " "kliknąć przycisk „Zastosuj” w celu zmiany położenia." #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" "Wybiera katalog docelowy kopii zapasowej. W przypadku położeń zdalnych " "proszę wprowadzić adres URI w polu tekstowym." #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "Zmienia położenie kopii zapasowej na tą wprowadzoną w polu po lewej" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" "Proszę wybrać datę wypisaną pogrubioną czcionką, aby wyświetlić listę kopii " "zapasowych wykonanych w tym dniu." #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "Dostępne kopie zapasowe" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "Usunięcie zrzutu danych" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Usuń" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Historia zrzutów danych" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "Bieżąca baza:" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Zarządzanie" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "Szczegóły zrzutu danych" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "Przywraca pliki i katalogi ze wskazanego zrzutu danych" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" "Przywraca pliki i katalogi rekurencyjnie rozpoczynając od bazowego zrzutu " "danych a kończąc na wskazanym zrzucie danych" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Przywróć rekurencyjnie" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "Przywracanie" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Eksportowanie" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Nagłówek" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Zawartość" #, python-format #~ msgid "Unable to remove upgrade stamp: %s" #~ msgstr "Nie można usunąć oznaczenia aktualizacji: %s" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Aktualizowanie z wersji 1.0 do wersji 1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Aktualizowanie do wersji 1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Aktualizowanie do wersji 1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Aktualizowanie do wersji 1.5: %s" #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "Plik SNAR zrzutu danych „%s” już istnieje. Nie zostanie zastąpiony." #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "" #~ "Napotkano zrzuty danych przechowywane w nieaktualnych formatach. Proszę " #~ "zaktualizować je używając „Prostego przywracania kopii zapasowych”, aby móc " #~ "ich użyć." #~ msgid "Unable to upgrade snapshot" #~ msgstr "Nie można zaktualizować zrzutu danych" #~ msgid "Do you really want to upgrade snapshot?" #~ msgstr "Zaktualizować zrzut danych?" #~ msgid "Snapshot was sucessfully upgraded." #~ msgstr "Zaktualizowano zrzut danych." #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "Plik „%(file)s” nie istnieje." #~ msgid "Upgrade snapshot" #~ msgstr "Zaktualizowanie zrzutu danych" #~ msgid "Upgrade" #~ msgstr "Zaktualizuj" #, python-format #~ msgid "" #~ "Snapshot version is not supported (Only %(supportedversion)s is supported). " #~ "Version '%(currentversion)s' found. You should upgrade it. " #~ msgstr "" #~ "Wersja zrzutu danych nie jest obsługiwana (wersja obsługiwana: " #~ "%(supportedversion)s). Wersja zrzutu danych: %(currentversion)s. Proszę " #~ "zaktualizować zrzut danych. " #~ msgid "Upgrade finished" #~ msgstr "Zakończono aktualizowanie" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "Zrzut danych „%(snapshotToRebase)s” nie posiada pliku bazowego lub został on " #~ "uszkodzony. " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Nie można zmienić bazy zrzutu danych na wcześniejszą: „%(snapshotToRebase)s” " #~ "<= „%(NewBaseSnapshot)s”. " #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "Nie ustawiono bazy zrzutu danych „%s”." #, python-format #~ msgid "" #~ "While attempting to upgrade snapshot the following error occurred:\n" #~ "%s" #~ msgstr "" #~ "Wystąpił następujący błąd podczas próby zaktualizowania zrzutu danych:\n" #~ "%s" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "Nie ma potrzeby zmieniać bazę kompletnego zrzutu danych „%s”" #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Zmienianie bazy z „%(current)s” na „%(base)s”" sbackup-0.11.6/po/nl.po0000644000175000017500000020206212216122130013256 0ustar peerpeer# Dutch translation of nssbackup. # Copyright (C) 2006 Mark Van den Borre # This file is distributed under the same license as the sbackup package. # Mark Van den Borre , 2006. # # msgid "" msgstr "" "Project-Id-Version: nssbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:32+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "SBackup Daemon <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] Rapport van %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Geen logbestand opgegeven." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Kan logbestand niet vinden" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Kritieke fout: Configuratiebestand voor het default profiel is niet " "gevonden!\n" "\n" "Verder gaan met de overige profielen." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "Backup werd afgebroken door gebruiker." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Er deed zich een fout voor tijdens het annuleren van de backup." #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Er is een fout opgetreden tijdens het maken van de back-up:" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Fout opgetreden tijdens het verzenden van email" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "De volgende fout(en) kwamen eerder voor:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "Backup werd niet gestart\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Dit is een gebruikersvriendelijke oplossing voor de doorsnee gebruiker. Als " "u wilt bijdragen middels het doorgeven van bugs, vertalingen of anderzins " "bezoek dan onze webpagina" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Ontwikkelaars:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Voorheen ontwikkeld door:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Bijdragen van:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Vertaald door\n" "\n" "Launchpad Contributions:\n" " Frederik https://launchpad.net/~frederik-debuck\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Mark Van den Borre https://launchpad.net/~markvdb\n" " Philip I.J.H. https://launchpad.net/~philip-hoflack\n" " Tico https://launchpad.net/~co-ti" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Ongeldige archief-type" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "Opgegeven pad voor `%s` niet beschikbaar" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "Kan opgegeven pad voor `%s` niet beschikbaar" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" "Op het moment is de split-functionaliteit niet compatibel met de compress-" "optie." #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Permissies veranderen voor bestand '%s' is mislukt." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Kan tijdelijk bestand niet verwijderen `%(file)s`: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "Bezig met het starten van TAR om een incremental backup te maken." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" "Kan het SNAR-bestand niet vinden die nodig is om een incremental backup te " "maken." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Er wordt teruggevallen op volledige backup" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "TAR wordt gestart voor het maken van een volledige backup." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "De voorloop '/' voor de gebruikersnamen zijn verwijderd" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "De voorloop '/' voor de hard link doelpad zijn verwijderd" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "TAR gaf de volgende melding: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "TAR gaf de voldende meldingen:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "TAR succesvol beeindigd." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "TAR gaf de volgende waarschuwing: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "TAR gaf de volgende meldingen:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "TAR gaf waarschuwingen, maar is toch succesvol beeindigd." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" "Kan niet succesvol worden beeindigd. TAR werd afgebroken als gevolg van " "fouten." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Kan backendproces niet afbreken: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Ingesloten" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Ongewijzigd" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Map" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "Regel moet een string zijn" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "Dumpdir niet consistent : 'filename' is leeg" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "Dumpdir niet consistent : 'control' is leeg" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "Bestand '%s' bestaat niet." #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "Koptekst van het snarbestand is incompleet." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "Een SnapshotFile is vereist" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "Map bestaat niet: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "Profielinstellingen worden opgehaald uit bestand '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "Profielinstellingen worden met standaardwaarden gevuld. Configuratiebestand " "wordt ingesteld op '%s'" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "Optie 'doel' mist, bezig met afbreken" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "Foutmelding tijdens het uitvoeren van de configuratie:\n" "%(error)s in regel `%(line)s`.\n" "Controleer uw configuratiebestand." #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" "Kan '%(parameter)s' niet als dictionary gebruiken (ingevoerde waarde = " "'%(value)r')." #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" "Kon '%(parameter)s' niet als dictionary interpreteren (waarde = '%(value)r' )" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "U dient een dictionary in te voeren." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "Loguitvoer [%(profile)s] wordt opgeslagen in het bestand '%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "Loguitvoer voor [%s] wordt niet opgeslagen in een bestand." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "Hernoemen van logbestand mislukt '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "Lezen van configuratiebestand '%s' mislukt!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" "sectie [%(section)s] in '%(configfile)s' hoort niet te bestaan, bezig met " "afbreken" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" "Geen schema ingesteld in het configuratiebestand. Uitvoeren vanuit het " "bestandssysteem." #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "Het configuratiebestand is nog niet ingesteld in deze ConfigManager" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "Geen ontvanger ingesteld." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Geen SMTP-server ingesteld." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Wel gebruikersnaam, maar geen wachtwoord ingevoerd." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Wel wachtwoord, maar geen gebruikersnaam ingevoerd." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "Een certificaat en sleutelbestand ingevoerd, terwijl de SSL-optie niet is " "ingesteld.\n" "Selecteer SSL om gebruik te kunnen maken van het certificaat en de sleutel." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" "Wanneer een SSL-certificaat of sleutelbestand is ingesteld, is " "respectievelijk een sleutelbestand of certificaat verplicht." #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Standaardprofiel" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Onbekend profiel" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Onbeperkt" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Aangepast" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3-muziek" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI-video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG-video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka-video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG-multimediacontainer" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD-imagebestanden" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Bestand '%s' niet gevonden in de backup bestandenlijst" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "Bestand '%(filename)s' niet gevonden in de lijst van [%(snapshotname)s] " "snapshots; overgeslagen." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "Snapshot '%s' niet gevonden " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "Ongeldig snapshotbestandsnaam `%(name)s` : Snapshotnaam ongeldig." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "Ongeldig snapshotbestandsnaam `%(name)s` : %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "De header van het SNAR-bestand is incompleet" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" "Snapshot '%s' reeds ingesteld op \"volledig\", (geen wijzigingen " "aangebracht!)." #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Backupproces voorbereiden" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "Snapshot '%(name)s' wordt aangemaakt." #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "Bezig met instellen van pakketbestanden." #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "Probleem tijdens het instellen van de pakketlijst: " #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "Bezig met instellen van Excludes-bestand" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "Bezig met instellen van compressieformaat op '%s'" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "Bezig met instellen van de grootte van de archiefdelen op %s" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "Optie 'Follow symbolic links' is ingeschakeld." #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "Optie 'Follow symbolic links' is uitgeschakeld." #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "Snapshot wordt uitgevoerd" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "Fout tijdens het verwijderen van oude snapshots: %s" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "Backupproces afgerond." #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "Bestandssysteem controleren en bestandsinfo vergaren." #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "Inhoudsopgave van backup" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Aantal mappen: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "Totaal aantal bestanden: %s." #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "Aantal symlinks: %s." #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "Aantal bestanden in snapshot: %s." #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "Aantal nieuwe bestanden (ook inbegrepen): %s." #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "Aantal overgeslagen bestanden in incremental snapshot: %s." #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "Aantal bestanden waarvan uitsluitng is afgedwongen: %s." #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "Aantal door configuratie uitgesloten bestanden: %s." #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "Maximaal vereiste vrije ruimte is '%s'" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "Beschikbare schijfruimte is '%s'." #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" "Onvoldoende vrije ruimte in de doelmap voor de geplande backup (vrij: " "%(freespace)s, vereist: %(neededspace)s)." #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "Geen snapshot om logbestand naar te kopieren." #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "Kan doelmap niet vinden" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "Naam van snapshot '%s' voldoet niet aan vereiste" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "Ongeldige naam van snapshot : %s" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "Ongeldige naam voor base : %s" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" "Externe applicatie 'curlftpfs', vereist voor ftp sites, niet gevonden: %s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "Mounten van '%(server)s' in '%(mountpoint)s' mislukt: %(error)s" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Fout bij het matchen van '%s' met het schema " "'ftp://user:pass@server/anything' (de '/' na server is verplicht)" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "SFTP schema is als: sftp://user:pass@server/anything" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Fout bij het matchen van '%s' met het schema " "'sftp://user:pass@server/anything' (de '/' na server is verplicht)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" "Fout bij het matchen van '%s' met het schema " "'ssh://user:pass@example.com/home/' (de '/' na server is verplicht)" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "Naam" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "Bestandstype" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Inschakelen" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Profielnaam" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" "Zorg ervoor dat de missende map bestaat (door bijvoorbeeld een externe " "schijf te mounten) of verander het doel naar een bestaande map." #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Onderdeel al opgenomen!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Onderdeel al uitgesloten!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Lege expressie. Voer alstublieft een geldige regular expression in." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "Ongeldige regular expression ingevoerd." #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Pad of bestandsnaam leeg. Voer alstublieft een geldige bestandsnaam of pad " "in." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Alle bestanden" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "Test mail instellingen" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Herstellen..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "herstellen als ..." #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "Terugzetten ..." #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "Terugzetten als ..." #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "Snapshots" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Versie" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Pad" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Toestand" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Gereed" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Kies een bronmap" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Bezig met laden ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "Dit snapshot schijnt leeg te zijn." #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "Bezig backup snapshot te lezen ..." #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Herstel-locatie selecteren" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "Terugzet-locatie selecteren" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "Herstel van geselecteerde bestanden" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "Herstel van '%s' is nu bezig." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" "Herstel van '%(source)s'\n" "naar '%(dirname)s' is nu bezig." #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "Bezig met terugzetten van geselecteerde bestanden" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "Terugzetten van '%s' is nu bezig\n" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Bestandstype uitsluiten" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Standaard bestandstypen:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Aangepast bestandstype met " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "bestandsextensie" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Uitsluiten op basis van reguliere expressie" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Reguliere expressie invoeren.\n" "Bestanden en mappen die hieraan voldoen zullen van backup worden uitgesloten." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "Voer het doel om in te sluiten" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "Kies een plugin voor het format" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "Kies een plugin :" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "Controleer" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "Configuratie profielen" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "Profielen" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Volledige backup maken minstens om de" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "dagen" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Algemeen" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Bestand Toevoegen" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Map Toevoegen" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Opnemen" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Paden" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Bestandstypen" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "Andere" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Uitsluiten" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Gebruik zelfgekozen lokale backupmap" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Doelmap kiezen" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://gebruikersnaam:wachtwoord@voorbeeld.com/map/op/afstand/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Bestemming" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "Logaritmisch" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Noot: Daarenboven zullen alle onvolledige en onherstelbare backups " "verwijderd worden zolang er een recentere volledige backup is." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Opruimen" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Oude backups opruimen" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "Debug is alleen voor het debuggen. Info is de aanbevolen instelling" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "Map voor logbestand" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Gebruikersnaam en wachtwoord" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "Gebruikersnaam" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "Wachtwoord" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "Certificaat" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Bestanden/mappen herstellen" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Bronmap herstellen" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Beschikbare backups:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Aangepast gebruiken:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Standaard gebruiken:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Te herstellen bestanden en mappen" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Herstellen" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Herstellen Als..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Verwijder" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "Snapshot Geschiedenis" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "Selecteer een snapshot in de lijst om op te enten." #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Snapshot Beheer" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "Terugdraaien" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "Export Beheer" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Koptekst" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "Inhoud" #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "Een volledig snapshot '%s' hoeft niet op een ander geënt te worden" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "'%(snapshotToRebase)s' heeft geen 'base' bestand , wellicht is het niet in " #~ "orde " #, python-format #~ msgid "" #~ "Cannot rebase a snapshot on an earlier one : '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #~ msgstr "" #~ "Kan een snapshot niet op een eerdere versie enten: '%(snapshotToRebase)s' <= " #~ "'%(NewBaseSnapshot)s' " #, python-format #~ msgid "Rebasing '%(current)s' on '%(base)s'" #~ msgstr "Snapshot '%(current)s' wordt op '%(base)s' geënt" #, python-format #~ msgid "Cancelling pull of snapshot '%s'" #~ msgstr "Afzien van het ophalen van snapshot '%s'" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Bezig met upgraden van v1.0 naar v1.2: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Upgraden naar v1.3: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Upgraden naar v1.4: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Upgraden naar v1.5: %s" #~ msgid "The version of the snapshot is greater than the supported one!" #~ msgstr "De versie van het snapshot is hoger dan wordt ondersteund!" #~ msgid "Unable to upgrade snapshot" #~ msgstr "Upgrade van snapshot is mislukt" #, python-format #~ msgid "Do you really want to rebase '%(current)s' on '%(base)s' ?" #~ msgstr "Wert je zeker dat je '%(current)s' op '%(base)s' wil enten?" #~ msgid "Upgrade" #~ msgstr "Upgraden" #, python-format #~ msgid "An error occurred when pulling snapshot '%s'." #~ msgstr "Foutmelding tijdens het werken met snapshot '%s'." #~ msgid "" #~ "There are snapshots stored in outdated snapshot formats. Please upgrade them " #~ "using 'Simple Backup-Restoration' if you want to use them." #~ msgstr "" #~ "Er zijn snapshots opgeslagen in een verouderde snapshotformaat. Deze dient u " #~ "bij te werken met 'Simple Backup-Restoration' om er gebruik van te kunnen " #~ "maken." #, python-format #~ msgid "The SNAR file already exist for snapshot '%s'. It is not overwritten." #~ msgstr "" #~ "SNAR-bestand bestaat reeds voor snapshot '%s'. Deze wordt niet overschreven." #, python-format #~ msgid "Unable to remove upgrade stamp: %s" #~ msgstr "Kan upgrade stamp %s niet verwijderen" #, python-format #~ msgid "Base of snapshot '%s' is not set." #~ msgstr "Base van snapshot '%s' is niet ingesteld." sbackup-0.11.6/po/kw.po0000644000175000017500000015455712216122130013305 0ustar peerpeer# Cornish translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:41+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Cornish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Christian Semmens https://launchpad.net/~christian-semmens" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Ylow MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Lyvyow oll" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/id.po0000644000175000017500000015476712216122130013263 0ustar peerpeer# Indonesian translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-09-25 00:07+0000\n" "Last-Translator: tunggul arif siswoyo \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " tunggul arif siswoyo https://launchpad.net/~tunggul" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Ekspresi kosong. Silakan n isikan regular expression yang valid" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Nama berkas atau path kosong. Silakan isikan nama berkas atau path yang " "valid." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Seluruh berkas" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Path" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/gl.po0000644000175000017500000015774312216122130013266 0ustar peerpeer# Galician translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:52+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Tradución feita pola comunidade en launchpad.net\n" "\n" "Launchpad Contributions:\n" " Fran Diéguez https://launchpad.net/~frandieguez\n" " Iago Ramos https://launchpad.net/~iago\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Miguel Anxo Bouzada https://launchpad.net/~mbouzada" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Personalizados" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Música MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Video AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Video MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Video Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Contido multimedia OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Imaxe de CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" "Non se atopou o ficheiro '%s' na lista de ficheiros da captura da copia de " "seguranza" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Elemento xa incluído !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Elemento xa excluído !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Expresión baldeira. Introduza unha RegEx válida." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Nome ou ruta do ficheiro baldeiros. Introduza un nome ou unha ruta válido." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Tódolos ficheiros" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Ruta" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Escolla un cartafol de orixe" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Cargando..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Escolla o lugar da restauración" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Excluír tipo de ficheiro" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Tipos de ficheiros estándar:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Tipo de ficheiro personalizado definido con " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "extensión do ficheiro" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Excluídos pola regex" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Insira unha expresión regular.\n" "Os ficheiros e cartafoles que coincidan con esta expresión serán excluidos " "da copia de seguranza." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Simple Backup Suite" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Facer unha copia de seguranza completa, polo menos unha vez cada" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "días" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Xeral" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Engadir ficheiro" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Engadir cartafol" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Incluír" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Rutas" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Tipos de ficheiro" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Excluír" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Empregar un cartafol de copias de seguranza local personalizado" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Seleccione o cartafol de destino" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://nomeusuario:contrasinal@exemplo.com/cartafol/remoto" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destino" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Nota: Ademais todas as copias de seguranza incompletas e " "irrecuperábeis serán eliminadas tan pronto como se faga unha copia de " "seguranza completa." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Purgado" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Limpando copias de seguranza antigas" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Restaurar ficheiros/cartafoles" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Restaurar cartafol de orixe" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Copias de seguranza dispoñíbeis:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Empregar personalizado:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Empregar predeterminado:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Ficheiros e cartafoles para restaurar" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Restaurar" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Restaurar como..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/ms.po0000644000175000017500000015727012216122130013276 0ustar peerpeer# Malay translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:42+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Malay \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Kredit-Penterjemah\n" "\n" "Launchpad Contributions:\n" " Alexander Simbun https://launchpad.net/~pop-alex-deactivatedaccount\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " abuyop https://launchpad.net/~abuyop\n" " alHakim https://launchpad.net/~nurhakim" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Suai" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "Muzik MP3" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "Video AVI" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "Video MPEG" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Video Matrjoshka" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "Bekas Multimedia OGG" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "Imej CD" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "Fail '%s' tidak dijumpai dalam salinan senarai fail-fail snapshot" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Item telah disertakan !" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Item sudah diasingkan !" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Ungkapan kosong. Sila masuk masukkan ungkapan nalar yang sah." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Nama fail atau laluan kosong. Sila masukkan nama fail atau laluan yang sah." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Semua fail" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Laluan" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Pilih folder sumber" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Memuatkan ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Pilih lokasi pemulihan" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Kecualikan jenis file" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Jenis fail piawai:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Suaikan jenis fail tertakrif dengan " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "sambungan fail" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Dikecualikan oleh ungkapan nalar" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Masukkan ungkapan nalar.\n" "Fail dan direktori yang memadani ungkapan ini akan diasingkan dari sandar." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Suit Sandar Ringkas" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Buat sandar penuh sekurang-kurangnya setiap" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "hari" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Am" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Tambah Fail" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Tambah Direktori" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Sertakan" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Laluan" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Jenis fail" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Kecualikan" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Guna direktori sandar setempat suai" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Pilih folder destinasi" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://namapengguna:katalaluan@contoh.com/remote/dir/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Destinasi" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Perhatian: Semua sandar tidak lengkap dan tidak boleh dipulihkan anda " "dipadam sebaik sahaja terdapat petikan lengkap yang dibuat dikemudian " "hari." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Menyingkir" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Bersihkan sandar lama" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Pulihkan fail/direktori" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Pulih Folder Sumber" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Sandar tersedia:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Guna suai:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Gunakan lalai:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Fail dan Folder untuk dipulihkan" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Pulih" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Pulih Sebagai..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/fi.po0000644000175000017500000015735512216122130013261 0ustar peerpeer# Finnish translation for nssbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the nssbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: nssbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-10-05 13:58+0000\n" "Last-Translator: Otto Kekäläinen \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Otto Kekäläinen https://launchpad.net/~otto\n" " raspi https://launchpad.net/~raspi" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Mukautettu" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3-musiikki" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI-video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG-video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matroska-video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG-multimedisäilö" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD-levykuvat" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "Salli" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "Profiilin nimi" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Valinta on mukana jo!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Valinta on jo jätetty pois!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" "Tyhjä lauseke. Kirjoita toimiva säännöllinen lauseke (regular expression)" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Tiedostonimi tai -polku on tyhjä. Anna oikea tiedostonimi tai -polku." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Kaikki tiedostot" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "Palauta..." #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "Versio" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Polku" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "Tila" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "Valmis" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Valitse lähdehakemisto" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Ladataan..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Valitse palautuspaikka" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Jätä pois tiedostotyypit" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Oletustiedostotyypit:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Määritä omat tiedostotyypit " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "tiedostopääte" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Jätä pois säännöllisin lausekkein (regex)" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Syötä säännöllinen lauseke (regex).\n" "Tiedostot ja hakemistot tulee täsmätä lausekkeeseen jotta ne jätetään pois " "varmuuskopiosta." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Sbackup-varmuuskopiointiohjelmisto" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Tee täysi varmuuskopio ainakin joka" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "päiviä" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Yleistä" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Lisää tiedosto" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Lisää hakemisto" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Sisällytä" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Polut" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Tiedostotyypit" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Jätä pois" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Käytä mukautettua paikallista hakemistoa varmuuskopioille" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Valitse kohdehakemisto" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://käyttäjänimi:salasana@esimerkki.fi/joku/hakemisto/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Kohde" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Huomaa: Lisäksi kaikki osittaiset tai palautuskelvotomat " "varmuuskopiot poistetaan kunhan kunnollinen varmuuskopio on tehty niiden " "jälkeen." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Vanhojen varmuuskopioiden poisto" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Poistetaan vanhoja" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Palauta tiedostot/hakemistot" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Palauta lähdekansio" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Saatavilla olevat varmuuskopiot:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Käytä omaa:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Käytä vakiota:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Palautettavat tiedostot ja kansiot" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Palauta" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Palauta nimellä..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "Poista" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "Otsikko" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/fo.po0000644000175000017500000015442612216122130013263 0ustar peerpeer# Faroese translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2010-11-30 23:49+0000\n" "Last-Translator: Launchpad Translations Administrators \n" "Language-Team: Faroese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:46+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "" #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr "" #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/po/hu.po0000644000175000017500000017110012216122130013257 0ustar peerpeer# Hungarian translation for sbackup # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:36+0000\n" "Last-Translator: Krasznecz Zoltán \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "SBackup Démon <%(login)s@%(hostname)s>" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "[SBackup] [%(profile)s] Jelentés: %(date)s" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "Nincs naplófájl megadva." #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "Naplófájl nem található." #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" "Kritikus hiba: Nincs konfigurációs fájl az alapértelmezett profilhoz!\n" "A hátralévő profilok folytatása következik." #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "A felhasználó megszakította a mentést." #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "Hiba történt a mentés megszakításakor." #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "Hiba történt a mentés során." #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "Hiba a levélküldéskor:" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "A következő hibák történtek eddig:" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" "A mentés nem indult el.\n" "%s" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" "Ez egy felhasználóbarát mentési megoldás mindennapos asztali használatra. " "Amennyiben segítenél hibakeresésben, fordításban vagy egyéb dologban, kérlek " "látogass el az oldalunkra." #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "Karbantartók:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "Korábbi karbantartók:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "Közreműködők:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "A fordítók listája\n" "\n" "Launchpad Contributions:\n" " Hrotkó Gábor https://launchpad.net/~roti-al\n" " Krasznecz Zoltán https://launchpad.net/~krasznecz-zoltan\n" " Richard Somlói https://launchpad.net/~ricsipontaz\n" " Szenográdi Norbert Péter https://launchpad.net/~sevoir\n" " Vaci https://launchpad.net/~v-gaabor" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "Érvénytelen archívum típus." #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "A tényleges útvonal nem eléhető ehhez: `%s`" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "A tényleges útvonal nem található ehhez: `%s`" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "Nem módosítható a jogosultság ehhez: '%s'." #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "Átmeneti fájl nem törölhető `%(file)s`: %(error)s" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "TAR indítása az inkrementális mentéshez." #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "Nem található a SNAR fájl az inkrementális mentés készítéséhez." #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "Visszatérés a teljes mentéshez." #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "TAR indítása a teljes mentéshez." #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "A kezdő '/' jelek eltávolításra kerültek a nevekből." #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "A TAR a következő üzenetet adta vissza: %s" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" "A TAR a következő üzeneteket adta vissza:\n" "%s" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "A TAR sikeresen lefutott." #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "A TAR a következő figyelmeztetést adta vissza: %s" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" "A TAR a következő figyelmeztetéseket adta vissza:\n" "%s" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "A TAR figyelmeztetéseket adott vissza, de sikeresen lefutott." #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "Befejezés sikertelen. A TAR hibával megszakadt." #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "Nem sikerült a háttérfolyamat megállítása: %s" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "Csatolva" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "Nem változott" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "Könyvtár" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "A sornak szövegnek kell lennie" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "A fájl nem létezik: '%s'" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "A SNAR fájl fejléce hiányos." #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "Pillanatkép fájl szükséges" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "A könyvtár nem létezik: %s." #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "A profil beállítások a következő fájlból kerülnek beolvasásra: '%s'." #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" "A profil beállítások az alapértékeket kapták. A konfigurációs fájl a " "következő lett: '%s'." #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "A 'cél' nevű opció hiányzik. A futás megszakításra kerül." #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" "Hiba a konfiguráció feldolgozásakor:\n" "%(error)s a következő sorban `%(line)s`.\n" "Ellenőrizd a konfigurációs fájlt." #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "Meg kell adnod egy könyvtárat." #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" "A [%(profile)s] naplókimenete átirányításra került a következő fájlba: " "'%(file)s'." #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "A [%s] naplókimenete nem került átirányításra fájlba." #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "Nem sikerült a naplófájl átnevezése '%(src)s'->'%(dst)s': %(err)s" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "A '%s' konfigurációs fájl nem olvasható!" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "A [%(section)s] rész a '%(configfile)s' fájlban nem létezik, kilépek" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "Nincs fogadó beállítva." #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "Nincs SMTP kiszolgáló beállítva." #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "Felhasználónév beállítva, de jelszó nincs megadva." #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "Jelszó beállítva, de felhasználónév nincs megadva." #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" "Tanúsítvány és kulcsfájl található, de az SSL opció (smtptls=1) nincs " "beállítva.\n" "Válassza az SSL-t a tanúsítvány és a kulcsfájl használatához." #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "Alapértelmezett Profil" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "Ismeretlen Profil" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "Korlátlan" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "100 MiB" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "250 MiB" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "650 MiB" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "2 GiB (FAT16)" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "4 GiB (FAT32)" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "Egyéni" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 Zene" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI Video" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG Video" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka Video" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG Multimédia tároló" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD Képek" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "A(z) „%s” fájl nem található a biztonsági mentés fájllistájában" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" "A(z) '%(filename)s' fájl nem található a következő biztonsági mentés " "fájllistájában: [%(snapshotname)s] , Átugrom." #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "A következő biztonsági mentés nem található: '%s' " #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" "Érvénytelen biztonsági mentés: `%(name)s`: Név vagy biztonsági mentés " "érvénytelen." #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" "Érvénytelen biztonsági mentés `%(name)s`-t találtam: %(error_cause)s." #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "Biztonsági mentés folyamatának előkészítése" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "Mappák száma: %s." #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "A '%(target)s' célmappa nem létezik." #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "Már fel van véve a mentendők listájára!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "Az elem már szerepel a kivételek között!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "Üres kifejezés. Adjon meg egy reguláris kifejezést." #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "" "Üres fájlnév vagy elérési út. Kérem, adjon meg egy érvényes fájlnevet vagy " "elérési utat." #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "Összes fájl" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "E-mail beállítások tesztelése" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "Elérési útvonal" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "Válasszon forrásmappát" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "Betöltés …" #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "Válasszon egy visszaállítási helyet" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "A kiválaszott fájlok visszaállítása" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "'%s' visszaállítása folyatban." #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" "A(z) '%(file)s' túllépte a maximális fájlméretet ( %(filesize)s > " "%(maxsize)s)." #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "Kivéve ezen fájltípusok" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "Szabványos fájltípusok:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "Egyénileg definiált fájltípusok " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "fájlkiterjesztés" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "Kivétel reguláris kifejezés alapján" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "Adjon meg egy reguláris kifejezést.\n" "Az ennek eleget tevő fájlok és mappák kihagyásra kerülnek a mentés folyamán." #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "Egyszerű biztonsági mentés készítő" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "" #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "Teljes mentés készítése legalább" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "naponta" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "Általános" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "Fájl hozzáadása" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "Könyvtár hozzáadása" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "Hozzáadás" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "Útvonalak" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "Fájltípusok" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "Kihagyás" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "Egyéni helyi könyvtár használata" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "Válassza ki a mentés helyét" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://felhasznalonev:jelszo@pelda.com/tavoli/konyvtar/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "" #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "Cél" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "" #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "" "Megjegyzés: Egészen addig amíg található egy teljes biztonsági " "mentés, az összes nem teljes, illetve javíthatatlan mentés törlése kerül." #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "Tisztítás" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "Régi biztonsági mentések törlése" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "Használjon felhasználónevet és jelszót" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "Fájlok/könyvtárak visszaállítása" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "Forráskönyvtár visszaállítása" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "Elérhető biztonsági-mentések:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "Egyéni beállítás használata:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "Alapbeállítás használata:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "Fájlok és könyvtárak visszaállítása" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "Helyreállítás" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "Visszaállítás mint..." #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "Pillanatkép Kezelő" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" #, python-format #~ msgid "Upgrading from v1.0 to v1.2: %s" #~ msgstr "Frissítés v.1.0-ról v1.2-re: %s" #, python-format #~ msgid "Upgrading to v1.3: %s" #~ msgstr "Frissítés v1.3-ra: %s" #, python-format #~ msgid "Upgrading to v1.4: %s" #~ msgstr "Frissítés v1.4-re: %s" #, python-format #~ msgid "Upgrading to v1.5: %s" #~ msgstr "Frissítés v1.5-re: %s" #, python-format #~ msgid "File '%(file)s' does not exist." #~ msgstr "A '%(file)s' fájl nem létezik." #, python-format #~ msgid "No need to rebase a full snapshot '%s'" #~ msgstr "Nincs szükség a teljes mentés átállítására '%s'" #, python-format #~ msgid "" #~ "'%(snapshotToRebase)s' doesn't have 'base' file , it might have been broken " #~ msgstr "" #~ "Nem tartozik 'alap' fájl ehhez:'%(snapshotToRebase)s' , talán sérült " sbackup-0.11.6/po/ja.po0000644000175000017500000017004512216122130013244 0ustar peerpeer# Japanese translation for sbackup # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the sbackup package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: sbackup\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-01-10 22:47+0100\n" "PO-Revision-Date: 2011-02-06 11:43+0000\n" "Last-Translator: Jean-Peer Lorenz \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-11 04:47+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/sbackup/backupproc.py:169 src/sbackup/pkginfo.py:85 #, python-format msgid "SBackup Daemon <%(login)s@%(hostname)s>" msgstr "" #: src/sbackup/backupproc.py:173 #, python-format msgid "[SBackup] [%(profile)s] Report of %(date)s" msgstr "" #: src/sbackup/backupproc.py:178 src/sbackup/core/profile_handler.py:282 msgid "No log file specified." msgstr "" #: src/sbackup/backupproc.py:183 msgid "Unable to find log file." msgstr "" #: src/sbackup/backupproc.py:251 msgid "" "Critical Error: No configuration file for the default profile was found!\n" "\n" "Now continue processing remaining profiles." msgstr "" #: src/sbackup/backupproc.py:302 msgid "Backup was canceled by user." msgstr "" #: src/sbackup/backupproc.py:307 msgid "An error occurred during the cancellation of backup:" msgstr "" #: src/sbackup/backupproc.py:313 msgid "An error occurred during the backup:" msgstr "" #: src/sbackup/backupproc.py:330 msgid "Error when sending email:" msgstr "" #: src/sbackup/backupproc.py:361 msgid "The following error(s) occurred before:" msgstr "" #: src/sbackup/backupproc.py:532 #, python-format msgid "" "Backup is not being started.\n" "%s" msgstr "" #: src/sbackup/pkginfo.py:42 msgid "" "This is a user friendly backup solution for common desktop needs. If you " "want to help by submitting bugs, by translating or anything else please " "visit our website." msgstr "" #: src/sbackup/pkginfo.py:45 msgid "Maintainers:" msgstr "メンテナ:" #: src/sbackup/pkginfo.py:49 msgid "Former maintainers:" msgstr "以前のメンテナ:" #: src/sbackup/pkginfo.py:53 msgid "Contributors:" msgstr "貢献者:" #: src/sbackup/pkginfo.py:70 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Hajime Mizuno https://launchpad.net/~mizuno-as\n" " Hiroshi Tagawa https://launchpad.net/~kuponuga\n" " Jean-Peer Lorenz https://launchpad.net/~peer.loz\n" " Jun Kobayashi https://launchpad.net/~jkbys" #: src/sbackup/ar_backend/tar.py:109 src/sbackup/ar_backend/tar.py:167 #: src/sbackup/ar_backend/tar.py:213 msgid "Invalid archive type." msgstr "" #: src/sbackup/ar_backend/tar.py:123 #, python-format msgid "Effective path for `%s` is not available" msgstr "" #: src/sbackup/ar_backend/tar.py:295 #, python-format msgid "Unable to get effective path for `%s`" msgstr "" #: src/sbackup/ar_backend/tar.py:344 msgid "" "For the moment split functionality is not compatible with compress option." msgstr "" #: src/sbackup/ar_backend/tar.py:353 src/sbackup/ar_backend/tar.py:414 #: src/sbackup/core/profile_handler.py:292 #, python-format msgid "Unable to change permissions for file '%s'." msgstr "" #: src/sbackup/ar_backend/tar.py:362 #, python-format msgid "Unable to remove temporary file `%(file)s`: %(error)s" msgstr "" #: src/sbackup/ar_backend/tar.py:378 msgid "Launching TAR to make incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:407 msgid "Unable to find the SNAR file to make an incremental backup." msgstr "" #: src/sbackup/ar_backend/tar.py:408 msgid "Falling back to full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:450 msgid "Launching TAR to make a full backup." msgstr "" #: src/sbackup/ar_backend/tar.py:517 msgid "Leading '/' from member names were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:519 msgid "Leading '/' from hard link targets were removed." msgstr "" #: src/sbackup/ar_backend/tar.py:528 #, python-format msgid "TAR returned a message: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:530 #, python-format msgid "" "TAR returned messages:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:533 msgid "TAR has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:537 #, python-format msgid "TAR returned a warning: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:539 #, python-format msgid "" "TAR returned warnings:\n" "%s" msgstr "" #: src/sbackup/ar_backend/tar.py:542 msgid "TAR returned warnings but has been finished successfully." msgstr "" #: src/sbackup/ar_backend/tar.py:546 msgid "Unable to finish successfully. TAR terminated with errors." msgstr "" #: src/sbackup/ar_backend/tar.py:727 #, python-format msgid "Unable to terminate backend process: %s" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Included" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Not changed" msgstr "" #: src/sbackup/ar_backend/tar.py:760 msgid "Directory" msgstr "" #: src/sbackup/ar_backend/tar.py:788 msgid "Line must be a string" msgstr "" #: src/sbackup/ar_backend/tar.py:804 msgid "Dumpdir inconsistancy : 'filename' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:817 msgid "Dumpdir inconsistancy : 'control' is empty" msgstr "" #: src/sbackup/ar_backend/tar.py:890 #, python-format msgid "File '%s' does not exist." msgstr "" #: src/sbackup/ar_backend/tar.py:1020 src/sbackup/ar_backend/tar.py:1054 #: src/sbackup/ar_backend/tar.py:1154 msgid "The snarfile header is incomplete." msgstr "" #: src/sbackup/ar_backend/tar.py:1323 msgid "A SnapshotFile is required" msgstr "" #: src/sbackup/ar_backend/tar.py:1423 #, python-format msgid "Directory does not exist: %s." msgstr "" #: src/sbackup/core/ConfigManager.py:330 #, python-format msgid "Profile settings are being read from file '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:333 #, python-format msgid "" "Profile settings are being set to default values. Configuration file is set " "to '%s'." msgstr "" #: src/sbackup/core/ConfigManager.py:479 msgid "Option 'target' is missing, aborting." msgstr "" #: src/sbackup/core/ConfigManager.py:547 #, python-format msgid "" "Error while processing configuration:\n" "\n" "%(error)s in line `%(line)s`.\n" "\n" "Please check your configuration file." msgstr "" #: src/sbackup/core/ConfigManager.py:588 src/sbackup/core/ConfigManager.py:622 #, python-format msgid "" "Unable to evaluate '%(parameter)s' as a dictionary (value got = '%(value)r')." msgstr "" #: src/sbackup/core/ConfigManager.py:614 #, python-format msgid "" "Couldn't evaluate '%(parameter)s' as a dictionary (value got = '%(value)r' )" msgstr "" #: src/sbackup/core/ConfigManager.py:638 msgid "You must provide a dictionary." msgstr "" #: src/sbackup/core/ConfigManager.py:755 #, python-format msgid "Log output for [%(profile)s] is directed to file '%(file)s'." msgstr "" #: src/sbackup/core/ConfigManager.py:762 #, python-format msgid "Log output for [%s] is not directed into a file." msgstr "" #: src/sbackup/core/ConfigManager.py:781 #, python-format msgid "Unable to rename log file '%(src)s'->'%(dst)s': %(err)s" msgstr "" #: src/sbackup/core/ConfigManager.py:801 #, python-format msgid "The config file '%s' couldn't be read!" msgstr "" #: src/sbackup/core/ConfigManager.py:813 #, python-format msgid "section [%(section)s] in '%(configfile)s' should not exist, aborting" msgstr "" #: src/sbackup/core/ConfigManager.py:895 msgid "No schedule defined in configuration file. Probing from filesystem." msgstr "" #: src/sbackup/core/ConfigManager.py:988 #: src/sbackup/core/ConfigManager.py:1000 msgid "The config file is not set yet into this ConfigManager" msgstr "" #: src/sbackup/core/ConfigManager.py:1163 msgid "No receiver set." msgstr "" #: src/sbackup/core/ConfigManager.py:1165 msgid "No SMTP server set." msgstr "" #: src/sbackup/core/ConfigManager.py:1168 msgid "Username set but no password specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1171 msgid "Password set but no username specified." msgstr "" #: src/sbackup/core/ConfigManager.py:1174 msgid "" "A certificate and key file is given while SSL option (smtptls=1) is not " "set.\n" "Select SSL in order to use Certificate and Key." msgstr "" #: src/sbackup/core/ConfigManager.py:1178 msgid "" "When specifying a SSL certificate or key file, a key file resp. certificate " "is mandatory." msgstr "" #: src/sbackup/core/ConfigManager.py:1373 msgid "Default Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1374 msgid "Unknown Profile" msgstr "" #: src/sbackup/core/ConfigManager.py:1428 msgid "Unlimited" msgstr "" #: src/sbackup/core/ConfigManager.py:1429 msgid "100 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1430 msgid "250 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1431 msgid "650 MiB" msgstr "" #: src/sbackup/core/ConfigManager.py:1432 msgid "2 GiB (FAT16)" msgstr "" #: src/sbackup/core/ConfigManager.py:1433 msgid "4 GiB (FAT32)" msgstr "" #: src/sbackup/core/ConfigManager.py:1434 src/sbackup/ui/configgui.py:279 #: src/sbackup/ui/configgui.py:1418 msgid "Custom" msgstr "カスタム" #: src/sbackup/core/ConfigManager.py:1436 msgid "MP3 Music" msgstr "MP3 音楽" #: src/sbackup/core/ConfigManager.py:1437 msgid "AVI Video" msgstr "AVI ビデオ" #: src/sbackup/core/ConfigManager.py:1438 #: src/sbackup/core/ConfigManager.py:1439 msgid "MPEG Video" msgstr "MPEG ビデオ" #: src/sbackup/core/ConfigManager.py:1440 msgid "Matrjoshka Video" msgstr "Matrjoshka ビデオ" #: src/sbackup/core/ConfigManager.py:1441 msgid "OGG Multimedia container" msgstr "OGG マルチメディア" #: src/sbackup/core/ConfigManager.py:1442 msgid "CD Images" msgstr "CD イメージ" #: src/sbackup/core/RestoreManager.py:80 #, python-format msgid "File '%s' not found in the backup snapshot files list" msgstr "" #: src/sbackup/core/RestoreManager.py:82 #, python-format msgid "" "File '%(filename)s' not found in snapshot's [%(snapshotname)s] files list, " "Skipped." msgstr "" #: src/sbackup/core/SnapshotManager.py:114 #, python-format msgid "Snapshot '%s' not found " msgstr "" #: src/sbackup/core/SnapshotManager.py:210 #, python-format msgid "Invalid snapshot `%(name)s` found: Name of snapshot not valid." msgstr "" #: src/sbackup/core/SnapshotManager.py:213 #, python-format msgid "Invalid snapshot `%(name)s` found: %(error_cause)s." msgstr "" #: src/sbackup/core/SnapshotManager.py:286 msgid "The snarfile header is incomplete !" msgstr "" #: src/sbackup/core/SnapshotManager.py:429 #, python-format msgid "" "Snapshot '%s' is already Full, nothing to do (not changing it to full)." msgstr "" #: src/sbackup/core/profile_handler.py:101 #, python-format msgid "Running of hooks: %s" msgstr "" #: src/sbackup/core/profile_handler.py:111 msgid "Preparation of backup process" msgstr "" #: src/sbackup/core/profile_handler.py:146 #, python-format msgid "Snapshot '%(name)s' is being made." msgstr "" #: src/sbackup/core/profile_handler.py:154 #, python-format msgid "Setting Base to '%(value)s'." msgstr "" #: src/sbackup/core/profile_handler.py:163 msgid "Setting packages File." msgstr "" #: src/sbackup/core/profile_handler.py:169 msgid "Problem when setting the packages list: " msgstr "" #: src/sbackup/core/profile_handler.py:173 msgid "Setting Excludes File." msgstr "" #: src/sbackup/core/profile_handler.py:181 #, python-format msgid "Setting compression format to `%s`" msgstr "" #: src/sbackup/core/profile_handler.py:188 #, python-format msgid "Setting size of archive chunks to %s" msgstr "" #: src/sbackup/core/profile_handler.py:195 msgid "Option 'Follow symbolic links' is enabled." msgstr "" #: src/sbackup/core/profile_handler.py:197 msgid "Option 'Follow symbolic links' is disabled." msgstr "" #: src/sbackup/core/profile_handler.py:206 msgid "Snapshot is being committed" msgstr "" #: src/sbackup/core/profile_handler.py:220 #, python-format msgid "Error while purging old snapshots: %s" msgstr "" #: src/sbackup/core/profile_handler.py:222 msgid "Backup process finished." msgstr "" #: src/sbackup/core/profile_handler.py:229 msgid "Inspect file system and collect file infos" msgstr "" #: src/sbackup/core/profile_handler.py:240 msgid "Summary of backup" msgstr "" #: src/sbackup/core/profile_handler.py:241 #, python-format msgid "Number of directories: %s." msgstr "" #: src/sbackup/core/profile_handler.py:242 #, python-format msgid "Total number of files: %s." msgstr "" #: src/sbackup/core/profile_handler.py:243 #, python-format msgid "Number of symlinks: %s." msgstr "" #: src/sbackup/core/profile_handler.py:244 #, python-format msgid "Number of files included in snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:245 #, python-format msgid "Number of new files (also included): %s." msgstr "" #: src/sbackup/core/profile_handler.py:246 #, python-format msgid "Number of files skipped in incremental snapshot: %s." msgstr "" #: src/sbackup/core/profile_handler.py:247 #, python-format msgid "Number of items forced to be excluded: %s." msgstr "" #: src/sbackup/core/profile_handler.py:248 #, python-format msgid "Number of items to be excluded by config: %s." msgstr "" #: src/sbackup/core/profile_handler.py:249 #, python-format msgid "Maximum free size required is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:255 #, python-format msgid "Available disk size is '%s'." msgstr "" #: src/sbackup/core/profile_handler.py:257 #, python-format msgid "" "Not enough free space in the target directory for the planned backup (free: " "%(freespace)s, required: %(neededspace)s)." msgstr "" #: src/sbackup/core/profile_handler.py:277 msgid "Unable to copy log. File access is not initialized." msgstr "" #: src/sbackup/core/profile_handler.py:295 #, python-format msgid "Unable to copy log file: %s" msgstr "" #: src/sbackup/core/profile_handler.py:297 msgid "Unable to find logfile to copy into snapshot." msgstr "" #: src/sbackup/core/profile_handler.py:299 msgid "No snapshot to copy logfile." msgstr "" #: src/sbackup/core/profile_handler.py:306 msgid "Processing of profile was canceled on user request\n" msgstr "" #: src/sbackup/core/profile_handler.py:323 msgid "Processing of profile successfully finished (no errors)\n" msgstr "" #: src/sbackup/core/profile_handler.py:329 #, python-format msgid "Processing of profile failed with error: %s\n" msgstr "" #: src/sbackup/core/profile_handler.py:340 #, python-format msgid "Backup destination: %s" msgstr "" #: src/sbackup/core/profile_handler.py:344 msgid "Unable to find destination directory." msgstr "" #: src/sbackup/core/profile_handler.py:363 msgid "Unable to find destination directory even after retry." msgstr "" #: src/sbackup/core/profile_handler.py:364 #: src/sbackup/core/profile_handler.py:371 #, python-format msgid "Target directory '%(target)s' does not exist." msgstr "" #: src/sbackup/core/profile_handler.py:377 #, python-format msgid "Unable to access destination: %s" msgstr "" #: src/sbackup/core/snapshot.py:134 msgid "Snapshot is inconsistent: __name is not set " msgstr "" #: src/sbackup/core/snapshot.py:145 #, python-format msgid "Name of snapshot '%s' doesn't match requirement" msgstr "" #: src/sbackup/core/snapshot.py:239 msgid "Snapshot is inconsistent: __snapshotpath is not set " msgstr "" #: src/sbackup/core/snapshot.py:318 #, python-format msgid "" "The snapshot compression format is supposed to be '%s' but the corresponding " "well named file wasn't found" msgstr "" #: src/sbackup/core/snapshot.py:342 #, python-format msgid "" "%(file)s doesn't contain valid value. Ignoring incomplete or non - backup " "directory. " msgstr "" #: src/sbackup/core/snapshot.py:478 #, python-format msgid "Name of Snapshot not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:496 #, python-format msgid "Name of base not valid : %s" msgstr "" #: src/sbackup/core/snapshot.py:542 #, python-format msgid "Invalid name of snapshot: %s" msgstr "" #: src/sbackup/core/snapshot.py:546 msgid "Unable to read mandatory file `ver`" msgstr "" #: src/sbackup/core/snapshot.py:591 msgid "Base name must be set for incremental backup." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:106 msgid "Initializing FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_fam.py:129 msgid "Terminating FUSE File Access Manager." msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:45 #: src/sbackup/fs_backend/_gio_utils.py:109 msgid "SFTP" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:46 #: src/sbackup/fs_backend/_gio_utils.py:110 msgid "SSH" msgstr "" #: src/sbackup/fs_backend/_fuse_utils.py:47 #: src/sbackup/fs_backend/_gio_utils.py:111 msgid "FTP" msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:100 msgid "Initializing GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_fam.py:114 msgid "Terminating GIO File Access Manager." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:95 msgid "Unknown error code:" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:112 msgid "NFS" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:113 msgid "SMB" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:193 msgid "Unable to get mount: path is not mounted" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:195 msgid "Unable to get mount: path not found when mounting (is probably local)" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:197 #: src/sbackup/fs_backend/_gio_utils.py:200 #, python-format msgid "Unable to get mount: %s" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:250 msgid "Unable to un-set mount flag: path is not stored" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:352 msgid "Path is already mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:380 msgid "Path is not mounted." msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:887 msgid "test specified path for existence using GIO" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:900 msgid "Create testdir" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:905 msgid "Test testfile for existence" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:912 msgid "Create file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:919 msgid "Re-read test file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:931 msgid "Remove file" msgstr "" #: src/sbackup/fs_backend/_gio_utils.py:933 msgid "Remove dir" msgstr "" #: src/sbackup/fuse_plugins/__init__.py:160 #, python-format msgid "Unable to import plugin `%(plugin_name)s`: %(error_cause)s " msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:117 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of ftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:127 #: src/sbackup/fuse_plugins/sftpFuseFAM.py:124 #, python-format msgid "Couldn't mount '%(server)s' into '%(mountpoint)s' : %(error)s" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:141 msgid "FTP schema is: ftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/ftpFuseFAM.py:188 #, python-format msgid "" "Error matching the schema 'ftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:114 #, python-format msgid "" "Couldn't found external application 'curlftpfs' needed for handling of sftp " "sites: %s" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:138 msgid "SFTP schema is like : sftp://user:pass@server/anything" msgstr "" #: src/sbackup/fuse_plugins/sftpFuseFAM.py:185 #, python-format msgid "" "Error matching the schema 'sftp://user:pass@server/anything' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:81 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com/home/' with '%s' (The " "'/' after server is mandatory)" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:137 #, python-format msgid "" "The sshfs command '%(command)s' didn't perform normally. Output => " "%(erroroutput)s " msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:142 msgid "SSH schema is like : ssh://user:pass@example.com:33/home/user/backup/" msgstr "" #: src/sbackup/fuse_plugins/sshFuseFAM.py:158 #, python-format msgid "" "Error matching the schema 'ssh://user:pass@example.com:21/home/' with '%s' " "(The '/' after server is mandatory)" msgstr "" #: src/sbackup/ui/GladeWindow.py:210 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target." msgstr "" #: src/sbackup/ui/GladeWindow.py:211 #, python-format msgid "" "While accessing the backup destination following error occurred:\n" "\n" "%s." msgstr "" #: src/sbackup/ui/GladeWindow.py:212 src/sbackup/ui/restoregui.py:797 msgid "Simple Backup error" msgstr "" #: src/sbackup/ui/GladeWindow.py:213 msgid "Unable to access backup destination" msgstr "" #: src/sbackup/ui/configgui.py:125 msgid "Scheduled backups are available for Administrator users only." msgstr "" #: src/sbackup/ui/configgui.py:135 src/sbackup/ui/configgui.py:144 msgid "Name" msgstr "" #: src/sbackup/ui/configgui.py:152 msgid "File Type" msgstr "" #: src/sbackup/ui/configgui.py:187 msgid "Enable" msgstr "" #: src/sbackup/ui/configgui.py:188 msgid "Profile Name" msgstr "" #: src/sbackup/ui/configgui.py:285 #, python-format msgid "" "Invalid or empty regular expression ('%s') found in configuration. Removed." msgstr "" #: src/sbackup/ui/configgui.py:292 #, python-format msgid "" "Invalid or empty regular expressions found\n" "in configuration file:\n" "'%s'\n" "\n" "These expressions are not used and were\n" "removed from the configuration." msgstr "" #: src/sbackup/ui/configgui.py:548 msgid "" "Please make sure the missing directory exists (e.g. by mounting an external " "disk) or change the specified target to an existing one." msgstr "" #: src/sbackup/ui/configgui.py:549 #, python-format msgid "" "Backup target `%s` does not exist.\n" "\n" "Attention: The target will be set to the default value. Check this on the " "destination settings page before saving the configuration." msgstr "" #: src/sbackup/ui/configgui.py:551 msgid "Unable to open backup target" msgstr "" #: src/sbackup/ui/configgui.py:623 #, python-format msgid "" "%s\n" "\n" "A backup profile using default values was created. Save the new " "configuration in order to use it or check your existing configuration file " "manually.\n" "\n" "Important note: Saving will overwrite your existing invalid configuration." msgstr "" #: src/sbackup/ui/configgui.py:641 #, python-format msgid "Current profile: %s" msgstr "" #: src/sbackup/ui/configgui.py:732 msgid "Already included item !" msgstr "既に追加されています!" #: src/sbackup/ui/configgui.py:747 msgid "Already excluded item !" msgstr "既に除外されています!" #: src/sbackup/ui/configgui.py:759 src/sbackup/ui/configgui.py:1458 msgid "Empty expression. Please enter a valid regular expression." msgstr "有効な正規表現を入力してください。" #: src/sbackup/ui/configgui.py:774 src/sbackup/ui/configgui.py:1472 msgid "Provided regular expression is not valid." msgstr "" #: src/sbackup/ui/configgui.py:782 msgid "Empty filename or path. Please enter a valid filename or path." msgstr "ファイル名またはパスが無効です。正しいファイル名またはパスを入力してください。" #: src/sbackup/ui/configgui.py:791 msgid "" "It seems the path you entered does not exists. Do you want to add this " "incorrect path?" msgstr "" #: src/sbackup/ui/configgui.py:820 msgid "Save configuration as..." msgstr "" #: src/sbackup/ui/configgui.py:887 msgid "" "A backup process is now executed in the background.\n" "\n" "You can monitor the progress of the backup by means of the status indicator " "displayed in the notification area." msgstr "" #: src/sbackup/ui/configgui.py:888 msgid "Backup process started" msgstr "" #: src/sbackup/ui/configgui.py:893 src/sbackup/ui/configgui.py:1661 #: src/sbackup/ui/configgui.py:2038 #, python-format msgid "Unexpected dialog response: %s" msgstr "" #: src/sbackup/ui/configgui.py:967 msgid "Include file..." msgstr "" #: src/sbackup/ui/configgui.py:974 src/sbackup/ui/configgui.py:1029 msgid "All files" msgstr "全てのファイル" #: src/sbackup/ui/configgui.py:994 msgid "Include folder..." msgstr "" #: src/sbackup/ui/configgui.py:1022 msgid "Exclude file..." msgstr "" #: src/sbackup/ui/configgui.py:1045 msgid "Exclude folder..." msgstr "" #: src/sbackup/ui/configgui.py:1310 msgid "Configuration has changed" msgstr "" #: src/sbackup/ui/configgui.py:1311 msgid "" "There are unsaved modifications. Please save the configuration or revert " "these changes before testing the mail settings." msgstr "" #: src/sbackup/ui/configgui.py:1317 src/sbackup/ui/configgui.py:1323 msgid "Test mail settings" msgstr "" #: src/sbackup/ui/configgui.py:1318 msgid "The test failed with following output:" msgstr "" #: src/sbackup/ui/configgui.py:1324 msgid "The test was successful." msgstr "" #: src/sbackup/ui/configgui.py:1407 src/sbackup/ui/configgui.py:1450 #, python-format msgid "" "The given expression contains unsupported characters ('%s'). Currently it is " "not possible to use these characters in exclude expressions." msgstr "" #: src/sbackup/ui/configgui.py:1410 src/sbackup/ui/configgui.py:1453 msgid "Unsupported character" msgstr "" #: src/sbackup/ui/configgui.py:1621 msgid "Connect to remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1669 msgid "Mount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1680 msgid "Unable to mount host" msgstr "" #: src/sbackup/ui/configgui.py:1689 msgid "Umount was sucessful (no errors)" msgstr "" #: src/sbackup/ui/configgui.py:1699 msgid "Unable to unmount host" msgstr "" #: src/sbackup/ui/configgui.py:1729 msgid "Perfom tests on remote host" msgstr "" #: src/sbackup/ui/configgui.py:1742 msgid "Unable to access remote destination" msgstr "" #: src/sbackup/ui/configgui.py:1746 msgid "All tests passed" msgstr "" #: src/sbackup/ui/configgui.py:1910 msgid "" "The given name of the new profile is empty. Please enter a valid profile " "name." msgstr "" #: src/sbackup/ui/configgui.py:1911 src/sbackup/ui/configgui.py:1918 msgid "Profile name not valid" msgstr "" #: src/sbackup/ui/configgui.py:1917 msgid "" "The given name of the new profile already exists. Please enter another name." msgstr "" #: src/sbackup/ui/configgui.py:1919 msgid "Renaming of profiles is not supported." msgstr "" #: src/sbackup/ui/configgui.py:1949 #, python-format msgid "" "Delete configuration profile?\n" "\n" "You are trying to remove a configuration profile. You will not be able to " "restore it. If you are not sure, use the 'enable|disable' functionality " "instead.\n" "\n" "Do you really want to delete the profile '%(name)s'?" msgstr "" #: src/sbackup/ui/configgui.py:2022 #, python-format msgid "" "Set default values for current profile?\n" "This will restore the default values for the profile currently edited: " "'%s'.\n" "\n" "These predefined settings are recommended for most users. Check whether they " "are appropriate for your use before saving the changed configuration." msgstr "" #: src/sbackup/ui/configgui.py:2032 msgid "Default settings are being applied." msgstr "" #: src/sbackup/ui/configgui.py:2057 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be removed. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2071 msgid "" "Unable to remove default profile\n" "\n" "The default profile cannot be disabled. In the case you want to use just a " "single profile, please set up the default profile accordingly." msgstr "" #: src/sbackup/ui/configgui.py:2085 msgid "" "No backup profile found.\n" "\n" "No default profile was found. You are probably running Simple Backup for the " "first time. A backup profile using default values was created.\n" "\n" "Please modify the settings according to your needs and save the " "configuration in order to use it." msgstr "" #: src/sbackup/ui/configgui.py:2098 msgid "Please select a profile." msgstr "" #: src/sbackup/ui/indicator_core.py:117 msgid "there was a problem initializing the pynotify module" msgstr "" #: src/sbackup/ui/indicator_core.py:148 src/sbackup/ui/indicator_core.py:197 #: src/sbackup/ui/indicator_core.py:225 src/sbackup/ui/indicator_core.py:247 #, python-format msgid "Connection to notification-daemon failed: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:310 msgid "Simple Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:316 msgid "Show message windows" msgstr "" #: src/sbackup/ui/indicator_core.py:358 src/sbackup/ui/indicator_core.py:816 msgid "Cancel Backup" msgstr "" #: src/sbackup/ui/indicator_core.py:420 msgid "Connection to D-Bus service lost." msgstr "" #: src/sbackup/ui/indicator_core.py:445 msgid "re-connection was successful" msgstr "" #: src/sbackup/ui/indicator_core.py:484 msgid "" "No backup in progress and connection to D-Bus service lost. Simple Backup " "Indicator is being terminated." msgstr "" #: src/sbackup/ui/indicator_core.py:513 msgid "Starting backup session" msgstr "" #: src/sbackup/ui/indicator_core.py:527 msgid "Ending Backup Session" msgstr "" #: src/sbackup/ui/indicator_core.py:540 #, python-format msgid "Unknown D-Bus event `%s` received." msgstr "" #: src/sbackup/ui/indicator_core.py:581 msgid "Try again" msgstr "" #: src/sbackup/ui/indicator_core.py:651 msgid "" "Attempt of starting another instance of Simple Backup while this one is " "already running." msgstr "" #: src/sbackup/ui/indicator_core.py:661 #, python-format msgid "Unable to present window: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:677 #, python-format msgid "Do you really want to cancel the backup process of profile '%s'?" msgstr "" #: src/sbackup/ui/indicator_core.py:681 msgid "Cancel running backup process?" msgstr "" #: src/sbackup/ui/indicator_core.py:698 msgid "Unable to cancel backup process." msgstr "" #: src/sbackup/ui/indicator_core.py:760 #, python-format msgid "Profile: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:761 #, python-format msgid "Size of backup: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:762 #, python-format msgid "%.1f%% processed" msgstr "" #: src/sbackup/ui/indicator_core.py:763 #, python-format msgid "Remaining time: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:809 #, python-format msgid "PID of backup process being canceled: %s" msgstr "" #: src/sbackup/ui/indicator_core.py:814 #, python-format msgid "Unable to send signal to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:815 #, python-format msgid "Sending signal using gksu to process %s" msgstr "" #: src/sbackup/ui/indicator_core.py:819 #, python-format msgid "Sending signal using gksu to process %s failed" msgstr "" #: src/sbackup/ui/indicator_core.py:854 #, python-format msgid "" "Unable to find specified target directory\n" "\n" "The specified target directory '%s' was not found.\n" "\n" msgstr "" #: src/sbackup/ui/indicator_core.py:855 #, python-format msgid "" "You can try to use the specified target again or cancel the profile " "execution. The specified destination is automatically used in %s seconds." msgstr "" #: src/sbackup/ui/indicator_core.py:882 src/sbackup/ui/indicator_core.py:924 #: src/sbackup/ui/indicator_core.py:942 src/sbackup/ui/indicator_core.py:950 #: src/sbackup/ui/indicator_core.py:967 msgid "unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:903 msgid "less than 1 minute" msgstr "" #: src/sbackup/ui/indicator_core.py:905 msgid "about 2 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:907 msgid "about 3 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:909 msgid "about 4 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:911 msgid "about 5 minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:913 #, python-format msgid "about %.0f minutes" msgstr "" #: src/sbackup/ui/indicator_core.py:923 msgid "In progress" msgstr "" #: src/sbackup/ui/indicator_core.py:933 src/sbackup/ui/indicator_core.py:959 msgid "finished" msgstr "" #: src/sbackup/ui/indicator_core.py:941 msgid "Progress: unknown" msgstr "" #: src/sbackup/ui/indicator_core.py:948 msgid "Backup is being prepared" msgstr "" #: src/sbackup/ui/indicator_core.py:949 msgid "Collecting file info" msgstr "" #: src/sbackup/ui/indicator_core.py:958 msgid "Progress: canceled" msgstr "" #: src/sbackup/ui/indicator_core.py:980 msgid "An error occurred" msgstr "" #: src/sbackup/ui/indicator_core.py:1013 msgid "Another `Simple Backup Indicator` is already running." msgstr "" #: src/sbackup/ui/indicator_core.py:1037 #, python-format msgid "Initialization of GTK+ failed: %s" msgstr "" #: src/sbackup/ui/misc.py:294 #, python-format msgid "%s (Administrator mode)" msgstr "" #: src/sbackup/ui/misc.py:324 #, python-format msgid "" "An uncaught error occurred. Close this message window and restart the " "application.\n" "\n" "Please report this error on https://bugs.launchpad.net/sbackup.\n" "\n" "%s" msgstr "" #: src/sbackup/ui/misc.py:325 msgid "Sorry, this should not have happened" msgstr "" #: src/sbackup/ui/restoregui.py:78 msgid "Restore..." msgstr "" #: src/sbackup/ui/restoregui.py:79 data/ui/sbackup-restore.glade:765 msgid "Restore as..." msgstr "" #: src/sbackup/ui/restoregui.py:80 msgid "Revert..." msgstr "" #: src/sbackup/ui/restoregui.py:81 data/ui/sbackup-restore.glade:797 msgid "Revert as..." msgstr "" #: src/sbackup/ui/restoregui.py:128 data/ui/sbackup-restore.glade:111 #: data/ui/sbackup-restore.glade:511 msgid "n.a." msgstr "" #: src/sbackup/ui/restoregui.py:146 src/sbackup/ui/restoregui.py:163 msgid "Snapshots" msgstr "" #: src/sbackup/ui/restoregui.py:147 msgid "Version" msgstr "" #: src/sbackup/ui/restoregui.py:154 data/ui/sbackup-config.glade:4063 msgid "Path" msgstr "パス" #: src/sbackup/ui/restoregui.py:159 msgid "State" msgstr "" #: src/sbackup/ui/restoregui.py:187 msgid "Connect to destination..." msgstr "" #: src/sbackup/ui/restoregui.py:211 msgid "Specified path does not exist" msgstr "" #: src/sbackup/ui/restoregui.py:257 msgid "Ready" msgstr "" #: src/sbackup/ui/restoregui.py:371 msgid "No destination specified" msgstr "" #: src/sbackup/ui/restoregui.py:388 msgid "Choose a source folder" msgstr "復元元のフォルダを選択" #: src/sbackup/ui/restoregui.py:405 msgid "Reading snapshots..." msgstr "" #: src/sbackup/ui/restoregui.py:428 msgid "Reading directory content..." msgstr "" #: src/sbackup/ui/restoregui.py:458 src/sbackup/ui/restoregui.py:496 msgid "Loading ..." msgstr "読み込み中 ..." #: src/sbackup/ui/restoregui.py:539 msgid "Reading files from snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:552 msgid "Simple Backup restore error" msgstr "" #: src/sbackup/ui/restoregui.py:553 msgid "An error occurred while reading snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:557 msgid "This snapshot seems empty." msgstr "" #: src/sbackup/ui/restoregui.py:576 msgid "Reading backup snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:599 msgid "No backups found for this day." msgstr "" #: src/sbackup/ui/restoregui.py:614 src/sbackup/ui/restoregui.py:771 #, python-format msgid "" "Snapshot version is not supported (Only %(supportedversion)s is supported). " "Version '%(currentversion)s' found." msgstr "" #: src/sbackup/ui/restoregui.py:643 msgid "Select restore location" msgstr "復元先を選択" #: src/sbackup/ui/restoregui.py:662 #, python-format msgid "Do you really want to revert '%s'?" msgstr "" #: src/sbackup/ui/restoregui.py:676 msgid "Select revert location" msgstr "" #: src/sbackup/ui/restoregui.py:685 #, python-format msgid "Do you really want to revert '%(source)s' to '%(dir)s'?" msgstr "" #: src/sbackup/ui/restoregui.py:763 msgid "Reading snapshot..." msgstr "" #: src/sbackup/ui/restoregui.py:782 #, python-format msgid "" "Deleting the selected snapshot `%s` will remove your backup for this " "particular point in time. You cannot undo this operation.\n" "\n" "Are you sure that you want to remove the snapshot permanently?" msgstr "" #: src/sbackup/ui/restoregui.py:786 msgid "Do you really want to remove snapshot?" msgstr "" #: src/sbackup/ui/restoregui.py:795 #, python-format msgid "" "While attempting to delete snapshot the following error occurred:\n" "%s" msgstr "" #: src/sbackup/ui/restoregui.py:798 msgid "Unable to delete snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:804 #, python-format msgid "" "The selected snapshot '%s' is referenced by more recent snapshots as base " "snapshot.\n" "\n" "Remove all of these child snapshots in order to delete this snapshot." msgstr "" #: src/sbackup/ui/restoregui.py:806 msgid "Unable to remove snapshot" msgstr "" #: src/sbackup/ui/restoregui.py:814 msgid "Termination in progress" msgstr "" #: src/sbackup/ui/restoregui.py:830 src/sbackup/ui/restoregui.py:836 #: src/sbackup/ui/restoregui.py:842 src/sbackup/ui/restoregui.py:848 #: data/ui/sbackup-restore.glade:959 msgid "Simple Backup restoration" msgstr "" #: src/sbackup/ui/restoregui.py:831 src/sbackup/ui/restoregui.py:837 msgid "Restoring of selected files" msgstr "" #: src/sbackup/ui/restoregui.py:832 #, python-format msgid "Restoring of '%s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:833 #, python-format msgid "Restoring of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:834 #, python-format msgid "" "Restoring of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:838 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:839 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:840 #, python-format msgid "" "Restoring of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:843 src/sbackup/ui/restoregui.py:849 msgid "Reverting selected files" msgstr "" #: src/sbackup/ui/restoregui.py:844 #, python-format msgid "Reverting of '%s' is in progress.\n" msgstr "" #: src/sbackup/ui/restoregui.py:845 #, python-format msgid "Reverting of '%s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:846 #, python-format msgid "" "Reverting of '%s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/ui/restoregui.py:850 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' is in progress." msgstr "" #: src/sbackup/ui/restoregui.py:851 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was successful." msgstr "" #: src/sbackup/ui/restoregui.py:852 #, python-format msgid "" "Reverting of '%(source)s'\n" "to '%(dirname)s' was not successful.\n" "\n" "Following error occurred:\n" msgstr "" #: src/sbackup/util/__init__.py:439 #, python-format msgid "%(mb)d MiB %(kb)d KiB" msgstr "" #: src/sbackup/util/__init__.py:442 #, python-format msgid "%(mb)d MiB %(kb)d KiB %(bytes)d" msgstr "" #: src/sbackup/util/__init__.py:447 #, python-format msgid "%(mb)d MB %(kb)d kB" msgstr "" #: src/sbackup/util/__init__.py:450 #, python-format msgid "%(mb)d MB %(kb)d kB %(bytes)d" msgstr "" #: src/sbackup/util/filecollect.py:335 #, python-format msgid "File '%(file)s' is not accessable with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:351 #, python-format msgid "" "File '%(file)s' cannot be opened for read access. Operation timed out." msgstr "" #: src/sbackup/util/filecollect.py:355 #, python-format msgid "" "File '%(file)s' cannot be opened for read access with error '%(error)s'." msgstr "" #: src/sbackup/util/filecollect.py:372 #, python-format msgid "Symbolic link '%(path)s' -> '%(ln_target)s' is a circular symlink." msgstr "" #: src/sbackup/util/filecollect.py:388 #, python-format msgid "File '%(file)s' is backup's target directory." msgstr "" #: src/sbackup/util/filecollect.py:393 #, python-format msgid "Path '%(file)s' defined in excludes list." msgstr "" #: src/sbackup/util/filecollect.py:401 #, python-format msgid "File '%(file)s' matches regular expression '%(regex)s'." msgstr "" #: src/sbackup/util/filecollect.py:419 #, python-format msgid "" "File '%(file)s' exceeds maximum file size ( %(filesize)s > %(maxsize)s)." msgstr "" #: src/sbackup/util/filecollect.py:497 #, python-format msgid "Error while checking directory '%(dir)s': %(error)s." msgstr "" #: src/sbackup/util/filecollect.py:548 msgid "Empty regular expression found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:554 #, python-format msgid "Invalid regular expression ('%s') found. Skipped." msgstr "" #: src/sbackup/util/filecollect.py:573 msgid "No directories to backup defined." msgstr "" #: src/sbackup/util/lock.py:76 msgid "Another application instance is already running." msgstr "" #: src/sbackup/util/lock.py:78 msgid "Invalid lock file found. Is being removed." msgstr "" #: src/sbackup/util/lock.py:128 src/sbackup/util/lock.py:142 #, python-format msgid "Unable to remove lock file: %s" msgstr "" #: src/sbackup/util/lock.py:132 src/sbackup/util/lock.py:144 msgid "Unable to remove lock file: File not found." msgstr "" #: data/ui/sbackup-config.glade:11 msgid "Exclude file type" msgstr "除外するファイルタイプ" #: data/ui/sbackup-config.glade:26 msgid "Standard file types:" msgstr "標準のファイルタイプから選択:" #: data/ui/sbackup-config.glade:63 msgid "Custom defined file type with " msgstr "任意のファイルタイプを追加する " #: data/ui/sbackup-config.glade:93 msgid "file extension" msgstr "拡張子" #: data/ui/sbackup-config.glade:163 msgid "Exclude by regex" msgstr "正規表現を入力" #: data/ui/sbackup-config.glade:180 msgid "" "Enter a regular expression.\n" "Files and directories matching this expression will be excluded from backup." msgstr "" "正規表現を入力してください。\n" "正規表現にマッチしたファイルとディレクトリはバックアップ対象から除外されます。" #: data/ui/sbackup-config.glade:257 msgid "Enter the remote target to include" msgstr "" #: data/ui/sbackup-config.glade:278 msgid "Choose a plugin to get the format" msgstr "" #: data/ui/sbackup-config.glade:295 msgid "Choose your plugin :" msgstr "" #: data/ui/sbackup-config.glade:367 msgid "Check" msgstr "" #: data/ui/sbackup-config.glade:479 msgid "" "Save changed configuration?\n" "\n" "The configuration has changed. If you want to use the modified " "configuration, you have to save it.\n" "\n" "Do you want to save the configuration now?" msgstr "" #: data/ui/sbackup-config.glade:572 msgid "Configuration Profile Manager" msgstr "" #: data/ui/sbackup-config.glade:594 msgid "" "You can set up multiple configuration profiles which are processed when " "performing a backup. Each profile has its own set of settings including " "backup destination, backup format etc." msgstr "" #: data/ui/sbackup-config.glade:613 msgid "Configuration profiles" msgstr "プロファイルの設定" #: data/ui/sbackup-config.glade:785 msgid "" "Add new profile\n" "\n" "Please enter the new profile name and set the according checkbox in order to " "enable resp. disable it." msgstr "" "新しいプロファイルを追加する\n" "\n" "新しいプロファイル名を入力し、有効にするときはチェックボックスをチェックしてください。" #: data/ui/sbackup-config.glade:810 msgid "Profile name" msgstr "プロファイル名" #: data/ui/sbackup-config.glade:836 msgid "Enabled" msgstr "有効" #: data/ui/sbackup-config.glade:915 data/ui/sbackup-restore.glade:7 msgid "Simple Backup Suite" msgstr "シンプルバックアップスイート" #: data/ui/sbackup-config.glade:932 msgid "_File" msgstr "ファイル(_F)" #: data/ui/sbackup-config.glade:971 msgid "Save as..." msgstr "別名で保存..." #: data/ui/sbackup-config.glade:1008 msgid "_Tools" msgstr "ツール(_T)" #: data/ui/sbackup-config.glade:1016 data/ui/sbackup-config.glade:1140 msgid "Set default settings..." msgstr "" #: data/ui/sbackup-config.glade:1037 msgid "Profile Manager..." msgstr "プロファイルマネージャ" #: data/ui/sbackup-config.glade:1058 msgid "Make backup now" msgstr "すぐにバックアップ" #: data/ui/sbackup-config.glade:1079 msgid "_Help" msgstr "ヘルプ(_H)" #: data/ui/sbackup-config.glade:1087 msgid "_View all help topics" msgstr "すべてのヘルプトピックスを表示(_V)" #: data/ui/sbackup-config.glade:1103 msgid "_About this program" msgstr "このプログラムについて(_A)" #: data/ui/sbackup-config.glade:1154 msgid "Reload configuration" msgstr "設定の再読込み" #: data/ui/sbackup-config.glade:1168 msgid "Save configuration" msgstr "設定を保存する" #: data/ui/sbackup-config.glade:1191 msgid "Make a backup now" msgstr "すぐにバックアップする" #: data/ui/sbackup-config.glade:1214 msgid "Open the profile manager" msgstr "プロファイルマネージャを開く" #: data/ui/sbackup-config.glade:1215 msgid "Profiles" msgstr "プロファイル" #: data/ui/sbackup-config.glade:1253 msgid "" "none\n" "gzip\n" "bzip2" msgstr "" "圧縮しない\n" "gzip\n" "bzip2" #: data/ui/sbackup-config.glade:1271 msgid "" "Compression format\n" "Default is set to uncompressed backups." msgstr "" "圧縮フォーマット\n" "初期設定ではバックアップを圧縮しません。" #: data/ui/sbackup-config.glade:1290 data/ui/sbackup-config.glade:1403 msgid "" "You can split the snapshot to make backup on some filesystem that doesn't " "support large files. This functionality can not be used if the backup is " "compressed." msgstr "" "スナップショットを分割することにより大きなファイルをサポートしていないファイルシステムでバックアップを作成することができます。この機能はバックアップの圧縮" "と併用できません。" #: data/ui/sbackup-config.glade:1330 msgid "Do a full backup at least once every" msgstr "完全バックアップを以下の間隔で行う" #: data/ui/sbackup-config.glade:1339 msgid "" "Unless a set number of days has passed since the last full backup, " "incremental backups will be done." msgstr "最後の完全バックアップから設定した日数が経過するまで、増分バックアップを実行します。" #: data/ui/sbackup-config.glade:1356 data/ui/sbackup-config.glade:3015 msgid "days" msgstr "日" #: data/ui/sbackup-config.glade:1370 msgid " " msgstr " " #: data/ui/sbackup-config.glade:1380 data/ui/sbackup-config.glade:2323 msgid "MiB" msgstr "MiB" #: data/ui/sbackup-config.glade:1405 msgid "Split backup archives into several chunks" msgstr "バックアップアーカイブを分割する" #: data/ui/sbackup-config.glade:1438 data/ui/sbackup-config.glade:2627 #: data/ui/sbackup-config.glade:2863 data/ui/sbackup-config.glade:3111 #: data/ui/sbackup-config.glade:3856 msgid "Help" msgstr "ヘルプ" #: data/ui/sbackup-config.glade:1442 data/ui/sbackup-config.glade:2632 msgid "Show help topic about configuration GUI." msgstr "" #: data/ui/sbackup-config.glade:1475 msgid "General" msgstr "全般" #: data/ui/sbackup-config.glade:1495 msgid "Included files and directories" msgstr "バックアップするファイルとフォルダ" #: data/ui/sbackup-config.glade:1570 data/ui/sbackup-config.glade:1818 #: data/ui/sbackup-config.glade:2023 data/ui/sbackup-config.glade:2181 msgid "Remove" msgstr "削除" #: data/ui/sbackup-config.glade:1620 data/ui/sbackup-config.glade:1868 msgid "Add File" msgstr "ファイルを追加" #: data/ui/sbackup-config.glade:1671 data/ui/sbackup-config.glade:1919 msgid "Add Directory" msgstr "フォルダを追加" #: data/ui/sbackup-config.glade:1718 msgid "Include" msgstr "含めるファイル" #: data/ui/sbackup-config.glade:1739 msgid "Excluded files and directories" msgstr "除外するファイルとフォルダ" #: data/ui/sbackup-config.glade:1952 msgid "Paths" msgstr "パス" #: data/ui/sbackup-config.glade:2074 data/ui/sbackup-config.glade:2232 msgid "Add" msgstr "追加" #: data/ui/sbackup-config.glade:2109 msgid "File types" msgstr "ファイルの種類" #: data/ui/sbackup-config.glade:2267 msgid "" "Regular\n" "Expressions" msgstr "正規表現" #: data/ui/sbackup-config.glade:2288 msgid "Do not backup files bigger than" msgstr "これより大きいファイルをバックアップしない" #: data/ui/sbackup-config.glade:2344 msgid "Follow symbolic links" msgstr "シンボリックリンクをたどる" #: data/ui/sbackup-config.glade:2373 msgid "Others" msgstr "その他" #: data/ui/sbackup-config.glade:2400 msgid "Exclude" msgstr "除外するファイル" #: data/ui/sbackup-config.glade:2421 msgid "Use default backup directory" msgstr "初期設定のバックアップフォルダを使用する" #: data/ui/sbackup-config.glade:2446 msgid "/var/backup" msgstr "/var/backup" #: data/ui/sbackup-config.glade:2472 msgid "Use custom local backup directory" msgstr "バックアップ先を指定する" #: data/ui/sbackup-config.glade:2500 msgid "Select the destination folder" msgstr "バックアップ先を指定してください" #: data/ui/sbackup-config.glade:2526 msgid "Use a remote site" msgstr "リモートサイトを使用する" #: data/ui/sbackup-config.glade:2568 msgid "ssh://username:password@example.com/remote/dir/" msgstr "ssh://ユーザ名:パスワード@ホストのアドレス/ディレクトリ名/" #: data/ui/sbackup-config.glade:2580 msgid "Connect..." msgstr "接続..." #: data/ui/sbackup-config.glade:2672 msgid "" "The selected destination is not writeable with current permissions. " "Backups cannot be stored there." msgstr "指定したフォルダには書き込み権限が無いのでバックアップを保存できません。" #: data/ui/sbackup-config.glade:2704 msgid "Destination" msgstr "出力先" #: data/ui/sbackup-config.glade:2725 msgid "_No scheduled backups" msgstr "定期的なバックアップを行わない(_N)" #: data/ui/sbackup-config.glade:2742 msgid "_Simple" msgstr "シンプル(_S)" #: data/ui/sbackup-config.glade:2747 msgid "" "This option will make a backup not at a precise time but when the computer " "is up. " msgstr "このオプションは正確な時刻にバックアップを作成するのではなく、コンピュータが起動しているときに作成します。 " #: data/ui/sbackup-config.glade:2761 msgid "_Custom" msgstr "カスタム(_C)" #: data/ui/sbackup-config.glade:2781 msgid "Do backups" msgstr "バックアップの間隔" #: data/ui/sbackup-config.glade:2798 msgid "Cron time definition" msgstr "" #: data/ui/sbackup-config.glade:2834 msgid "" "hourly\n" "daily\n" "weekly\n" "monthly" msgstr "" "1時間おき\n" "毎日\n" "毎週\n" "毎月" #: data/ui/sbackup-config.glade:2867 msgid "Show help topic about scheduled backups." msgstr "" #: data/ui/sbackup-config.glade:2905 msgid "" "You can configure scheduled (i.e. automated) backups either simply by " "choosing an interval or precisely by a custom cron definition. See \"man 5 " "crontab\" for cron time definition format." msgstr "" #: data/ui/sbackup-config.glade:2937 msgid "Schedule" msgstr "スケジュール" #: data/ui/sbackup-config.glade:2955 msgid "Enable purging of old backups" msgstr "古いバックアップの削除を有効にする" #: data/ui/sbackup-config.glade:2983 msgid "Simple cut-off: Erase all backups older than" msgstr "シンプル: 次の日数が経過したバックアップを削除する" #: data/ui/sbackup-config.glade:3039 msgid "Logarithmic" msgstr "対数的" #: data/ui/sbackup-config.glade:3065 msgid "" "Keep progressively less backups into the past:\n" "Keep all backups from yesterday\n" "Keep one backup per day from last week\n" "Keep one backup per week from last month\n" "Keep one backup per month from last year\n" "Keep one backup per quarter from 2nd last year\n" "Keep one backup per year further into past" msgstr "" "古くなるにつれてバックアップの保存数が少なくなります:\n" "前日のバックアップはすべて保持します\n" "1週間前までのバックアップは1日あたり1個保持します\n" "1月前までのバックアップは1週間あたり1個保持します\n" "1年前までのバックアップは1ヶ月あたり1個保持します\n" "2年前までのバックアップは3ヶ月あたり1個保持します\n" "それよりも前のバックアップは1年あたり1個保持します" #: data/ui/sbackup-config.glade:3116 msgid "Show help topic about purging of backups." msgstr "" #: data/ui/sbackup-config.glade:3152 msgid "" "Note: Additionally all incomplete and irrecoverable backups will be " "erased as long as there is a complete backup snapshot made later on." msgstr "注意: 新しく完全なバックアップが作られた際に、全ての不完全なバックアップは消去されます。" #: data/ui/sbackup-config.glade:3184 msgid "Purging" msgstr "自動削除" #: data/ui/sbackup-config.glade:3186 msgid "Cleaning old backups" msgstr "古くなったバックアップを削除" #: data/ui/sbackup-config.glade:3209 msgid "Logging" msgstr "ログ" #: data/ui/sbackup-config.glade:3234 msgid "Debug is just for debbuging purpose.Info is the recommended setting" msgstr "" #: data/ui/sbackup-config.glade:3236 msgid "Log level" msgstr "ログレベル" #: data/ui/sbackup-config.glade:3248 msgid "Debug is just for debbuging purpose. Info is the recommended setting." msgstr "Debug はあくまでデバッグ向けのもので、推奨される設定は Info です。" #: data/ui/sbackup-config.glade:3274 msgid "Log file directory" msgstr "ログファイル・ディレクトリ" #: data/ui/sbackup-config.glade:3320 msgid "Report by mail" msgstr "メールで報告" #: data/ui/sbackup-config.glade:3350 msgid "From" msgstr "" #: data/ui/sbackup-config.glade:3361 msgid "SMTP server" msgstr "SMTP サーバ" #: data/ui/sbackup-config.glade:3375 data/ui/sbackup-config.glade:4053 msgid "Port" msgstr "ポート" #: data/ui/sbackup-config.glade:3391 msgid "To" msgstr "" #: data/ui/sbackup-config.glade:3478 msgid "Use a username and password" msgstr "ユーザ名とパスワードを使用する" #: data/ui/sbackup-config.glade:3508 data/ui/sbackup-config.glade:4075 msgid "Username" msgstr "ユーザ名" #: data/ui/sbackup-config.glade:3540 data/ui/sbackup-config.glade:4124 msgid "Password" msgstr "パスワード" #: data/ui/sbackup-config.glade:3584 msgid "Use secure connection" msgstr "安全な接続を使用する" #: data/ui/sbackup-config.glade:3615 msgid "Choose a certificate file" msgstr "証明書ファイルを選択してください" #: data/ui/sbackup-config.glade:3629 msgid "Key" msgstr "鍵" #: data/ui/sbackup-config.glade:3645 msgid "Certificate" msgstr "証明書" #: data/ui/sbackup-config.glade:3659 msgid "Choose a key file" msgstr "鍵ファイルを選択してください" #: data/ui/sbackup-config.glade:3731 msgid "Test _mail settings" msgstr "メール設定をテスト(_M)" #: data/ui/sbackup-config.glade:3772 msgid "Report" msgstr "レポート" #: data/ui/sbackup-config.glade:3811 msgid "Warning" msgstr "警告" #: data/ui/sbackup-config.glade:3860 msgid "Show help topic about default values." msgstr "" #: data/ui/sbackup-config.glade:3893 msgid "_Set" msgstr "設定(_S)" #: data/ui/sbackup-config.glade:3935 msgid "Set remote target" msgstr "リモートターゲットを設定" #: data/ui/sbackup-config.glade:3957 msgid "Type of service" msgstr "サービスの種類" #: data/ui/sbackup-config.glade:3997 msgid "Hostname" msgstr "ホスト名" #: data/ui/sbackup-config.glade:4027 msgid "Details" msgstr "詳細" #: data/ui/sbackup-config.glade:4157 msgid "Show password" msgstr "パスワードを表示" #: data/ui/sbackup-config.glade:4217 msgid "_Connect" msgstr "接続(_C)" #: data/ui/sbackup-config.glade:4293 msgid "Make a full backup" msgstr "完全バックアップを作成" #: data/ui/sbackup-legacy-restore.glade:7 msgid "Restore files/directories" msgstr "復元するファイル/フォルダ" #: data/ui/sbackup-legacy-restore.glade:25 msgid "Restore Source Folder" msgstr "復元元フォルダ" #: data/ui/sbackup-legacy-restore.glade:90 msgid "Available backups:" msgstr "利用可能なバックアップ:" #: data/ui/sbackup-legacy-restore.glade:109 msgid "" "Type in this box text like that:\n" "\n" "/home/user/folder - To use a local folder\n" "ssh://user:password@machine:/remote/folder - To use a ssh location\n" "ftp://user:password@machine:/remote/folder - To use a ftp location" msgstr "" #: data/ui/sbackup-legacy-restore.glade:179 msgid "Use custom:" msgstr "カスタム:" #: data/ui/sbackup-legacy-restore.glade:200 msgid "Use default:" msgstr "デフォルト:" #: data/ui/sbackup-legacy-restore.glade:241 msgid "Files and Folders to restore" msgstr "復元するファイル" #: data/ui/sbackup-legacy-restore.glade:345 data/ui/sbackup-restore.glade:782 msgid "Restore" msgstr "復元" #: data/ui/sbackup-legacy-restore.glade:390 msgid "Restore As..." msgstr "別の場所へ" #: data/ui/sbackup-legacy-restore.glade:448 msgid "Restoring, this might take some time ..." msgstr "" #: data/ui/sbackup-legacy-restore.glade:463 msgid "gtk-cancel" msgstr "" #: data/ui/sbackup-restore.glade:38 msgid "Backup destination" msgstr "バックアップフォルダ" #: data/ui/sbackup-restore.glade:52 msgid "Displays the manual in Help browser." msgstr "ヘルプブラウザでマニュアルを表示する" #: data/ui/sbackup-restore.glade:85 msgid "Default profile's destination" msgstr "初期設定のバックアップフォルダ" #: data/ui/sbackup-restore.glade:90 msgid "" "Set backup destination to the place specified in default configuration " "profile" msgstr "初期設定のプロファイルで指定されているバックアップフォルダに設定します" #: data/ui/sbackup-restore.glade:137 msgid "Custom destination" msgstr "カスタム" #: data/ui/sbackup-restore.glade:143 msgid "" "Select a backup destination on your harddisk or at a remote site. Press " "Apply when ready." msgstr "ハードディスクやリモートサイトにあるバックアップフォルダを選択して適用を押してください。" #: data/ui/sbackup-restore.glade:184 msgid "Choose a destination folder. For remote sites fill URI in text field" msgstr "バックアップフォルダを選択します。リモートサイトにある場合はテクストフィールドに URI を入力してください。" #: data/ui/sbackup-restore.glade:201 msgid "Change destination to path specified in left text field" msgstr "左のテキストフィールドで指定したパスにバックアップフォルダを変更します。" #: data/ui/sbackup-restore.glade:266 msgid "Select a bold printed date to get the list of backups for that date." msgstr "太字の日付を選択すると、その日のバックアップ一覧を表示します。" #: data/ui/sbackup-restore.glade:310 msgid "Available backups" msgstr "利用可能なバックアップ" #: data/ui/sbackup-restore.glade:398 msgid "Delete snapshot" msgstr "スナップショットを削除" #: data/ui/sbackup-restore.glade:436 msgid "Delete" msgstr "削除" #: data/ui/sbackup-restore.glade:473 msgid "Snapshot History" msgstr "" #: data/ui/sbackup-restore.glade:499 msgid "Current base:" msgstr "" #: data/ui/sbackup-restore.glade:540 msgid "Select a snapshot on this list to rebase on it." msgstr "" #: data/ui/sbackup-restore.glade:615 msgid "Rebase" msgstr "" #: data/ui/sbackup-restore.glade:666 msgid "Snapshot Management" msgstr "" #: data/ui/sbackup-restore.glade:705 msgid "Snapshot details" msgstr "" #: data/ui/sbackup-restore.glade:770 data/ui/sbackup-restore.glade:787 msgid "Restores files/directories from the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:802 data/ui/sbackup-restore.glade:821 msgid "" "Restores files/directories recursively starting from the base snapshot to " "the selected snapshot" msgstr "" #: data/ui/sbackup-restore.glade:816 msgid "Revert" msgstr "" #: data/ui/sbackup-restore.glade:859 msgid "Restoration Management" msgstr "復元の管理" #: data/ui/sbackup-restore.glade:884 msgid "Export Management" msgstr "" #: data/ui/sbackup-restore.glade:976 msgid "Headline" msgstr "" #: data/ui/sbackup-restore.glade:989 msgid "Content" msgstr "" sbackup-0.11.6/INSTALL0000644000175000017500000000661612216122130012727 0ustar peerpeer*************************** sbackup Installation notes *************************** Installation from binary packages (the easy way) ================================================= Debian Stable aka Wheezy - from downloaded deb-package ------------------------------------------------------- 1. Download binary packages and place in directory of your choice 2. open a terminal, change into above directory and type: sudo dpkg -i sbackup_0.11.6-0~bpo70+1_all.deb \ sbackup-gtk_0.11.6-0~bpo70+1_all.deb \ sbackup-plugins-fuse_0.11.6-0~bpo70+1_all.deb sbackup is now installed on your system and you call execute it from the application menu/overview as usual. When using GNOME-Shell, just type 'Backup' in the Activities Overview. To uninstall sbackup type: sudo apt-get remove sbackup sbackup-gtk sbackup-plugins-fuse This will keep your configuration files Or use: sudo apt-get purge sbackup sbackup-gtk sbackup-plugins-fuse to remove sbackup and its configurations etc. completely. Ubuntu - install from default repositories or include our PPA -------------------------------------------------------------- If you use Ubuntu you can install sbackup by simply typing sudo apt-get install sbackup or using the software center. This will install version 0.11.4 of sbackup on your computer. If you want to use the latest version of sbackup, e.g. in case you are affected by a bug, install from the sbackup team repository (PPA): https://launchpad.net/~nssbackup-team/+archive/ppa 1. add this PPA "ppa:nssbackup-team/ppa" to your system's Software Sources as described here: https://launchpad.net/+help-soyuz/ppa-sources-list.html 2. pull down the latest list of software from each archive (apt-get update) 3. install sbackup by simply typing: sudo apt-get install sbackup To uninstall sbackup type: sudo apt-get remove sbackup sbackup-gtk sbackup-plugins-fuse This will keep your configuration files Or use: sudo apt-get purge sbackup sbackup-gtk sbackup-plugins-fuse to remove sbackup and its configurations etc. completely. Installation from source code ============================== Prerequist ----------- python (>=2.5) pygnome pyglade pynotify gettext python-setuptools pyGTK (>= 2.10) gvfs, gvfs-fuse, gvfs-backends fuse (for fuse plugins) python-pexpect (for ssh fuse plugin) sshfs (for ssh plugin) curlftpfs (for ftp and sftp fuse plugins) Installation ------------- By default, sbackup will be installed under "/usr/local" folder. * Remove previously installed versions (using make or .deb packages) * Install python and python-gnome2 libraries and pynotify. Install gvfs, gvfs-fuse, gvfs-backends or fuse-utils (in case you want to use fuse-plugins): - probably it's already installed in your dist - On Ubuntu: sudo apt-get install gettext python-setuptools sudo apt-get install python-notify fuse-utils python-gnome2 python-glade2 sudo apt-get install python-gtk2 gvfs gvfs-fuse gvfs-backends sudo apt-get install gconf2 desktop-file-utils * Walk into the same directory as this README file * Type: make && sudo make install sudo sbackupconfig Uninstalling ------------- * Walk into the source code directory from where the application was installed * type: sudo make uninstall && make clean && sudo make purge-user-config * this will remove installed files as well as user configurations created * you can now remove the source code folder sbackup-0.11.6/TODO0000644000175000017500000000370412216122130012361 0ustar peerpeer********************** TODO for Simple Backup ********************** see blueprints on https://blueprints.edge.launchpad.net/sbackup Planned for near future ----------------------- * Check how sbackup reacts if it can not get into a folder (FUSE used by a user) * Check filesizes (2 Gb and 4 Gb limits) * manpage * refactor some of the classes: - the Snapshot should only contain data and a SnapshotHandler (maybe the SnapshotManager?) should handle the handling of these data * re-structure handling of profiles: the default profile should be a 'normal' profile beside the other profiles, i.e. it can be disabled etc. This requires some changes in the presentation of profiles to the user but would make the profile handling more general and consistent * adapt log handling: there should exist a 'main' log file in the default directory (e.g. /var/log for super-users) where ALL messages are logged; this file could be self-rotating; furthermore log files for every profile including the default profile are created containing log messages related to this profile especially when making a backup; * extend log handling: among the log files containing a lot of technical informations; there should be some 'end-user' log files containing all important informations related to a profile's backup in a readable and understandable way; this feature is mostly for convenience purpose * implementation of verifying the backuped data * realize PEP 8 style guide for all modules Planned for later releases -------------------------- Features to implement: * encription will be via a FusePlugin , find the fuse encripted FS * Backup media management (via SnapshotManager ) * (Ana)Cron for non root For UI * show forever excluded paths in the GUI (including the backup target dir) * first time wizard * add ability to restore more than one file/folder a time For core * encryption * backup media management * syslog logging * testable system sbackup-0.11.6/scripts/0000755000175000017500000000000012216122133013357 5ustar peerpeersbackup-0.11.6/scripts/sbackup-config-gtk0000755000175000017500000000304712216122133016767 0ustar peerpeer#!/usr/bin/env python # # Simple Backup - Launcher script for configuration GUI # # Copyright (c)2008-2010: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # if __name__ == '__main__': import sys from sbackup.util import system system.set_default_environment() system.set_display_from_session() system.set_gio_env_from_session() from sbackup.util import get_locale_dir, get_locale_domain application = get_locale_domain() locale_dir = get_locale_dir() import gettext gettext.bindtextdomain(application, locale_dir) gettext.textdomain(application) import gtk, gtk.glade gtk.glade.bindtextdomain(application, locale_dir) gtk.glade.textdomain(application) from sbackup.ui.configgui import main main(sys.argv) sbackup-0.11.6/scripts/sbackup-legacy-restore0000755000175000017500000000416412216122133017665 0ustar peerpeer#!/usr/bin/env python # # sbackup - legacy support for restore operation # # Copyright (c)2013: Jean-Peer Lorenz # Copyright (c)2005-2008: Aigars Mahinovs # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Running this command will restore a file or directory from backup. # This is also a backend for Gnome GUI. import os import sys from sbackup import legacy_restore if __name__ == "__main__": # Check for root privileges # if os.getuid() != 0: # print "Root or sudo privileges required!" # sys.exit(1) if len(sys.argv) == 2 and sys.argv[1] == '--gui': legacy_restore.SRestoreGTK() else: r = legacy_restore.SRestore() if len(sys.argv) == 3: ret = r.restore( sys.argv[1], sys.argv[2] ) elif len(sys.argv) == 4: ret = r.restore( sys.argv[1], sys.argv[2], sys.argv[3] ) else: print "sbackup command line restore utility (legacy support)\n" print " Usage: sbackup-legacy-restore BACKUP_PATH FILE_OR_DIR_TO_RESTORE [TARGET_DIR]" print " Note: BACKUP_PATH must include the snapshot subdirectory name, for example:" print " /var/backup/2005-08-09_14.59.38.441112.myhost.ful/" print " Use 'sbackup-legacy-restore --gui' for more ease of use.\n" sys.exit(1) if not ret: print "Restore FAILED! Please check you parameters." sbackup-0.11.6/scripts/sbackup-launch0000644000175000017500000000277512216122133016215 0ustar peerpeer#!/bin/bash # # Simple Backup - service file used by cron/anacron # # Copyright (c)2010: Jean-Peer Lorenz # Copyright (c)2007: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # Do not call this file manually. PATH=/usr/local/bin:/usr/bin:/bin logdir=/var/log/sbackup logfile=$logdir/sbackup-cron.log if ! [ -d $logdir ]; then mkdir -p $logdir fi if [ -x /usr/bin/nice ]; then nicecmd="/usr/bin/nice -n 19" fi # See ionice(1) if [ -x /usr/bin/ionice ]; then #ionicecmd="/usr/bin/ionice -c 2 -n 7 -t" # option -t is not implement in Ubuntu Hardy ionicecmd="/usr/bin/ionice -c 3" fi if [ -x /usr/bin/sbackup ]; then $nicecmd $ionicecmd /usr/bin/sbackup > $logfile 2>&1 elif [ -x /usr/local/bin/sbackup ]; then $nicecmd $ionicecmd /usr/local/bin/sbackup > $logfile 2>&1 fi sbackup-0.11.6/scripts/sbackupconfig.py0000755000175000017500000005751212216122133016564 0ustar peerpeer#! /usr/bin/env python # Simple Backup - post-installation script for upgrading Simple Backup # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # """ :mod:`sbackupupgrade` --- post-installation script for upgrading Simple Backup ============================================================================== .. module:: sbackupupgrade :synopsis: helper script for upgrading sbackup from older versions .. moduleauthor:: Jean-Peer Lorenz This script provides necessary functionality when upgrading SBackup to a new version. Purpose of this script is to be run from the Debian `postinst` script after package update resp. manually after `make install`. Since the package (at least core) is configured when this script runs, we can import modules from sbackup here. """ import sys import traceback import os import pwd import ConfigParser import re import shutil from sbackup.pkginfo import Infos from sbackup.core import ConfigManager from sbackup.util import system # definition of error codes NO_ERRORS = 0 NO_SUPERUSER = 1 GENERAL_ERROR = 9 class _Config(ConfigParser.ConfigParser): """A customized ConfigParser for reading and writing of SBackup configuration files. """ def __init__(self, configfile): """Default constructor. Reads the given file into this parser. :param configfile: Full path to the current configuration file """ ConfigParser.ConfigParser.__init__(self) self._configfile = configfile try: fobj = file(self._configfile, "r") except IOError: print "Unable to open `%s` for reading." % str(self._configfile) else: self.readfp(fobj, self._configfile) fobj.close() def optionxform(self, option): """ Default behaviour of ConfigParser is to set the option keys to lowercase. by overiding this method, we make it case sensitive. that's really important for dirconfig pathes """ return str(option) def commit_to_disk(self): """Writes the current configuration set to the disk. The configuration file given to the constructor is used. """ try: fobj = file(self._configfile, "wb") except IOError: print "Unable to open `%s` for writing." % str(self._configfile) else: ConfigParser.ConfigParser.write(self, fobj) fobj.close() class _Settings(object): """Class containing constants for upgrading the log option. These constants cover - `__logindefs`: path to file ``login.defs`` - `__uidmin_name`: name of entry for minimal uid - `__uidmax_name`: name of entry for maximal uid The constants are accessable using the defined classmethods. """ __logindefs = "/etc/login.defs" __uidmin_name = "UID_MIN" __uidmax_name = "UID_MAX" def __init__(self): pass @classmethod def get_logindefs_path(cls): """Returns the path to the file `login.defs`. """ return cls.__logindefs @classmethod def get_uidmin_name(cls): """Returns the name of the entry for minimal uid. """ return cls.__uidmin_name @classmethod def get_uidmax_name(cls): """Returns the name of the entry for maximal uid. """ return cls.__uidmax_name class _UpgradeAllConffiles(object): """This class encapsulates the upgrading of the log options due to changes in log file naming in release 0.2.0-RC3. In prior releases the log file was named `sbackup.log`. With release 0.2.0-RC3 this has changed. From now the log file for the default profile is named `sbackup.log` and log files for any other profiles are named `sbackup-profilename.log`. This was neccessary due to problems with identical names of log files. """ def __init__(self): """Constructor of the log option upgrader. """ self._min_uid = 1000 # fallback values self._max_uid = 60000 self._users = [] self._configdirs = [] reexp_templ = "^%s[ \t]+(\d+)$" self._reexp_min_uid = re.compile(reexp_templ % _Settings.get_uidmin_name(), re.IGNORECASE) self._reexp_max_uid = re.compile(reexp_templ % _Settings.get_uidmax_name(), re.IGNORECASE) def __repr__(self): _repr = ["min uid: %s" % self._min_uid, "max uid: %s" % self._max_uid, "users: %s" % self._users, "config dirs: %s" % self._configdirs ] return "\n".join(_repr) def _read_logindefs(self): """Reads the lower and upper limit for user ids from the `login.defs` file. """ defspath = _Settings.get_logindefs_path() if os.path.isfile(defspath) and os.access(defspath, os.F_OK and os.R_OK): eof = False try: defsfile = file(defspath, "r") while not eof: defsline = defsfile.readline() if defsline == "": eof = True else: defsline = defsline.strip() match = self._reexp_min_uid.search(defsline) if match is not None: self._min_uid = int(match.group(1)) match = self._reexp_max_uid.search(defsline) if match is not None: self._max_uid = int(match.group(1)) except IOError: print "Error while reading definitions from '%s'. "\ "Using defaults." % (defspath) else: defsfile.close() else: print "Unable to read definitions from '%s'. "\ "Using defaults." % (defspath) def _retrieve_users(self): """Retrieves all users from the password database that are apparently not system services (using the `uid_min` and `uid_max` for this). """ self._users = [] allpw = pwd.getpwall() for cpw in allpw: try: uid = cpw.pw_uid except KeyError: continue if uid >= self._min_uid and uid <= self._max_uid: self._users.append(cpw) def _make_configdir_list(self): """Creates a list containing all basic configuration directories of the previously retrieved users. This includes in any case the default configuration directory `/etc`. :note: It is assumed that user configurations are stored in a\ directory like `~/.config/sbackup`. :todo: Implement a better way for retrieval of user's confdirs e.g.\ by reading the users environ! """ self._configdirs = [] # for the superuser self._configdirs.append(ConfigManager.\ ConfigManagerStaticData.get_superuser_confdir()) # for the other users for user in self._users: try: wdir = user.pw_dir except KeyError: continue wdir = os.path.join(wdir, ConfigManager.ConfigManagerStaticData.get_user_confdir_template()) self._configdirs.append(wdir) class CopyConf_nssbackup_to_sbackup_011(_UpgradeAllConffiles): def __init__(self): _UpgradeAllConffiles.__init__(self) def _mk_dir(self, dst, src): if not os.path.exists(dst): print "`%s` is being created" % dst os.mkdir(dst) _stats = os.stat(src) os.chown(dst, _stats.st_uid, _stats.st_gid) os.chmod(dst, _stats.st_mode) def _copy_default_profile(self): for cdir in self._configdirs: cdir_nssb = cdir.replace("sbackup", "nssbackup") if os.path.isdir(cdir_nssb) and os.access(cdir_nssb, os.F_OK and os.R_OK): self._mk_dir(cdir, cdir_nssb) cfile_src = os.path.join(cdir_nssb, "nssbackup.conf") cfile_dst = os.path.join(cdir, ConfigManager.ConfigManagerStaticData.get_default_conffile()) self._copy_configfile(cfile_src, cfile_dst) def _copy_other_profiles(self): """Modifies the configuration files for the other profiles. """ for cdir in self._configdirs: pdir = os.path.join(cdir, ConfigManager.ConfigManagerStaticData.get_profiles_dir()) cdir_nssb = cdir.replace("sbackup", "nssbackup") pdir_nssb = os.path.join(cdir_nssb, ConfigManager.ConfigManagerStaticData.get_profiles_dir_nssbackup()) # get the profile directory for current configuration directory if os.path.isdir(pdir_nssb) and\ os.access(pdir_nssb, os.F_OK and os.R_OK): # and get the profiles from the profiles directory self._mk_dir(pdir, pdir_nssb) profiles_nssb = ConfigManager.get_profiles_nssbackup(pdir_nssb) for cprof in profiles_nssb: _src = profiles_nssb[cprof][0] _pname = os.path.basename(_src) _dst = os.path.join(pdir, "sbackup%s" % (_pname.lstrip("nssbackup"))) self._copy_configfile(_src, _dst) def _copy_configfile(self, src, dst): """This method modifies a single configuration file, i.e. * it reads the existing value from the file * retrieves the new value under consideration of the profile name * writes the new value to the configuration file. Files that are not readable/writable are skipped. """ if os.path.isfile(src) and\ os.access(src, os.F_OK and os.R_OK): print "checking nssbackup config for copy: %s" % src if os.path.exists(dst): print " `%s` already exists. Nothing to do." % dst else: print " copy nssbackup configuration" print " from `%s`" % (src) print " to `%s`" % (dst) try: shutil.copy2(src, dst) _stats = os.stat(src) os.chown(dst, _stats.st_uid, _stats.st_gid) os.chmod(dst, _stats.st_mode) except (OSError, IOError), error: print "failed (%s)" % error def do_upgrade(self): """Public method that actually processes the upgrade consisting of the following steps: 1. Reading the login defaults for determination of non-system users 2. Retrieve all users on the system 3. Make a list of all configuration directories for these users 4. modify the default profile configuration file 5. modify the configuration files for any other profiles. An appropriate error code is returned. """ self._read_logindefs() self._retrieve_users() self._make_configdir_list() # keep order of method calls due to directory creation self._copy_default_profile() self._copy_other_profiles() class UpgradeConfAllProfiles(_UpgradeAllConffiles): """This class encapsulates the upgrading of the log options due to changes in log file naming in release 0.2.0-RC3. In prior releases the log file was named `sbackup.log`. With release 0.2.0-RC3 this has changed. From now the log file for the default profile is named `sbackup.log` and log files for any other profiles are named `sbackup-profilename.log`. This was neccessary due to problems with identical names of log files. """ def __init__(self): """Constructor of the log option upgrader. """ _UpgradeAllConffiles.__init__(self) def _modify_default_profile(self): """Modifies the configuration file for the default profile. """ for cdir in self._configdirs: cfile = os.path.join(cdir, ConfigManager.ConfigManagerStaticData.get_default_conffile()) self._modify_configfile(cfile) def _modify_other_profiles(self): """Modifies the configuration files for the other profiles. """ for cdir in self._configdirs: pdir = os.path.join(cdir, ConfigManager.ConfigManagerStaticData.get_profiles_dir()) # get the profile directory for current configuration directory if os.path.isdir(pdir) and\ os.access(pdir, os.F_OK and os.R_OK and os.W_OK): # and get the profiles from the profiles directory profiles = ConfigManager.get_profiles(pdir) for cprof in profiles: cconf = profiles[cprof][0] self._modify_configfile(cconf) def _modify_configfile(self, conffile): """This method modifies a single configuration file, i.e. * it reads the existing value from the file * retrieves the new value under consideration of the profile name * writes the new value to the configuration file. Files that are not readable/writable are skipped. """ if os.path.isfile(conffile) and\ os.access(conffile, os.F_OK and os.R_OK and os.W_OK): print "checking file: %s" % conffile config = _Config(conffile) _default_config = ConfigManager.get_default_config_obj() if config.has_section("log"): if config.has_option("log", "file"): logfile = config.get("log", "file") logdir = os.path.dirname(logfile) new_logfn = ConfigManager.get_logfile_name_template(conffile) new_log = os.path.join(logdir, new_logfn) if logfile == new_log: print " nothing to do. skipped" else: print " changing log file option" print " from `%s`" % (logfile) print " to `%s`" % (new_log) config.set("log", "file", str(new_log)) else: config.set("log", "file", os.path.join(_default_config.get_logdir(), ConfigManager.get_logfile_name_template(conffile))) print " no log file specified. Default value set" if not config.has_option("log", "level"): config.set("log", "level", _default_config.get_loglevel()) print " no log level specified. Default value set" else: config.add_section("log") config.set("log", "file", os.path.join(_default_config.get_logdir(), ConfigManager.get_logfile_name_template(conffile))) config.set("log", "level", _default_config.get_loglevel()) print " no section `log` found. Default values set" config.commit_to_disk() if config.has_section("general"): # remove old backuplinks options - it's now always done. if config.has_option("general", "backuplinks"): print " Removing backuplinks option (not needed anymore)" config.remove_option("general", "backuplinks") config.commit_to_disk() def do_upgrade(self): """Public method that actually processes the upgrade consisting of the following steps: 1. Reading the login defaults for determination of non-system users 2. Retrieve all users on the system 3. Make a list of all configuration directories for these users 4. modify the default profile configuration file 5. modify the configuration files for any other profiles. An appropriate error code is returned. """ try: self._read_logindefs() self._retrieve_users() self._make_configdir_list() self._modify_default_profile() self._modify_other_profiles() except Exception, error: print "Error while upgrading profiles: %s" % error traceback.print_exc() class CronSetter(object): """Reads schedule info from superuser's default profile and write according cron entries. Purpose is to re-create cron entries after package upgrades (i.e. when configurations already exist). """ def __init__(self): pass def do_upgrade(self): """Public method that performs the setting. Returns always `NO_ERRORS` as exit code. """ if system.is_superuser(): try: print "Reading schedule info from superuser's default profile" _conffilehdl = ConfigManager.ConfigurationFileHandler() _defconffile = _conffilehdl.get_default_conffile_fullpath() print "Configuration: `%s`" % _defconffile if os.path.exists(_defconffile): _conf = ConfigManager.ConfigManager(_defconffile) _conf.write_schedule() except Exception, error: print "Error while writing CRON settings: %s" % error traceback.print_exc() else: print "Operation requires root privileges" class UpgradeSBackupConf_v010_011(object): """Reads schedule info from superuser's default profile and write according cron entries. Purpose is to re-create cron entries after package upgrades (i.e. when configurations already exist). """ def __init__(self): self._conffile = None self._valid_opts = ConfigManager.ConfigManagerStaticData.get_our_options() def _query_default_conffile(self): print "Reading schedule info from superuser's default profile" _conffilehdl = ConfigManager.ConfigurationFileHandler() _defconffile = _conffilehdl.get_default_conffile_fullpath() print "Configuration: `%s`" % _defconffile self._conffile = _defconffile if not os.path.exists(self._conffile): self._conffile = None def _make_conffile_backup(self): _bakf = "%s.before_upgrade_to_v011.bak" % self._conffile if not os.path.exists(_bakf): shutil.copy2(self._conffile, _bakf) def _clean_opts(self): print "Validating config file: %s" % self._conffile _mod = False if (self._valid_opts is None): return _conf = _Config(self._conffile) for section in _conf.sections(): for key in _conf.options(section): if (not self._valid_opts.has_key(section)): _conf.remove_section(section) _mod = True print "Section [%(section)s] in '%(configfile)s' should not exist. Removed."\ % {'section': section, 'configfile' : self._conffile} if (self._valid_opts[section].has_key(key) or self._valid_opts[section].has_key('*')): continue _conf.remove_option(section, key) _mod = True print "Option '%s' in section '%s' in file '%s' is not known. Removed."\ % (key, section, self._conffile) if _mod: _conf.commit_to_disk() def _update_compress_format(self): print "Updating config file: %s" % self._conffile _conf = _Config(self._conffile) if _conf.has_option("general", "format"): _compr = _conf.get("general", "format") if str(_compr) == "1": # sbackup < 0.11 compatibility hack _compr = "gzip" _conf.set("general", "format", _compr) _conf.commit_to_disk() def _update_schedule(self): _conf = ConfigManager.ConfigManager(self._conffile) if not _conf.has_section("schedule") \ or (not _conf.has_option("schedule", "cron") \ and not _conf.has_option("schedule", "anacron")): _sched = _conf.get_schedule_and_probe() if _sched is not None: # entry in cron.* found that is not stored in conf file print "Schedule found on FS: %s" % str(_sched) _ctype = _sched[0] _cexpr = _sched[1] assert _ctype in ConfigManager.SCHEDULE_TYPES, "Given schedule type `%s` is invalid" % _ctype assert (_cexpr is not None) and (_cexpr != "None"), \ "Given cron expression `%s` is invalid" % _cexpr _conf.setSchedule(_ctype, _cexpr) _conf.saveConf() def do_upgrade(self): """Public method that performs the setting. Returns always `NO_ERRORS` as exit code. """ if system.is_superuser(): try: self._query_default_conffile() if self._conffile is not None: self._make_conffile_backup() self._clean_opts() self._update_compress_format() self._update_schedule() except Exception, error: print "Error while upgrading configuration 0.10 to 0.11: %s" % error traceback.print_exc() else: print "Operation requires root privileges" class UpgradeApplication(object): """The upgrade application class that instantiates several upgrade action classes and processes them. Due to this design one can simply add and execute further upgrade actions. """ def __init__(self): """Default constructor. Creates an `UpgradeLogOption` object. """ self.__upgrader_v010 = UpgradeSBackupConf_v010_011() self.__upgrader_v011 = UpgradeConfAllProfiles() self.__cron_setter = CronSetter() self.__nssbackup_configs = CopyConf_nssbackup_to_sbackup_011() def main(self): """Main method that actually does the upgrade process. It returns an appropriate error code. """ print "-" * 60 print "%s %s upgrade tool" % (Infos.NAME, Infos.VERSION) print "-" * 60 if not system.is_superuser(): print "Upgrade script must be run with root privileges!" retcode = NO_SUPERUSER else: retcode = NO_ERRORS self.__upgrader_v010.do_upgrade() self.__nssbackup_configs.do_upgrade() self.__upgrader_v011.do_upgrade() self.__cron_setter.do_upgrade() return retcode if __name__ == "__main__": try: _UPGRADER = UpgradeApplication() RETC = _UPGRADER.main() except: print "errors occurred:" traceback.print_exc() RETC = GENERAL_ERROR if RETC == NO_ERRORS: print "successful finished." sys.exit(RETC) sbackup-0.11.6/scripts/sbackup-indicator0000755000175000017500000000666112216122133016720 0ustar peerpeer#!/usr/bin/env python # # Simple Backup - Launcher script for indicator application (status icon) # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA def parse_cmdline(argv): import optparse from sbackup.pkginfo import Infos from sbackup.util import constants usage = "Usage: %prog [options] (use -h or --help for more infos)" version = "%prog " + Infos.VERSION prog = constants.INDICATORAPP_FILE parser = optparse.OptionParser(usage = usage, version = version, prog = prog) parser.add_option("--keep-alive", action = "store_true", dest = "keep_alive", default = False, help = "don't terminate indicator if no backup/D-Bus service is present") parser.add_option("--legacy", action = "store_true", dest = "legacy_appindicator", default = False, help = "use legacy status icon instead of `libappindicator`") (options, args) = parser.parse_args(argv[1:]) if len(args) != 0: parser.error("Unknown argument given") return options if __name__ == '__main__': import sys import os from sbackup.util import system from sbackup.util import system system.set_default_environment() system.set_display_from_session() system.set_gio_env_from_session() options = parse_cmdline(sys.argv) os.nice(5) appindicator_avail = False _session_user = system.get_user_from_env() if system.is_superuser(): print "Indicator application was started as superuser (EUID=0).\n"\ "Now dropping privileges (to user '%s')." % _session_user system.switch_user(uid_name = _session_user) if system.get_user_from_uid() != _session_user: print "Unable to launch indicator application as current user.\n"\ "You must own current desktop session." sys.exit(1) from sbackup.util import get_locale_dir, get_locale_domain application = get_locale_domain() locale_dir = get_locale_dir() import gettext gettext.bindtextdomain(application, locale_dir) gettext.textdomain(application) import gtk.glade gtk.glade.bindtextdomain(application, locale_dir) gtk.glade.textdomain(application) try: import appindicator appindicator_avail = True except ImportError: appindicator_avail = False if options.legacy_appindicator is True: from sbackup.ui.indicator_legacy import main else: if appindicator_avail: from sbackup.ui.indicator import main else: print "Unable to use `libappindicator`. Falling back to legacy status icon." from sbackup.ui.indicator_legacy import main exitcode = main(options) sys.exit(exitcode) sbackup-0.11.6/scripts/sbackup-progress0000755000175000017500000000251012216122133016575 0ustar peerpeer#!/usr/bin/env python # # Simple Backup - TAR checkpoint action over DBus # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import os import dbus tar_checkpoint_str = os.environ['TAR_CHECKPOINT'] try: _system_bus = dbus.SystemBus() remote_obj = _system_bus.get_object("org.sbackupteam.SimpleBackup", "/SBackupProcess") except dbus.DBusException: remote_obj = None if remote_obj is not None: remote_obj.emit_progress_signal(tar_checkpoint_str, dbus_interface = "org.sbackupteam.SimpleBackup.SBackupDbusInterface") sbackup-0.11.6/scripts/sbackup-restore-gtk0000755000175000017500000000304712216122133017205 0ustar peerpeer#!/usr/bin/env python # # Simple Backup - Launcher script for restoration GUI # # Copyright (c)2008-2010: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # if __name__ == '__main__': import sys from sbackup.util import system system.set_default_environment() system.set_display_from_session() system.set_gio_env_from_session() from sbackup.util import get_locale_dir, get_locale_domain application = get_locale_domain() locale_dir = get_locale_dir() import gettext gettext.bindtextdomain(application, locale_dir) gettext.textdomain(application) import gtk, gtk.glade gtk.glade.bindtextdomain(application, locale_dir) gtk.glade.textdomain(application) from sbackup.ui.restoregui import main main(sys.argv) sbackup-0.11.6/scripts/sbackup-dbusservice0000755000175000017500000000256612216122133017262 0ustar peerpeer#!/usr/bin/env python # # Simple Backup - Launcher script for DBus System Service # # Copyright (c)2009-2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # if __name__ == '__main__': import sys from sbackup.util import get_locale_dir, get_locale_domain application = get_locale_domain() locale_dir = get_locale_dir() import gettext gettext.bindtextdomain(application, locale_dir) gettext.textdomain(application) #TODO: how can we drop the privileges here? Environment is cleared. # from sbackup.util.system import drop_privileges # drop_privileges() from sbackup.dbus_service import run retc = run(sys.argv) sys.exit(retc) sbackup-0.11.6/scripts/sbackup-run0000755000175000017500000000272112216122133015541 0ustar peerpeer#!/usr/bin/env python # # Simple Backup - Launcher script for actual backup application # # Copyright (c)2008-2010: Jean-Peer Lorenz # Copyright (c)2007-2009: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # if __name__ == '__main__': import sys from sbackup.util import system system.set_default_environment() system.set_display_from_session() system.set_gio_env_from_session() from sbackup.util import get_locale_dir, get_locale_domain application = get_locale_domain() locale_dir = get_locale_dir() import gettext gettext.bindtextdomain(application, locale_dir) gettext.textdomain(application) from sbackup.backupproc import main retc = main(sys.argv) sys.exit(retc) sbackup-0.11.6/scripts/multipleTarScript0000755000175000017500000000622412216122133017000 0ustar peerpeer#!/usr/bin/env python # Simple Backup - helper script for multiple volume backups # # Copyright (c)2010: Jean-Peer Lorenz # Copyright (c)2007-2008: Ouattara Oumar Aziz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # import sys import os import re TAR_BLOCKSIZE = 512 output = sys.stderr name = "files" archRE = re.compile("(.+?/)?files(-[0-9]+)*?\.tar") def publish_progress(checkpoint): """Remove duplicated code (see `sbackup-progress`) """ import dbus tar_checkpoint_str = str(checkpoint) try: _system_bus = dbus.SystemBus() remote_obj = _system_bus.get_object("org.sbackupteam.SimpleBackup", "/SBackupProcess") except dbus.DBusException: remote_obj = None if remote_obj is not None: remote_obj.emit_progress_signal(tar_checkpoint_str, dbus_interface = "org.sbackupteam.SimpleBackup.SBackupDbusInterface") if __name__ == '__main__': _vol = int(os.getenv("TAR_VOLUME")) arch = os.getenv("TAR_ARCHIVE") subcommand = os.getenv("TAR_SUBCOMMAND") m = archRE.match(arch) if arch == "-": # stdin/stdout raise Exception("Multiple archives from/to stdin/stdout are not supported") elif m and m.group(1): path = m.group(1) os.environ["TAR_ARCHIV_PATH"] = path else: raise Exception("The name of the archive must meet '(+*?)/files.tar' : %s found" % arch) origPath = os.getenv("TAR_ARCHIV_PATH", "") try: _splitsize = os.getenv("SBACKUP_VOLUME_SIZE") if _splitsize is not None: _splitsize = int(_splitsize) _blockfac = int(os.getenv("TAR_BLOCKING_FACTOR")) _chkpt = ((_vol - 1) * _splitsize) / (_blockfac * TAR_BLOCKSIZE) publish_progress(_chkpt) except Exception, error: output.write("Error while publishing progress: %s" % error) # output.write("Preparing volume no. %s of `%s`\n" % (_vol, name)) next_vol_path = "%s%s%s-%s.tar" % (origPath.rstrip(os.sep), os.sep, name.strip(os.sep), _vol) if subcommand in ["-d", "-x", "-t"]: if os.path.exists(next_vol_path): fd = os.getenv("TAR_FD") os.write(int(fd), next_vol_path) else: raise Exception ("The file `%s` that was asked doesn't exist" % next_vol_path) elif subcommand == "-c": fd = os.getenv("TAR_FD") os.write(int(fd), next_vol_path) else: pass sys.exit(0) sbackup-0.11.6/scripts/sbackup-terminate0000755000175000017500000000463612216122133016734 0ustar peerpeer#!/usr/bin/env python # # Simple Backup - helper script for terminating a running backup # # Copyright (c)2010: Jean-Peer Lorenz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import os import sys import optparse import signal import subprocess INTERPRETER = "python" BACKUP_COMMAND = "sbackup" BACKUP_CANCEL_SIG = signal.SIGUSR1 def is_sbackup(pid): """Static copy of a function originally defined in module `system`. The function is not imported in order to ease testing (customized pythonpath is not available when using `gksu`). """ _res = False pid = str(pid) _output = subprocess.Popen(["ps", "--no-headers", "-f", "--pid", pid], stdout = subprocess.PIPE).communicate()[0] _output = _output.strip() if (INTERPRETER in _output) and (BACKUP_COMMAND in _output): _res = True return _res def parse_cmdline(argv): usage = "Usage: %prog PID (use -h or --help for more infos)" prog = "sbackup-terminate" parser = optparse.OptionParser(usage = usage, prog = prog) (options, args) = parser.parse_args(argv[1:]) if len(args) != 1: parser.error("You must provide a Process ID as argument") try: pid = int(args[0]) except ValueError: parser.error("Given PID is invalid") if pid <= 1: parser.error("Given PID is invalid") if not is_sbackup(pid): parser.error("Given PID does not belong to `%s`" % BACKUP_COMMAND) return pid if __name__ == "__main__": _excode = 0 pid = parse_cmdline(sys.argv) try: os.kill(pid, BACKUP_CANCEL_SIG) except OSError, error: print "Unable to send signal to process %s: %s" % (pid, error) _excode = 1 sys.exit(_excode) sbackup-0.11.6/AUTHORS0000644000175000017500000000065512216122133012746 0ustar peerpeerMaintainers: Jean-Peer Lorenz Oumar Aziz Ouattara Former maintainers: Aigars Mahinovs Jonh Wendell Contributors: Martin Schaaf Florian Achleitner Andreas Sliwka Rogach (platon7pronko) Felix Griewald (tiiunder) Marc Deslauriers Thibault Godouet Anton Feenstra Derek Ditch Bernd Wurst Simon Déziel drakosha bytebybyte Marcel Stimberg Oliver Gerlich Thanks to all Launchpad translators. sbackup-0.11.6/README0000644000175000017500000000215212216122133012550 0ustar peerpeerInstall ======= 1. Remove previously installed versions (using make or .deb packages) 2. install dependencies 3. make && sudo make install 4. sudo sbackupconfig See INSTALL file for more information. Uninstall ========= To remove a prior installation of Simple Backup Suite and all user configuration files: sudo make uninstall && sudo make clean && sudo make purge-user-config Configuration Hint =================== Follow links ------------ use the option in general->backuplinks=1 to activate and general->backuplinks=0 to deactivate. See the example configuration file for more infos. Notes on Upgrade to 0.2.0-RC3 ============================= In RC3 the naming convention of log files was changed. To change the names of the log files in your configuration files you have 2 possibilities: * run 'sudo sbackupconfig' afterwards you've installed Simple Backup or * open each of your profiles in 'Simple Backup configuration' and afterwards save them again. Please note: your configuration files are modified automatically if you install Simple Backup from software packages (PPA) during the installation.