Repository: ztefn/haguichi Branch: master Commit: 00c5d400892f Files: 102 Total size: 1.0 MB Directory structure: gitextract_tecnxzld/ ├── AUTHORS ├── INSTALL.md ├── LICENSE ├── README.md ├── com.github.ztefn.haguichi.json ├── data/ │ ├── com.github.ztefn.haguichi.desktop.in.in │ ├── com.github.ztefn.haguichi.gresource.xml │ ├── com.github.ztefn.haguichi.gschema.xml │ ├── com.github.ztefn.haguichi.metainfo.xml.in.in │ ├── icons/ │ │ └── meson.build │ ├── meson.build │ ├── stylesheets/ │ │ ├── base.css │ │ ├── elementary-dark.css │ │ ├── elementary.css │ │ ├── style-dark.css │ │ ├── style-hc.css │ │ └── style.css │ └── ui/ │ ├── dialogs/ │ │ ├── add-edit-command.ui │ │ ├── attach.ui │ │ ├── change-access.ui │ │ ├── change-password.ui │ │ └── join-create-network.ui │ ├── menus/ │ │ ├── member-menu.ui │ │ ├── network-list-menu.ui │ │ └── network-menu.ui │ ├── network-list.ui │ ├── preferences.ui │ ├── shortcuts-dialog.ui │ ├── shortcuts-window.ui │ ├── sidebar.ui │ ├── widgets/ │ │ ├── command-entry-row.ui │ │ ├── command-variable-button.ui │ │ ├── commands-editor-row.ui │ │ ├── commands-editor.ui │ │ ├── network-list-item.ui │ │ ├── sidebar-page.ui │ │ └── sidebar-row.ui │ └── window.ui ├── meson.build ├── meson.options ├── po/ │ ├── LINGUAS │ ├── POTFILES │ ├── README.md │ ├── ast.po │ ├── bg.po │ ├── cs.po │ ├── de.po │ ├── es.po │ ├── fi.po │ ├── fr.po │ ├── haguichi.pot │ ├── hu.po │ ├── id.po │ ├── it.po │ ├── ja.po │ ├── kk.po │ ├── lt.po │ ├── meson.build │ ├── nl.po │ ├── pl.po │ ├── pt.po │ ├── pt_BR.po │ ├── ru.po │ ├── sk.po │ ├── sv.po │ ├── tr.po │ └── uk.po └── src/ ├── application.vala ├── bubble.vala ├── command.vala ├── config.vala.in ├── connection.vala ├── controller.vala ├── custom-command.vala ├── dialogs/ │ ├── add-edit-command.vala │ ├── attach.vala │ ├── change-access.vala │ ├── change-password.vala │ ├── confirm.vala │ └── join-create-network.vala ├── hamachi.vala ├── indicator.vala ├── inhibitor.vala ├── member-event.vala ├── member.vala ├── meson.build ├── network-list.vala ├── network.vala ├── preferences.vala ├── session.vala ├── sidebar.vala ├── status-notifier-item.vala ├── status.vala ├── utils.vala ├── widgets/ │ ├── command-entry-row.vala │ ├── command-variable-button.vala │ ├── commands-editor-row.vala │ ├── commands-editor.vala │ ├── sidebar-page.vala │ ├── sidebar-row.vala │ └── throbber.vala └── window.vala ================================================ FILE CONTENTS ================================================ ================================================ FILE: AUTHORS ================================================ Stephen Brandt ================================================ FILE: INSTALL.md ================================================ Building & Installing Haguichi ============================== Dependencies ------------ The following development packages are required to build Haguichi: * gettext * meson (>= 1.3.0) * valac (>= 0.56) * gee-0.8 (>= 0.20.6) * glib-2.0 (>= 2.80) * gtk4 (>= 4.14) * libadwaita-1 (>= 1.5) * libportal (>= 0.7.1) * libportal-gtk4 (>= 0.7.1) On **Debian based distributions** you can install these packages by running the following command: $ sudo apt install build-essential gettext meson valac libgee-0.8-dev libglib2.0-dev libgtk-4-dev libadwaita-1-dev libportal-dev libportal-gtk4-dev On **Fedora** you can install these packages by running the following command: $ sudo dnf install gettext meson vala libgee-devel gtk4-devel libadwaita-devel libportal-devel libportal-gtk4-devel Build options ------------- **for-elementary** This option enables elementary OS integration and additionally requires the *granite-7* development package. $ meson configure -Dfor-elementary=true **for-ubuntu** This option enables Ubuntu integration by installing Yaru style application icons. $ meson configure -Dfor-ubuntu=true Building -------- To build Haguichi, run the following commands: $ mkdir build && cd build $ meson setup .. $ ninja Installing ---------- After Haguichi has been built, run the following command to install it: $ sudo ninja install ================================================ FILE: LICENSE ================================================ 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. Copyright (C) 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: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, 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 . ================================================ FILE: README.md ================================================ [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua) [![Translation status](https://hosted.weblate.org/widget/haguichi/svg-badge.svg)](https://hosted.weblate.org/engage/haguichi/)

Haguichi logo
Haguichi

Provides a graphical frontend for Hamachi on Linux

Screenshot
Links ----- * [Homepage](https://haguichi.net) * [Download](https://haguichi.net/download/) * [Bug tracker](https://github.com/ztefn/haguichi/issues) Features -------- * Searchable, sortable and collapsible network list * Sidebar for easy access to details and actions * Indicator support for quick access to primary actions * Desktop notifications to stay up to date of network events * Commands that can be completely customized * Backup and restore of your Hamachi configuration folder Translations ------------ You can help translate Haguichi via [Weblate](https://hosted.weblate.org/engage/haguichi/) or by using your favorite PO file editor and then opening a [pull request](https://github.com/ztefn/haguichi/pulls) to merge your changes. Donations --------- Support development by making a donation! You can donate any amount you wish via [PayPal](https://www.paypal.me/ztefn). License ------- Copyright © 2007–2026 Stephen Brandt Haguichi is free software: 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. Haguichi 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. ================================================ FILE: com.github.ztefn.haguichi.json ================================================ { "app-id": "com.github.ztefn.haguichi", "runtime": "org.gnome.Platform", "runtime-version": "50", "sdk": "org.gnome.Sdk", "sdk-extensions": [ "org.freedesktop.Sdk.Extension.vala" ], "build-options": { "append-path": "/usr/lib/sdk/vala/bin", "prepend-ld-library-path": "/usr/lib/sdk/vala/lib" }, "command": "haguichi", "finish-args": [ "--device=dri", "--filesystem=/var/lib/logmein-hamachi:ro", "--system-talk-name=org.freedesktop.login1", "--talk-name=org.freedesktop.Flatpak", "--talk-name=org.kde.StatusNotifierWatcher", "--share=network", "--share=ipc", "--socket=fallback-x11", "--socket=wayland" ], "cleanup": [ "/include", "/lib/girepository-1.0", "/lib/pkgconfig", "/share/gir-1.0", "/share/vala" ], "modules": [ { "name": "libportal", "buildsystem": "meson", "config-opts": [ "-Dbackend-gtk3=disabled", "-Dbackend-gtk4=enabled", "-Dbackend-qt5=disabled", "-Dbackend-qt6=disabled", "-Ddocs=false", "-Dtests=false" ], "sources": [ { "type": "archive", "url": "https://github.com/flatpak/libportal/releases/download/0.9.1/libportal-0.9.1.tar.xz", "sha256": "de801ee349ed3c255a9af3c01b1a401fab5b3fc1c35eb2fd7dfb35d4b8194d7f" } ] }, { "name": "haguichi", "buildsystem": "meson", "sources": [ { "type": "dir", "path": "." } ] } ] } ================================================ FILE: data/com.github.ztefn.haguichi.desktop.in.in ================================================ [Desktop Entry] Type=Application # Name used for display in application launchers. Name=Haguichi # Generic name used for display in some application launchers like Kickoff in KDE Plasma. GenericName=Hamachi Network Manager Exec=@BINARY_NAME@ Terminal=false # Description used for display in application launchers. Comment=Manage your Hamachi networks Icon=@APP_ID@ Categories=GNOME;GTK;Network;P2P; # Keywords used for search in application launchers and software centers. Keywords=LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend; StartupNotify=true X-GNOME-UsesNotifications=true ================================================ FILE: data/com.github.ztefn.haguichi.gresource.xml ================================================ base.css elementary.css elementary-dark.css style.css style-dark.css style-hc.css ui/dialogs/add-edit-command.ui ui/dialogs/attach.ui ui/dialogs/change-access.ui ui/dialogs/change-password.ui ui/dialogs/join-create-network.ui ui/menus/member-menu.ui ui/menus/network-list-menu.ui ui/menus/network-menu.ui ui/network-list.ui ui/preferences.ui ui/shortcuts-dialog.ui ui/shortcuts-window.ui ui/sidebar.ui ui/widgets/command-entry-row.ui ui/widgets/command-variable-button.ui ui/widgets/commands-editor.ui ui/widgets/commands-editor-row.ui ui/widgets/network-list-item.ui ui/widgets/sidebar-row.ui ui/widgets/sidebar-page.ui ui/window.ui ================================================ FILE: data/com.github.ztefn.haguichi.gschema.xml ================================================ 3 true true true ['true;true;_Browse Shares;%FILEMANAGER smb://%A/;%FILEMANAGER smb://[%A]/;IPv4', 'true;false;_View Remote Desktop;%REMOTEDESKTOP %A;%REMOTEDESKTOP [%A];IPv4', 'true;false;_Ping;%TERMINAL ping %A;%TERMINAL ping6 %A;IPv4', 'false;false;_SSH;%TERMINAL ssh %A;%TERMINAL ssh %A;IPv4'] 'auto' 'auto' 'www.google.com' '8.8.8.8' '%USERNAME' 'both' 30 30 [] [] true 'name' true true true true true 'dark' 466 true 582 ================================================ FILE: data/com.github.ztefn.haguichi.metainfo.xml.in.in ================================================ @APP_ID@ CC0 GPL-3.0-or-later @APP_NAME@ Manage your Hamachi networks

Haguichi makes it a breeze to join, create and administer Hamachi networks.

Features:

  • Searchable, sortable and collapsible network list
  • Sidebar for easy access to details and actions
  • Indicator support for quick access to primary actions
  • Desktop notifications to stay up to date of network events
  • Commands that can be completely customized
  • Backup and restore of your Hamachi configuration folder

Please note: Requires installation of Hamachi on the system in order to use.

View your network list and client information https://haguichi.net/appdata/screenshot-1.png View selected member details https://haguichi.net/appdata/screenshot-2.png View selected network details https://haguichi.net/appdata/screenshot-3.png Search your network list https://haguichi.net/appdata/screenshot-4.png Join or create networks https://haguichi.net/appdata/screenshot-5.png keyboard pointing touch always 360 #ffdbbc #910e08 @APP_ID@.desktop https://haguichi.net/news/release154/

Haguichi 1.5.4 has tightened its bolts and rolls out the following changes:

  • Increased border radius of network list rows for libadwaita 1.7 and later.
  • Now using static light and dark colors for the style selector to prevent issues with custom themes.
  • Added Menu and Shift+F10 keyboard shortcuts to open the menu of commands editor rows.
  • Added support for starting the Hamachi daemon directly without using any init system.
  • Added support for using the Hamachi daemon directly as command line interface.
  • Added support for run0 to gain super user privileges.
  • Reinstated support for kdesu to gain super user privileges.
  • Dropped support for all Hamachi versions older than 2.1.0.203.
  • Improved memory safety for background threads that determine network ownership or retrieve long nicks.
  • Disabled markup parsing in action row labels and toasts that may contain user input.
  • Removed extra initial space in parsed %TERMINAL commands.
  • Fixed issue on GTK versions before 4.18 where a long network or member name could mess up the sidebar layout.
  • Updated Hungarian, Japanese, Slovak and Turkish translations.
  • Other minor fixes, improvements and optimizations.
https://haguichi.net/news/release153/

Haguichi 1.5.3 knocks at the door with a handful of treats and tweaks:

  • Replaced deprecated Gtk.ShortcutsWindow with Adw.ShortcutsDialog when libadwaita 1.8 is available.
  • Sidebar title is now shown in the headerbar when scrolled down.
  • Enabled automatic row selection in the network list when searching or after a row is collapsed or removed.
  • Return and Delete key presses are now passed on to the selected row when search entry is focused.
  • Search entry can now be refocused by pressing Ctrl+F while search mode is already active.
  • When using drag and drop to reorder a command the dragged row is now anchored to the point where the drag started.
  • Added option to duplicate existing commands.
  • Added Adw.Toast with button to undo removal when removing a command.
  • Added support for COSMIC Terminal and Files.
  • Added Hungarian translation (thanks to therealmate).
  • Updated Swedish translation.
  • All bundled resource files are now compressed.
  • Other minor fixes, improvements and optimizations.
https://haguichi.net/news/release152/

Haguichi 1.5.2 sends up white smoke to announce its newest changes:

  • Implemented Adw.StatusPage to show the connection restore countdown with an additional cancel button.
  • Connection loss notification will not be displayed if the window is already focused.
  • Selected node and search text is now saved when restoring connection.
  • Within "Add Command" and "Edit Command" dialogs command variables can now be inserted directly from the popover into the command entries.
  • Now using Adw.ToggleGroup instead of grouped Gtk.CheckButtons to select IP version priority when libadwaita 1.7 is available.
  • Now using Adw.Dialog based widgets starting from libadwaita 1.5 instead of 1.6.
  • Added more network list update interval options to preferences dialog.
  • Added support for Flatpak commands.
  • Added support for Ghostty.
  • Added debug information to about dialog.
  • Updated Yaru icons for Ubuntu builds to use a smaller square for optical compensation (thanks again to ubuntujaggers).
  • Updated Polish and Portuguese translations.
  • Bumped minimum required versions of GLib (2.80), GTK (4.14) and libadwaita (1.5).
  • Other minor fixes, improvements and optimizations.
https://haguichi.net/news/release151/

Haguichi 1.5.1 has put on its bow tie and is ready to celebrate the holiday season:

  • Modernized layout for all input dialogs.
  • Now using Adw.Dialog as base for all dialogs when libadwaita 1.6 is available.
  • Now using Adw.Spinner instead of Gtk.Spinner when libadwaita 1.6 is available.
  • Fixed showing commands menu button if there is only one item present.
  • Added support for Ptyxis.
  • Added Finnish translation (thanks to Jiri Grönroos).
  • Updated Indonesian and Russian translations.
  • Other minor fixes and improvements.
https://haguichi.net/news/release150/

Haguichi 1.5.0 has been rebuild completely from the ground up:

  • Redesigned user interface using GTK 4 and libadwaita.
  • Added support for multiple search terms by separating them using a "⎵" (space) or "+" (plus) to find only results matching both terms and by using a "," (comma) to find results matching either term.
  • Now displays a message if there are no results found instead of showing an empty network list.
  • Online and total member count in sidebar now includes the client itself.
  • Networks are now automatically selected immediately after you create or join them.
  • Hamachi is now automatically restarted if the hamachi set-pass command hangs when changing the network password.
  • Reimplemented indicator to communicate with the SNI D-Bus interface directly and drop dependency on appindicator libraries that don't support GTK 4.
  • Implemented Xdp.Portal to request permission to run in the background and to set background status when doing so.
  • Renamed --hidden command line option to --background or -b for short.
  • Changed accelerator to open preferences to Control+, following the GNOME standard for keyboard shortcuts.
  • Changed default network list update interval to 30 seconds.
  • Added support for zstd compressed tar archives when saving and restoring configuration backups.
  • Added line "StartupNotify=true" to .desktop file so that a spinning cursor is shown on launch.
  • Now using standard GLib functions for message logging so that important errors are written to the system logs.
  • Updated Brazilian Portuguese, Dutch, Japanese, Lithuanian, Spanish and Ukrainian translations.
https://haguichi.net https://github.com/ztefn/haguichi/issues https://haguichi.net/faq/ https://haguichi.net/tips-and-tricks/ https://haguichi.net/donate/ https://github.com/ztefn/haguichi#translations https://github.com/ztefn/haguichi Stephen Brandt stephen@stephenbrandt.com @GETTEXT_PACKAGE@
================================================ FILE: data/icons/meson.build ================================================ if get_option('for-elementary') icon_themes = ['elementary/hicolor'] else icon_themes = ['hicolor'] endif if get_option('for-ubuntu') icon_themes += ['Yaru'] endif foreach theme : icon_themes install_subdir(theme, follow_symlinks: true, install_dir: get_option('datadir') / 'icons' ) endforeach ================================================ FILE: data/meson.build ================================================ desktop = app_id + '.desktop' desktop_in = configure_file( input: desktop + '.in.in', output: desktop + '.in', configuration: conf ) desktop_file = i18n.merge_file( input: desktop_in, output: desktop, type: 'desktop', po_dir: '../po', install: true, install_dir: get_option('datadir') / 'applications' ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file]) endif appstream = app_id + '.metainfo.xml' appstream_in = configure_file( input: appstream + '.in.in', output: appstream + '.in', configuration: conf ) appstream_file = i18n.merge_file( input: appstream_in, output: appstream, po_dir: '../po', install: true, install_dir: get_option('datadir') / 'metainfo' ) appstreamcli = find_program('appstreamcli', required: false, disabler: true) test('Validate appstream file', appstreamcli, args: ['validate', '--no-net', '--explain', appstream_file] ) install_data(app_id + '.gschema.xml', install_dir: get_option('datadir') / 'glib-2.0' / 'schemas' ) compile_schemas = find_program('glib-compile-schemas', required: false, disabler: true) test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) resources = gnome.compile_resources(app_name.to_lower() + '-resources', app_id + '.gresource.xml', c_name: app_name.to_lower(), source_dir: ['stylesheets'] ) subdir('icons') ================================================ FILE: data/stylesheets/base.css ================================================ statuspage > scrolledwindow > viewport > box { margin-top: 6px; } #restore-commands-button image { transform: scaleX(-1); } #add-command-button { background: none; padding: 9px; } styleselector { margin: 9px 0; } styleselector checkbutton { background-clip: content-box; border-radius: 9999px; box-shadow: inset 0 0 0 1px alpha(currentColor, 0.15); min-height: 30px; min-width: 30px; outline-offset: 1px; padding: 1px; } styleselector checkbutton:checked { box-shadow: inset 0 0 0 2px @accent_bg_color; } styleselector checkbutton.system { background-image: linear-gradient(to bottom right, #FFFFFF 49.99%, #202020 50.01%); } styleselector checkbutton.light { background-color: #FFFFFF; } styleselector checkbutton.dark { background-color: #202020; } styleselector checkbutton radio { -gtk-icon-source: none; background: none; border: none; box-shadow: none; min-height: 12px; min-width: 12px; padding: 2px; } styleselector checkbutton radio:dir(ltr) { transform: translate(16px, 10px); } styleselector checkbutton radio:dir(rtl) { transform: translate(-16px, 10px); } styleselector checkbutton radio:checked { -gtk-icon-source: -gtk-icontheme("object-select-symbolic"); background-color: @accent_bg_color; color: @accent_fg_color; } ================================================ FILE: data/stylesheets/elementary-dark.css ================================================ @import "elementary.css"; /* * Override background colors for overlay split view */ overlay-split-view widget:not(.sidebar-pane) > toolbarview, overlay-split-view widget:not(.sidebar-pane) > toolbarview searchbar, overlay-split-view widget:not(.sidebar-pane) > toolbarview listview { background-color: @insensitive_bg_color; } overlay-split-view widget.sidebar-pane { background-color: @base_color; } /* * Override background color for network list refresh button */ #overlay-refresh-button { background-color: alpha(@BLACK_300, 0.5); } /* * Override background colors for network nodes */ #network-list > scrolledwindow > listview > row .network-node-unapproved { background: @STRAWBERRY_300; } #network-list > scrolledwindow > listview > row .network-node-error { background: @BANANA_300; } #network-list > scrolledwindow > listview > row .network-node-offline { background: alpha(@SILVER_300, 0.6); } ================================================ FILE: data/stylesheets/elementary.css ================================================ @import "base.css"; @define-color accent_color #f44; /* * Fix background glitch for window controls in dark mode when window is unfocused * https://github.com/elementary/stylesheet/issues/1311 */ windowcontrols button { background: none; } /* * Decrease margins on main window controls */ #main-window windowcontrols.start:dir(ltr) { margin-right: 0; } #main-window windowcontrols.start:dir(rtl) { margin-left: 0; } #main-window windowcontrols.end:dir(ltr) { margin-left: 9px; } #main-window windowcontrols.end:dir(rtl) { margin-right: 9px; } /* * Give shortcuts window a flat appearance */ window.shortcuts headerbar, window.shortcuts searchbar { background: none; box-shadow: none; } window.shortcuts shortcut .keycap { background: alpha(black, 0.08); border: none; box-shadow: 0 1px 0 0 alpha(black, 0.15); color: alpha(@fg_color, 0.78); } /* * Add missing styles for pill buttons * https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/style-classes.html#pill */ button.pill { border-radius: 9999px; padding: 8px 20px; } /* * Add missing styles for tabular numerals * https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/style-classes.html#typography-styles */ .numeric { font-feature-settings: "tnum"; } /* * Add missing styles for statuspage titles */ statuspage .title { font-size: 18pt; font-weight: 700; letter-spacing: -0.04em; } /* * Fix styles for alert dialogs */ dialog.alert .message-area, dialog.alert .response-area { padding: 12px; } dialog.alert .message-area .heading-bin > label { font-size: 1.22em; font-weight: 500; letter-spacing: initial; margin: 0; opacity: 1; padding: 3px 3px 12px; } /* * Fix foreground color for dragged rows in light mode * https://github.com/elementary/stylesheet/issues/1314 */ list.boxed-list > row { color: @fg_color; } /* * Fix edit icon appearing only on hover * https://github.com/elementary/stylesheet/issues/1313 */ list.boxed-list > row.entry .edit-icon { opacity: 1; } /* * Add missing styles for property rows * https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/style-classes.html#property-rows */ row.property label.title { font-size: 0.85em; opacity: 0.75; } row.property label.subtitle { font-size: 1em; opacity: 1; } /* * Add missing styles for overlay split view * https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.OverlaySplitView.html */ overlay-split-view widget:not(.sidebar-pane) > toolbarview, overlay-split-view widget:not(.sidebar-pane) > toolbarview searchbar, overlay-split-view widget:not(.sidebar-pane) > toolbarview listview { background-color: @base_color; } overlay-split-view widget.sidebar-pane { background-color: @insensitive_bg_color; } overlay-split-view widget.sidebar-pane:dir(ltr) { border-left: 1px solid @menu_separator; border-right: none; } overlay-split-view widget.sidebar-pane:dir(rtl) { border-left: none; border-right: 1px solid @menu_separator; } /* * Remove background and add some extra padding for sidebar rows */ overlay-split-view .rich-list { background: none; } overlay-split-view .rich-list row { padding: 6px 12px; } /* * Use regular icon style for sidebar row buttons */ overlay-split-view .rich-list row button { -gtk-icon-style: regular; } /* * Modify the color of the lock icon depending on its state */ overlay-split-view .rich-list row button.success image { filter: hue-rotate(40deg) saturate(2); } overlay-split-view .rich-list row button.warning image { filter: hue-rotate(20deg) saturate(5); } overlay-split-view .rich-list row button.error image { filter: hue-rotate(-50deg) saturate(3); } /* * Set styles for connection button in title bar */ #connect-button, #disconnect-button { border: 1px solid alpha(#000, 0.2); border-radius: 50%; box-shadow: 0 1px 0 0 alpha(#fff, 0.25), inset 0 1px 0 0 alpha(#fff, 0.25); } #connect-button:not(:disabled) { background-color: @selected_bg_color; } #disconnect-button { background-color: @accent_color; } #disconnect-button:backdrop { background-color: alpha(@accent_color, 0.9); } #disconnect-button image { color: shade(@accent_color, 0.5); -gtk-icon-shadow: 0 1px shade(@accent_color, 1.2); } #connect-button:focus, #disconnect-button:focus { outline-color: alpha(@accent_color, 0.3); outline-width: 2px; outline-style: solid; } /* * Set styles for network list overlay buttons */ #overlay-refresh-button { background-color: alpha(@SILVER_300, 0.5); } #add-network-button button { padding: 8px; } /* * Set padding for rows in network list */ #network-list > scrolledwindow > listview > row { padding: 6px; } /* * Increase font weight for network labels */ #network-list > scrolledwindow > listview > row .network-label { font-weight: 600; } /* * Set styles for network nodes */ #network-list > scrolledwindow > listview > row .network-node { border-radius: 50%; } #network-list > scrolledwindow > listview > row .network-node:dir(ltr) { margin-left: 6px; } #network-list > scrolledwindow > listview > row .network-node:dir(rtl) { margin-right: 6px; } #network-list > scrolledwindow > listview > row .network-node-online { background: @LIME_300; } #network-list > scrolledwindow > listview > row .network-node-online-relayed { background: @BLUEBERRY_300; } #network-list > scrolledwindow > listview > row .network-node-unreachable { background: @ORANGE_300; } #network-list > scrolledwindow > listview > row .network-node-unapproved { background: @STRAWBERRY_300; } #network-list > scrolledwindow > listview > row .network-node-error { background: @BANANA_500; } #network-list > scrolledwindow > listview > row .network-node-offline { background: alpha(@SILVER_500, 0.6); } /* * Remove padding on empty bottom action bar */ #preferences viewswitcherbar actionbar { padding: 0; } /* * Remove background of restore button in disabled state */ #restore-commands-button:disabled { background: none; box-shadow: none; } /* * Add styling for command variables popover */ menubutton.command-variables popover contents { padding: 2px 8px 8px; } menubutton.command-variables popover contents button label { font-weight: 400; } menubutton.command-variables popover contents button label.caption { font-size: 0.85em; } /* * Override some properties for style selector */ styleselector { margin: 0; } styleselector checkbutton:checked { box-shadow: inset 0 0 0 2px @accent_color; } styleselector checkbutton.system { background-image: linear-gradient(to bottom right, @SILVER_100 49.99%, @BLACK_500 50.01%); } styleselector checkbutton.light { background-color: @SILVER_100; } styleselector checkbutton.dark { background-color: @BLACK_500; } styleselector checkbutton radio:checked { background-color: @accent_color; color: @SILVER_100; } ================================================ FILE: data/stylesheets/style-dark.css ================================================ #network-list > scrolledwindow > listview > row .network-node-online { background: @green_2; } #network-list > scrolledwindow > listview > row .network-node-online-relayed { background: @blue_2; } #network-list > scrolledwindow > listview > row .network-node-unreachable { background: @red_1; } #network-list > scrolledwindow > listview > row .network-node-unapproved { background: @purple_1; } #network-list > scrolledwindow > listview > row .network-node-error { background: @yellow_2; } #network-list > scrolledwindow > listview > row .network-node-offline { background: @dark_1; } ================================================ FILE: data/stylesheets/style-hc.css ================================================ #network-list > scrolledwindow > listview > row.activatable:hover { box-shadow: inset 0 0 0 1px @borders; } #network-list > scrolledwindow > listview > row:selected { box-shadow: inset 0 0 0 1px alpha(@accent_color, .6); } #add-command-button { box-shadow: none; } ================================================ FILE: data/stylesheets/style.css ================================================ @import "base.css"; window.custom .suggested-action { color: @dark_4; background: linear-gradient(to bottom, #006EFF 49.99%, #FFD500 50.01%); } #add-network-button button { padding: 3px; } #network-list > scrolledwindow > listview > row { border-radius: 6px; margin: 0 6px 2px; padding: 6px; } window.adw-1-7 #network-list > scrolledwindow > listview > row { border-radius: 9px; } #network-list > scrolledwindow > listview > row:last-child { margin-bottom: 6px; } #network-list > scrolledwindow > listview > row .network-node { border-radius: 50%; } #network-list > scrolledwindow > listview > row .network-node-online { background: @green_5; } #network-list > scrolledwindow > listview > row .network-node-online-relayed { background: @blue_3; } #network-list > scrolledwindow > listview > row .network-node-unreachable { background: @red_1; } #network-list > scrolledwindow > listview > row .network-node-unapproved { background: @purple_3; } #network-list > scrolledwindow > listview > row .network-node-error { background: @yellow_5; } #network-list > scrolledwindow > listview > row .network-node-offline { background: @light_5; } menubutton.command-variables popover contents label.title-4 { margin: 9px; } ================================================ FILE: data/ui/dialogs/add-edit-command.ui ================================================ ================================================ FILE: data/ui/dialogs/attach.ui ================================================ ================================================ FILE: data/ui/dialogs/change-access.ui ================================================ ================================================ FILE: data/ui/dialogs/change-password.ui ================================================ ================================================ FILE: data/ui/dialogs/join-create-network.ui ================================================ ================================================ FILE: data/ui/menus/member-menu.ui ================================================ start false menu_model
_Approve member.approve action-disabled _Reject member.reject action-disabled
Copy IPv_4 Address member.copy-ipv4 action-disabled Copy IPv_6 Address member.copy-ipv6 action-disabled _Copy Client ID member.copy-id
_Evict member.evict Delete action-disabled
_Details member.details F9 action-disabled
================================================ FILE: data/ui/menus/network-list-menu.ui ================================================ start false menu_model
_Join Network… win.join-network _Create Network… win.create-network
================================================ FILE: data/ui/menus/network-menu.ui ================================================ start false menu_model
_Go Online network.go-online Return action-disabled _Go Offline network.go-offline Return action-disabled _Leave network.leave Delete action-disabled _Delete network.delete Delete action-disabled
Change _Access… network.change-access action-disabled Change _Password… network.change-password action-disabled
_Copy Network ID network.copy-id
_Details network.details F9 action-disabled
================================================ FILE: data/ui/network-list.ui ================================================ ================================================ FILE: data/ui/preferences.ui ================================================
_Save a Backup… config.save _Restore from Backup… config.restore
================================================ FILE: data/ui/shortcuts-dialog.ui ================================================ General F1 Show help F2 Show client information F10 Open menu <Primary>comma Preferences <Primary>question Keyboard shortcuts <Primary>Q Quit Connection <Primary>O Connect <Primary>D Disconnect Network List <Primary>J Join a network <Primary>N Create a network F5 <Primary>R Refresh <Primary>F Search <Primary>M Show/hide offline members <Primary>bracketleft Expand all networks <Primary>bracketright Collapse all networks Commands <Primary>1...9 Execute command ================================================ FILE: data/ui/shortcuts-window.ui ================================================ true shortcuts General F1 Show help F2 Show client information F10 Open menu <Primary>O Connect <Primary>D Disconnect <Primary>comma Preferences <Primary>question Keyboard shortcuts <Primary>Q Quit Network List <Primary>J Join a network <Primary>N Create a network <Primary>R F5 Refresh <Primary>F Search <Primary>M Show/hide offline members <Primary>bracketleft Expand all networks <Primary>bracketright Collapse all networks <Primary>1...9 Execute command ================================================ FILE: data/ui/sidebar.ui ================================================ ================================================ FILE: data/ui/widgets/command-entry-row.ui ================================================ ================================================ FILE: data/ui/widgets/command-variable-button.ui ================================================ ================================================ FILE: data/ui/widgets/commands-editor-row.ui ================================================
_Edit… row.edit Du_plicate… row.duplicate
Move _Up row.move-up Move _Down row.move-down
_Set As Default Action row.set-default
_Remove row.remove
================================================ FILE: data/ui/widgets/commands-editor.ui ================================================
_Browse Shares _View Remote Desktop _Ping
================================================ FILE: data/ui/widgets/network-list-item.ui ================================================ ================================================ FILE: data/ui/widgets/sidebar-page.ui ================================================ ================================================ FILE: data/ui/widgets/sidebar-row.ui ================================================ ================================================ FILE: data/ui/window.ui ================================================ vertical
_Information win.info action-disabled
Sort by _Name win.sort-by name action-disabled Sort by _Status win.sort-by status action-disabled
Show _Offline Members win.show-offline-members action-disabled
_Preferences win.preferences _Keyboard Shortcuts win.shortcuts _Help win.help _About Haguichi win.about
_Quit win.quit
_Join Network… win.join-network _Create Network… win.create-network
================================================ FILE: meson.build ================================================ project('Haguichi', ['c', 'vala'], version: '1.5.5', meson_version: '>= 1.3.0', default_options: ['prefix=/usr', 'warning_level=2', 'werror=false'], ) app_name = meson.project_name() app_id = 'com.github.ztefn.' + app_name.to_lower() app_version = meson.project_version() binary_name = app_name.to_lower() gettext_pkg = app_name.to_lower() vala_version = meson.get_compiler('vala').version() add_project_arguments( '-DG_LOG_DOMAIN="' + app_name + '"', '-DGETTEXT_PACKAGE="' + gettext_pkg + '"', '-w', language: 'c' ) if vala_version.version_compare('>= 0.56.19') add_project_arguments( ['-D', 'VALA_0_56_19'], language: 'vala' ) endif conf = configuration_data() conf.set('APP_ID', app_id) conf.set('APP_NAME', app_name) conf.set('VERSION', app_version) conf.set('BINARY_NAME', binary_name) conf.set('GETTEXT_PACKAGE', gettext_pkg) conf.set('LOCALEDIR', get_option('prefix') / get_option('localedir')) conf.set('VALA_VERSION', vala_version) i18n = import('i18n') gnome = import('gnome') subdir('data') subdir('po') subdir('src') gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true, ) ================================================ FILE: meson.options ================================================ option('for-elementary', type: 'boolean', value: false) option('for-ubuntu', type: 'boolean', value: false) ================================================ FILE: po/LINGUAS ================================================ ast bg cs de es fi fr hu id it ja kk lt nl pl pt pt_BR ru sk sv tr uk ================================================ FILE: po/POTFILES ================================================ data/com.github.ztefn.haguichi.desktop.in.in data/com.github.ztefn.haguichi.metainfo.xml.in.in data/ui/dialogs/add-edit-command.ui data/ui/dialogs/attach.ui data/ui/dialogs/change-access.ui data/ui/dialogs/change-password.ui data/ui/dialogs/join-create-network.ui data/ui/menus/member-menu.ui data/ui/menus/network-list-menu.ui data/ui/menus/network-menu.ui data/ui/network-list.ui data/ui/preferences.ui data/ui/shortcuts-dialog.ui data/ui/shortcuts-window.ui data/ui/sidebar.ui data/ui/widgets/command-entry-row.ui data/ui/widgets/command-variable-button.ui data/ui/widgets/commands-editor.ui data/ui/widgets/commands-editor-row.ui data/ui/widgets/network-list-item.ui data/ui/widgets/sidebar-row.ui data/ui/widgets/sidebar-page.ui data/ui/window.ui src/application.vala src/bubble.vala src/command.vala src/connection.vala src/controller.vala src/custom-command.vala src/dialogs/add-edit-command.vala src/dialogs/attach.vala src/dialogs/change-access.vala src/dialogs/change-password.vala src/dialogs/confirm.vala src/dialogs/join-create-network.vala src/hamachi.vala src/indicator.vala src/inhibitor.vala src/member.vala src/member-event.vala src/network.vala src/network-list.vala src/preferences.vala src/session.vala src/sidebar.vala src/status.vala src/status-notifier-item.vala src/utils.vala src/widgets/command-entry-row.vala src/widgets/command-variable-button.vala src/widgets/commands-editor.vala src/widgets/commands-editor-row.vala src/widgets/sidebar-row.vala src/widgets/sidebar-page.vala src/window.vala ================================================ FILE: po/README.md ================================================ Localisation ============ Generate .pot file ------------------ Run the following command from your build folder to generate the pot file: $ meson compile haguichi-pot Generate .po files ------------------ Run the following command from your build folder to generate the po files: $ meson compile haguichi-update-po ================================================ FILE: po/ast.po ================================================ # Asturian translation for haguichi # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2018-10-12 07:44+0000\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" "Language: ast\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2018-10-12 19:24+0000\n" "X-Generator: Launchpad (build 18790)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Xestor de rede Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Carauterístiques:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Llista de redes espandible, que se pue ordenar y onde se pue guetar" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Barra llateral p'acceder fácilmente a los detalles y les aiciones" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "" "Fai copies de seguranza y restaura la carpeta de configuración de Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 #, fuzzy msgid "View your network list and client information" msgstr "Amosar la información del veceru" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 #, fuzzy msgid "Search your network list" msgstr "Llista de redes espandible, que se pue ordenar y onde se pue guetar" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Xunise a una rede" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etiqueta" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Comandu IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Comandu IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioridá" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Guardar" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Axuntar a la cuenta" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Cuenta" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Incluyir toles redes creaes por esti veceru" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Axuntar" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Camudar nomatu" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Bloquiáu" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Aprobación" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automáticamente" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manualmente" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "C_amudar" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Camudar contraseña" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Contraseña nueva" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ID de rede" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Conseña" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Aprobar" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Refugar" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Copiar direición IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Copiar direición IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Copiar ID de veceru" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Desagospiar" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Xunise a la rede…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Crear rede…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Coneutase" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Desconeutase" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Colar" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Desaniciar" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "Camudar _nomatu…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Camudar _contraseña…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "Copiar ID de rede" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Xeneral" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Configuración" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Guardar un respaldu" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Abrir carpeta" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Nomatu" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protocolu" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 ya IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Namái IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Namái IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Comportamientu" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Coneutase automáticamente nel aniciu" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Reconeutase automáticamente cuando se pierda la conexón" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Desconeutase al colar" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Comandos" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Escritoriu" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Aspeutu" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Amosar l'_indicador" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Avisos" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Amosar avisu al perdese la c_onexón" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Amosar avisu cuando se xuna un m_iembru" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Amosar avisu cuando cole un m_iembru" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Amosar avisu cuando tea en llinia un m_iembru" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Amosar avisu cuando tea fuera de llinia un m_iembru" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Guardar respaldu…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Restaurar dende respaldu…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Amusar l'ayuda" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Amosar la información del veceru" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Preferencies" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Atayos del tecláu" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Colar" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Conexón" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Coneutar" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Desconeutar" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Llista de redes" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Xunise a una rede" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Crear una rede" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Refrescar" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Guetar" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Amosar miembros des/coneutaos" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Espander toles redes" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Contrayer toles redes" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Executar un comandu" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Información" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Axuntar" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Encaboxar" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ID de veceru" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Direición IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Direición IPv6" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "La version %s de Hamachi ta obsoleta" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Estáu" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Crear rede" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Crear rede" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Dueñu" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Miembros" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Capacidá" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Túnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Comandos" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Direición" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Ver escritoriu remotu" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "_Restaurar" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Amestar comandu" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Restolar comparticiones" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Ver escritoriu remotu" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Afitar como aición por defeutu" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Editar…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Du_plicar…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "_Xubir" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "_Baxar" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Afitar como aición por defeutu" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Desaniciar" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Aniciando" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 #, fuzzy msgid "Search networks and members" msgstr "Xestor de rede Hamachi" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Xunise a la rede" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi perdió la conexón" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Encaboxar" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "¡Tas coneutáu!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Usa'l botón + p'amestar una rede" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Baxa Hamachi y sigui les instrucciones d'instalación, por favor" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Baxar" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi nun ta configuráu" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Precises configurar Hamachi enantes que pueas coneutate" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "C_onfigurar" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Información" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Ordenar pel _nome" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Ordenar pel _estáu" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Amosar _miembros fuera de llinia" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Preferencies" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "Atayos del _tecláu" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Ayuda" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "Tocante _a Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Colar" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Reconeutar" #: src/controller.vala:283 msgid "No internet connection" msgstr "Ensin conexóna internet" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Aniciando sesión" #: src/controller.vala:348 msgid "Error connecting" msgstr "Fallu al coneutar" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Falló l'aniciu de sesión d'Hamachi" #: src/controller.vala:459 msgid "Updating" msgstr "Anovando" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Coneutáu" #: src/controller.vala:730 msgid "Member Joined" msgstr "Xunióse'l miembru" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} xunióse a la rede {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} xunióse na rede {1} y {2} más" msgstr[1] "{0} xunióse na rede {1} y otres {2} más" #: src/controller.vala:760 msgid "Member Left" msgstr "Coló'l miembru" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} colo de la rede {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} coló de la rede {1} y {2} más" msgstr[1] "{0} coló de la rede {1} y otres {2} más" #: src/controller.vala:786 msgid "Member Online" msgstr "Miembru en llinia" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} coneutóse na rede {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} coneutóse na rede {1} y {2} más" msgstr[1] "{0} coneutóse na rede {1} y otres {2} más" #: src/controller.vala:812 msgid "Member Offline" msgstr "Miembru fuera de llinia" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} desconeutóse de la rede {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} desconeutóse na rede {1} y {2} más" msgstr[1] "{0} desconeutóse na rede {1} y otres {2} más" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Editar comandu" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Amestar comandu" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Unvióse la solicitú de xunión" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Nun s'alcontró la cuenta" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Xunise a la rede" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Crear rede" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Xunise" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "C_rear" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Unvióse la solicitú de xunión" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Nun s'alcontró la rede" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Contraseña non válida" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "La rede ta enllena" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "La rede ta bloquiada" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Rede yá xunida" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "La ID de rede yá ta coyida" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Desconozse" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anónimu" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Conseña" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "_Guardar respaldu…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "_Restaurar dende respaldu…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "L'archivu nun contién los ficheros esperaos" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Coneutando" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Desconectáu" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Amosar Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Desconeutar" #: src/indicator.vala:104 msgid "C_onnect" msgstr "C_oneutar" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "¿De xuru que quies desagospiar al miembru «{0}» de la rede «{0}»?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Si se permite, los miembros desagospiaos puen xunise otra vegada cuando-yos " "pete." #: src/network.vala:148 msgid "You" msgstr "Tu" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "¿De xuru que quies colar d'esta rede «{0}»?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Si se permite, pues xunite otra vegada cuando te pete." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "¿De xuru que quies desaniciar la rede «{0}»?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Si desanicies una rede, perderáse dafechu." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Tolos archivos sofitaos" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Guardar un respaldu" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Restaurar dende respaldu" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Restaurar" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "_Revertir" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Non disponible" #: src/sidebar.vala:192 msgid "pending" msgstr "pendiente" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} en llinia, {1} en total" #: src/status.vala:35 msgid "Offline" msgstr "Ensin conexón" #: src/status.vala:39 msgid "Online" msgstr "En llinia" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Retresmitíu" #: src/status.vala:48 msgid "Unreachable" msgstr "Nun pue algamase" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Esperando pola aprobación" #: src/status.vala:56 msgid "Unknown error" msgstr "Fallu desconocíu" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Incompatibilidá de protocolu" #: src/status.vala:62 msgid "Conflicting address" msgstr "Direición en conflictu" #: src/status.vala:73 msgid "Direct" msgstr "Direutu" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Enol Puente https://launchpad.net/~enolp\n" "Tornes Llume https://launchpad.net/~l-lumex03-tornes" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Reconeutando en {0} segundu" msgstr[1] "Reconeutando en {0} segundos" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi nun ta instaláu" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "La version %s de Hamachi ta obsoleta" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/bg.po ================================================ # Bulgarian translation for haguichi # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2018-10-02 16:57+0000\n" "Last-Translator: Dimitar Dimitrov \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2018-10-03 18:00+0000\n" "X-Generator: Launchpad (build 18785)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi Мрежов Мениджър" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Характеристики:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Търсим, подреждащ се и сгъваем списък с мрежи" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Страничен панел за лесен достъп до детайли и действия" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "Бекъп и възстановяване на вашата Hamachi директория" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 #, fuzzy msgid "View your network list and client information" msgstr "Показване на клиентската информация" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 #, fuzzy msgid "Search your network list" msgstr "Търсим, подреждащ се и сгъваем списък с мрежи" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Влез в мрежа" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Етикет" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 команда" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 команда" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Приоритет" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Запазване" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Закачи за Акаунт" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Акаунт" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Добави всички мрежи създадени от този клиент" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Закачи" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Промяна на Псевдоним" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Заключен" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Одобрение" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Автоматично" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Ръчно" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "П_ромени" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Промяна на Парола" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Нова парола" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Мрежа" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Парола" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Одобри" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Откажи" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Копирай IPv_4 Адреса" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Копирай IPv_6 Адреса" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Копирай Клиент" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Изгони" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Влез в мрежа…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Създай Мрежа…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Отиди на линия" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Отиди извън линия" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Напусни" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Изтриване" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "Промяна на _Псевдоним…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Промяна на _Парола…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Копирай Мрежа" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Основни" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Конфигурация" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Запиши резервно копие" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Отвори папката" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Псевдоним" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Протокол" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 и IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "IPv4 само" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "IPv6 само" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Поведение" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Автоматично свързване при стартиране" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Свързвай се автоматично когато връзката е изгубена" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Автоматично изключване при излизане" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Команди" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Работен плот" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Изглед" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Показване на _индикатор" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Известия" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Показвай съобщение, когато връзката е и_згубена" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Показвай съобщение, когато потребител се _присъединява" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Показвай съобщение, когато потребител _напуска" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Показвай съобщение, когато потребител се появи на линия" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Показвай съобщение, когато потребител отиде извън линия" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Запиши резервно копие…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Възстанови от резервно копие…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Показване на помощ" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Показване на клиентската информация" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Предпочитания" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Клавишни комбинации" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Изход" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Свързване" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Свързване" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Изключи" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Списък с мрежи" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Влез в мрежа" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Създай мрежа" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Обновяване" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Търсене" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Показване/скриване на офлайн членовете" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Разширяване на всички мрежи" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Свиване на всички мрежи" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Изпълнение на команда" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Информация" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Закачи" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Отказване" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Клиент" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 адрес" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 адрес" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "Версията на Hamachi %s е устаряла" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Статус" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Създай Мрежа" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Създай Мрежа" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Собственик" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Потребители" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Капацитет" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Тунел" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Команди" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Адрес" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Преглед на работен плот" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "_Възстанови" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Добавяне на команда" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Преглед на споделени файлове" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Преглед на работен плот" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Пинг" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Избери като действие по подразбиране" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Редактиране…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Ду_блиране…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Премести на_горе" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Премести на_долу" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Избери като действие по подразбиране" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Премахване" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Зареждане" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 #, fuzzy msgid "Search networks and members" msgstr "Hamachi Мрежов Мениджър" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Влез в мрежа" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi изгуби връзка" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Отказване" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Вие се свързахте!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Използвайте бутона +, за да добавите мрежа" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Моля изтеглете Hamachi и следвайте инструкциите за инсталиране" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Изтегляне" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi не е конфигуриран" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Трябва да конфигурирате Hamachi за да се свържете" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "Н_астройки" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Информация" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Подреждане по _Име" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Подреждане по _Статус" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Покажи потребителите _извън линия" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Настройки" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Помощ" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Относно Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Изход" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Повторно свързване" #: src/controller.vala:283 msgid "No internet connection" msgstr "Няма връзка с интернет" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Вписване" #: src/controller.vala:348 msgid "Error connecting" msgstr "Грешка при свързване" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Грешка при влизането" #: src/controller.vala:459 msgid "Updating" msgstr "Актуализиране" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Свързан" #: src/controller.vala:730 msgid "Member Joined" msgstr "Потребител се присъедини" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} се присъедини към мрежата {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} влезе в мрежата {1} и {2} друга мрежа" msgstr[1] "{0} влезе в мрежата {1} и {2} други мрежи" #: src/controller.vala:760 msgid "Member Left" msgstr "Потребител напусна" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} напусна мрежата {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} напусна мрежата {1} и {2} друга мрежа" msgstr[1] "{0} напусна мрежата {1} и {2} други мрежи" #: src/controller.vala:786 msgid "Member Online" msgstr "Потребителят е на линия" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} дойде на линия в мрежата {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} се появи на линия във мрежата {1} и {2} друга мрежа" msgstr[1] "{0} се появи на линия във мрежата {1} и {2} други мрежи" #: src/controller.vala:812 msgid "Member Offline" msgstr "Потребителят е извън линия" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} отиде извън линия в мрежата {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} отиде извън линия във мрежата {1} и {2} друга мрежа" msgstr[1] "{0} отиде извън линия във мрежата {1} и {2} други мрежи" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Редактиране на команда" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Добавяне на команда" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Запитването за присъединяване беше изпратено." #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Акаунтът не е намерен" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Влез в мрежа" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Създай Мрежа" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Влез" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "С_ъздай" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Запитването за присъединяване беше изпратено." #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Мрежата не е намерена" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Невалидна парола" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Мрежата е пълна" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Мрежата е заключена" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Мрежата е вече добавена" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Името на мрежата е заето" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Неизвестен" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Анонимен" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Парола" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "_Запиши резервно копие…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "_Възстанови от резервно копие…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Архивът не съдържа очакваните файлове" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Свързване" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Изключен" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Покажи Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Изключи" #: src/indicator.vala:104 msgid "C_onnect" msgstr "_Свързване" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "" "Сигурни ли сте, че искате да изгоните потребител „{0}“ от мрежата „{1}“?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Ако решите, изгонените членове могат да се включат отново в мрежата по всяко " "време." #: src/network.vala:148 msgid "You" msgstr "Вие" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Сигурни ли сте, че искате да напуснете мрежата „{0}“?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Ако решите, можете да се включите в мрежата по всяко време." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Сигурни ли сте, че искате да изтриете мрежата „{0}“?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Ако изтриете мрежа, тя ще бъде перманентно загубена." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Всички поддържани архиви" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Запиши резервно копие" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Възстанови от резервно копие" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Възстанови" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "_Връщане" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Недостъпен" #: src/sidebar.vala:192 msgid "pending" msgstr "предстоящ" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} на линия, {1} общо" #: src/status.vala:35 msgid "Offline" msgstr "Извън линия" #: src/status.vala:39 msgid "Online" msgstr "На линия" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Чрез ретранслатор" #: src/status.vala:48 msgid "Unreachable" msgstr "Недостъпен" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Очаква одобрение" #: src/status.vala:56 msgid "Unknown error" msgstr "Непозната грешка" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Несъответствие на протоколите" #: src/status.vala:62 msgid "Conflicting address" msgstr "Конфликтиращи адреси" #: src/status.vala:73 msgid "Direct" msgstr "Директно" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Dimitar Dimitrov https://launchpad.net/~dimitrov" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Свързване след {0} секунда" msgstr[1] "Свързване след {0} секунди" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi не е инсталиран" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Версията на Hamachi %s е устаряла" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/cs.po ================================================ # Czech translation for haguichi # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2018-03-31 00:09+0000\n" "Last-Translator: Zdeněk Kopš \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2018-03-31 09:40+0000\n" "X-Generator: Launchpad (build 18599)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "Konfiguraci nelze obnovi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 #, fuzzy msgid "View your network list and client information" msgstr "Zobrazit informace o klientovi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Připojit se k síti" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Popis" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 příkaz" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 příkaz" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Priorita" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Uložit" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Připojit k účtu" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Účet" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Zahrnout všechny sítě vytvořené tímto klientem" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Připojit" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Změnit přezdívku" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Uzamčeno" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Schválení" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automaticky" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Ručně" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Změnit" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Změnit heslo" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nové heslo" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ID sítě" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Heslo" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Schválit" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "O_dmítnout" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Kopírovat IPv_4 adresu" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Kopírovat IPv_6 adresu" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Kopírovat ID klienta" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Vyhodit" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Vstoupit do sítě…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Vytvořit síť…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Jít online" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Jít offline" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Opustit" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Smazat" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "Změ_nit přezdívku…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Změnit _heslo…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Kopírovat ID sítě" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Obecné" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfigurace" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Uložit Zálohu" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Otevřít složku" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Přezdívka" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokol" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Oba IPv4 a IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Pouze IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Pouze IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Chování" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Přip_ojit automaticky při spuštění" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Automaticky obnovit spojení, pokud bylo zt_raceno" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "O_dpojit při ukončení" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Příkazy" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Plocha" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Vzhled" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Zobrazit _indikátor" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Upozornění" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Z_obrazit upozornění pokud je spojení ztraceno" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Zobrazit upozornění pokud se člen připo_jí" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Zobrazit upozornění pokud se č_len odpojí" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Zobrazit upozornění, když člen změní stav na o_nline" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Zobrazit upozornění, když člen změní stav na o_ffline" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Uložit zálohu…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Obnovit ze zálohy…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Zobrazit nápovědu" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Zobrazit informace o klientovi" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Otevřít nabídku" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Nastavení" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Klávesové zkratky" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Ukončit" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Spojení" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Připojit" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Odpojit" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Seznam sítí" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Připojit se k síti" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Vytvořit síť" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Obnovit" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Hledat" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Zobrazit/skrýt offline členy" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Rozbalit všechny sítě" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Sbalit všechny sítě" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Vykonat příkaz" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informace" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Připojit" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Zrušit" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ID klienta" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 adresa" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 adresa" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "Hamachi verze %s je zastaralá" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Stav" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Vytvořit síť" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Vytvořit síť" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Vlastník" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Členové" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapacita" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Příkazy" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adresa" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Zobrazit vzdálenou plochu" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "O_bnovit" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Přidat příkaz" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "P_rocházet sdílené" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Zobrazit vzdálenou plochu" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Nastavit jako výchozí akci" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Upravit…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Du_plikovat…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Posunout _nahoru" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Posunout _dolů" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Nastavit jako výchozí akci" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Odstranit" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Vstoupit do sítě" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi spojení ztraceno" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Zrušit" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Jste připojen!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Použijte tlačítko + pro přidání sítě" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Stáhněte si Hamachi a postupujte dle instalačních instrukcí" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Stáhnout" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi není nastaveno" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Před připojením je třeba Hamachi nastavit" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Nastavit" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informace" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Řadit dle _jména" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Řadit dle _stavu" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Zobrazit členy _offline" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Nastavení" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Nápověda" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "O _aplikaci Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "U_končit" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Znovu připojit" #: src/controller.vala:283 msgid "No internet connection" msgstr "Žádné připojení k internetu" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Přihlašuje se" #: src/controller.vala:348 msgid "Error connecting" msgstr "Chyba při připojování" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Přihlášení Hamachi selhalo" #: src/controller.vala:459 msgid "Updating" msgstr "Aktualizuje se" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Připojen" #: src/controller.vala:730 msgid "Member Joined" msgstr "Člen přidán" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} přidán do sítě {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} se připojil do sítě {1} a {2} další sítě" msgstr[1] "{0} se připojil do sítě {1} a {2} dalších sítí" msgstr[2] "{0} se připojil do sítě {1} a {2} dalších sítí" #: src/controller.vala:760 msgid "Member Left" msgstr "Člen odešel" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} opustil síť {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} opustil síť {1} a {2} další síť" msgstr[1] "{0} opustil síť {1} a {2} další sítě" msgstr[2] "{0} opustil síť {1} a {2} dalších sítí" #: src/controller.vala:786 msgid "Member Online" msgstr "Člen online" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} je online v síti {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} je online v síti {1} a {2} další síti" msgstr[1] "{0} je online v síti {1} a {2} dalších sítí" msgstr[2] "{0} je online v síti {1} a {2} dalších sítí" #: src/controller.vala:812 msgid "Member Offline" msgstr "Člen offline" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} je offline ze sítě {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} je offline v síti {1} a {2} další síti" msgstr[1] "{0} je offline v síti {1} a {2} dalších sítí" msgstr[2] "{0} je offline v síti {1} a {2} dalších sítí" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Upravit příkaz" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Přidat příkaz" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Žádost o připojení zaslána" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Účet nenalezen" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Vstoupit do sítě" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Vytvořit síť" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "Vstou_pit" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "V_ytvořit" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Žádost o připojení zaslána" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Síť nenalezena" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Neplatné heslo" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Síť je plná" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Síť je zamčená" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Síť je již připojena" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "ID sítě je již používáno" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Neznámý" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonymní" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Heslo" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "_Uložit zálohu…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "_Obnovit ze zálohy…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Archiv neobsahuje očekávané soubory" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Připojuje se" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Odpojen" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Zobrazit Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Odpojit" #: src/indicator.vala:104 msgid "C_onnect" msgstr "_Připojit" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Opravdu vyhodit člena „{0}“ ze sítě „{1}“?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "Pokud potvrdíte, mohou se vyloučení členi později opět připojit." #: src/network.vala:148 msgid "You" msgstr "Vy" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Opravdu chcete opustit síť „{0}“?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Pokud potvrdíte, můžete se opět připojit kdykoliv později." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Opravdu chcete smazat síť „{0}“?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Pokud síť odstraníte, bude nenávratně ztracena." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Všechny podporované archivy" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Uložit Zálohu" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Obnovit ze zálohy" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "O_bnovit" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "_Vrátit" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Nedostupný" #: src/sidebar.vala:192 msgid "pending" msgstr "čekající" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} připojeno, {1} celkem" #: src/status.vala:35 msgid "Offline" msgstr "Offline" #: src/status.vala:39 msgid "Online" msgstr "Online" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Předáno" #: src/status.vala:48 msgid "Unreachable" msgstr "Nedostupný" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Čeká na schválení" #: src/status.vala:56 msgid "Unknown error" msgstr "Neznámá chyba" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Chyba v protokolu" #: src/status.vala:62 msgid "Conflicting address" msgstr "Konflikt adres" #: src/status.vala:73 msgid "Direct" msgstr "Přímý" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Jan Bažant https://launchpad.net/~brbla\n" "Zdeněk Kopš https://launchpad.net/~zdenekkops" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Obnova připojení za {0} sekundu" msgstr[1] "Obnova připojení za {0} sekundy" msgstr[2] "Obnova připojení za {0} sekund" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi není nainstalováno" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi verze %s je zastaralá" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/de.po ================================================ # German translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2017-08-21 22:12+0000\n" "Last-Translator: scrawl \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-08-22 17:12+0000\n" "X-Generator: Launchpad (build 18446)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "Konfiguration konnte nicht wiederhergestellt werden" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Netzwerk beitreten" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Bezeichnung" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4-Kommando" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6-Kommando" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Priorität" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Speichern" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Einem Konto zuweisen" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Konto" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Alle Netzwerke dieses Clients einbinden" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Zuweisen" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Benutzernamen ändern" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Gesperrt" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Zulassung" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automatisch" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manuell" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "Ä_ndern" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Passwort ändern" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Neues Passwort" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Netzwerk-Kennung" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Passwort" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Annehmen" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "A_blehnen" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "IPv_4-Adresse kopieren" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "IPv_6-Adresse kopieren" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "Client-Kennung _kopieren" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Hinauswerfen" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "Netzwerk bei_treten…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "Netzwerk _erstellen…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Online gehen" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Offline gehen" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Verlassen" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Löschen" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "_Benutzernamen ändern…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "_Passwort ändern…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "Netzwerk-Kennung _kopieren" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Allgemein" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfiguration" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Backup erstellen" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Ordner öffnen" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Benutzername" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokoll" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 und IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Nur IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Nur IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Verhalten" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Beim Start automatisch verbinden" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Beim Verlust der Ve_rbindung automatisch neu verbinden" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Trennen beim Beenden" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Befehle" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Arbeitsumgebung" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Benach­rich­ti­gungen" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Benachrichtigung anzeigen, wenn die Verbindun_g unterbrochen wird" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Benachrichtigung anzeigen, wenn ein Mitglied das Netzwerk _betritt" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Benachrichtigung anzeigen, wenn ein Mitglied das Netzwerk _verlässt" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Benachrichtigung anzeigen, wenn ein Mitglied o_nline geht" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Benachrichtigung anzeigen, wenn ein Mitglied o_ffline geht" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Backup er_stellen…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "Backup wiede_rherstellen…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Menü öffnen" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Einstellungen" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Beenden" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Verbindung" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Verbinden" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Trennen" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 #, fuzzy msgid "Network List" msgstr "Netzwerk ist voll" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 #, fuzzy msgid "Join a network" msgstr "Netzwerk beitreten" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 #, fuzzy msgid "Create a network" msgstr "Netzwerk erstellen" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Aktualisieren" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 #, fuzzy msgid "Show/hide offline members" msgstr "_Offline-Mitglieder" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 #, fuzzy msgid "Execute command" msgstr "Befehl bearbeiten" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informationen" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Zuweisen" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Abbrechen" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Client-Kennung" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4-Adresse" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6-Adresse" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "Hamachi-Version %s ist veraltet" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Status" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Netzwerk erstellen" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Netzwerk erstellen" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Besitzer" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Mitglieder" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapazität" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Befehle" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adresse" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Entfernten Desktop betrachten" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "_Wiederherstellen" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "Befehl _hinzufügen" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Freigaben durchsuchen" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Entfernten Desktop betrachten" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Pingen" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Als Standard-Aktion festlegen" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Bearbeiten…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Duplizieren…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Nach _oben" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Nach _unten" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Als Standard-Aktion festlegen" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Entfernen" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Netzwerk beitreten" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi-Verbindung wurde unterbrochen" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Abbrechen" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Sie sind verbunden!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Verwenden Sie die + Button, um ein Netzwerk hinzuzufügen" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "" "Bitte laden Sie Hamachi herunter und folgen Sie der Installationsanleitung" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Herunterladen" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi ist nicht konfiguriert" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Bevor Sie sich verbinden können, muss Hamachi konfiguriert werden" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Konfigurieren" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informationen" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Nach _Namen sortieren" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Nach _Status sortieren" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Offline-Mitglieder" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Einstellungen" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Hilfe" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Info zu Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Beenden" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Wiederverbinden" #: src/controller.vala:283 msgid "No internet connection" msgstr "Keine Internetverbindung" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Anmelden" #: src/controller.vala:348 msgid "Error connecting" msgstr "Fehler beim Verbinden" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi-Login fehlgeschlagen" #: src/controller.vala:459 msgid "Updating" msgstr "Aktualisiere" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Verbunden" #: src/controller.vala:730 msgid "Member Joined" msgstr "Mitglied beigetreten" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} trat dem Netzwerk {1} bei" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} betritt das Netzwerk {1} und {2} anderes Netzwerk" msgstr[1] "{0} betritt das Netzwerk {1} und {2} andere Netzwerke" #: src/controller.vala:760 msgid "Member Left" msgstr "Mitglied verlässt Netzwerk" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} hat das Netzwerk {1} verlassen" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} verlässt das Netzwerk {1} und {2} anderes Netzwerk" msgstr[1] "{0} verlässt das Netzwerk {1} und {2} andere Netzwerke" #: src/controller.vala:786 msgid "Member Online" msgstr "Mitglied online" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} geht online im Netzwerk {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} geht online im Netzwerk {1} und {2} anderen Netzwerk" msgstr[1] "{0} geht online im Netzwerk {1} und {2} anderen Netzwerken" #: src/controller.vala:812 msgid "Member Offline" msgstr "Mitglied offline" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} geht offline im Netzwerk {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} geht offline im Netzwerk {1} und {2} anderen Netzwerk" msgstr[1] "{0} geht offline im Netzwerk {1} und {2} anderen Netzwerken" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Befehl bearbeiten" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Befehl hinzufügen" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Beitrittsanfrage gesendet" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Konto wurde nicht gefunden" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Netzwerk beitreten" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Netzwerk erstellen" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "Bei_treten" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "_Erstellen" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Beitrittsanfrage gesendet" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Netzwerk nicht gefunden" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Ungültiges Passwort" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Netzwerk ist voll" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Netzwerk ist gesperrt" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Sie sind diesem Netzwerk bereits beigetreten" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Netzwerk-Kennung ist bereits vergeben" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Unbekannt" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonym" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Passwort" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "Backup er_stellen…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "Backup wiede_rherstellen…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Archiv enthält die erwarteten Dateien nicht" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Verbinde" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Getrennt" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "Haguichi _zeigen" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Trennen" #: src/indicator.vala:104 msgid "C_onnect" msgstr "_Verbinden" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "" "Sind Sie sicher, dass Sie das Mitglied »{0}« aus dem Netzwerk »{1}« " "hinauswerfen möchten?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Falls erlaubt, können hinausgeworfene Mitglieder das Netzwerk zu jeder Zeit " "wieder betreten." #: src/network.vala:148 msgid "You" msgstr "Sie" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Möchten Sie das Netzwerk »{0}« wirklich verlassen?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Sie können Sie das Netzwerk später wieder betreten, sofern erlaubt." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Möchten Sie das Netzwerk »{0}« wirklich löschen?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Wenn Sie ein Netzwerk löschen, wird es für immer verloren." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Alle unterstützten Archive" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Backup erstellen" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Backup wiederherstellen" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Wiederherstellen" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "_Zurücksetzen" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Nicht verfügbar" #: src/sidebar.vala:192 msgid "pending" msgstr "noch ausstehend" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} online, {1} insgesamt" #: src/status.vala:35 msgid "Offline" msgstr "Offline" #: src/status.vala:39 msgid "Online" msgstr "Online" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Weitergeleitet" #: src/status.vala:48 msgid "Unreachable" msgstr "Nicht erreichbar" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Warte auf Zulassung" #: src/status.vala:56 msgid "Unknown error" msgstr "Unbekannter Fehler" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protokollfehler" #: src/status.vala:62 msgid "Conflicting address" msgstr "Adressenkonflikt" #: src/status.vala:73 msgid "Direct" msgstr "Direkt" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Befehl »%s« wurde entfernt" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Rückgängig" #: src/window.vala:198 msgid "Configuring" msgstr "" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Jannik Heller https://launchpad.net/~scrawl-deactivatedaccount" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Wiederverbindung in {0} Sekunde" msgstr[1] "Wiederverbindung in {0} Sekunden" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi ist nicht installiert" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi-Version %s ist veraltet" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/es.po ================================================ # Spanish translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-07-01 04:25+0000\n" "Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2024-07-06 14:08+0000\n" "X-Generator: Launchpad (build bbfa2351d9d6a9ddfe262109428f7bf5516e65d1)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Gestor de redes de Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Gestione sus redes de Hamachi" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "LogMeIn Hamachi;VPN;LAN;Red;Internet;P2P;Par;Cliente;GUI;Interfaz;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi facilita crear, administrar e incorporarse a redes de Hamachi." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Prestaciones:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Organice, contraiga y filtre la lista de redes" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Barra lateral para un fácil acceso a los detalles y las acciones" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Admite un indicador para un acceso rápido a las acciones principales" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" "Notificaciones de escritorio para mantenerse al tanto de los sucesos de la " "red" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Órdenes totalmente personalizables" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "" "Copia de respaldo y restauración de la carpeta de configuración de Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Tenga en cuenta: Requiere una instalación de Hamachi en el sistema para " "poder usarlo." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Vea su lista de redes y la información de los clientes" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Vea detalles sobre el miembro seleccionado" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Vea detalles sobre la red seleccionada" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Busque en su lista de redes" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Únase a redes o cree nuevas" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etiqueta" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Orden IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Orden IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioridad" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Guardar" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Vincular a la cuenta" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Cuenta" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Incluir todas las redes creadas por este cliente" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Vincular" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Cambiar acceso" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Bloqueado" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "No aceptar miembros nuevos en la red" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Aprobado" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automáticamente" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manualmente" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "Ca_mbiar" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Cambiar contraseña" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Contraseña nueva" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Id. de red" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Contraseña" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Aprobar" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Rechazar" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Copiar dirección IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Copiar dirección IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Copiar id. de cliente" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Expulsar" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Detalles" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Unirse a una red…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "C_rear red…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Conectarse" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Desconectarse" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Abandonar" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Eliminar" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Cambiar _acceso…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Ca_mbiar contraseña…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Copiar id. de red" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "General" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Configuración" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Copia de respaldo" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Abrir carpeta" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Apodo" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protocolo" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 e IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Solo IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Solo IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Comportamiento" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "Intervalo de actualización de lista de _redes" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Conectar _automáticamente al arrancar" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Reconectar cuando se pierda la conexión" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Desconectar al salir" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Órdenes" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Escritorio" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Apariencia" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Estilo" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Seguir el sistema" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Claro" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Oscuro" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Mostrar el _indicador" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notificaciones" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Mostrar una notificación cuando se pierda la conexión" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Mostrar una notificación cuando un miembro se _una" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Mostrar notificación cuando un miembro _abandone" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Mostrar notificación cuando se _conecte un miembro" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Mostrar notificación cuando se _desconecte un miembro" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Guardar una copia de seguridad…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Restaurar desde la copia de seguridad…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Mostrar la ayuda" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Mostrar la información del cliente" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Abrir menú" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Preferencias" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Atajos del teclado" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Salir" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Conexión" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Conectar" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Desconectar" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Lista de redes" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Unirse a una red" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Crear una red" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Actualizar" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Buscar" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Mostrar u ocultar miembros desconectados" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Expandir todas las redes" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Contraer todas las redes" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Ejecutar orden" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Información" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Vincular" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Cancelar" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Id. de cliente" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Dirección IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Dirección IPv6" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Versión de Hamachi" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Estado" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Abandonar red" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Eliminar red" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Propietario" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Miembros" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Capacidad" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Túnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Variables de orden" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Dirección" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Emulador de terminal" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Gestor de archivos" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Visor de escritorios remotos" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Restaurar valores predeterminados" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Añadir una orden" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Examinar recursos compartidos" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Ver escritorio remoto" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Acción predeterminada" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Opciones" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Editar…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Duplicar…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Mover hacia a_rriba" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Mover hacia a_bajo" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Predeterminar acción" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Quitar" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Copiar" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Inicializando" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Menú principal" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Buscar redes y miembros" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Añadir red" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi ha perdido la conexión" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Cancelar" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Conexión establecida." #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Usa el botón + para añadir una red" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "No se encontró ningún resultado" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Pruebe a buscar algo distinto" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Descargue Hamachi y siga las instrucciones de instalación" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Descargar" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi no está configurado" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Debe configurar Hamachi antes de que pueda realizar una conexión" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "C_onfigurar" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Información" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Ordenar por _nombre" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Ordenar por _estado" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Mostrar miembros no conectados" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Preferencias" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "Atajos del _teclado" #: data/ui/window.ui:552 msgid "_Help" msgstr "Ay_uda" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Acerca de Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Salir" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Volver a conectar" #: src/controller.vala:283 msgid "No internet connection" msgstr "No hay conexión a Internet" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Iniciando sesión" #: src/controller.vala:348 msgid "Error connecting" msgstr "Error al conectar" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Ha fallado el inicio de sesión de Hamachi" #: src/controller.vala:459 msgid "Updating" msgstr "Actualizando" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Conectado" #: src/controller.vala:730 msgid "Member Joined" msgstr "Se ha unido un miembro" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} se ha unido a la red {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} se ha unido a la red {1} y a otra {2} red más" msgstr[1] "{0} se ha unido a la red {1} y a otras {2} redes" #: src/controller.vala:760 msgid "Member Left" msgstr "Se ha ido un miembro" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{o} han abandonado la red {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} ha dejado la red {1} y {2} red más" msgstr[1] "{0} ha dejado la red {1} y otras {2} redes" #: src/controller.vala:786 msgid "Member Online" msgstr "Miembros conectados" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} se ha conectado a la red {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} se ha conectado en la red {1} y en {2} red más" msgstr[1] "{0} se ha conectado en la red {1} y en otras {2} redes" #: src/controller.vala:812 msgid "Member Offline" msgstr "Miembros desconectados" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} se ha desconectado de la red {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} se desconectó en la red {1} y en {2} red más" msgstr[1] "{0} se desconectó en la red {1} y en otras {2} redes" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Editar la orden" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Añadir una orden" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Solicitud de vinculación enviada" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Cuenta no encontrada" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Unirse a la red" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Crear red" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Unirse" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "C_rear" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Solicitud de unión enviada" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Red no encontrada" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Contraseña incorrecta" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "La red está llena" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Red bloqueada" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Ya se ha unido a esta red" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "El identificador de red ya está en uso" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Desconocido" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anónima" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Contraseña cambiada" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Guardando copia de respaldo…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Copia de respaldo guardada" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "No se pudo guardar la copia de respaldo" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Restaurando la copia de respaldo…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Copia de respaldo restaurada" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "No se pudo restaurar la copia de respaldo" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "El archivador no contiene los archivos esperados" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Conectando" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Desconectado" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Mostrar Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Desconectar" #: src/indicator.vala:104 msgid "C_onnect" msgstr "_Conectar" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "¿Confirma que quiere expulsar al miembro «{0}» de la red «{1}»?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Si se admite, los miembros expulsados podrán unirse a la red en cualquier " "momento posterior." #: src/network.vala:148 msgid "You" msgstr "Usted" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "¿Confirma que quiere abandonar la red «{0}»?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Si es admitido, podrá unirse a la red en cualquier momento posterior." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "¿Confirma que quiere eliminar la red «{0}»?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Si elimina una red se perderá permanentemente." #: src/preferences.vala:107 msgid "Not present" msgstr "No presente" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Todos los archivadores compatibles" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Guardar una copia de seguridad" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Restaurar desde la copia de seguridad" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Restaurar" #: src/preferences.vala:372 msgid "Never" msgstr "Nunca" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S segundo" msgstr[1] "%S segundos" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S minuto" msgstr[1] "%S minutos" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "No disponible" #: src/sidebar.vala:192 msgid "pending" msgstr "pendiente" #: src/sidebar.vala:193 msgid "Not attached" msgstr "No vinculado" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} conectados, {1} total" #: src/status.vala:35 msgid "Offline" msgstr "Fuera de línea" #: src/status.vala:39 msgid "Online" msgstr "En línea" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Retransmitida" #: src/status.vala:48 msgid "Unreachable" msgstr "Inalcanzable" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Esperando aprobación" #: src/status.vala:56 msgid "Unknown error" msgstr "Error desconocido" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Incoherencia de protocolo" #: src/status.vala:62 msgid "Conflicting address" msgstr "Dirección en conflicto" #: src/status.vala:73 msgid "Direct" msgstr "Directa" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "¿Quiere restaurar las órdenes predeterminadas?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Se perderán todas las personalizaciones." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Comando eliminado «%s»" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Deshacer" #: src/window.vala:198 msgid "Configuring" msgstr "Configurando" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Adolfo Jayme Barrientos https://launchpad.net/~fitojb\n" "Eduardo Parra https://launchpad.net/~soker" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Se copió en el portapapeles" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Reconexión en {0} segundo" msgstr[1] "Reconexión en {0} segundos" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi no está instalado" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "La versión %s de Hamachi está obsoleta" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi se seguirá ejecutando al cerrar su ventana de tal manera que pueda " "monitorizar la conexión y enviarle notificaciones." ================================================ FILE: po/fi.po ================================================ # Finnish translation for haguichi # Copyright (c) 2024 Rosetta Contributors and Canonical Ltd 2024 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2024. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-10-08 17:37+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2024-10-10 18:28+0000\n" "X-Generator: Launchpad (build 6341c735b243a0768c3cb66edf85737937cab327)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi-verkkohallinta" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Hallitse Hamachi-verkkojasi" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Ominaisuudet:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Liity verkkoon tai luo omia verkkoja" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4-komento" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6-komento" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioriteetti" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Tallenna" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Liitä tiliin" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Tili" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Liitä" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Lukittu" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Älä hyväksy uusia verkkojäseniä" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Hyväksyntä" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automaattisesti" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manuaalisesti" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Vaihda salasana" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Uusi salasana" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Verkon tunniste" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Salasana" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Hyväksy" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "H_ylkää" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Kopioi IPv_4-osoite" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Kopioi IPv_6-osoite" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Kopioi asiakkaan tunniste" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "H_äädä" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Tiedot" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Liity verkkoon…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Luo verkko…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Muodosta yhteys" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "P_oistu" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Poista" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Vaihda _salasana…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Kopioi verkon tunniste" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Yleiset" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Määritys" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Varmuuskopio" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Avaa kansio" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Nimimerkki" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Yhteyskäytäntö" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 ja IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Vain IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Vain IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Toiminta" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "_Verkkoluettelon päivitysväli" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Yhdistä automaattisesti käynnistäessä" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Y_hdistä automaattisesti uudelleen kun yhteys on katkennut" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Katkaise yhteys lopettaessa" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Komennot" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Työpöytä" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Ulkoasu" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Tyyli" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Seuraa järjestelmää" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Vaalea" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Tumma" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Näytä _ilmaisin" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Ilmoitukset" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Näytä ilmoitus kun yhteys _katkeaa" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Näytä ilmoitus kun jäsen _liittyy" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Näytä ilmoitus kun jäsen _poistuu" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Näytä ilmoitus kun jäsen saapuu l_injoille" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Näytä ilmoitus kun jäsen poi_stuu linjoilta" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Tallenna varmuuskopio…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Palauta varmuuskopiosta…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Näytä ohje" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Avaa valikko" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Asetukset" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Pikanäppäimet" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Lopeta" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Yhteys" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Yhdistä" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Katkaise yhteys" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Verkkoluettelo" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Liity verkkoon" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Luo verkko" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Päivitä" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Etsi" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Laajenna kaikki verkot" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Supista kaikki verkot" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Suorita komento" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Tietoja" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Liitä" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Peru" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Asiakkaan tunniste" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4-osoite" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6-osoite" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Hamachi-versio" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Tila" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Poistu verkosta" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Poista verkko" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Omistaja" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Jäsenet" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapasiteetti" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunneli" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Komennon muuttujat" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Osoite" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Pääte-emulaattori" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Tiedostonhallinta" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Etätyöpöydän käyttö" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Palauta oletus" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Lisää komento" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Selaa jakoja" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Näytä etätyöpöytä" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Oletustoiminto" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Valinnat" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Muokkaa…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "M_onista…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Siirrä _ylös" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Siirrä _alas" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "A_seta oletustoiminnoksi" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Poista" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Kopioi" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Alustetaan" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Päävalikko" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Etsi verkkoja ja jäseniä" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Lisää verkko" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi-yhteys katkennut" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Peru" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Yhteys muodostettu!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Käytä + painiketta lisätäksesi verkon" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Tuloksia ei löytynyt" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Yritä eri hakuehdoilla" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Lataa Hamachi ja seuraa asennusohjeita" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Lataa" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachia ei ole määritetty" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Sinun tulee määrittää Hamachi, ennen kuin voit yhdistää" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Määritä" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Tietoja" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Järjestä _nimen mukaan" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Järjestä _tilan mukaan" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Asetukset" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Ohje" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Tietoja - Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Lopeta" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Yhdistä uudelleen" #: src/controller.vala:283 msgid "No internet connection" msgstr "Ei internetyhteyttä" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Kirjaudutaan sisään" #: src/controller.vala:348 msgid "Error connecting" msgstr "Virhe yhdistäessä" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi-kirjautuminen epäonnistui" #: src/controller.vala:459 msgid "Updating" msgstr "Päivitetään" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Yhdistetty" #: src/controller.vala:730 msgid "Member Joined" msgstr "Jäsen liittyi" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} liittyi verkkoon {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/controller.vala:760 msgid "Member Left" msgstr "Jäsen poistui" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} poistui verkosta {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/controller.vala:786 msgid "Member Online" msgstr "" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/controller.vala:812 msgid "Member Offline" msgstr "" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Muokkaa komentoa" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Lisää komento" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Liitospyyntö lähetetty" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Tiliä ei löytynyt" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Liity verkkoon" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Luo verkko" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "Liit_y" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "_Luo" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Liittymispyyntö lähetetty" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Verkkoa ei löytynyt" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Virheellinen salasana" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Verkko on täynnä" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Verkko on lukittu" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Liitytty jo verkkoon" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Verkon tunniste on jo käytössä" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Tuntematon" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonyymi" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Salasana vaihdettu" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Tallennetaan varmuuskopio…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Varmuuskopio tallennettu" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Varmuuskopion tallentaminen epäonnistui" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Palautetaan varmuuskopiosta…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Varmuuskopio palautettu" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Varmuuskopion palauttaminen epäonnistui" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Arkisto ei sisällä odotettuja tiedostoja" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Yhdistetään" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Yhteys katkaistu" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Näytä Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Katkaise yhteys" #: src/indicator.vala:104 msgid "C_onnect" msgstr "_Yhdistä" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" #: src/network.vala:148 msgid "You" msgstr "Sinä" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Haluatko varmasti poistua verkosta “{0}”?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "" #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Haluatko varmasti poistaa verkon “{0}”?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Jos poistat verkon, se katoaa pysyvästi." #: src/preferences.vala:107 msgid "Not present" msgstr "Ei läsnä" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Kaikki tuetut arkistot" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Tallenna varmuuskopio" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Palauta varmuuskopiosta" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Palauta" #: src/preferences.vala:372 msgid "Never" msgstr "Ei koskaan" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S sekunti" msgstr[1] "%S sekuntia" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S minuutti" msgstr[1] "%S minuuttia" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "" #: src/sidebar.vala:192 msgid "pending" msgstr "" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Ei liitetty" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} yhteydessä, {1} yhteensä" #: src/status.vala:35 msgid "Offline" msgstr "Ei yhteydessä" #: src/status.vala:39 msgid "Online" msgstr "Yhteydessä" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "" #: src/status.vala:48 msgid "Unreachable" msgstr "" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Odotetaan hyväksyntää" #: src/status.vala:56 msgid "Unknown error" msgstr "Tuntematon virhe" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Yhteyskäytäntö ei täsmää" #: src/status.vala:62 msgid "Conflicting address" msgstr "" #: src/status.vala:73 msgid "Direct" msgstr "Suora" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Komento “%s” poistettu" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Kumoa" #: src/window.vala:198 msgid "Configuring" msgstr "Määritetään asetuksia" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Jiri Grönroos https://launchpad.net/~jiri-gronroos" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Kopioitu leikepöydälle" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Yhdistetään uudelleen {0} sekunnin kuluttua" msgstr[1] "Yhdistetään uudelleen {0} sekunnin kuluttua" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi ei ole asennettu" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi-versio %s on vanhentunut" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/fr.po ================================================ # French translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2022-08-28 16:08+0000\n" "Last-Translator: Stephen Brandt \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Launchpad-Export-Date: 2022-08-28 16:12+0000\n" "X-Generator: Launchpad (build 813bec7783fe35df624c0e68cd38fcaa442fb8d1)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Gestionnaire de réseaux Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Fonctionnalités :" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "liste de réseau consultable et triable ;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "barre latérale pour un accès facile aux détails et aux actions ;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "sauvegarde et restauration de votre dossier de configuration Hamachi." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 #, fuzzy msgid "View your network list and client information" msgstr "Afficher les informations du client" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 #, fuzzy msgid "Search your network list" msgstr "liste de réseau consultable et triable ;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Joindre un réseau" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Étiquette" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Commande IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Commande IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Priorité" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Enregistrer" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Attacher au compte" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Compte" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Inclure tous les réseaux créés par ce client" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Attacher" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Changer de pseudo" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Verrouillé" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Approbation" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automatiquement" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manuellement" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "C_hanger" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Changer de mot de passe" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nouveau mot de passe" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Identifiant du réseau" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Mot de passe" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Approuver" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Rejeter" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Copier l'adresse IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Copier l'adresse IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Copier l'identifiant client" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Expulser" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Joindre un réseau…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "C_réer un réseau…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "Se c_onnecter" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "Se _déconnecter" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Quitter" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Supprimer" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "Changer de _pseudo…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Changer de _mot de passe…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Copier l'identifiant réseau" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Général" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Configuration" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Enregistrer une sauvegarde" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Ouvrir un dossier" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Pseudo" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protocole" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 et IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "IPv4 seul" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "IPv6 seul" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Comportement" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Se c_onnecter automatiquement au lancement" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Se _reconnecter automatiquement lorsque la connexion a été perdue" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "Se _déconnecter en quittant" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Commandes" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Espace de travail" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Apparence" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Afficher l'_indicateur" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notifications" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Afficher une notification lorsque la connexion est perdue" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Afficher une notification lorsqu'un membre se _joint au réseau" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Afficher une notification lorsqu'un membre _part du réseau" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Afficher une notification lorsqu'un membre se _connecte" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Afficher une notification lorsqu'un membre n'est pl_us en ligne" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Enregistrer une _sauvegarde…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Restaurer depuis une sauvegarde…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Afficher l’aide" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Afficher les informations du client" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Ouvrir le menu" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Préférences" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Raccourcis clavier" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Quitter" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Connexion" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Se connecter" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Déconnecter" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Liste du réseau" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Joindre un réseau" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Créer un réseau" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Actualiser" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Rechercher" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Afficher/masquer les membres hors ligne" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Développer tous les réseaux" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Réduire tous les réseaux" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Exécuter la commande" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Information" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Attacher" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Annuler" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Identifiant client" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Adresse IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Adresse IPv6" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "La version %s de Hamachi est obsolète" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "État" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Créer un réseau" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Créer un réseau" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Propriétaire" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Membres" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Capacité" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Commandes" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adresse" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Voir le bureau à distance" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "_Restaurer" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "A_jouter une commande" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "P_arcourir les partages" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Voir le bureau à distance" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Définir comme action par défaut" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Modifier…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Du_pliquer…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Déplacer vers le _haut" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Déplacer vers le _bas" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Définir comme action par défaut" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Supprimer" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Initialisation" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 #, fuzzy msgid "Search networks and members" msgstr "Gestionnaire de réseaux Hamachi" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Joindre le réseau" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi a perdu la connexion" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "A_nnuler" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Vous êtes connecté !" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Utilisez le bouton + pour ajouter un réseau" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "" "Merci de télécharger Hamachi et de suivre les instructions d'installation" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Télécharger" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi n'est pas configuré" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Vous devez configurer Hamachi avant de pouvoir vous connecter" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "C_onfigurer" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Information" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Trier par _nom" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Trier par é_tat" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Membres hors ligne" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Préférences" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "Raccourcis _clavier" #: data/ui/window.ui:552 msgid "_Help" msgstr "Aid_e" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "À _propos de Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Quitter" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Reconnecter" #: src/controller.vala:283 msgid "No internet connection" msgstr "Pas de connexion Internet" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Identification en cours" #: src/controller.vala:348 msgid "Error connecting" msgstr "Erreur de connexion" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Echec de l'ouverture de la session Hamachi" #: src/controller.vala:459 msgid "Updating" msgstr "Mise à jour" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Connecté" #: src/controller.vala:730 msgid "Member Joined" msgstr "Membre a rejoint" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} a joint le réseau {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} a rejoint le réseau {1} et {2} autre réseau" msgstr[1] "{0} a rejoint le réseau {1} et {2} autres réseaux" #: src/controller.vala:760 msgid "Member Left" msgstr "Membre parti" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} a quitté le réseau {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} a quitté le réseau {1} et {2} autre réseau" msgstr[1] "{0} a quitté le réseau {1} et {2} autres réseaux" #: src/controller.vala:786 msgid "Member Online" msgstr "Membre en ligne" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} est maintenant en ligne sur le réseau {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} s'est connecté au réseau {1} et {2} autre réseau" msgstr[1] "{0} s'est connecté au réseau {1} et {2} autres réseaux" #: src/controller.vala:812 msgid "Member Offline" msgstr "Membre hors ligne" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} est maintenant hors ligne sur le réseau {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} s'est déconnecté du réseau {1} et d'{2} autre réseau" msgstr[1] "{0} s'est déconnecté du réseau {1} et de {2} autres réseaux" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Modifier une commande" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Ajouter une commande" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Demande de connexion envoyée" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Compte introuvable" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Joindre le réseau" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Créer un réseau" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Joindre" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "C_réer" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Demande de connexion envoyée" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Réseau non trouvé" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Mot de passe invalide" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Le réseau est saturé" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Le réseau est verrouillé" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Vous avez déjà rejoint ce réseau" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Le identifiant du réseau est déjà utilisé" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Inconnu" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonyme" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Mot de passe" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "Enregistrer une _sauvegarde…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "_Restaurer depuis une sauvegarde…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "L'archive ne contient pas les fichiers attendus" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Connexion en cours" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Déconnecté" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Afficher Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Déconnecter" #: src/indicator.vala:104 msgid "C_onnect" msgstr "Se _connecter" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "" "Êtes-vous sûr de vouloir expulser le membre « {0} » du réseau « {1} » ?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Si admis, les membres expulsés peuvent rejoindre le réseau à tout moment " "ultérieur." #: src/network.vala:148 msgid "You" msgstr "Vous" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Êtes-vous sûr de vouloir quitter le réseau « {0} » ?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Si admis, vous pourrez rejoindre le réseau à tout moment ultérieur." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Êtes-vous sûr de vouloir effacer le réseau « {0} » ?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Si vous supprimez un réseau, il sera définitivement perdu." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Toutes les archives prises en charge" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Enregistrer une sauvegarde" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Restaurer depuis une sauvegarde" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Restaurer" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "_Rétablir" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Indisponible" #: src/sidebar.vala:192 msgid "pending" msgstr "en attente" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} en ligne, {1} au total" #: src/status.vala:35 msgid "Offline" msgstr "Hors ligne" #: src/status.vala:39 msgid "Online" msgstr "En ligne" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Relayé" #: src/status.vala:48 msgid "Unreachable" msgstr "Inaccessible" #: src/status.vala:52 msgid "Awaiting approval" msgstr "En attente d'approbation" #: src/status.vala:56 msgid "Unknown error" msgstr "Erreur inconnue" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protocole inadéquat" #: src/status.vala:62 msgid "Conflicting address" msgstr "Conflit d'adresse" #: src/status.vala:73 msgid "Direct" msgstr "Direct" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Commande « %s » supprimée" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Annuler" #: src/window.vala:198 msgid "Configuring" msgstr "Configuration" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Emilien Klein https://launchpad.net/~emilien-klein\n" "Gabriel U. https://launchpad.net/~gabriel-ull\n" "Jean-Marc https://launchpad.net/~m-balthazar" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Reconnexion dans {0} seconde" msgstr[1] "Reconnexion dans {0} secondes" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi n'est pas installé" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "La version %s de Hamachi est obsolète" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/haguichi.pot ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\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=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "" #: data/ui/window.ui:299 msgid "Add Network" msgstr "" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "" #: data/ui/window.ui:432 msgid "_Download" msgstr "" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "" #: data/ui/window.ui:552 msgid "_Help" msgstr "" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "" #: src/bubble.vala:44 msgid "Reconnect" msgstr "" #: src/controller.vala:283 msgid "No internet connection" msgstr "" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "" #: src/controller.vala:348 msgid "Error connecting" msgstr "" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "" #: src/controller.vala:459 msgid "Updating" msgstr "" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "" #: src/controller.vala:730 msgid "Member Joined" msgstr "" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/controller.vala:760 msgid "Member Left" msgstr "" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/controller.vala:786 msgid "Member Online" msgstr "" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/controller.vala:812 msgid "Member Offline" msgstr "" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "" msgstr[1] "" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "" #: src/indicator.vala:104 msgid "C_onnect" msgstr "" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" #: src/network.vala:148 msgid "You" msgstr "" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "" #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "" #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "" #: src/preferences.vala:372 msgid "Never" msgstr "" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "" #: src/sidebar.vala:192 msgid "pending" msgstr "" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "" #: src/status.vala:35 msgid "Offline" msgstr "" #: src/status.vala:39 msgid "Online" msgstr "" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "" #: src/status.vala:48 msgid "Unreachable" msgstr "" #: src/status.vala:52 msgid "Awaiting approval" msgstr "" #: src/status.vala:56 msgid "Unknown error" msgstr "" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "" #: src/status.vala:62 msgid "Conflicting address" msgstr "" #: src/status.vala:73 msgid "Direct" msgstr "" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "" msgstr[1] "" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/hu.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2026-05-01 10:09+0000\n" "Last-Translator: therealmate \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.17.1\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi hálózatkezelő" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Hamachi-hálózatok kezelése" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" "LogMeIn Hamachi;VPN;LAN;Hálózat;Internet;P2P;Partner;Kliens;Grafikus felület;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "A Haguichi leegyszerűsíti a Hamachi-hálózatokhoz való csatlakozást, " "létrehozást és kezelést." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Funkciók:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Kereshető, rendezhető és összecsukható hálózatlista" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Oldalsáv a részletekhez és műveletekhez való gyors hozzáféréshez" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Indikátortámogatás az elsődleges műveletek gyors eléréséhez" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "Asztali értesítések a hálózati események nyomon követéséhez" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Teljesen testreszabható parancsok" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "A Hamachi beállítási mappa biztonsági mentése és visszaállítása" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "Figyelem: A használathoz a Hamachi telepítése szükséges." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Hálózatlista és kliensinformációk megtekintése" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Kijelölt tag adatainak megtekintése" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Kijelölt hálózat adatainak megtekintése" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Keresés a hálózatlistában" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Csatlakozzon egy hálózathoz vagy készítsen egyet" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Címke" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4-parancs" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6-parancs" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioritás" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Mentés" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Fiókhoz csatolás" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Fiók" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Az ezzel a klienssel létrehozott összes hálózat megjelenítése" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Csatolás" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Hozzáférés módosítása" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Zárolva" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Ne fogadjon új hálózati tagokat" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Jóváhagyás" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automatikusan" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manuálisan" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Módosítás" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Jelszó módosítása" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Új jelszó" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Hálózatazonosító" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Jelszó" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Jóváhagyás" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Elutasítás" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "IPv_4 cím másolása" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "IPv_6 cím másolása" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Kliens azonosító másolása" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Eltávolítás" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Részletek" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Csatlakozás hálózathoz…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Hálózat létrehozása…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Online mód" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Offline mód" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Kilépés" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Törlés" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "_Hozzáférés módosítása…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "_Jelszó módosítása…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "Hálózati _azonosító másolása" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Általános" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfigurálás" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Biztonsági mentés" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Mappa megnyitása" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Becenév" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokoll" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 és IPv6 is" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Csak IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Csak IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Viselkedés" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "_Hálózatlista frissítési gyakorisága" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Automatikus _csatlakozás indításkor" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Automatikus új_racsatlakozás kapcsolat megszakadásakor" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Kapcsolat bontása kilépéskor" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Parancsok" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Asztal" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Megjelenés" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Stílus" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Rendszertéma követése" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Világos" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Sötét" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "_Indikátor megjelenítése" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Értesítések" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Értesítés megjelenítése, ha a kapcsolat megsz_akad" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Értesítés megjelenítése, ha egy tag _csatlakozik" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Értesítés megjelenítése, ha egy tag _kilép" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Értesítés megjelenítése, ha egy tag o_nline állapotba kerül" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Értesítés megjelenítése, ha egy tag o_ffline állapotba kerül" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Biztonsági mentés…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Visszaállítás biztonsági mentésből…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Súgó megjelenítése" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Kliensinformációk megjelenítése" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Menü megnyitása" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Beállítások" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Gyorsbillentyűk" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Kilépés" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Kapcsolat" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Csatlakozás" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Kapcsolat bontása" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Hálózatlista" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Csatlakozás egy hálózathoz" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Hálózat létrehozása" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Frissítés" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Keresés" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Offline tagok megjelenítése/elrejtése" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Összes hálózat kibontása" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Összes hálózat összecsukása" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Parancs végrehajtása" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Információ" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Csatolás" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Mégse" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Kliens azonosító" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4-cím" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6-cím" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Hamachi-verzió" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Állapot" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Hálózat elhagyása" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Hálózat törlése" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Tulajdonos" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Tagok" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapacitás" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Alagút" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Parancsváltozók" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Cím" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Terminálemulátor" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Fájlkezelő" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Távoli asztal néző" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Alapértelmezés visszaállítása" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Parancs hozzáadása" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Megosztások böngészése" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Távoli asztal megtekintése" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Pingelés" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Alapértelmezett művelet" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Beállítások" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Szerkesztés…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Kettőzés…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Mozgatás _fel" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Mozgatás _le" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Beállítás alapértelmezett műveletként" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Eltávolítás" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Másolás" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Inicializálás" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Főmenü" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Hálózatok és tagok keresése" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Hálózat hozzáadása" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Megszakadt a kapcsolat a Hamachival" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Mégse" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Csatlakozva!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Használja a + gombot hálózat hozzáadásához" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Nincs találat" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Próbáljon meg más keresést" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Töltse le a Hamachit, és kövesse a telepítési utasításokat" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Letöltés" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "A Hamachi nincs konfigurálva" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "A csatlakozás előtt konfigurálnia kell a Hamachit" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Konfigurálás" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Információ" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Rendezés _név szerint" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Rendezés álla_pot szerint" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Offline tagok megjelenítése" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Beállítások" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Súgó" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "A _Haguichi névjegye" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Kilépés" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Újracsatlakozás" #: src/controller.vala:283 msgid "No internet connection" msgstr "Nincs internetkapcsolat" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Bejelentkezés" #: src/controller.vala:348 msgid "Error connecting" msgstr "Csatlakozási hiba" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi bejelentkezés sikertelen" #: src/controller.vala:459 msgid "Updating" msgstr "Frissítés folyamatban" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Csatlakozva" #: src/controller.vala:730 msgid "Member Joined" msgstr "Új tag csatlakozott" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} csatlakozott a(z) {1} hálózathoz" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} csatlakozott a(z) {1} hálózathoz és még {2} másik hálózathoz" msgstr[1] "{0} csatlakozott a(z) {1} hálózathoz és még {2} másik hálózathoz" #: src/controller.vala:760 msgid "Member Left" msgstr "Tag kilépett" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} kilépett a(z) {1} hálózatból" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} kilépett a(z) {1} hálózatból és még {2} másik hálózatból" msgstr[1] "{0} kilépett a(z) {1} hálózatból és még {2} másik hálózatból" #: src/controller.vala:786 msgid "Member Online" msgstr "Tag online" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} online lett a(z) {1} hálózatban" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} online lett a(z) {1} hálózatban és még {2} másik hálózatban" msgstr[1] "{0} online lett a(z) {1} hálózatban és még {2} másik hálózatban" #: src/controller.vala:812 msgid "Member Offline" msgstr "Tag offline" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} offline lett a(z) {1} hálózatban" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} offline lett a(z) {1} hálózatban és még {2} másik hálózatban" msgstr[1] "{0} offline lett a(z) {1} hálózatban és még {2} másik hálózatban" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Parancs szerkesztése" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Parancs hozzáadása" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Csatolási kérelem elküldve" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Fiók nem található" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Csatlakozás a hálózathoz" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Hálózat létrehozása" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Csatlakozás" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "_Létrehozás" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Csatlakozási kérelem elküldve" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "A hálózat nem található" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Érvénytelen jelszó" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "A hálózat megtelt" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "A hálózat zárolva van" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Már csatlakozott ehhez a hálózathoz" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "A hálózat azonosítója már foglalt" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Ismeretlen" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Névtelen" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Jelszó megváltoztatva" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Biztonsági mentés mentése…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Biztonsági mentés elmentve" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Nem sikerült elmenteni a biztonsági mentést" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Biztonsági mentés visszaállítása…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Biztonsági mentés visszaállítva" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Nem sikerült visszaállítani a biztonsági mentést" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Az archívum nem tartalmazza a szükséges fájlokat" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Csatlakozás" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Kapcsolat bontva" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Haguichi megjelenítése" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Kapcsolat bontása" #: src/indicator.vala:104 msgid "C_onnect" msgstr "K_apcsolódás" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "" "Biztosan el szeretné távolítani a következő tagot a(z) „{1}” hálózatból: " "„{0}”?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Ha visszaveszik őket, az eltávolított tagok később újra csatlakozhatnak a " "hálózathoz." #: src/network.vala:148 msgid "You" msgstr "Ön" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Biztosan el szeretne hagyni a(z) „{0}” hálózatot?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Ha visszaveszik, később bármikor újra csatlakozhat a hálózathoz." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Biztosan törölni szeretné a(z) „{0}” hálózatot?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Ha törli a hálózatot, az véglegesen el fog veszni." #: src/preferences.vala:107 msgid "Not present" msgstr "Nincs jelen" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Minden támogatott archívum" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Biztonsági mentés mentése" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Visszaállítás biztonsági mentésből" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Visszaállítás" #: src/preferences.vala:372 msgid "Never" msgstr "Soha" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S másodperc" msgstr[1] "%S másodperc" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S perc" msgstr[1] "%S perc" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Nem elérhető" #: src/sidebar.vala:192 msgid "pending" msgstr "függőben" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Nem csatolt" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} online, {1} összesen" #: src/status.vala:35 msgid "Offline" msgstr "Offline" #: src/status.vala:39 msgid "Online" msgstr "Online" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Továbbított" #: src/status.vala:48 msgid "Unreachable" msgstr "Elérhetetlen" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Jóváhagyásra vár" #: src/status.vala:56 msgid "Unknown error" msgstr "Ismeretlen hiba" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protokoll-eltérés" #: src/status.vala:62 msgid "Conflicting address" msgstr "Ütköző cím" #: src/status.vala:73 msgid "Direct" msgstr "Közvetlen" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Visszaállítja az alapértelmezett parancsokat?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Minden testreszabás el fog veszni." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "A(z) „%s” parancs eltávolítva" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Visszavonás" #: src/window.vala:198 msgid "Configuring" msgstr "Konfigurálás folyamatban" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "therealmate https://github.com/therealmate" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Másolva a vágólapra" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Újrakapcsolódás {0} másodperc múlva" msgstr[1] "Újrakapcsolódás {0} másodperc múlva" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "A Hamachi nincs telepítve" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "A Hamachi %s verziója elavult" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "A Haguichi az ablak bezárása után is futni fog, hogy figyelhesse a " "kapcsolatot és értesítéseket küldhessen." ================================================ FILE: po/id.po ================================================ # Indonesian translation for haguichi # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-07-27 14:48+0000\n" "Last-Translator: Abdul Munif Hanafi \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2024-08-03 10:52+0000\n" "X-Generator: Launchpad (build e3ace39cea497a5ecb83e8fb6dd8e7e169f02939)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Manajer Jaringan Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Kelola jaringan Hamachi Anda" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Fitur:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Senarai Jaringan yang dapat ditelusuri, diurutkan dan diciutkan" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Bilah samping untuk memudahkan akses ke detail dan tindakan" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Perintah yang dapat dikustomisasi sepenuhnya" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Cadangkan dan pulihkan folder konfigurasi Hamachi Anda" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Harap diperhatikan: Membutuhkan pemasangan Hamachi pada sistem agar " "dapat digunakan." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Lihat daftar jaringan dan informasi klien Anda" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Lihat rincian anggota yang dipilih" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Lihat rincian jaringan yang dipilih" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Cari daftar jaringan Anda" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Bergabung atau buat jaringan" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Label" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Perintah IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Perintah IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioritas" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Simpan" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Lampirkan ke Akun" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Akun" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Sertakan seluruh jaringan yang dibuat oleh klien" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "L_ampirkan" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Ubah Akses" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Terkunci" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Jangan terima anggota jaringan baru" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Persetujuan" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Secara otomatis" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Secara Manual" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "Uba_h" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Ubah Sandi" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Sandi baru" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ID Jaringan" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Kata Sandi" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Setujui" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Tolak" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Salin Alamat IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Salin Alamat IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Salin ID Klien" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Keluarkan" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Rincian" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Bergabung ke dalam Jaringan…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Buat Jaringan…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Masuk Jaringan" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Keluar Jaringan" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Pergi" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Hapus" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Ubah _Akses…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Ubah _Sandi…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Salin ID Jaringan" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Umum" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfigurasi" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Buka Folder" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Nama Panggilan" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokol" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 dan IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Hanya IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Hanya IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Perilaku" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "T_erhubung secara otomatis pada saat startup" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Hubungkan kembali secara otomatis ketika koneksi terputus" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Diskonek ketika keluar" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Perintah" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Desktop" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Tampilan" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Gaya" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Ikuti Sistem" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Terang" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Gelap" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Tampilkan _Indikator" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notifikasi" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Tampilkan notifikasi koneksi ter_putus" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Tampilkan notifikasi ketika anggota _bergabung" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Tampilkan notifikasi ketika anggota _keluar" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Tampilkan notifikasi ketika anggota masuk ke _daring" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Tampilkan notifikasi ketika anggota keluar dari _luring" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Simpan data cadangan…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Pulihkan dari data cadangan…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Tampilkan bantuan" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Tampilkan informasi klien" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Buka menu" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Preferensi" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Pintasan papan tik" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Keluar" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Koneksi" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Sambung" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Putus koneksi" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Senarai Jaringan" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Bergabung dalam jaringan" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Membuat Jaringan" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Segarkan" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Telusuri" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Tampilkan/sembunyikan anggota yang terputus" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Tampilkan semua jaringan" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Sembunyikan semua jaringan" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Jalankan perintah" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informasi" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Lampirkan" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Batal" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ID Klien" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Alamat IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Alamat IPv6" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Versi Hamachi" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Status" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Keluar dari Jaringan" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Hapus Jaringan" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Pemilik" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Anggota" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapasitas" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Variabel Perintah" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Alamat" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Emulator Terminal" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Pengelola Berkas" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Tambah Perintah" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Menelusuri Shares" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Lihat Remote Destop" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Pilihan" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Sunting…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Duplikat…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Pindah ke _atas" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Pindah ke _bawah" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Set sebagai tindakan default" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Hapus" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Salin" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Menginisialisasi" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Menu Utama" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Cari jaringan dan anggota" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Tambah Jaringan" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Koneksi Hamachi putus" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Batal" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Anda terhubung!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Gunakan tombol + untuk menambahkan jaringan" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Tak Ada Hasil yang Ditemukan" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Coba pencarian lain" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Silahkan unduh Hamachi dan ikuti intruksi instalasi" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Unduh" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi belum di konfigurasi" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Anda harus mengkonfigurasi Hamachi sebelum anda dapat terhubung" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "K_onfigurasi" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informasi" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Urutkan berdasar _Nama" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Urutkan berdasar _Status" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Tampilkan Anggota _Luring" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Preferensi" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "Pintasan Papan Ti_k" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Bantuan" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "Tent_ang Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Keluar" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Sambungkan ulang" #: src/controller.vala:283 msgid "No internet connection" msgstr "Tidak ada koneksi internet" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Masuk ke sistem" #: src/controller.vala:348 msgid "Error connecting" msgstr "Galat menyambung" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Login Hamachi gagal" #: src/controller.vala:459 msgid "Updating" msgstr "Memperbarui" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Terhubung" #: src/controller.vala:730 msgid "Member Joined" msgstr "Anggota bergabung" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} bergabung ke jaringan {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} bergabung ke dalam jaringan {1} dan {2} jaringan lain" #: src/controller.vala:760 msgid "Member Left" msgstr "Anggota keluar" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} meninggalkan jaringan {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} meninggalkan jaringan {1} dan {2} jaringan lain" #: src/controller.vala:786 msgid "Member Online" msgstr "Anggota daring" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} menjadi daring di jaringan {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} menjadi daring di jaringan {1} dan {2} jaringan lain" #: src/controller.vala:812 msgid "Member Offline" msgstr "Anggota luring" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} pergi luring dari jaringan {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} pergi ke luring dari jaringan {1} dan {2} jaringan lain" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Sunting Perintah" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Tambah Perintah" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Akun tidak ditemukan" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Bergabung ke dalam jaringan" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Buat Jaringan" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Gabung" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "B_uat" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Permintaan bergabung terkirim" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Jaringan tidak ditemukan" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Sandi tidak tepat" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Jaringan sedang penuh" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Jaringan terkunci" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Sudah bergabung dalam jaringan" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "ID jaringan telah digunakan" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Tidak Dikenal" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonim" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Kata sandi diubah" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Arsip tidak berisi file yang sesuai" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Menghubungkan" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Koneksi terputus" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Tampilkan Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Putus koneksi" #: src/indicator.vala:104 msgid "C_onnect" msgstr "S_ambung" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "" "Apakah anda yakin ingin mengeluarkan anggota “{0}”? dari jaringan “{1}”?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Jika diijinkan, anggota yang dikeluarkan dapat bergabung kembali ke jaringan " "ini." #: src/network.vala:148 msgid "You" msgstr "Anda" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Apakah anda yakin untuk meninggalkan jaringan “{0}”?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Jika diijinkan, anda dapat bergabung kembali ke jaringan ini." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Apakah anda yakin untuk menghapus jaringan “{0}”?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Jika anda menghapus jaringan, maka akan hilang secara permanen." #: src/preferences.vala:107 msgid "Not present" msgstr "Tidak ada" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Semua arsip yang didukung" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Simpan data cadangan" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Pulihkan dari data cadangan" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Pulihkan" #: src/preferences.vala:372 msgid "Never" msgstr "Jangan Pernah" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S detik" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S menit" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Tidak Tersedia" #: src/sidebar.vala:192 msgid "pending" msgstr "tertunda" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Tidak dilampirkan" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} daring, {1} total" #: src/status.vala:35 msgid "Offline" msgstr "Luring" #: src/status.vala:39 msgid "Online" msgstr "Daring" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Tidak langsung" #: src/status.vala:48 msgid "Unreachable" msgstr "Tidak terjangkau" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Menunggu Persetujuan" #: src/status.vala:56 msgid "Unknown error" msgstr "Galat tidak dikenal" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protokol tidak sesuai" #: src/status.vala:62 msgid "Conflicting address" msgstr "Alamat bertentangan" #: src/status.vala:73 msgid "Direct" msgstr "Langsung" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "Mengkonfigurasi" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Abdul Munif Hanafi https://launchpad.net/~hahnavi\n" "Fattah Rizki https://launchpad.net/~galamarv\n" "Hertatijanto Hartono https://launchpad.net/~dvertx" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Disalin ke papan klip" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Mencoba koneksi ulang dalam {0} detik" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi belum dipasang" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi versi %s sudah kedaluwarsa" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi akan terus berjalan ketika jendelanya ditutup sehingga dapat " "memantau koneksi dan mengirimkan notifikasi." ================================================ FILE: po/it.po ================================================ # Italian translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2022-08-28 15:57+0000\n" "Last-Translator: Stephen Brandt \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2022-08-28 16:00+0000\n" "X-Generator: Launchpad (build 813bec7783fe35df624c0e68cd38fcaa442fb8d1)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi Network Manager" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Funzionalità:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Cerca, ordina e compatta la lista delle reti" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Barra laterale per l'accesso a dettagli e azioni" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "Salva e ripristina la tua cartella della configurazione di Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 #, fuzzy msgid "View your network list and client information" msgstr "Mostra informazioni del client" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 #, fuzzy msgid "Search your network list" msgstr "Cerca, ordina e compatta la lista delle reti" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Unisciti ad una rete" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etichetta" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Comando IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Comando IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Priorità" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Salva" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Associa all'account" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Account" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Includi tutte le reti create da questo client" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Associa" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Modifica nickname" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Bloccato" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Approvato" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automaticamente" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manualmente" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "M_odifica" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Modifica password" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nuova password" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ID Rete" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Password" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Approva" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Rifiuta" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Copia l'indirizzo IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Copia l'indirizzo IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Copia ID Client" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Espelli" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Entra in una rete…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Crea una rete…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Vai in linea" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Vai non in linea" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Lascia" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "Eli_mina" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "Modifica _nickname…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Modifica _password…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Copia ID Rete" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Generale" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Configurazione" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Esegui un backup" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Apri cartella" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Nickname" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protocollo" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Sia IPv4 che IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Solo IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Solo IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Comportamento" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Connetti automaticamente all'avvio" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Riconnetti automaticamente quando viene persa la connessione" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Disconnetti all'uscita" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Comandi" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Desktop" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Aspetto" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Mostra _indicator" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notifiche" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Mostra una notifica quando viene persa la connessione" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Mostra una notifica quando un membro _entra nella rete" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Mostra una notifica quando un membro e_sce dalla rete" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Mostra una notifica quando un membro si c_onnette" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Mostra una notifica quando un membro si _disconnette" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Es_egui un backup…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Ripristina da un backup…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Mostra aiuto" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Mostra informazioni del client" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Apre il menù" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Preferenze" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Scorciatoie da tastiera" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Esci" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Connessione" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Connetti" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Disconnetti" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Lista della rete" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Unisciti ad una rete" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Crea una rete" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Aggiorna" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Cerca" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Mostra/nascondi membri offline" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Espandi tutte le reti" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Contrai tutte le reti" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Esegui comando" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informazioni" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Associa" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Annulla" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ID Client" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Indirizzo IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Indirizzo IPv6" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "La versione %s di Hamachi è obsoleta." #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Stato" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Crea una rete" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Crea una rete" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Proprietario" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Membri" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Capacità" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Comandi" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Indirizzo" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Visualizzare il desktop remoto" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "_Ripristina" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "A_ggiungi comando" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Esplora le risorse condivise" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Visualizzare il desktop remoto" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Imposta come azione di default" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Modifica…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Duplica…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Sposta in _alto" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Sposta in _basso" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Imposta come azione di default" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Rimuovi" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Inizializzazione" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 #, fuzzy msgid "Search networks and members" msgstr "Hamachi Network Manager" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Entra in una rete" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi ha perso la connessione" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "A_nnulla" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Sei connesso!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Usa il pulsante + per aggiungere una rete" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Per favore, scarica Hamachi e segui le istruzioni di installazione" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Scarica" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi non è configurato" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Devi configurare Hamachi prima di poterti connettere" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "C_onfigura" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "I_nformazioni" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Ordina per _nome" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Ordina per _stato" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Membri non in linea" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "Preferen_ze" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "Scorciatoie da _tastiera" #: data/ui/window.ui:552 msgid "_Help" msgstr "A_iuto" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "I_nformazioni su Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Esci" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Riconnetti" #: src/controller.vala:283 msgid "No internet connection" msgstr "Connessione ad internet non presente" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Login in corso" #: src/controller.vala:348 msgid "Error connecting" msgstr "Errore di connessione" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi ha fallito il login" #: src/controller.vala:459 msgid "Updating" msgstr "Aggiornamento" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Connesso" #: src/controller.vala:730 msgid "Member Joined" msgstr "Membro entrato" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} è entrato nella rete {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} è entrato nella rete {1} e in {2} altra rete" msgstr[1] "{0} è entrato nella rete {1} e in {2} altre reti" #: src/controller.vala:760 msgid "Member Left" msgstr "Membro uscito" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} ha lasciato la rete {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} ha lasciato la rete {1} e {2} altra rete" msgstr[1] "{0} ha lasciato la rete {1} e {2} altre reti" #: src/controller.vala:786 msgid "Member Online" msgstr "Membro in linea" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} si è connesso alla rete {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} è diventato online nella rete {1} e in {2} altra rete" msgstr[1] "{0} è diventato online nella rete {1} e in {2} altre reti" #: src/controller.vala:812 msgid "Member Offline" msgstr "Membro non in linea" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} si è disconnesso dalla rete {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} è diventato offline nella rete {1} e in {2} altra rete" msgstr[1] "{0} è diventato offline nella rete {1} e in {2} altre reti" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Modifica comando" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Aggiungi comando" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Inviata richiesta per entrare nella rete" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Account non trovato" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Entra in una rete" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Crea una rete" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Entra" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "C_rea" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Inviata richiesta per entrare nella rete" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Rete non trovata" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Password non valida" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "La rete è piena" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "La rete è bloccata" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Sei già entrato nella rete" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "L'ID di rete è già stato utilizzato" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Sconosciuto" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonimo" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Password" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "Es_egui un backup…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "_Ripristina da un backup…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "L'archivio non contiene i file attesi" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Connessione in corso" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Disconnesso" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Mostra Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Disconnetti" #: src/indicator.vala:104 msgid "C_onnect" msgstr "C_onnetti" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Sei sicuro di volere espellere il membro «{0}» dalla rete «{1}»?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Se ammessi, i membri cacciati possono rientrare nella rete in qualsiasi " "momento." #: src/network.vala:148 msgid "You" msgstr "Tu" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Sei sicuro di volere lasciare la rete «{0}»?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Se accettato, puoi rientrare nella rete in qualunque momento." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Sei sicuro di volere cancellare la rete «{0}»?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Se cancelli una rete, sarà persa definitivamente." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Tutti gli archivi supportati" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Esegui un backup" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Ripristina da un backup" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Ripristina" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "_Ripristina" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Non disponibile" #: src/sidebar.vala:192 msgid "pending" msgstr "in sospeso" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} in linea, {1} totali" #: src/status.vala:35 msgid "Offline" msgstr "Non in linea" #: src/status.vala:39 msgid "Online" msgstr "In linea" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Indiretta" #: src/status.vala:48 msgid "Unreachable" msgstr "Irraggiungibile" #: src/status.vala:52 msgid "Awaiting approval" msgstr "In attesa di approvazione" #: src/status.vala:56 msgid "Unknown error" msgstr "Errore sconosciuto" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Mancata corrispondenza del protocollo" #: src/status.vala:62 msgid "Conflicting address" msgstr "Indirizzo in conflitto" #: src/status.vala:73 msgid "Direct" msgstr "Diretta" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Comando «%s» rimosso" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Annulla" #: src/window.vala:198 msgid "Configuring" msgstr "Configurazione" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Enrico Grassi https://launchpad.net/~enricog" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Riconnessione in {0} secondo" msgstr[1] "Riconnessione in {0} secondi" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi non è installato" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "La versione %s di Hamachi è obsoleta." #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/ja.po ================================================ # Japanese translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2026-04-20 18:02+0000\n" "Last-Translator: Ryo Nakano \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.17.1-dev\n" "X-Launchpad-Export-Date: 2024-07-16 23:04+0000\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi ネットワークマネージャー" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Hamachi ネットワークを管理します" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;ネット" "ワーク;インターネット;ピア;クライアント;フロントエンド;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi を使うことで、Hamachi ネットワークへの参加・作成・管理が簡単になりま" "す。" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "機能:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "検索・並べ替え・折りたたみ可能なネットワークリスト" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "詳細やアクションに簡単にアクセスできるサイドバー" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "主要なアクションに素早くアクセスできるインジケーター" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "最新のネットワークイベントを確認できるデスクトップ通知" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "完全にカスタマイズ可能なコマンド" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Hamachi 設定フォルダーのバックアップと復元" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "ご注意ください: このアプリを使用するには、システムに Hamachi をインストー" "ルする必要があります。" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "ネットワークリストとクライアントの情報を表示する" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "選択したメンバーの詳細を表示する" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "選択したネットワークの詳細を表示する" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "ネットワークリストを検索する" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "ネットワークに参加・作成する" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "ラベル" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 コマンド" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 コマンド" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "優先度" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "保存(_S)" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "アカウントと関連付ける" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "アカウント" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "このクライアントで作ったすべてのネットワークを含む" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "関連付ける(_A)" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "アクセス権限を変更" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "ロック" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "ネットワークメンバーの新規参加を拒否します" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "承認" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "自動" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "手動" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "変更(_H)" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "パスワードを変更" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "新しいパスワード" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ネットワーク ID" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "パスワード" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "承認(_A)" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "拒否(_R)" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "IPv4 アドレスをコピー(_4)" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "IPv6 アドレスをコピー(_6)" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "クライアント ID をコピー(_C)" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "登録抹消(_E)" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "詳細(_D)" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "ネットワークに参加(_J)…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "ネットワークを作成(_C)…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "オンラインにする(_G)" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "オフラインにする(_G)" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "離脱する(_L)" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "削除(_D)" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "アクセス権限を変更(_A)…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "パスワードを変更(_P)…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "ネットワーク ID をコピー(_C)" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "全般" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "設定" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "バックアップ" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "フォルダーを開く" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "ニックネーム" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "プロトコル(_P)" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 と IPv6 の両方" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "IPv4 のみ" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "IPv6 のみ" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "動作" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "ネットワークリストの更新間隔(_N)" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "起動時に自動で接続(_O)" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "接続が切れたら自動で再接続する(_R)" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "終了時に接続を切る(_D)" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "コマンド" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "デスクトップ" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "外観" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "スタイル(_S)" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "システムに従う" #: data/ui/preferences.ui:142 msgid "Light" msgstr "ライト" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "ダーク" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "インジケーターを表示する(_I)" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "通知" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "接続が切れたら通知を表示する(_O)" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "メンバーが参加したら通知を表示する(_J)" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "メンバーが離脱したら通知を表示する(_L)" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "メンバーがオンラインになったら通知を表示する(_N)" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "メンバーがオフラインになったら通知を表示する(_F)" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "バックアップを保存(_S)…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "バックアップから復元(_R)…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "ヘルプを表示する" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "クライアントの情報を表示する" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "メニューを開く" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "設定" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "キーボードショートカットを表示する" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "終了する" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "接続状態" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "接続" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "切断" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "ネットワークリスト" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "ネットワークに参加する" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "ネットワークを作成する" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "更新" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "検索" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "オフラインメンバーの表示を切り替える" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "すべてのネットワークを展開する" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "すべてのネットワークを閉じる" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "コマンドを実行する" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "情報" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "関連付ける" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "キャンセル" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "クライアント ID" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 アドレス" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 アドレス" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Hamachi バージョン" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "状態" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "ネットワークを離脱" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "ネットワークを削除" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "所有者" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "メンバー" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "最大同時接続数" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "トンネル" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "コマンド変数" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "アドレス" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "端末エミュレーター" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "ファイルマネージャー" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "リモートデスクトップビューアー" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "デフォルトに復元(_R)" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "コマンドを追加(_A)" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "共有を見る(_B)" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "リモートデスクトップを開く(_V)" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "Ping(_P)" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "デフォルトのアクション" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "オプション" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "編集(_E)…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "複製(_P)…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "上へ(_U)" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "下へ(_D)" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "デフォルトのアクションとして設定(_S)" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "削除(_R)" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "コピー" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "初期化しています" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "メインメニュー" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "ネットワークとメンバーを検索" #: data/ui/window.ui:299 msgid "Add Network" msgstr "ネットワークを追加" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi の接続が切れました" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "キャンセル(_C)" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "接続されました!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "+ ボタンを使用してネットワークを追加してください" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "見つかりませんでした" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "他のキーワードを試してください" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Hamachi をダウンロードして手順に従いインストールしてください" #: data/ui/window.ui:432 msgid "_Download" msgstr "ダウンロード(_D)" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi が未設定です" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "接続する前に Hamachi を設定する必要があります" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "設定(_O)" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "情報(_I)" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "名前順で並び替え(_N)" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "状態で並び替え(_S)" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "オフラインのメンバーを表示(_O)" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "設定(_P)" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "キーボードショートカット(_K)" #: data/ui/window.ui:552 msgid "_Help" msgstr "ヘルプ(_H)" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "Haguichi について(_A)" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "終了(_Q)" #: src/bubble.vala:44 msgid "Reconnect" msgstr "再接続" #: src/controller.vala:283 msgid "No internet connection" msgstr "インターネット接続がありません" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "ログインしています" #: src/controller.vala:348 msgid "Error connecting" msgstr "接続エラー" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi のログインに失敗しました" #: src/controller.vala:459 msgid "Updating" msgstr "更新しています" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "接続済み" #: src/controller.vala:730 msgid "Member Joined" msgstr "メンバーが参加しました" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "ネットワーク {1} に {0} が参加しました" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "ネットワーク {1} とその他 {2} のネットワークに {0} が参加しました" #: src/controller.vala:760 msgid "Member Left" msgstr "メンバーが離脱しました" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "ネットワーク {1} から {0} が離脱しました" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "ネットワーク {1} とその他 {2} のネットワークから {0} が離脱しました" #: src/controller.vala:786 msgid "Member Online" msgstr "メンバーがオンラインになりました" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "ネットワーク {1} で {0} がオンラインになりました" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "" "ネットワーク {1} とその他 {2} のネットワークで {0} がオンラインになりました" #: src/controller.vala:812 msgid "Member Offline" msgstr "メンバーがオフラインになりました" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "ネットワーク {1} で {0} がオフラインになりました" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "" "ネットワーク {1} とその他 {2} のネットワークで {0} がオフラインになりました" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "コマンドを編集" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "コマンドを追加" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "関連付けリクエストを送信しました" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "アカウントが見つかりませんでした" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "ネットワークに参加" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "ネットワークを作成" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "参加(_J)" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "作成(_R)" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "参加リクエストを送信しました" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "ネットワークが見つかりません" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "パスワードが正しくありません" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "ネットワークが混雑しています" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "ネットワークがロックされています" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "すでにネットワークに参加しています" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Network ID はすでに存在します" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "不明" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "匿名" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "パスワードを変更しました" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "バックアップを保存しています…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "バックアップを保存しました" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "バックアップの保存に失敗しました" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "バックアップから復元しています…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "バックアップから復元しました" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "バックアップからの復元に失敗しました" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "期待したファイルがアーカイブ内に見当たりません" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "接続しています" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "未接続" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "Haguichi を表示(_S)" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "切断(_D)" #: src/indicator.vala:104 msgid "C_onnect" msgstr "接続(_O)" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "ネットワーク “{1}” からメンバー “{0}” を登録抹消してもよろしいですか?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "承認されれば、そのメンバーは後でいつでもネットワークに再参加できます。" #: src/network.vala:148 msgid "You" msgstr "あなた" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "ネットワーク “{0}” から離脱してもよろしいですか?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "承認されれば、後でいつでもネットワークに再参加できます。" #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "ネットワーク “{0}” を削除してもよろしいですか?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "ネットワークを削除すると、そのネットワークは元に戻せなくなります。" #: src/preferences.vala:107 msgid "Not present" msgstr "存在しない" #: src/preferences.vala:285 msgid "All supported archives" msgstr "すべてのサポートされたアーカイブ" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "バックアップを保存" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "バックアップから復元" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "復元(_R)" #: src/preferences.vala:372 msgid "Never" msgstr "しない" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S 秒" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S 分" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "利用不可" #: src/sidebar.vala:192 msgid "pending" msgstr "保留中" #: src/sidebar.vala:193 msgid "Not attached" msgstr "関連付けなし" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "オンライン {0}、合計 {1}" #: src/status.vala:35 msgid "Offline" msgstr "オフライン" #: src/status.vala:39 msgid "Online" msgstr "オンライン" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "リレー接続" #: src/status.vala:48 msgid "Unreachable" msgstr "接続できません" #: src/status.vala:52 msgid "Awaiting approval" msgstr "承認待ち" #: src/status.vala:56 msgid "Unknown error" msgstr "不明なエラーです" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "プロトコルが一致しません" #: src/status.vala:62 msgid "Conflicting address" msgstr "アドレスが重複しています" #: src/status.vala:73 msgid "Direct" msgstr "直接接続" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "デフォルトのコマンドを復元しますか?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "すべての個人設定が破棄されます。" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "コマンド “%s” を削除しました" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "元に戻す(_U)" #: src/window.vala:198 msgid "Configuring" msgstr "設定しています" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Ryo Nakano https://launchpad.net/~ryonakaknock3\n" "Satoru Matsumoto https://launchpad.net/~helios-reds" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "クリップボードにコピーしました" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "{0} 秒以内に再接続します" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi がインストールされていません" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi バージョン %s はサポート対象外です" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "接続を監視し通知を送信できるよう、Haguichi はウィンドウを閉じても常駐します。" ================================================ FILE: po/kk.po ================================================ # Kazakh translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2017-07-30 17:21+0000\n" "Last-Translator: jmb_kz \n" "Language-Team: Kazakh \n" "Language: kk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-07-31 18:12+0000\n" "X-Generator: Launchpad (build 18441)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "Баптауламаны қайта орнына қайтару мүмкін емес" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Желіге кіру" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Көрсетілетін жазу" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 команда" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 команда" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Басымдылық" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Сақтау" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Пайдаланушы атына бекіту" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Пайдаланушы аты (логин)" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Осы клиентпен құрылған барлық желілерді қарастыру" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Бекіту" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Ник өзгерту" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Жабық" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Мақұлдау" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Автоматты түрде" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Қалауыңызша (вручную)" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Өзгерту" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Құпия сөзді өзгерту" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Жаңа құпия сөз" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Желінің ID-і" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Құпия сөз" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Мақұлдау" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Қабылдамау" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "IPv_4 адресін көшіру" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "IPv_6 адресін көшіру" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "Клиент ID-ін _көшіру" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Шығарып тастау" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "Желіге _кіру…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "Желі _құру…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "Желіге _қосылу" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "Желіден _ажырату" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Шығу" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "Ө_шіру" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "_Ник өзгерту…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "_Құпия сөзді өзгерту…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "Желі ID-ін _көшіру" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Негізгі" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Баптаулама" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Резервті көшірмені сақтау" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Буманы ашу" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Ник" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Протокол" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 мен IPv6 бірге" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "тек IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "тек IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Қасиеттері" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Бағдарлама ашылатын кезде автоматты түрде _қосылу" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Қосылыс үзілгенде автоматты түрде _қайта қосылу" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "Бағдарлама жабу кезінде желіден _ажыратылу" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Командалар" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Жұмыс ортасы" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Мәлімдемелер" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Қосылыс үзілгені жайлы мәлімдеу" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Мүше желіге _кірген кезде (join) мәлімдеу" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Мүше желіден _шығып кететін кезде (leave) мәлімдеу" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Мүше желіге _қосылған кезде (online) мәлімдеу" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Мүше желіден _ажыратылатын кезде (offline) мәлімдеу" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Резервті көшірмені _сақтау…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "Резерті көшірмеден қайта _орнына қайтару…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Мәзірді ашу" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Баптаулар" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Пернетақта жарлықтары" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Шығу" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Қосылыс" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Байланысты орнату" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Байланысты үзу" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 #, fuzzy msgid "Network List" msgstr "Желі толып тұр" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 #, fuzzy msgid "Join a network" msgstr "Желіге кіру" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 #, fuzzy msgid "Create a network" msgstr "Желі құру" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Жаңарту" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 #, fuzzy msgid "Show/hide offline members" msgstr "Желіге _қосылмаған мүшелерді көрсету" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 #, fuzzy msgid "Execute command" msgstr "Команданы өзгерту" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Мәлімет" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Бекіту" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Бас тарту" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Клиент ID-і" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 адрес" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 адрес" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "Hamachi %s нұсқасы ескірген" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Күйі" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Желі құру" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Желі құру" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Иесі" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Мүшелері" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Сыйымдылық" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Тоннель" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Командалар" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Адрес" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "Қашықтаған жұмыс үстелді _қарау" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "Қайта орнына қай_тару" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "Команданы қ_осу" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "Жарияланған бумаларды _қарап шығу" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "Қашықтаған жұмыс үстелді _қарау" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Пинг" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Қалыпты әрекет ретінде орнату" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Түзету…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Көшіру…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "_Жоғары жылжыту" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Тө_мен жылжыту" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Қалыпты әрекет ретінде орнату" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Өшіру" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Желіге кіру" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi қосылысы үзілді" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "Ба_с тарту" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Қосылыс сәтті орнатылды!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Желі қосу үшін + түймесін пайдаланыңыз" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Hamachi жүктек алып, оның орнату нұсқауына еріңіз" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Жүктеп алу" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi қалыпқа келтірілмеген" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Қосылу үшін сіз Hamachi қалыпқа келтіруіңіз қажет" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "Қалыпқа _келтіру" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Мәлімет" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "_Аты бойынша реттеу" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "_Күйі бойынша реттеу" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Желіге _қосылмаған мүшелерді көрсету" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Баптаулар" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "П_ернетақта жарлықтары" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Көмек" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "Haguichi тур_алы" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Шығу" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Қайта қосылу" #: src/controller.vala:283 msgid "No internet connection" msgstr "Интернетпен қосылыс жоқ" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Кіру" #: src/controller.vala:348 msgid "Error connecting" msgstr "Қосылу қатесі" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi кіру қатесі" #: src/controller.vala:459 msgid "Updating" msgstr "Жаңарту" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Қосылған" #: src/controller.vala:730 msgid "Member Joined" msgstr "Мүше желіге кірді" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} {1} желісіне кірді" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} {1} және {2} басқа желіге кірді" msgstr[1] "{0} {1} және {2} басқа желілеріне кірді" #: src/controller.vala:760 msgid "Member Left" msgstr "Мүше желіден шығып кетті" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} {1} желісінен шығып кетті" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} {1} және {2} басқа желіден шығып кетті" msgstr[1] "{0} {1} және {2} басқа желілерінен шығып кетті" #: src/controller.vala:786 msgid "Member Online" msgstr "Мүше желіге қосылды" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} {1} желісіне қосылды" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} {1} және {2} басқа желіге қосылды" msgstr[1] "{0} {1} және {2} басқа желілеріне қосылды" #: src/controller.vala:812 msgid "Member Offline" msgstr "Мүше желіден ажыратылды" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} {1} желісінен ажыратылды" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} {1} және {2} басқа желіден ажыратылды" msgstr[1] "{0} {1} және {2} басқа желілерінен ажыратылды" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Команданы өзгерту" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Команданы қосу" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Кіру сұранысы жіберілді" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Пайдаланушы аты табылмады" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Желіге кіру" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Желі құру" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Кіру" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "_Құру" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Кіру сұранысы жіберілді" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Желі табылмады" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Құпия сөз дұрыс емес" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Желі толып тұр" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Желі жабық" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Осы желіге қосылыс бар болып тұр" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Бұл желі ID бос емес" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Белгісіз" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Анонимды" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Құпия сөз" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "Резервті көшірмені _сақтау…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "Резерті көшірмеден қайта _орнына қайтару…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Архивте қажетті мәлімет жоқ" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Қосылуда" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Ажыратылған" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "Haguichi _көрсету" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "Б_айланысты үзу" #: src/indicator.vala:104 msgid "C_onnect" msgstr "Ба_йланысты орнату" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "”{1}” желісінен “{0}” мүшені шығарып тастауға сенімдісіз бе?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "Шығарылған мүшелер осы желіге кейінірек қайта кіре алады." #: src/network.vala:148 msgid "You" msgstr "Сіз" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "”{0}” желіден шығуға сенімдісіз бе?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Осы желіге кейінірек қайта кіре аласыз." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "”{0}” желісін жоюға сенімдісіз бе?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Егер де сіз желіні жоятын болсаңыз, ол мәңгілікке жоғалтылады." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Қолдауы бар архивтер" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Резервті көшірмені сақтау" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Резерті көшірмеден қайта орнына қайтару" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "Қайта орнына қай_тару" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "Қай_тару" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Жетімсіз" #: src/sidebar.vala:192 msgid "pending" msgstr "күтілуде" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} желіге қосылған, барлығы {1}" #: src/status.vala:35 msgid "Offline" msgstr "Желіге қосылмаған" #: src/status.vala:39 msgid "Online" msgstr "Желіге қосылған" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Ретранслятор арқылы" #: src/status.vala:48 msgid "Unreachable" msgstr "Қол жетімсіз" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Мақұлдауды күту" #: src/status.vala:56 msgid "Unknown error" msgstr "Белгісіз қате" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Протокол сәйкес емес" #: src/status.vala:62 msgid "Conflicting address" msgstr "Жанжал (конфликтующие) бар адрестер" #: src/status.vala:73 msgid "Direct" msgstr "Тікелей" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "jmb_kz https://launchpad.net/~jmb-kz" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Желіге {0} секунтдан кейін қайта қосылу" msgstr[1] "Желіге {0} секунтдан кейін қайта қосылу" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi орнатылмаған" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi %s нұсқасы ескірген" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/lt.po ================================================ # Lithuanian translation for haguichi # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-07-05 22:37+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "(n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2024-07-06 14:00+0000\n" "X-Generator: Launchpad (build bbfa2351d9d6a9ddfe262109428f7bf5516e65d1)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi tinklo tvarkytuvė" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Tvarkyti Hamachi tinklus" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" "LogMeIn Hamachi;VPN;LAN;Tinklas;Internetas;P2P;Lygiarangis;Klientas;Kliento " "programa;Grafinė naudotojo sąsaja;Vartotojo sąsaja;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi palengvina Hamachi tinklų kūrimą, administravimą bei prisijungimą " "prie jų." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Ypatybės:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Randamas, rikiuojamas ir suskleidžiamas tinklų sąrašas" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "" "Šoninė juosta, skirta lengvai prieigai prie išsamesnės informacijos ir " "veiksmų" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" "Indikatoriaus palaikymas, skirtas greitai prieigai prie pirminių veiksmų" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "Darbalaukio pranešimai, kad neatitrūktumėte nuo tinklo įvykių" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Visiškai tinkinamos komandos" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Hamachi konfigūracijos aplanko atsarginės kopijos darymas ir atkūrimas" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Turėkite omenyje: Tam, kad galima būtų naudotis, yra reikalaujama, kad " "sistemoje būtų įdiegta Hamachi." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Žiūrėkite tinklų sąrašą bei kliento informaciją" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Žiūrėkite išsamesnę informaciją apie pasirinktą narį" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Žiūrėkite išsamesnę informaciją apie pasirinktą tinklą" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Atlikite paiešką tinklų sąraše" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Kurkite ar prisijunkite prie tinklų" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etiketė" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv_4 komanda" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv_6 komanda" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Pirmenybė" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "Į_rašyti" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Pridėti prie paskyros" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Paskyra" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Įtraukti visus šio kliento sukurtus tinklus" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Pridėti" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Keisti prieigą" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Užrakintas" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Nepriimti naujų tinklo narių" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Patvirtinimas" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automatiškai" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Rankiniu būdu" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Keisti" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Keisti slaptažodį" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Naujas slaptažodis" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Tinklo ID" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Slaptažodis" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "P_atvirtinti" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Atmesti" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Kopijuoti IPv_4 adresą" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Kopijuoti IPv_6 adresą" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Kopijuoti kliento ID" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "Išk_eldinti" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Išsamiau" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "Prisi_jungti prie tinklo…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "Su_kurti tinklą…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "Prisijun_gti" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "Atsijun_gti" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Išeiti" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Ištrinti" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Keisti _prieigą…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Keisti sla_ptažodį…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Kopijuoti tinklo ID" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Bendra" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfigūracija" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Atsarginė kopija" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Atverti aplanką" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Slapyvardis" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokolas" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Abu IPv4 ir IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Tik IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Tik IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Elgsena" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "Ti_nklų sąrašo atnaujinimo intervalas" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Aut_omatiškai jungtis paleisties metu" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Dingus r_yšiui, automatiškai jungtis iš naujo" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "Išeinant, a_tsijungti" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Komandos" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Darbalaukis" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Išvaizda" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Stilius" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Sekti sistemos" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Šviesus" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Tamsus" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Rodyti _indikatorių" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Pranešimai" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Rodyti pranešimą, kai di_ngsta ryšys" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Rodyti pranešimą, kai narys prisijungia prie tinklo" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Rodyti pranešimą, kai narys _išeina" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Rodyti pranešimą, kai narys prisijungia" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Rodyti pranešimą, kai narys atsijungia" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Įrašyti at_sarginę kopiją…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "Atku_rti iš atsarginės kopijos…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Rodyti žinyną" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Rodyti kliento informaciją" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Atverti meniu" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Nuostatos" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Klaviatūros trumpiniai" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Išeiti" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Ryšys" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Prisijungti" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Atsijungti" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Tinklų sąrašas" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Prisijungti prie tinklo" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Sukurti tinklą" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Įkelti iš naujo" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Ieškoti" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Rodyti/slėpti atsijungusius narius" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Išskleisti visus tinklus" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Suskleisti visus tinklus" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Vykdyti komandą" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informacija" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Pridėti" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Atsisakyti" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Kliento ID" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 adresas" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 adresas" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Hamachi versija" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Būsena" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Išeiti iš tinklo" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Ištrinti tinklą" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Savininkas" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Nariai" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Talpa" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunelis" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Komandų kintamieji" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adresas" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Terminalo emuliatorius" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Failų tvarkytuvė" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Nuotolinio darbalaukio žiūryklė" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Atkurti numatytąją" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Pridėti komandą" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "Naršyti _bendrinamus aplankus" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Rodyti nuotolinį darbalaukį" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "Ryšio _patikrinimas" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Numatytasis veiksmas" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Parametrai" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Redaguoti…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Kopijuoti…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "_Perkelti aukštyn" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "_Nuleisti žemyn" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "Nustatyti kaip numatytąjį _veiksmą" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "Š_alinti" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Kopijuoti" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Inicijuojama" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Pagrindinis meniu" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Ieškoti tinklų ir narių" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Pridėti tinklą" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi ryšys nutrūko" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Atsisakyti" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Jūs esate prisijungę!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Naudokite + mygtuką, kad pridėtumėte tinklą" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Nerasta rezultatų" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Bandykite kitokią paiešką" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Prašome atsisiųsti Hamachi ir sekti įdiegimo nurodymus" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Atsisiųsti" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi nėra sukonfigūruota" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Prieš galėdami prisijungti, turite sukonfigūruoti Hamachi" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "K_onfigūruoti" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informacija" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Rikiuoti pagal _vardą" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Rikiuoti pagal bū_seną" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "R_odyti atsijungusius narius" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Nuostatos" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Klaviatūros trumpiniai" #: data/ui/window.ui:552 msgid "_Help" msgstr "Ž_inynas" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Apie Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Išeiti" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Prisijungti iš naujo" #: src/controller.vala:283 msgid "No internet connection" msgstr "Nėra interneto ryšio" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Prisijungiama" #: src/controller.vala:348 msgid "Error connecting" msgstr "Klaida, jungiantis" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi prisijungimas nepavyko" #: src/controller.vala:459 msgid "Updating" msgstr "Atnaujinama" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Prisijungta" #: src/controller.vala:730 msgid "Member Joined" msgstr "Narys prisijungė prie tinklo" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} prisijungė prie tinklo {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} prisijungė prie tinklo {1} ir prie {2} kito tinklo" msgstr[1] "{0} prisijungė prie tinklo {1} ir prie {2} kitų tinklų" msgstr[2] "{0} prisijungė prie tinklo {1} ir prie {2} kitų tinklų" #: src/controller.vala:760 msgid "Member Left" msgstr "Narys išėjo" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} išėjo iš tinklo {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} išėjo iš tinklo {1} ir iš {2} kito tinklo" msgstr[1] "{0} išejo iš tinklo {1} ir iš {2} kitų tinklų" msgstr[2] "{0} išėjo iš tinklo {1} ir iš {2} kitų tinklų" #: src/controller.vala:786 msgid "Member Online" msgstr "Narys prisijungė" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} prisijungė tinkle {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} prisijungė tinkle {1} ir {2} kitame tinkle" msgstr[1] "{0} prisijungė tinkle {1} ir {2} kituose tinkluose" msgstr[2] "{0} prisijungė tinkle {1} ir {2} kitų tinklų" #: src/controller.vala:812 msgid "Member Offline" msgstr "Narys atsijungė" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} atsijungė tinkle {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} atsijungė tinkle {1} ir {2} kitame tinkle" msgstr[1] "{0} atsijungė tinkle {1} ir {2} kituose tinkluose" msgstr[2] "{0} atsijungė tinkle {1} ir {2} kitų tinklų" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Redaguoti komandą" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Pridėti komandą" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Pridėjimo užklausa išsiųsta" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Paskyra nerasta" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Prisijungti prie tinklo" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Sukurti tinklą" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "Prisijungti" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "Suku_rti" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Prisijungimo prašymas išsiųstas" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Tinklas nerastas" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Neteisingas slaptažodis" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Tinklas pilnas" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Tinklas užrakintas" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Prie tinklo jau prisijungta" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Tinklo ID jau užimtas" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Nežinoma" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anoniminis" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Slaptažodis pakeistas" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Įrašoma atsarginė kopija…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Atsarginė kopija įrašyta" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Nepavyko įrašyti atsarginės kopijos" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Atkuriama atsarginė kopija…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Atsarginė kopija atkurta" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Nepavyko atkurti atsarginės kopijos" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Archyve nėra reikiamų failų" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Jungiamasi" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Neprisijungta" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Rodyti Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "Atsij_ungti" #: src/indicator.vala:104 msgid "C_onnect" msgstr "Prisi_jungti" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Ar tikrai norite iškeldinti narį „{0}“ iš tinklo „{1}“?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Jei pritarsite, iškeldinti nariai vėliau, bet kuriuo metu gali iš naujo " "prisijungti prie tinklo." #: src/network.vala:148 msgid "You" msgstr "Jūs" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Ar tikrai norite išeiti iš tinklo „{0}“?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "" "Jei pritarsite, vėliau, bet kada galėsite iš naujo prisijungti prie tinklo." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Ar tikrai norite ištrinti tinklą „{0}“?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Jeigu ištrinsite tinklą, jis bus negrįžtamai prarastas." #: src/preferences.vala:107 msgid "Not present" msgstr "Nėra" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Visi palaikomi archyvai" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Įrašyti atsarginę kopiją" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Atkurti iš atsarginės kopijos" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "Atku_rti" #: src/preferences.vala:372 msgid "Never" msgstr "Niekada" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S sekundė" msgstr[1] "%S sekundės" msgstr[2] "%S sekundžių" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S minutė" msgstr[1] "%S minutės" msgstr[2] "%S minučių" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Neprieinamas" #: src/sidebar.vala:192 msgid "pending" msgstr "laukiama" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Nepridėta" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "prisijungusių {0}, viso {1}" #: src/status.vala:35 msgid "Offline" msgstr "Atsijungęs" #: src/status.vala:39 msgid "Online" msgstr "Pasiekiamas" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Retransliuojamas" #: src/status.vala:48 msgid "Unreachable" msgstr "Nepasiekiamas" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Laukiama patvirtinimo" #: src/status.vala:56 msgid "Unknown error" msgstr "Nežinoma klaida" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protokolo neatitikimas" #: src/status.vala:62 msgid "Conflicting address" msgstr "Konfliktuojantis adresas" #: src/status.vala:73 msgid "Direct" msgstr "Tiesioginis" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Atkurti numatytąsias komandas?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Visi tinkinimai bus prarasti." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "Konfigūruojama" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Moo https://launchpad.net/~mooo" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Nukopijuota į iškarpinę" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Jungiamasi iš naujo po {0} sekundės" msgstr[1] "Jungiamasi iš naujo po {0} sekundžių" msgstr[2] "Jungiamasi iš naujo po {0} sekundžių" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi nėra įdiegta" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi versija %s yra pasenusi" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi tęs darbą, kai jos langas yra užvertas, kad galėtų stebėti ryšį ir " "siųsti pranešimus." ================================================ FILE: po/meson.build ================================================ i18n.gettext(gettext_pkg, preset: 'glib') ================================================ FILE: po/nl.po ================================================ # Dutch translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-06-16 12:53+0000\n" "Last-Translator: Stephen Brandt \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2024-06-16 13:00+0000\n" "X-Generator: Launchpad (build bbfa2351d9d6a9ddfe262109428f7bf5516e65d1)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi netwerkbeheerder" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Beheer uw Hamachi-netwerken" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "LogMeIn Hamachi;VPN;LAN;Netwerk;Internet;P2P;Peer;Client;GUI;Frontend;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi maakt het een fluitje van een cent om aan Hamachi-netwerken deel te " "nemen, of zelf aan te maken en te beheren." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Eigenschappen:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Doorzoekbare, sorteerbare en inklapbare netwerklijst" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Zijbalk voor snelle toegang tot details and acties" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Indicatorondersteuning voor snelle toegang tot primaire acties" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" "Bureaubladnotificaties om op de hoogte te blijven van gebeurtenissen binnen " "het netwerk" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Opdrachten die volledig aangepast kunnen worden" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Backup en herstel van uw Hamachi-configuratiemap" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Let op: Vereist installatie van Hamachi op het systeem om volledig te " "kunnen gebruiken." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Bekijk uw netwerklijst en client-informatie" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Bekijk details van een geselecteerd lid" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Bekijk details van een geselecteerd netwerk" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Doorzoek uw netwerklijst" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Treed toe of maak nieuwe netwerken" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Label" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4-opdracht" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6-opdracht" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioriteit" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "Op_slaan" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Koppelen aan account" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Account" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Neem ook de door deze client aangemaakte netwerken mee" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Koppelen" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Toegang wijzigen" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Vergrendeld" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Geen nieuwe leden in het netwerk toestaan" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Goedkeuring" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automatisch" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Handmatig" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Wijzigen" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Wachtwoord wijzigen" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nieuw wachtwoord" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Netwerk-ID" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Wachtwoord" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Goedkeuren" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Afwijzen" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "IPv_4-adres kopiëren" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "IPv_6-adres kopiëren" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Client-ID kopiëren" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Verwijderen" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Details" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "Netwerk _toetreden…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "Netwerk _aanmaken…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Online gaan" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Offline gaan" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Verlaten" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Verwijderen" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "_Toegang wijzigen…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "_Wachtwoord wijzigen…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Netwerk-ID kopiëren" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Algemeen" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Configuratie" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Reservekopie" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Map openen" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Bijnaam" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protocol" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Zowel IPv4 als IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Alleen IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Alleen IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Gedrag" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "_Bijwerkinterval netwerklijst" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "A_utomatisch verbinden bij opstarten" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Automatisch een verbroken verbinding _herstellen" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Verbinding verbreken bij afsluiten" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Opdrachten" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Werkomgeving" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Uiterlijk" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Stijl" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Systeem volgen" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Licht" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Donker" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "_Indicator tonen" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notificaties" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Een notificatie tonen wanneer de verbinding is v_erbroken" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Een notificatie tonen wanneer er een lid _toetreedt" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Een notificatie tonen wanneer er een lid _uittreedt" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Een notificatie tonen wanneer er een lid o_nline komt" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Een notificatie tonen wanneer er een lid o_ffline gaat" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Reservekopie _maken…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "Reservekopie _terugzetten…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Hulp tonen" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Client-informatie tonen" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Menu openen" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Voorkeuren" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Sneltoetsen" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Afsluiten" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Verbinding" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Verbinding maken" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Verbinding verbreken" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Netwerklijst" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Een netwerk toetreden" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Een netwerk aanmaken" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Verversen" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Zoeken" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Offline leden tonen/verbergen" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Alle netwerken uitklappen" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Alle netwerken inklappen" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Opdracht uitvoeren" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informatie" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Koppelen" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Annuleren" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Client-ID" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4-adres" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6-adres" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Hamachi versie" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Status" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Netwerk verlaten" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Netwerk verwijderen" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Eigenaar" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Leden" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Capaciteit" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Opdrachtvariabelen" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adres" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Terminalemulator" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Bestandsbeheerder" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Werkplek op afstand" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Standaard herstellen" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Opdracht toevoegen" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Gedeelde mappen bladeren" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Werkplek op afstand bekijken" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Pingen" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Standaardactie" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Opties" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Bewerken…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Dupliceren…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Om_hoog verplaatsen" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Om_laag verplaatsen" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Als standaardactie instellen" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Verwijderen" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Kopiëren" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Bezig met initialiseren" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Hoofdmenu" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Zoek netwerken en leden" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Netwerk toevoegen" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi is niet meer verbonden" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Annuleren" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "U bent verbonden!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Gebruik de + knop om een netwerk toe te voegen" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Geen resultaten gevonden" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Probeer een andere zoekopdracht" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Download Hamachi en volg daarna de installatieinstructies" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Downloaden" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi is niet geconfigureerd" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Hamachi moet eerst worden geconfigureerd om te kunnen verbinden" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Configureren" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informatie" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Sorteren op _naam" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Sorteren op _status" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Offline _leden tonen" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Voorkeuren" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "Snel_toetsen" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Hulp" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Over Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "A_fsluiten" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Opnieuw verbinden" #: src/controller.vala:283 msgid "No internet connection" msgstr "Geen internetverbinding" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Bezig met aanmelden" #: src/controller.vala:348 msgid "Error connecting" msgstr "Fout bij verbinden" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi login is mislukt" #: src/controller.vala:459 msgid "Updating" msgstr "Bezig met bijwerken" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Verbonden" #: src/controller.vala:730 msgid "Member Joined" msgstr "Lid toegetreden" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} is tot het netwerk {1} toegetreden" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} is tot het netwerk {1} en {2} ander netwerk toegetreden" msgstr[1] "{0} is tot het netwerk {1} en {2} andere netwerken toegetreden" #: src/controller.vala:760 msgid "Member Left" msgstr "Lid uitgetreden" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} heeft het netwerk {1} verlaten" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} heeft het netwerk {1} en {2} ander netwerk verlaten" msgstr[1] "{0} heeft het netwerk {1} en {2} andere netwerken verlaten" #: src/controller.vala:786 msgid "Member Online" msgstr "Lid online" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} is in het netwerk {1} online gekomen" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} is in het netwerk {1} en {2} ander netwerk online gekomen" msgstr[1] "{0} is in het netwerk {1} en {2} andere netwerken online gekomen" #: src/controller.vala:812 msgid "Member Offline" msgstr "Lid offline" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} is in het netwerk {1} offline gegaan" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} is in het netwerk {1} en {2} ander netwerk offline gegaan" msgstr[1] "{0} is in het netwerk {1} en {2} andere netwerken offline gegaan" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Opdracht bewerken" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Opdracht toevoegen" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Koppelverzoek is verzonden" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Account niet gevonden" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Netwerk toetreden" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Netwerk aanmaken" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Toetreden" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "Aan_maken" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Toetredingsverzoek is verzonden" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Netwerk niet gevonden" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Het wachtwoord is onjuist" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Dit netwerk is vol" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Dit netwerk is gesloten" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "U bent al toegetreden tot dit netwerk" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Dit netwerk-ID is al in gebruik" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Onbekend" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anoniem" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Wachtwoord is gewijzigd" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Reservekopie wordt gemaakt…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Reservekopie is bewaard" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Maken van reservekopie is mislukt" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Reservekopie wordt teruggezet…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Reservekopie is teruggezet" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Terugzetten van reservekopie is mislukt" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Het archief bevat niet de juiste bestanden" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Bezig met verbinden" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Niet verbonden" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Haguichi tonen" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Verbinding verbreken" #: src/indicator.vala:104 msgid "C_onnect" msgstr "_Verbinding maken" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Weet u zeker dat u lid ‘{0}’ uit het netwerk ‘{1}’ wilt verwijderen?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Indien toegestaan kunnen verwijderde leden op een later moment opnieuw tot " "dit netwerk toetreden." #: src/network.vala:148 msgid "You" msgstr "Uzelf" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Weet u zeker dat u het netwerk ‘{0}’ wilt verlaten?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "" "Indien toegestaan kunt u op een later moment opnieuw tot dit netwerk " "toetreden." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Weet u zeker dat u het netwerk ‘{0}’ wilt verwijderen?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Als u een netwerk verwijderd kan dit niet meer worden hersteld." #: src/preferences.vala:107 msgid "Not present" msgstr "Niet aanwezig" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Alle ondersteunde archieven" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Reservekopie maken" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Reservekopie terugzetten" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Herstellen" #: src/preferences.vala:372 msgid "Never" msgstr "Nooit" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S seconde" msgstr[1] "%S seconden" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S minuut" msgstr[1] "%S minuten" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Niet beschikbaar" #: src/sidebar.vala:192 msgid "pending" msgstr "in afwachting" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Niet gekoppeld" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} online, {1} totaal" #: src/status.vala:35 msgid "Offline" msgstr "Offline" #: src/status.vala:39 msgid "Online" msgstr "Online" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Omgeleid" #: src/status.vala:48 msgid "Unreachable" msgstr "Onbereikbaar" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Wacht op goedkeuring" #: src/status.vala:56 msgid "Unknown error" msgstr "Onbekende fout" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protocol komt niet overeen" #: src/status.vala:62 msgid "Conflicting address" msgstr "Conflicterend adres" #: src/status.vala:73 msgid "Direct" msgstr "Direct" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Standaardopdrachten herstellen?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Alle aanpassingen zullen verloren gaan." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Opdracht ‘%s’ verwijderd" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "O_ngedaan maken" #: src/window.vala:198 msgid "Configuring" msgstr "Bezig met configureren" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Stephen Brandt https://launchpad.net/~ztefn" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Gekopieerd naar klembord" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Opnieuw verbinden in {0} seconde" msgstr[1] "Opnieuw verbinden in {0} seconden" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi is niet geïnstalleerd" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi versie %s is verouderd" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi zal op de achtergrond blijven draaien voor het monitoren van de " "verbinding en het versturen van notificaties." ================================================ FILE: po/pl.po ================================================ # Polish translation for haguichi # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2025-04-15 20:46+0000\n" "Last-Translator: Eryk Michalak \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.11-dev\n" "X-Launchpad-Export-Date: 2022-08-28 16:12+0000\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Menedżer sieci Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Funkcje:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Lista sieci, którą można przeszukiwać, porządkować i zwijać" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Panel boczny z łatwym dostępem do informacji i działań" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "" "Tworzenie kopii zapasowej i przywracanie katalogu z konfiguracją Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Proszę zauważyć: do użycia wymagana jest instalacja programu Hamachi na " "komputerze." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 #, fuzzy msgid "View your network list and client information" msgstr "Wyświetlenie informacji o kliencie" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 #, fuzzy msgid "Search your network list" msgstr "Lista sieci, którą można przeszukiwać, porządkować i zwijać" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Dołączenie do sieci" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etykieta" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Polecenie IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Polecenie IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Priorytet" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Zapisz" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Dołącz do konta" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Konto" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Dołączenie wszystkich sieci utworzonych przez tego klienta" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Dołącz" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Zmień dostęp" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Zablokowany" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Potwierdzenie" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automatycznie" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Ręcznie" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Zmień" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Zmień hasło" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nowe hasło" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Identyfikator sieci" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Hasło" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Zatwierdź" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Odrzuć" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Skopiuj adres IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Skopiuj adres IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "S_kopiuj identyfikator klienta" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Wyklucz" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Szczegóły" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Dołącz do sieci…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Utwórz sieć…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Przejdź do trybu online" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Przejdź do trybu offline" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Opuść" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Usuń" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Zmień _dostęp…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Zmień _hasło…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "S_kopiuj identyfikator sieci" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Ogólne" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfiguracja" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Kopia zapasowa" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Otwórz katalog" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Pseudonim" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokół" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 i IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Tylko IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Tylko IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Zachowanie" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Aut_omatyczne łączenie po uruchomieniu" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Automatyczne w_znawianie połączenia po jego zerwaniu" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Rozłączanie podczas wyłączania programu" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Polecenia" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Pulpit" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Wygląd" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Styl" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Zgodny z systemowym" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Jasny" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Ciemny" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "_Wskaźnik" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Powiadomienia" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Po ze_rwaniu połączenia" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Kiedy dołącza _nowy członek" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Kiedy członek _opuszcza sieć" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Kiedy członek przechodzi do trybu o_nline" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Kiedy członek przechodzi do trybu o_ffline" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Zapisz _kopię zapasową…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "P_rzywróć z kopii zapasowej…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Wyświetlenie pomocy" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Wyświetlenie informacji o kliencie" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Otwarcie menu" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Preferencje" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Zakończenie działania" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Połączenie" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Połączenie" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Rozłączenie" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Lista sieci" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Dołączenie do sieci" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Utworzenie sieci" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Odświeżenie" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Wyszukiwanie" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Wyświetlenie/ukrycie członków w trybie offline" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Rozwinięcie wszystkich sieci" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Zwinięcie wszystkich sieci" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Wykonanie polecenia" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informacje" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Dołącz" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Anuluj" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Identyfikator klienta" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Adres IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Adres IPv6" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Wersja Hamachi" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Stan" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Opuść sieć" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Usuń sieć" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Właściciel" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Członkowie" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Pojemność" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Zmienne polecenia" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adres" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Emulator terminala" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Menedżer plików" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Wyświetl zdalny pulpit" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Przywróć domyślne" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Dodaj polecenie" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "P_rzeglądaj udziały" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Wyświetl zdalny pulpit" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "_Ustaw jako domyślne działanie" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Opcje" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Modyfikuj…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Du_plikuj…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "W _górę" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "W _dół" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "U_staw jako domyślne działanie" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Usuń" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Kopiuj" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Inicjowanie" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 #, fuzzy msgid "Search networks and members" msgstr "Menedżer sieci Hamachi" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Dołącz do sieci" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi utraciło połączenie" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Anuluj" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Jesteś połączony!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Użyj przycisku +, aby dodać sieć" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Proszę pobrać Hamachi i postępować zgodnie z instrukcjami instalacji" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Pobierz" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi nie jest skonfigurowane" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Należy skonfigurować Hamachi przed połączeniem" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "Sk_onfiguruj" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informacje" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Porządkowanie według _nazwy" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Porządkowanie według _stanu" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Wyświetlanie członków w trybie _offline" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Preferencje" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: data/ui/window.ui:552 msgid "_Help" msgstr "Pomo_c" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_O programie" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "Za_kończ" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Połącz ponownie" #: src/controller.vala:283 msgid "No internet connection" msgstr "Brak połączenia z Internetem" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Logowanie" #: src/controller.vala:348 msgid "Error connecting" msgstr "Błąd podczas łączenia" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Zalogowanie do Hamachi się nie powiodło" #: src/controller.vala:459 msgid "Updating" msgstr "Aktualizowanie" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Połączono" #: src/controller.vala:730 msgid "Member Joined" msgstr "Członek dołączył" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "Użytkownik {0} dołączył do sieci {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "Użytkownik {0} dołączył do sieci {1} i {2} innej sieci" msgstr[1] "Użytkownik {0} dołączył do sieci {1} i {2} innych sieci" msgstr[2] "Użytkownik {0} dołączył do sieci {1} i {2} innych sieci" #: src/controller.vala:760 msgid "Member Left" msgstr "Członek opuścił" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "Użytkownik {0} opuścił sieć {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "Użytkownik {0} opuścił sieć {1} i {2} inną sieć" msgstr[1] "Użytkownik {0} opuścił sieć {1} i {2} inne sieci" msgstr[2] "Użytkownik {0} opuścił sieć {1} i {2} innych sieci" #: src/controller.vala:786 msgid "Member Online" msgstr "Członek jest w trybie online" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "Użytkownik {0} przeszedł do trybu online w sieci {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "" "Użytkownik {0} przeszedł do trybu online w sieci {1} i {2} innej sieci" msgstr[1] "" "Użytkownik {0} przeszedł do trybu online w sieci {1} i {2} innych sieciach" msgstr[2] "" "Użytkownik {0} przeszedł do trybu online w sieci {1} i {2} innych sieciach" #: src/controller.vala:812 msgid "Member Offline" msgstr "Członek jest w trybie offline" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "Użytkownik {0} przeszedł do trybu offline w sieci {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "" "Użytkownik {0} przeszedł do trybu offline w sieci {1} i {2} innej sieci" msgstr[1] "" "Użytkownik {0} przeszedł do trybu offline w sieci {1} i {2} innych sieciach" msgstr[2] "" "Użytkownik {0} przeszedł do trybu offline w sieci {1} i {2} innych sieciach" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Modyfikuj polecenie" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Dodaj polecenie" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Wysłano prośbę o dołączenie" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Nie odnaleziono konta" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Dołącz do sieci" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Utwórz sieć" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Dołącz" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "_Utwórz" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Wysłano prośbę o dołączenie" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Nie odnaleziono sieci" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Nieprawidłowe hasło" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Sieć jest pełna" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Sieć jest zablokowana" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Dołączono już do tej sieci" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Identyfikator sieci jest już zajęty" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Nieznany" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonimowy" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Hasło" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "Zapisz _kopię zapasową…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "P_rzywróć z kopii zapasowej…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Archiwum nie zawiera oczekiwanych plików" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Łączenie" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Rozłączono" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Wyświetl program Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Rozłącz" #: src/indicator.vala:104 msgid "C_onnect" msgstr "P_ołącz" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Na pewno wykluczyć członka „{0}” z sieci „{1}”?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Jeśli zostanie przyjęte, to wyrzuceni członkowie mogą ponownie dołączyć do " "sieci w dowolnym czasie." #: src/network.vala:148 msgid "You" msgstr "Ty" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Na pewno opuścić sieć „{0}”?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "" "Jeśli zostanie przyjęte, to można ponownie dołączyć do sieci w dowolnym " "czasie." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Na pewno usunąć sieć „{0}”?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Jeśli sieć zostanie usunięta, to zostanie ona trwale utracona." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Wszystkie obsługiwane archiwa" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Zapisz kopię zapasową" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Przywróć z kopii zapasowej" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "P_rzywróć" #: src/preferences.vala:372 msgid "Never" msgstr "Nigdy" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Niedostępny" #: src/sidebar.vala:192 msgid "pending" msgstr "oczekujące" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} online, {1} razem" #: src/status.vala:35 msgid "Offline" msgstr "Offline" #: src/status.vala:39 msgid "Online" msgstr "Online" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Przekierowane" #: src/status.vala:48 msgid "Unreachable" msgstr "Nieosiągalny" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Oczekiwanie na potwierdzenie" #: src/status.vala:56 msgid "Unknown error" msgstr "Nieznany błąd" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Niezgodność protokołu" #: src/status.vala:62 msgid "Conflicting address" msgstr "Konflikt adresu" #: src/status.vala:73 msgid "Direct" msgstr "Bezpośrednie" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "Konfigurowanie" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Antoni Sperka https://launchpad.net/~antek1004-gmail\n" "Eryk Michalak https://hosted.weblate.org/user/gnu-ewm/\n" "Piotr Drąg https://launchpad.net/~piotrdrag" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Ponowne łączenie za {0} sekundę" msgstr[1] "Ponowne łączenie za {0} sekundy" msgstr[2] "Ponowne łączenie za {0} sekund" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi nie jest zainstalowane" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Wersja %s programu Hamachi jest przestarzała" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/pt.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the haguichi package. # André Barata , 2020. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2025-04-18 20:16+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11.1-dev\n" "X-Launchpad-Export-Date: 2022-08-28 16:08+0000\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Administrador de Rede Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Gira as suas redes Hamachi" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "LogMeIn Hamachi;VPN;LAN;Rede;Internet;P2P;Peer;Client;GUI;Frontend;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi facilita muito a participação, criação e administração de redes " "Hamachi." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Funcionalidades:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Lista de redes com pesquisa, ordenação e agrupamento" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Barra lateral para um acesso fácil aos detalhes e ações" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Suporte para indicadores para acesso rápido às principais ações" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" "Notificações na área de trabalho para manter-se atualizado sobre os eventos " "da rede" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Comandos que podem ser completamente personalizados" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Backup e restauração da sua pasta de configuração do Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Nota: É necessária a instalação do Hamachi no sistema para ser usado." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Visualize a lista da sua rede e informações do cliente" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Visualizar pormenores do membro selecionado" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Visualizar pormenores da rede selecionada" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Pesquisar a sua lista de redes" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Participar ou criar redes" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etiqueta" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Comando IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Comando IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioridade" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Gravar" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Anexar a uma Conta" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Conta" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Incluir todas as redes criadas por este cliente" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Anexar" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Alterar Acesso" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Trancado" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Não aceitar novos membros na rede" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Aprovação" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automaticamente" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manualmente" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Alterar" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Alterar Senha" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nova Senha" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ID de Rede" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Senha" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Aprovar" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Rejeitar" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Copiar Endereço IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Copiar Endereço IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Copiar ID de Cliente" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Expulsar" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Detalhes" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Juntar-se à Rede…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Criar Rede…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Ficar Ligado" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Ficar Desligado" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Sair" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Apagar" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Alterar _Acesso…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Alterar _Senha…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Copiar ID de Rede" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Geral" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Configuração" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Backup" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Abrir Pasta" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Alcunha" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protocolo" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Ambos IPv4 e IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Somente IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Somente IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Comportamento" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "Intervalo de atualização da lista de _redes" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Conectar automaticamente ao iniciar" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Reconectar automaticamente quando a conexão for perdida" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Desconectar ao sair" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Comandos" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Ambiente de Trabalho" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Aparência" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Estilo" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Seguir o Tema do Sistema" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Claro" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Escuro" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Mostrar _Indicador" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notificações" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Exibir notificação quando a conexão é _perdida" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Exibir notificação quando um membro se _junta" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Exibir notificação quando um membro _sai" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Exibir notificação quando um membro fica _ligado" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Exibir notificação quando um membro fica _desligado" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Gravar uma Cópia de Segurança…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Restaurar de uma Cópia de Segurança…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Mostrar ajuda" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Mostrar informação do cliente" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Abrir menu" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Preferências" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Atalhos de teclado" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Sair" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Conexão" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Conectar" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Desconectar" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Lista de Redes" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Juntar-se a uma rede" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Criar uma rede" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Atualizar" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Procurar" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Mostrar/esconder membros desligados" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Expandir todas as redes" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Colapsar todas as redes" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Executar comando" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informação" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Anexar" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Cancelar" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ID de Cliente" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Endereço IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Endereço IPv6" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Versões do Hamachi" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Estado" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Sair da Rede" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Apagar Rede" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Proprietário" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Membros" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Capacidade" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Túnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Variáveis de Comando" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Endereço" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Emulador de Terminal" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Gestor de Ficheiros" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Visualizador de Área de Trabalho Remota" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Restaurar Padrão" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Adicionar Comando" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Navegar nas Partilhas" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Ver Computador Remoto" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Ação Padrão" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Opções" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Editar…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Du_plicar…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Mover para _cima" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Mover para _baixo" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Definir como ação padrão" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Remover" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Copiar" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "A inicializar" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Menu Principal" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Pesquisar redes e membros" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Adicionar Rede" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "O Hamachi perdeu a ligação" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Cancelar" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Está conectado!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Use o botão + para adicionar uma rede" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Nenhum Resultado Encontrado" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Tentar uma pesquisa diferente" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Por favor descarregue o Hamachi e siga as instruções de instalação" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Descarregar" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "O Hamachi não está configurado" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Tem que configurar o Hamachi antes de poder conectar" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Configurar" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informação" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Ordenar por _Nome" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Ordenar por _Estado" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Mostrar _Membros Desligados" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Preferências" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de teclado" #: data/ui/window.ui:552 msgid "_Help" msgstr "A_juda" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Sobre o Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "Sai_r" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Reconectar" #: src/controller.vala:283 msgid "No internet connection" msgstr "Sem ligação à Internet" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "A entrar" #: src/controller.vala:348 msgid "Error connecting" msgstr "Erro ao conectar" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "O login no Hamachi falhou" #: src/controller.vala:459 msgid "Updating" msgstr "A atualizar" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Conectado" #: src/controller.vala:730 msgid "Member Joined" msgstr "Membro juntou-se" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} juntou-se à rede {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} juntou-se à rede {1} e {2} outra rede" msgstr[1] "{0} juntou-se à rede {1} e {2} outras redes" #: src/controller.vala:760 msgid "Member Left" msgstr "Membro saiu" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} saiu da rede {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} saiu da rede {1} e {2} outra rede" msgstr[1] "{0} saiu da rede {1} e {2} outras redes" #: src/controller.vala:786 msgid "Member Online" msgstr "Membro ligado" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} ficou ligado na rede {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} ficou ligado na rede {1} e {2} outra rede" msgstr[1] "{0} ficou ligado na rede {1} e {2} outras redes" #: src/controller.vala:812 msgid "Member Offline" msgstr "Membro desligado" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} ficou desligado na rede {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} ficou desligado na rede {1} e {2} outra rede" msgstr[1] "{0} ficou desligado na rede {1} e {2} outras redes" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Editar Comando" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Adicionar Comando" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Solicitação de anexação enviada" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Conta não encontrada" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Juntar-se à Rede" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Criar Rede" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Juntar-se" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "C_riar" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Pedido de adesão enviado" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Rede não encontrada" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Senha invalida" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "A rede está cheia" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "A rede está bloqueada" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Já se juntou a esta rede" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "O ID da rede já está em uso" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Desconhecido" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anónimo" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Palavra-passe alterada" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "A gravar backup…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Backup gravado" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Falha ao gravar o backup" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "A restaurar backup…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Backup restaurado" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Falha ao restaurar o backup" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "O arquivo não contém os ficheiros esperados" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "A conectar" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Desconectado" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Mostrar Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Desconectar" #: src/indicator.vala:104 msgid "C_onnect" msgstr "_Conectar" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Tem a certeza que deseja expulsar o membro “{0}” da rede “{1}”?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Se escolheu sim, membros expulsos podem voltar a juntar-se a esta rede em " "qualquer altura." #: src/network.vala:148 msgid "You" msgstr "Você" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Tem a certeza que deseja sair desta rede “{0}”?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "" "Se escolheu sim, pode voltar a juntar-se a esta rede em qualquer altura." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Tem a certeza que deseja apagar esta rede “{0}”?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Se apagar uma rede, esta vai ser perdida permanentemente." #: src/preferences.vala:107 msgid "Not present" msgstr "Ausente" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Todos os arquivos suportados" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Gravar uma Cópia de Segurança" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Restaurar de uma Cópia de Segurança" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Restaurar" #: src/preferences.vala:372 msgid "Never" msgstr "Nunca" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S segundo" msgstr[1] "%S segundos" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S minuto" msgstr[1] "%S minutos" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Indisponível" #: src/sidebar.vala:192 msgid "pending" msgstr "pendente" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Não anexado" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} ligados, {1} total" #: src/status.vala:35 msgid "Offline" msgstr "Desligado" #: src/status.vala:39 msgid "Online" msgstr "Ligado" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Retransmitido" #: src/status.vala:48 msgid "Unreachable" msgstr "Inacessível" #: src/status.vala:52 msgid "Awaiting approval" msgstr "A aguardar aprovação" #: src/status.vala:56 msgid "Unknown error" msgstr "Erro desconhecido" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protocolo incompatível" #: src/status.vala:62 msgid "Conflicting address" msgstr "Conflito de endereço" #: src/status.vala:73 msgid "Direct" msgstr "Direto" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Restaurar comandos padrão?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Todas as customizações serão perdidas." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Comando “%s” removido" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Desfazer" #: src/window.vala:198 msgid "Configuring" msgstr "A configurar" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "André Barata https://github.com/rottenpants466\n" "Silvério Santos https://hosted.weblate.org/user/ssantos/" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Copiado para a área de transferência" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "A reconectar em {0} segundo" msgstr[1] "A reconectar em {0} segundos" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "O Hamachi não está instalado" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "A versão do Hamachi %s é obsoleta" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi continuará em execução quando a janela for fechada para que possa " "monitorar a conexão e enviar notificações." ================================================ FILE: po/pt_BR.po ================================================ # Brazilian Portuguese translation for haguichi # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-06-17 13:17+0000\n" "Last-Translator: Rodrigo de Avila \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Launchpad-Export-Date: 2024-06-17 18:32+0000\n" "X-Generator: Launchpad (build bbfa2351d9d6a9ddfe262109428f7bf5516e65d1)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Gerenciador de Rede Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Gerencie suas redes Hamachi" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "LogMeIn Hamachi;VPN;LAN;Rede;Internet;P2P;Peer;Client;GUI;Frontend;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi facilita muito a participação, criação e administração de redes " "Hamachi." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Funcionalidades:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Lista de redes com busca, ordenação e agrupamento" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Barra lateral para acesso fácil aos detalhes e ações" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Suporte para indicadores para acesso rápido às principais ações" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" "Notificações na área de trabalho para se manter atualizado sobre os eventos " "da rede" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Comandos que podem ser completamente personalizados" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Backup e restauração da sua pasta de configuração do Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Observação: Requer a instalação do Hamachi no sistema para usar." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Visualize a lista da sua rede e informações do cliente" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Visualizar detalhes do membro selecionado" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Visualizar detalhes da rede selecionada" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Pesquisar sua lista de redes" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Participar ou criar redes" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Rótulo" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "Comando IPv4" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "Comando IPv6" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioridade" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Salvar" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Anexar à Conta" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Conta" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Incluir todas as redes criadas por este cliente" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Anexar" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Alterar Acesso" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Trancado" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Não aceitar novos membros na rede" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Aprovação" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automaticamente" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manualmente" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "A_lterar" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Alterar Senha" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nova senha" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ID da rede" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Senha" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Aprovar" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Rejeitar" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Copiar Endereço IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Copiar Endereço IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Copiar ID do Cliente" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Expulsar" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Detalhes" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Junte-se à Rede…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Criar Rede…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Ficar Online" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Ficar Offline" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Sair" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "E_xcluir" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Alterar _Acesso…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Alterar _Senha…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Copiar ID da Rede" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Geral" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Configuração" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Backup" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Abrir Pasta" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Apelido" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protocolo" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Tanto IPv4 quanto IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Apenas IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Apenas IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Comportamento" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "Intervalo de atualização da lista de _redes" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Conectar automaticamente na inicialização" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Reconectar automaticamente quando a conexão for perdida" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Desconectar ao sair" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Comandos" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Ambiente de Trabalho" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Aparência" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Estilo" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Seguir o Tema do Sistema" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Claro" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Escuro" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Mostrar _indicador" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notificaçőes" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Exibir notificação quando a conexão for perdida" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Exibir notificação quando um membro se _junta" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Exibir notificação quando um membro _sai" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Exibir notificação quando um membro se _conecta" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Exibir notificação quando um membro se d_esconecta" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Salvar um Backup…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Restaurar de um Backup…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Mostrar ajuda" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Mostrar informação do cliente" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Abre o menu" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Preferências" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Atalhos de teclado" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Sai" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Conexão" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Conectar" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Desconectar" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Lista de Rede" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Unir-se à rede" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Criar uma rede" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Atualizar" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Pesquisar" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Mostrar / esconder membros offline" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Expandir todas as redes" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Esconder todas as redes" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Executar comando" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informações" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Anexar" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Cancelar" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ID do cliente" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Endereço IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Endereço IPv6" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Versões do Hamachi" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Estado" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Sair da Rede" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Excluir Rede" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Proprietário" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Membros" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Capacidade" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Túnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Variáveis de Comando" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Endereço" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Emulador de Terminal" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Gerenciador de Arquivos" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Visualizador de Área de Trabalho Remota" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Restaurar Padrão" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Adicionar Comando" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Navegar nos Compartilhamentos" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Ver Desktop remoto" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Ação Padrão" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Opções" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Editar…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Du_plicar…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Mover para _cima" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Mover para _baixo" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Definir como ação padrão" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Remover" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Copiar" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Inicializando" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Menu Principal" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Pesquisar redes e membros" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Adicionar Rede" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "O Hamachi perdeu a conexão" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Cancelar" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Você está conectado!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Use o botão + para adicionar uma rede" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Nenhum Resultado Encontrado" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Tentar uma pesquisa diferente" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "" "Por favor efetue o download do hamachi e siga as instruções do instalador" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Baixar" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "O Hamachi não está configurado" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Você precisa configurar o hamachi antes de conectar" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "C_onfigurar" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informações" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Ordenar por _Nome" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Ordenar por _Status" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Exibir Membros _Desconectados" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Preferências" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "Atalhos de _teclado" #: data/ui/window.ui:552 msgid "_Help" msgstr "Aj_uda" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Sobre o Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "Sai_r" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Reconectar" #: src/controller.vala:283 msgid "No internet connection" msgstr "Sem conexão à internet" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Autenticando" #: src/controller.vala:348 msgid "Error connecting" msgstr "Erro ao conectar" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Falha no login do Hamachi" #: src/controller.vala:459 msgid "Updating" msgstr "Atualizando" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Conectado" #: src/controller.vala:730 msgid "Member Joined" msgstr "Membro juntou-se" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} juntou-se à rede {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} juntou-se à rede {1} e a {2} outra rede" msgstr[1] "{0} juntou-se à rede {1} e a {2} outras redes" #: src/controller.vala:760 msgid "Member Left" msgstr "Membro saiu" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} saiu da rede {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} saiu da rede {1} e de {2} outra rede" msgstr[1] "{0} saiu da rede {1} e de {2} outras redes" #: src/controller.vala:786 msgid "Member Online" msgstr "Membro conectado" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} conectou-se na rede {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} conectou-se na rede {1} e em {2} outra rede" msgstr[1] "{0} conectou-se na rede {1} e em {2} outras redes" #: src/controller.vala:812 msgid "Member Offline" msgstr "Membro desconectado" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} desconectou-se da rede {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} desconectou-se da rede {1} e de {2} outra rede" msgstr[1] "{0} desconectou-se da rede {1} e de {2} outras redes" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Editar Comando" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Adicionar Comando" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Solicitação de anexação enviada" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Conta não encontrada" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Junte-se à Rede" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Criar Rede" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Junte-se" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "C_riar" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Requisição para juntar-se foi enviada" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Rede não encontrada" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Senha inválida" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "A rede está cheia" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "A rede está trancada" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Você já juntou-se a esta Rede antes" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Este ID de rede já está em uso" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Desconhecido" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anônimo" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Senha alterada" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Salvando backup…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Backup salvo" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Falha ao salvar o backup" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Restaurando backup…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Backup restaurado" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Falha ao restaurar o backup" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "O arquivo não contém os arquivos esperados" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Conectando" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Desconectado" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Mostrar o Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Desconectar" #: src/indicator.vala:104 msgid "C_onnect" msgstr "C_onectar" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Tem certeza que quer expulsar o membro “{0}” da rede “{1}”?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Se permitido, os membros expulsos podem se juntar novamente a esta rede a " "qualquer momento." #: src/network.vala:148 msgid "You" msgstr "Você" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Tem certeza que quer sair da rede “{0}”?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "" "Se permitido, você poderá se juntar novamente a esta rede a qualquer momento." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Tem certeza que quer remover a rede “{0}”?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Se você remover a rede, ela será permanentemente perdida." #: src/preferences.vala:107 msgid "Not present" msgstr "Ausente" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Todos os arquivos suportados" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Salvar um Backup" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Restaurar de um Backup" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Restaurar" #: src/preferences.vala:372 msgid "Never" msgstr "Nunca" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S segundo" msgstr[1] "%S segundos" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S minuto" msgstr[1] "%S minutos" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Indisponível" #: src/sidebar.vala:192 msgid "pending" msgstr "pendente" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Não anexado" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} conectados, total de {1}" #: src/status.vala:35 msgid "Offline" msgstr "Desconectado" #: src/status.vala:39 msgid "Online" msgstr "Conectado" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Retransmitida" #: src/status.vala:48 msgid "Unreachable" msgstr "Inacessível" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Aguardando aprovação" #: src/status.vala:56 msgid "Unknown error" msgstr "Erro desconhecido" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Incompatibilidade de protocolo" #: src/status.vala:62 msgid "Conflicting address" msgstr "Endereço conflitante" #: src/status.vala:73 msgid "Direct" msgstr "Direta" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Restaurar comandos padrão?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Todas as customizações serão perdidas." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Comando “%s” removido" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Desfazer" #: src/window.vala:198 msgid "Configuring" msgstr "Configurando" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Rodrigo de Avila https://launchpad.net/~rdeavila" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Copiado para a área de transferência" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Reconectando em {0} segundo" msgstr[1] "Reconectando em {0} segundos" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "O Hamachi não está instalado" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "A versão %s do Hamachi é obsoleta" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi continuará em execução quando a janela for fechada para que possa " "monitorar a conexão e enviar notificações." ================================================ FILE: po/ru.po ================================================ # Russian translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-08-30 16:46+0000\n" "Last-Translator: Alexey Fedorov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2024-08-30 22:32+0000\n" "X-Generator: Launchpad (build 1b1ed1ad2dbfc71ee62b5c5491c975135a771bf0)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Сетевой менеджер Hamachi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Управляйте сетями Hamachi" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "Хамачи;Hamachi;ВПН;VPN;ЛАН;Сеть;Интернет;П2П;Пир;Клиент;Графический;интерфейс;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi позволяет легко присоединяться, создавать и администрировать сети " "Hamachi." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Возможности:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Список сетей с возможностью поиска, сортировки и складывания" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Боковая панель для быстрого доступа к деталям и действиям" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Поддержка индикаторов для быстрого доступа к первичным действиям" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "Уведомления на рабочем столе, чтобы всегда быть в курсе событий в сети" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Команды, которые можно полностью настроить под себя" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Резервное копирование и восстановление папки конфигурации Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "Важно: Для использования необходим установленный Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Просмотр списка сетей и информации о клиентах" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Просмотр сведений о выбранном участнике" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Просмотр сведений о выбранной сети" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Поиск по списку сетей" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Создание и присоединение к сетям" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Метка" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 команда" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 команда" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Приоритет" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "Со_хранить" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Прикрепить к учётной записи" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Учётная запись" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Включить все сети, созданные этим клиентом" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Прикрепить" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Изменить доступ" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Заблокирован" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Не принимать новых членов сети" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Одобрение" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Автоматически" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Вручную" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Изменить" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Смена пароля" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Новый пароль" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Идентификатор сети" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Пароль" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Одобрить" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Отклонить" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Копировать адрес IPv_4" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Копировать адрес IPv_6" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Скопировать идентификационный номер клиента" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Выгнать" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Подробнее" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Подключиться к сети…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Создать сеть…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Статус “в сети”" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Статус “не в сети”" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Выйти" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Удалить" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Изменить _доступ…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Изменить _пароль…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "Ск_опировать идентификационный номер сети" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Общие" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Настройки" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Резервное копирование" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Открыть папку" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Псевдоним" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Протокол" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Оба, IPv4 и IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "только IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "только IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Поведение" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "_Интервал обновления списка сетей" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Автоматически подключаться при запуске" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "А_втоматически подключаться при потере соединения" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Отключаться при выходе" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Команды" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Рабочий стол" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Внешний вид" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Стиль" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Как в системе" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Светлый" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Темный" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Показать _индикатор" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Уведомления" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Отобразить уведомления о _потере соединения" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "П_оказывать уведомление, когда к сети подключается пользователь" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "По_казывать уведомление, когда пользователь отключается от сети" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Пок_азывать уведомление, когда пользователь выходит в онлайн" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Пока_зывать уведомление, когда пользователь уходит из сети" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "Сделать _резервную копию…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Восстановить с резервной копии…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Показать справку" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Показать информацию о клиенте" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Открыть меню" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Параметры" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Комбинации клавиш" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Выход" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Подключение" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Подключиться" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Отключиться" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Список сетей" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Присоединиться к сети" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Создать сеть" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Обновить" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Поиск" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Показать / скрыть офлайн-пользователей" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Развернуть все сети" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Свернуть все сети" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Выполнить команду" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Сведения" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Прикрепить" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Отменить" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Идентификатор клиента" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 адрес" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 адрес" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Версия Hamachi" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Статус" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Покинуть сеть" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Удалить сеть" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Владелец" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Члены" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Вместимость" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Тоннель" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Переменные команд" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Адрес" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Эмулятор терминала" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Управление файлами" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Просмотр удалённых рабочих столов" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "По _умолчанию" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Добавить команду" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Просмотр открытых каталогов" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "П_росмотр удалённого рабочего стола" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Пинг" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Действие по умолчанию" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Параметры" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Изменить…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Дублировать…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "В_верх" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "В_низ" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Сохранить как действие по умолчанию" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Удалить" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Копировать" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Инициализация" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Главное меню" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Поиск сетей и участников" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Добавить сеть" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi потерял соединение" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "О_тменить" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Вы подключены!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Используйте кнопку +, чтобы добавить сеть" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Результатов не найдено" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Попробуйте изменить поисковый запрос" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Пожалуйста, скачайте Hamachi и следуйте инструкциям установки" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Загрузить" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi не настроен" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Для подключения вам необходимо настроить Hamachi" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Настроить" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Информация" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Упорядочить по _имени" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Упорядочить по _статусу" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Показывать тех, кто “не в сети”" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Параметры" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: data/ui/window.ui:552 msgid "_Help" msgstr "П_омощь" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_О приложении" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "В_ыход" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Подключиться повторно" #: src/controller.vala:283 msgid "No internet connection" msgstr "Отсутствует соединение с интернет" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Авторизация" #: src/controller.vala:348 msgid "Error connecting" msgstr "Ошибка при подключении" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Ошибка при подключении Hamachi" #: src/controller.vala:459 msgid "Updating" msgstr "Обновление" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Подключен" #: src/controller.vala:730 msgid "Member Joined" msgstr "Пользователь подключился" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} подключился к сети {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} подключился к сети {1} и ещё {2} сети" msgstr[1] "{0} подключился к сети {1} и ещё {2} сетям" msgstr[2] "{0} подключился к сети {1} и ещё {2} сетям" #: src/controller.vala:760 msgid "Member Left" msgstr "Пользователь покинул сеть" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} покинул сеть {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} покинул сеть {1} и ещё {2} сеть" msgstr[1] "{0} покинул сеть {1} и ещё {2} сети" msgstr[2] "{0} покинул сеть {1} и ещё {2} сетей" #: src/controller.vala:786 msgid "Member Online" msgstr "Пользователь в сети" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} вошел в сеть {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} подключился к сети {1} и ещё {2} сети" msgstr[1] "{0} подключился к сети {1} и ещё {2} сетям" msgstr[2] "{0} подключился к сети {1} и ещё {2} сетям" #: src/controller.vala:812 msgid "Member Offline" msgstr "Пользователь отключился" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} отключился от сети {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} ушел из сети {1} и ещё {2} сети" msgstr[1] "{0} ушел из сети {1} и ещё {2} сетей" msgstr[2] "{0} ушел из сети {1} и ещё {2} сетей" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Изменить команду" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Добавить команду" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Отправлен запрос на присоединение" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Учётная запись не найдена" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Подключиться к сети" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Создать сеть" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Подключиться" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "_Создать" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Запрос на подключение послан" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Сеть не найдена" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Неправильный пароль" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Сеть переполнена" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Сеть заблокирована" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Вы уже подключены к этой сети" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Сеть с данным ID уже существует" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Неизвестный" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Аноним" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Пароль изменен" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Сохранение резервной копии…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Резервная копия сохранена" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Ошибка сохранения резервной копии" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Восстановление резервной копии…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Резервная копия восстановлена" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Не удалось восстановить" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Архив не содержит необходимых файлов" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Подключение" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Отключен" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Показать Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Отключиться" #: src/indicator.vala:104 msgid "C_onnect" msgstr "П_одключиться" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Вы уверены, что хотите выгнать «{0}» из сети «{1}»?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Выгнанные участники всегда смогут заново подключиться к выбранной сети." #: src/network.vala:148 msgid "You" msgstr "Вы" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Вы уверены что хотите покинуть сеть «{0}»?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Вы всегда сможете заново подключиться к выбранной сети." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Вы уверены что хотите удалить сеть «{0}»?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Если вы удалите сеть, она удалиться без возможности восстановления." #: src/preferences.vala:107 msgid "Not present" msgstr "Отсутствует" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Все поддерживаемые архивы" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Создать резервную копию" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Восстановить из резервной копии" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Восстановить" #: src/preferences.vala:372 msgid "Never" msgstr "Никогда" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S секунда" msgstr[1] "%S секунды" msgstr[2] "%S секунд" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S минута" msgstr[1] "%S минуты" msgstr[2] "%S минут" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Недоступно" #: src/sidebar.vala:192 msgid "pending" msgstr "ожидается" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Не присоедиен" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} в сети, {1} всего" #: src/status.vala:35 msgid "Offline" msgstr "Не в сети" #: src/status.vala:39 msgid "Online" msgstr "В сети" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Через ретранслятор" #: src/status.vala:48 msgid "Unreachable" msgstr "Недоступен" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Ожидание одобрения" #: src/status.vala:56 msgid "Unknown error" msgstr "Неизвестная ошибка" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Протокол не совпадает" #: src/status.vala:62 msgid "Conflicting address" msgstr "Конфликтующие адреса" #: src/status.vala:73 msgid "Direct" msgstr "Прямое" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Вернуть стандартные команды?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Все изменения будут утеряны" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Удалена команда «%s»" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Вернуть" #: src/window.vala:198 msgid "Configuring" msgstr "Настройка" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Alexey Fedorov https://launchpad.net/~alexei963\n" "Dmitrij Kiryanov https://launchpad.net/~kagaminep\n" "Matvey https://launchpad.net/~astrr\n" "jmb_kz https://launchpad.net/~jmb-kz\n" "Sergey Korolev https://launchpad.net/~slipped-on-blade\n" "Sergey Sedov https://launchpad.net/~serg-sedov" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Скопировано в буфер обмена" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Повторное подключение через {0} секунду" msgstr[1] "Повторное подключение через {0} секунд" msgstr[2] "Повторное подключение через {0} секунд" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi не установлен" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Версия Hamachi %s устарела" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi будет продолжать работать, когда его окно закрыто, чтобы он мог " "следить за соединением и отправлять уведомления." ================================================ FILE: po/sk.po ================================================ # Slovak translation for haguichi # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2026-03-19 22:36+0000\n" "Last-Translator: Parrot HatOSS \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" "X-Generator: Weblate 5.17-dev\n" "X-Launchpad-Export-Date: 2018-04-04 17:28+0000\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Vlastnosti:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Ľavý panel pre ľahkú prístupnosť na detaily a akcie" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 #, fuzzy msgid "Backup and restore of your Hamachi configuration folder" msgstr "Konfigurácia sa nedá obnoviť" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Poznámka: Potrebuje inštaláciu Hamachi na systéme pre používanie." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 #, fuzzy msgid "View your network list and client information" msgstr "Zobraziť informácie o klientovi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Vyhladať svoj sieťový list" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 #, fuzzy msgid "Join or create networks" msgstr "Pripojiť sa k sieti" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Štítok" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 príkaz" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 príkaz" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Priorita" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Uložiť" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Pričleniť k účtu" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Účet" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Zahrnúť všetky siete vytvorené týmto klientom" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Pričleniť" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 #, fuzzy msgid "Change Access" msgstr "Zmeniť prezývku" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Uzamknuté" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Neakceptovať nových sieťových členov" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Schválenie" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automaticky" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Ručne" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Zmeniť" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Zmeniť heslo" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nové heslo" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ID siete" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Heslo" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Schváliť" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Odmietnuť" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Kopírovať IPv_4 adresu" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Kopírovať IPv_6 adresu" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Kopírovať ID klienta" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Vyhodiť" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Vstúpiť do siete…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Vytvoriť sieť…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "Ísť o_nline" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "Ísť o_ffline" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Odísť" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "O_dstrániť" #: data/ui/menus/network-menu.ui:36 #, fuzzy msgid "Change _Access…" msgstr "Zmeniť p_rezývku…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Zmeniť _heslo…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Kopírovať ID siete" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Obecné" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfigurácia" #: data/ui/preferences.ui:20 #, fuzzy msgid "Backup" msgstr "Uložiť zálohu" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Otvoriť zložku" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Prezývka" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokol" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Obaja IPv4 a IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Iba IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Iba IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Chovanie" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Prip_ojiť automaticky pri spustení" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "Automaticky obnoviť spojenie, ak bolo st_ratené" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "O_dpojiť pri ukončení" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Príkazy" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Plocha" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Vzhľad" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "" #: data/ui/preferences.ui:142 msgid "Light" msgstr "" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Zobraziť _indikátor" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Upozornenia" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Z_obraziť upozornenie, keď je spojenie stratené" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Zobraziť upozornenie, keď sa člen pripo_jí" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Zobraziť upozornenie, keď sa č_len odpojí" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Zobraziť upozornenie, keď člen zmení stav na o_nline" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Zobraziť upozornenie, keď člen zmení stav na o_ffline" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Uložiť zálohu…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Obnoviť zo zálohy…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Zobraziť nápovedu" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Zobraziť informácie o klientovi" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Otvorenie ponuky" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Predvoľby" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Klávesové skratky" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Koniec" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Spojenie" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Pripojiť" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Odpojiť" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Zoznam sietí" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Pripojiť sa k sieti" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Vytvoriť sieť" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Obnoviť" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Hľadať" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Zobraziť/skryť offline členov" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Rozbaliť všetky siete" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Zbaliť všetky siete" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Vykonať príkaz" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Informácie" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Pričleniť" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Zrušiť" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ID klienta" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 adresa" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 adresa" #: data/ui/sidebar.ui:68 #, fuzzy msgid "Hamachi Version" msgstr "Verze Hamachi %s je zastaraná" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Stav" #: data/ui/sidebar.ui:87 #, fuzzy msgid "Leave Network" msgstr "Vytvoriť sieť" #: data/ui/sidebar.ui:98 #, fuzzy msgid "Delete Network" msgstr "Vytvoriť sieť" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Vlastník" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Členovia" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapacita" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 #, fuzzy msgid "Command Variables" msgstr "Príkazy" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adresa" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "" #: data/ui/widgets/command-entry-row.ui:75 #, fuzzy msgid "Remote Desktop Viewer" msgstr "_Zobraziť vzdialenú plochu" #: data/ui/widgets/commands-editor.ui:12 #, fuzzy msgid "_Restore Default" msgstr "O_bnoviť" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "P_ridať príkaz" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "P_rechádzať zdieľané" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Zobraziť vzdialenú plochu" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 #, fuzzy msgid "Default Action" msgstr "Nastaviť ako _predvolenú akciu" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Upraviť…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Duplikovať…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Posunúť _vyššie" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Posunúť _nižšie" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "Nastaviť ako _predvolenú akciu" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Odstrániť" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "" #: data/ui/window.ui:299 #, fuzzy msgid "Add Network" msgstr "Vstúpiť do siete" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Strata Hamachi spojenia" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Zrušiť" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Ste pripojený!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Použite tlačidlo + na pridanie siete" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Stiahnite si Hamachi a postupujte podľa inštalačných inštrukcií" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Stiahnuť" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi nie je nastavené" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Pred pripojením je potrebné Hamachi nastaviť" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Nastaviť" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Informácie" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Radiť podľa me_na" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Radiť podľa _stavu" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "Zobraziť _offline členov" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Predvoľby" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Klávesové skratky" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Nápoveda" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_O aplikácii Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "_Koniec" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Znova pripojiť" #: src/controller.vala:283 msgid "No internet connection" msgstr "Žiadne pripojenie k internetu" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Prihlasovanie" #: src/controller.vala:348 msgid "Error connecting" msgstr "Chyba pri pripájaní" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Prihlásenie Hamachi zlyhalo" #: src/controller.vala:459 msgid "Updating" msgstr "Aktualizacia" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Pripojený" #: src/controller.vala:730 msgid "Member Joined" msgstr "Člen bol pridaný" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} bol pridaný do siete {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} sa pripojil do siete {1} a {2} ďalší siete" msgstr[1] "{0} sa pripojil do siete {1} a {2} ďalších sietí" msgstr[2] "{0} sa pripojil do siete {1} a {2} ďalších sietí" #: src/controller.vala:760 msgid "Member Left" msgstr "Člen odišiel" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} opustil sieť {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} opustil sieť {1} a {2} ďalší sieť" msgstr[1] "{0} opustil sieť {1} a {2} ďalšie siete" msgstr[2] "{0} opustil sieť {1} a {2} ďalších sietí" #: src/controller.vala:786 msgid "Member Online" msgstr "Člen online" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} je online v sieti {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} je online v sieti {1} a {2} ďalšej sieti" msgstr[1] "{0} je online v sieti {1} a {2} ďalších sietí" msgstr[2] "{0} je online v sieti {1} a {2} ďalších sietí" #: src/controller.vala:812 msgid "Member Offline" msgstr "Člen offline" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} je offline zo siete {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} je offline v sieti {1} a {2} ďalšej sieti" msgstr[1] "{0} je offline v sieti {1} a {2} ďalších sietí" msgstr[2] "{0} je offline v sieti {1} a {2} ďalších sietí" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Upraviť príkaz" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Pridať príkaz" #: src/dialogs/attach.vala:55 #, fuzzy msgid "Attach request sent" msgstr "Žiadosť o pripojenie zaslaná" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Účet sa nenašiel" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Vstúpiť do siete" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Vytvoriť sieť" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "Vstú_piť" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "V_ytvoriť" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Žiadosť o pripojenie zaslaná" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Sieť nebola nájdená" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Neplatné heslo" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Sieť je plná" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Sieť je zamknutá" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Sieť je už pripojená" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "ID siete je už používané" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Neznámy" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonymný" #: src/hamachi.vala:699 src/hamachi.vala:702 #, fuzzy msgid "Password changed" msgstr "Heslo" #: src/hamachi.vala:723 #, fuzzy msgid "Saving backup…" msgstr "_Uložiť zálohu…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "" #: src/hamachi.vala:754 #, fuzzy msgid "Restoring backup…" msgstr "_Obnoviť zo zálohy…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Archív neobsahuje očakávané súbory" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Pripája sa" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Odpojený" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Zobraziť Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "O_dpojiť" #: src/indicator.vala:104 msgid "C_onnect" msgstr "Prip_ojiť" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Naozaj chcete vyhodiť člena „{0}“ zo siete „{1}“?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "Ak potvrdíte, môžu sa vylúčenie členi neskôr opäť pripojiť." #: src/network.vala:148 msgid "You" msgstr "Vy" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Naozaj chcete opustiť sieť „{0}“?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Ak potvrdíte, môžete sa opäť pripojiť kedykoľvek neskôr." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Naozaj chcete zmazať sieť „{0}“?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Ak sieť odstránite, bude nenávratne stratená." #: src/preferences.vala:107 msgid "Not present" msgstr "" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Všetky podporované archívy" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Uložiť zálohu" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Obnoviť zo zálohy" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "O_bnoviť" #: src/preferences.vala:372 #, fuzzy msgid "Never" msgstr "Vrá_tiť" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Nedostupný" #: src/sidebar.vala:192 msgid "pending" msgstr "čakajúce" #: src/sidebar.vala:193 msgid "Not attached" msgstr "" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} online, {1} celkovo" #: src/status.vala:35 msgid "Offline" msgstr "Offline" #: src/status.vala:39 msgid "Online" msgstr "Online" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Postúpené" #: src/status.vala:48 msgid "Unreachable" msgstr "Nedostupný" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Čaká na schválenie" #: src/status.vala:56 msgid "Unknown error" msgstr "Neznáma chyba" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Chyba v protokole" #: src/status.vala:62 msgid "Conflicting address" msgstr "Konflikt adries" #: src/status.vala:73 msgid "Direct" msgstr "Priamy" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "" #: src/window.vala:198 msgid "Configuring" msgstr "" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "Zdeněk Kopš https://launchpad.net/~zdenekkops" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Obnova pripojenie za {0} sekundu" msgstr[1] "Obnova pripojenie za {0} sekundy" msgstr[2] "Obnova pripojenie za {0} sekúnd" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi nie je nainštalované" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Verze Hamachi %s je zastaraná" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" ================================================ FILE: po/sv.po ================================================ # Swedish translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2025-10-23 10:52+0000\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14.1-dev\n" "X-Launchpad-Export-Date: 2022-08-28 16:08+0000\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi nätverkshanterare" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Hantera dina Hamachi-nätverk" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" "LogMeIn Hamachi;VPN;LAN;Nätverk;Internet;P2P;Peer;Klient;grafiskt " "gränssnitt;Frontend;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi gör det enkelt att ansluta sig till, skapa och administrera Hamachi-" "nätverk." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Funktioner:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Sökbar, sorterbar och utfällbar nätverkslista" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Sidorad för enkel åtkomst till information och åtgärder" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Indikatorstöd för snabb åtkomst till primära åtgärder" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "Skrivbordsmeddelanden för att hålla dig uppdaterad om nätverkshändelser" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Kommandon som kan anpassas helt och hållet" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Säkerhetskopiering och återställning av din Hamachi-konfigurationsmapp" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Observera: Kräver installation av Hamachi på systemet för att kunna " "användas." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Visa din nätverkslista och klientinformation" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Visa valda medlemsuppgifter" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Visa valda nätverksdetaljer" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Sök i din nätverkslista" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Gå med i eller skapa nätverk" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etikett" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4-kommando" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6-kommando" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Prioritet" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Spara" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Koppla till konto" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Konto" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Inkludera alla nätverk som skapats av denna klient" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "K_oppla" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Byt åtkomst" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Låst" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Acceptera inte nya nätverksmedlemmar" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Godkännande" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Automatiskt" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Manuellt" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "Ä_ndra" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Ändra lösenord" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Nytt lösenord" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Nätverks-id" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Lösenord" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Godkänn" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "Avv_isa" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Kopiera IPv_4-adress" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Kopiera IPv_6-adress" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Kopiera klient-id" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Kasta ut" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Detaljer" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Gå med i nätverk…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Skapa nätverk…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "Koppla _upp" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "Koppla _ner" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Lämna" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Radera" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Byt å_tkomst…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Ändra _lösenord…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Kopiera nätverks-id" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Allmänt" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Konfiguration" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Säkerhetskopiera" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Öppna mapp" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Smeknamn" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Protokoll" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Både IPv4 och IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Endast IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Endast IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Beteende" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "_Uppdateringsintervall för nätverkslista" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "_Anslut automatiskt vid uppstart" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Återanslut automatiskt när anslutningen avbrutits" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Koppla från vid stängning" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Kommandon" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Skrivbord" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Utseende" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Stil" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Följ systemet" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Ljust" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Mörkt" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Visa _indikator" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Notifieringar" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Visa notifiering när anslutningen för_loras" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Visa notifiering när en användare _går in" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Visa notifiering när en användare _lämnar" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Visa notifiering när en användare _ansluter" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Visa notifiering när en användare kopplar _från" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Spara en säkerhetskopia…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "Åt_erställ från säkerhetskopia…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Visa hjälp" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Visa klientinformation" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Öppna meny" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Inställningar" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Tangentbordsgenvägar" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Avsluta" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Anslutning" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Anslut" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Koppla från" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Nätverkslista" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Gå med i ett nätverk" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Skapa ett nätverk" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Uppdatera" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Sök" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Visa/dölj frånkopplade medlemmar" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Fäll ut alla nätverk" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Fäll in alla nätverk" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Kör kommando" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Information" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Koppla" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Avbryt" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "Klient-id" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4-adress" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6-adress" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Hamachi version" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Status" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Lämna nätverk" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Ta bort nätverk" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Ägare" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Medlemmar" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapacitet" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tunnel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Kommandovariabler" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adress" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Terminalemulator" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Filhanterare" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Fjärrskrivbordsvisare" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "Åte_rställ till standard" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Lägg till kommando" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Bläddra i utdelade mappar" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Visa fjärrskrivbord" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Pinga" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Standardåtgärd" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Alternativ" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Redigera…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Duplicera…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Flytta _uppåt" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Flytta _nedåt" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "_Ställ in som standardåtgärd" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Ta bort" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Kopiera" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Initierar" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Huvudmeny" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Sök efter nätverk och medlemmar" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Lägg till nätverk" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi förlorade anslutningen" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Avbryt" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Du är ansluten!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Använd + knappen för att lägga till ett nätverk" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Inga resultat hittades" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Prova en annan sökning" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Hämta ner Hamachi och följ installationsinstruktionerna" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Hämta" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi är inte konfiguerat" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Du behöver konfiguera Hamachi innan du kan ansluta" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "K_onfigurera" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Information" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Sortera efter _namn" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Sortera efter _status" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Frånkopplade användare" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Inställningar" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Hjälp" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Om Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "A_vsluta" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Återanslut" #: src/controller.vala:283 msgid "No internet connection" msgstr "Ingen internetanslutning" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Loggar in" #: src/controller.vala:348 msgid "Error connecting" msgstr "Fel vid uppkoppling" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Fel vid Hamachi-inloggning" #: src/controller.vala:459 msgid "Updating" msgstr "Uppdaterar" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Ansluten" #: src/controller.vala:730 msgid "Member Joined" msgstr "Medlem gick in" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} har gått in i nätverket {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} gick in i nätverket {1} och {2} annat nätverk" msgstr[1] "{0} gick in i nätverket {1} och {2} andra nätverk" #: src/controller.vala:760 msgid "Member Left" msgstr "Medlem lämnade" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} lämnade nätverket {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} lämnade nätverket {1} och {2} annat nätverk" msgstr[1] "{0} lämnade nätverket {1} och {2} andra nätverk" #: src/controller.vala:786 msgid "Member Online" msgstr "Medlem ansluten" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} anslöt till nätverket {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} anslöt till nätverket {1} och {2} annat nätverk" msgstr[1] "{0} anslöt till nätverket {1} och {2} andra nätverk" #: src/controller.vala:812 msgid "Member Offline" msgstr "Medlem frånkopplad" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} kopplade från nätverket {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} kopplade från nätverket {1} och {2} annat nätverk" msgstr[1] "{0} kopplade från nätverket {1} och {2} andra nätverk" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Redigera kommando" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Lägg till kommando" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Ansökningsbegäran skickad" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Kontot hittades inte" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Gå med i nätverk" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Skapa nätverk" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Gå med i" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "S_kapa" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Begäran att gå med skickad" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Nätverket hittades inte" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Ogiltigt lösenord" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Nätverket är fullt" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Nätverket är låst" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Har redan gått med i nätverket" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Nätverks-id används redan" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Okänt" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonym" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Lösenord ändrades" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Sparar säkerhetskopia…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Säkerhetskopia sparad" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Misslyckades med att spara säkerhetskopia" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Återställer säkerhetskopia…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Säkerhetskopia återställd" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Misslyckades med att återställa säkerhetskopia" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Arkivet innehåller inte de filer som förväntades" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Ansluter" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Frånkopplad" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Visa Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Koppla från" #: src/indicator.vala:104 msgid "C_onnect" msgstr "A_nslut" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Vill du verkligen kasta ut medlemmen “{0}” från nätverket “{1}”?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "Om godkänd så kan utslängda medlemmar gå med i nätverket senare." #: src/network.vala:148 msgid "You" msgstr "Du" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Vill du verkligen lämna nätverket “{0}”?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Om godkänd så kan du gå med i nätverket igen senare." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Vill du verkligen ta bort nätverket “{0}”?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Om du tar bort ett nätverk så är det permanent borta." #: src/preferences.vala:107 msgid "Not present" msgstr "Finns inte" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Alla arkiv som stöds" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Spara en säkerhetskopia" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Återställ från säkerhetskopia" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "Åte_rställ" #: src/preferences.vala:372 msgid "Never" msgstr "Aldrig" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S sekund" msgstr[1] "%S sekunder" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S minut" msgstr[1] "%S minuter" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Ej tillgänglig" #: src/sidebar.vala:192 msgid "pending" msgstr "väntar" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Inte bifogad" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} anslutna, {1} totalt" #: src/status.vala:35 msgid "Offline" msgstr "Frånkopplad" #: src/status.vala:39 msgid "Online" msgstr "Ansluten" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Omdirigerad" #: src/status.vala:48 msgid "Unreachable" msgstr "Kan inte nås" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Väntar på godkännande" #: src/status.vala:56 msgid "Unknown error" msgstr "Okänt fel" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Protokollet stämmer inte" #: src/status.vala:62 msgid "Conflicting address" msgstr "Konflikt i adress" #: src/status.vala:73 msgid "Direct" msgstr "Direkt" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Återställ standardkommandon?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Alla anpassningar kommer att förloras." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Tog bort kommandot \"%s\"" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "Å_ngra" #: src/window.vala:198 msgid "Configuring" msgstr "Konfigurerar" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Daniel Holm https://launchpad.net/~danielholm\n" "Daniel Nylander https://launchpad.net/~yeager\n" "David Bengtsson https://launchpad.net/~jstfaking" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Kopierades till urklipp" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Återansluter om {0} sekund" msgstr[1] "Återansluter om {0} sekunder" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi är inte installerat" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi version %s är för gammal" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi fortsätter att köras när fönstret stängs så att det kan övervaka " "anslutningen och skicka aviseringar." ================================================ FILE: po/tr.po ================================================ # Turkish translation for haguichi # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2026-02-22 21:44+0000\n" "Last-Translator: Sabri Ünal \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.16.1-dev\n" "X-Launchpad-Export-Date: 2018-03-07 18:20+0000\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi Ağ Yöneticisi" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Hamachi ağlarınızı yönetin" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "" "LogMeIn " "Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;Ağ;Sanal Özel " "Ağ;İnternet;Eş;İStemci;Arayüz;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi, Hamachi ağlarına katılmayı, oluşturmayı ve yönetmeyi kolaylaştırır." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Özellikler:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Aranabilir, sıralanabilir ve daraltılabilir ağ listesi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Ayrıntılara ve eylemlere kolay erişim için kenar çubuğu" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Birincil eylemlere hızlı erişim için gösterge desteği" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "Ağ olaylarından haberdar olmak için masaüstü bildirimleri" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Tamamen özelleştirilebilen komutlar" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Hamachi yapılandırma klasörünüzün yedeklenmesi ve geri yüklenmesi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Lütfen dikkat: Kullanmak için sisteme Hamachiʼnin kurulması gerekir." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Ağ listenizi ve istemci bilgilerinizi görüntüleyin" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Seçilen üye ayrıntılarını görüntüleyin" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Seçilen ağ ayrıntılarını görüntüleyin" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Ağ listenizi arayın" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Ağlara katılın ya da ağ oluşturun" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Etiket" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 Komutu" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 Komutu" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Öncelik" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "_Kaydet" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Hesaba Ekle" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Hesap" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Bu istemci tarafından oluşturulan tüm bağlantıları kapsa" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Ekle" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Erişimi Değiştir" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Kilitli" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Yeni ağ üyelerii kabul etme" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Onay" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Kendiliğinden" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Elle" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "D_eğiştir" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Parolayı Değiştir" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Yeni Parola" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "Ağ Kimliği" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Parola" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Onayla" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Reddet" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "IPv_4 Adresini Kopyala" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "IPv_6 Adresini Kopyala" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Adres Kimliğini Kopyala" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_At" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Ayrıntılar" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Ağa Katıl…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "Ağ _Oluştur…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "Ç_evrim İçi Ol" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "Çevrim _Dışı Ol" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Ayrıl" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "_Sil" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "_Erişimi Değiştir…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Parolayı _Değiştir…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Ağ Kimliğini Kopyala" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Genel" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Yapılandırma" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Yedekle" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Klasör Aç" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Takma ad" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Bağlantı Kuralı" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "IPv4 ve IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "Sadece IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "Sadece IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "İşleyiş" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "_Ağ listesi güncelleme aralığı" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "Başlangıçta _kendiliğinden bağlan" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "_Bağlantı koptuğunda kendiliğinden yeniden bağlan" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Çıkışta bağlantıyı kes" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Komutlar" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Masaüstü" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Gürünüm" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Biçem" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Sistemi İzle" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Açık" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Koyu" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "_Göstergeyi göster" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Bildirimler" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Bağ_lantı koptuğunda bildir" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Üyeler _bağlandığında bildir" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Üyeler _ayrıldığında bildir" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Üyeler ç_evrim içi olduğunda bildir" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Üyeler çe_vrim dışı olduğunda bildir" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Yedek Kaydet…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "Yedekten Ge_ri Yükle…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Yardımı göster" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "İstemci bilgisini göster" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Menüyü aç" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Tercihler" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Klavye kısayolları" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Çık" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "Bağlantı" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Bağlan" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Bağlantıyı Kes" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Ağ Listesi" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Ağa katıl" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Ağ oluştur" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Yenile" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Ara" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Çevrim dışı üyeleri göster/gizle" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Tüm ağları genişlet" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Tüm ağları daralt" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Komut çalıştır" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Bilgi" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Ekle" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "İptal" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "İstemci Kimliği" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "IPv4 Adresi" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "IPv6 Adresi" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Hamachi Sürümü" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Durum" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Ağdan Ayrıl" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Ağı Sil" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Ağ Sahibi" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Üyeler" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Kapasite" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Tünel" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Komut Değişkenleri" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Adres" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Uçbirim Öykünücü" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Dosya Yöneticisi" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Uzak Masaüstü Görüntüleyici" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "Ö_ntanımlıyı Geri Yükle" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "Komut _Ekle" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Paylaşımlara Göz At" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Uzak Masaüstünü Gör" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Ping" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Öntanımlı Eyle" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Seçenekler" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Düzenle…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "Ç_oğalt…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "_Yukarı Taşı" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "_Aşağı Taşı" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "Ö_ntanımlı Eylem Olarak Ayarla" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Kaldır" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Kopyala" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Başlatılıyor" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Ana Menü" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Ağları ve üyeleri ara" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Ağ Ekle" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi Bağlantısı Koptu" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "İ_ptal" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Bağlandınız!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Ağ eklemek için + düğmesini kullanın" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Hiçbir Sonuç Bulunamadı" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Başka arama dene" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Lütfen Hamachiʼyi indirin ve kurulum yönergelerini takip edin" #: data/ui/window.ui:432 msgid "_Download" msgstr "İ_ndir" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi Yapılandırılmamış" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Bağlanmadan önce Hamachiʼyi yapılandırmalısınız" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "_Yapılandır" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Bilgi" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "_Ada Göre Sırala" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "_Duruma Göre Sırala" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Çevrim Dışı Üyeler" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "_Tercihler" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Yardım" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "Haguichi _Hakkında" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "Çı_k" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Yeniden Bağlan" #: src/controller.vala:283 msgid "No internet connection" msgstr "İnternet bağlantısı yok" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Oturum açılıyor" #: src/controller.vala:348 msgid "Error connecting" msgstr "Bağlanırken hata oluştu" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Hamachi oturumu açılamadı" #: src/controller.vala:459 msgid "Updating" msgstr "Güncelleniyor" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "Bağlandı" #: src/controller.vala:730 msgid "Member Joined" msgstr "Üye Katıldı" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0}, {1} ağına katıldı" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0}, {1} ve {2} başka ağa katıldı" msgstr[1] "{0}, {1} ve {2} başka ağlara katıldı" #: src/controller.vala:760 msgid "Member Left" msgstr "Üye Ayrıldı" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0}, {1} ağından ayrıldı" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0}, {1} ve {2} başka ağdan ayrıldı" msgstr[1] "{0}, {1} ve {2} başka ağlardan ayrıldı" #: src/controller.vala:786 msgid "Member Online" msgstr "Üye Çevrim İçi" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0}, {1} ağında çevrim içi oldu" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0}, {1} ve {2} başka ağda çevrim içi oldu" msgstr[1] "{0}, {1} ve {2} başka ağlarda çevrim içi oldu" #: src/controller.vala:812 msgid "Member Offline" msgstr "Üye Çevrim Dışı" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0}, {1} ağında çevrim dışı oldu" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0}, {1} ve {2} başka ağda çevrim dışı oldu" msgstr[1] "{0}, {1} ve {2} başka ağlarda çevrim dışı oldu" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Komutu Düzenle" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Komut Ekle" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Ek isteği gönderildi" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Hesap bulunamadı" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Ağa Katıl" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Ağ Oluştur" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "_Katıl" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "O_luştur" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Katılma isteği gönderildi" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Ağ bulunamadı" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Geçersiz parola" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Ağ dolu" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Ağ kilitli" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Zaten bu ağa katılındı" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Ağ kimliği zaten alınmış" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Bilinmiyor" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Anonim" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Parola değişti" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Yedek kaydediliyor…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Yedek kaydedildi" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Yedek kaydedilemedi" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Yedek geri yükleniyor…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Yedek geri yüklendi" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Yedek geri yüklenemedi" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Arşiv beklenen dosyaları içermiyor" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "Bağlanıyor" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Bağlantı Kesildi" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "Haguichiʼyi _Göster" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Bağlantıyı Kes" #: src/indicator.vala:104 msgid "C_onnect" msgstr "B_ağlan" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "”{0}” üyesini “{1}” ağından atmak istediğinize emin misiniz?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "" "Kabul edilirlerse, atılan üyeler ağa başka bir zamanda tekrar " "bağlanabilirler." #: src/network.vala:148 msgid "You" msgstr "Siz" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "“{0}” ağından ayrılmak istediğinize emin misiniz?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Kabul edilirseniz, ağa başka bir zamanda tekrar bağlanabilirsiniz." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "”{0}” ağını silmek istedeğinizden emin misiniz?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Eğer bir ağı silerseniz tamamen kaybedilir." #: src/preferences.vala:107 msgid "Not present" msgstr "Mevcut değil" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Tüm desteklenen arşivler" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Yedek Al" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Yedekten Geri Yükle" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "Ge_ri Yükle" #: src/preferences.vala:372 msgid "Never" msgstr "Asla" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S saniye" msgstr[1] "%S saniye" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S dakika" msgstr[1] "%S dakika" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Kullanılamıyor" #: src/sidebar.vala:192 msgid "pending" msgstr "beklemede" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Eklenmemiş" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} çevrim içi, {1} toplam" #: src/status.vala:35 msgid "Offline" msgstr "Çevrim dışı" #: src/status.vala:39 msgid "Online" msgstr "Çevirim içi" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Aktarılan" #: src/status.vala:48 msgid "Unreachable" msgstr "Erişilemiyor" #: src/status.vala:52 msgid "Awaiting approval" msgstr "Onay bekliyor" #: src/status.vala:56 msgid "Unknown error" msgstr "Bilinmeyen hata" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "İletişim kuralı uyumsuz" #: src/status.vala:62 msgid "Conflicting address" msgstr "Çakışan adres" #: src/status.vala:73 msgid "Direct" msgstr "Doğrudan" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Öntanımlı komutları geri yüklemek ister misiniz?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Tüm özelleştirmeler kaybolacak." #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "“%s” komutu kaldırıldı" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Geri Al" #: src/window.vala:198 msgid "Configuring" msgstr "Yapılandırılıyor" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Aytunç Yeni https://launchpad.net/~aytuncyeni\n" "Kudret Emre https://launchpad.net/~kudretemre\n" "Sabri Ünal " #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Panoya kopyalandı" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "{0} saniye içinde yeniden bağlanacak" msgstr[1] "{0} saniye içinde yeniden bağlanacak" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi Kurulmamış" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Hamachi Sürümü %s Eski" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi, bağlantıyı izleyebilmek ve bildirimler gönderebilmek için " "penceresi kapatıldığında da çalışmaya devam edecek." ================================================ FILE: po/uk.po ================================================ # Ukrainian translation for haguichi # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the haguichi package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: haguichi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-12 18:53+0200\n" "PO-Revision-Date: 2024-06-15 18:01+0000\n" "Last-Translator: Fedik \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2024-06-15 19:40+0000\n" "X-Generator: Launchpad (build bbfa2351d9d6a9ddfe262109428f7bf5516e65d1)\n" #. Name used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:4 msgid "Haguichi" msgstr "Haguichi" #. Generic name used for display in some application launchers like Kickoff in KDE Plasma. #: data/com.github.ztefn.haguichi.desktop.in.in:6 msgid "Hamachi Network Manager" msgstr "Hamachi менеджер мереж" #. Description used for display in application launchers. #: data/com.github.ztefn.haguichi.desktop.in.in:10 #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:7 msgid "Manage your Hamachi networks" msgstr "Керування мережами Hamachi" #. Keywords used for search in application launchers and software centers. #: data/com.github.ztefn.haguichi.desktop.in.in:14 msgid "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" msgstr "LogMeIn Hamachi;VPN;LAN;Network;Internet;P2P;Peer;Client;GUI;Frontend;" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:9 msgid "" "Haguichi makes it a breeze to join, create and administer Hamachi networks." msgstr "" "Haguichi допомагає з легкістю приєднуватись, створювати, та адмініструвати " "мережі Hamachi." #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:10 msgid "Features:" msgstr "Можливості:" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:12 msgid "Searchable, sortable and collapsible network list" msgstr "Список мереж з можливістю пошуку, сортування, складання" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:13 msgid "Sidebar for easy access to details and actions" msgstr "Бічна панель для швидкого доступу до деталей та дій" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:14 msgid "Indicator support for quick access to primary actions" msgstr "Підтримка індикаторів для швидкого доступу до основних дій" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:15 msgid "Desktop notifications to stay up to date of network events" msgstr "Сповіщення на робочому столі, щоб бути в курсі подій у мережі" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:16 msgid "Commands that can be completely customized" msgstr "Команди які можна налаштовувати під себе" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:17 msgid "Backup and restore of your Hamachi configuration folder" msgstr "Резервне копіювання та відновлення каталогу з налаштуваннями Hamachi" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:19 msgid "" "Please note: Requires installation of Hamachi on the system in order to " "use." msgstr "" "Зверніть увагу: Для використання, Hamachi має бути встановленно" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:23 msgid "View your network list and client information" msgstr "Переглянути список мереж та інформацію про клієнта" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:27 msgid "View selected member details" msgstr "Переглянути інформацію про обраного учасника" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:31 msgid "View selected network details" msgstr "Переглянути інформацію про обрану мережу" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:35 msgid "Search your network list" msgstr "Пошук у списку мереж" #: data/com.github.ztefn.haguichi.metainfo.xml.in.in:39 msgid "Join or create networks" msgstr "Приєднатися або створити мережу" #: data/ui/dialogs/add-edit-command.ui:30 msgid "Label" msgstr "Мітка" #: data/ui/dialogs/add-edit-command.ui:37 msgid "IPv4 Command" msgstr "IPv4 команда" #: data/ui/dialogs/add-edit-command.ui:44 msgid "IPv6 Command" msgstr "IPv6 команда" #: data/ui/dialogs/add-edit-command.ui:51 msgid "Priority" msgstr "Пріоритет" #: data/ui/dialogs/add-edit-command.ui:58 msgid "_Save" msgstr "З_берегти" #: data/ui/dialogs/attach.ui:6 msgid "Attach to Account" msgstr "Приєднати до облікового запису" #: data/ui/dialogs/attach.ui:31 data/ui/sidebar.ui:23 src/sidebar.vala:192 msgid "Account" msgstr "Обліковий запис" #: data/ui/dialogs/attach.ui:38 msgid "Include all networks created by this client" msgstr "Включно всі мережі створені цим клієнтом" #: data/ui/dialogs/attach.ui:61 msgid "_Attach" msgstr "_Приєднати" #: data/ui/dialogs/change-access.ui:6 data/ui/sidebar.ui:135 msgid "Change Access" msgstr "Зімнити доступ" #: data/ui/dialogs/change-access.ui:31 msgid "Locked" msgstr "Блоковано" #: data/ui/dialogs/change-access.ui:32 msgid "Do not accept new network members" msgstr "Не приймати нових учасників мережі" #: data/ui/dialogs/change-access.ui:38 msgid "Approval" msgstr "Підтверджено" #: data/ui/dialogs/change-access.ui:42 msgid "Automatically" msgstr "Автоматично" #: data/ui/dialogs/change-access.ui:43 msgid "Manually" msgstr "Власноруч" #: data/ui/dialogs/change-access.ui:53 data/ui/dialogs/change-password.ui:39 msgid "C_hange" msgstr "_Змінити" #: data/ui/dialogs/change-password.ui:6 data/ui/sidebar.ui:119 msgid "Change Password" msgstr "Змінити пароль" #: data/ui/dialogs/change-password.ui:31 msgid "New Password" msgstr "Новий пароль" #: data/ui/dialogs/join-create-network.ui:30 data/ui/sidebar.ui:110 msgid "Network ID" msgstr "ІД мережі" #: data/ui/dialogs/join-create-network.ui:37 msgid "Password" msgstr "Пароль" #: data/ui/menus/member-menu.ui:10 data/ui/sidebar.ui:229 src/bubble.vala:58 msgid "_Approve" msgstr "_Підтвердити" #: data/ui/menus/member-menu.ui:15 data/ui/sidebar.ui:242 src/bubble.vala:59 msgid "_Reject" msgstr "_Відхилити" #: data/ui/menus/member-menu.ui:22 msgid "Copy IPv_4 Address" msgstr "Копіювати IPv_4 адресу" #: data/ui/menus/member-menu.ui:27 msgid "Copy IPv_6 Address" msgstr "Копіювати IPv_6 адресу" #: data/ui/menus/member-menu.ui:32 msgid "_Copy Client ID" msgstr "_Копіювати ІД клієнта" #. This action removes the selected member from the network. #: data/ui/menus/member-menu.ui:38 data/ui/sidebar.ui:255 src/member.vala:234 msgid "_Evict" msgstr "_Виселити" #: data/ui/menus/member-menu.ui:46 data/ui/menus/network-menu.ui:54 msgid "_Details" msgstr "_Подробиці" #: data/ui/menus/network-list-menu.ui:10 data/ui/window.ui:570 #: src/indicator.vala:112 msgid "_Join Network…" msgstr "_Приєднати Мережу…" #: data/ui/menus/network-list-menu.ui:14 data/ui/window.ui:574 #: src/indicator.vala:117 msgid "_Create Network…" msgstr "_Створити Мережу…" #: data/ui/menus/network-menu.ui:10 data/ui/sidebar.ui:153 msgid "_Go Online" msgstr "_Статус в мережі" #: data/ui/menus/network-menu.ui:16 data/ui/sidebar.ui:166 msgid "_Go Offline" msgstr "_Статус поза мережею" #: data/ui/menus/network-menu.ui:22 src/network.vala:348 msgid "_Leave" msgstr "_Залишити" #: data/ui/menus/network-menu.ui:28 src/network.vala:377 msgid "_Delete" msgstr "В_идалити" #: data/ui/menus/network-menu.ui:36 msgid "Change _Access…" msgstr "Зімнити _доступ…" #: data/ui/menus/network-menu.ui:41 msgid "Change _Password…" msgstr "Змінити _Пароль…" #: data/ui/menus/network-menu.ui:48 msgid "_Copy Network ID" msgstr "_Копіювати ІД Мережі" #: data/ui/preferences.ui:7 data/ui/shortcuts-dialog.ui:6 #: data/ui/shortcuts-window.ui:10 msgid "General" msgstr "Загальне" #: data/ui/preferences.ui:13 msgid "Configuration" msgstr "Налаштування" #: data/ui/preferences.ui:20 msgid "Backup" msgstr "Резервування" #: data/ui/preferences.ui:31 msgid "Open Folder" msgstr "Відкрити теку" #: data/ui/preferences.ui:45 data/ui/widgets/command-entry-row.ui:42 msgid "Nickname" msgstr "Псевдонім" #: data/ui/preferences.ui:52 msgid "_Protocol" msgstr "_Протокол" #: data/ui/preferences.ui:57 msgid "Both IPv4 and IPv6" msgstr "Обидві, IPv4 та IPv6" #: data/ui/preferences.ui:58 msgid "IPv4 only" msgstr "лише IPv4" #: data/ui/preferences.ui:59 msgid "IPv6 only" msgstr "лише IPv6" #: data/ui/preferences.ui:69 msgid "Behavior" msgstr "Поведінка" #: data/ui/preferences.ui:72 msgid "_Network list update interval" msgstr "_Інтервал оновлення списку мереж" #: data/ui/preferences.ui:78 msgid "_Connect automatically on startup" msgstr "П_риєднуватись автоматично, при старті" #: data/ui/preferences.ui:84 msgid "_Reconnect automatically when the connection is lost" msgstr "П_ере-підключатись автоматично, коли з'єднання втрачено" #: data/ui/preferences.ui:90 msgid "_Disconnect on quit" msgstr "_Відключатись при виході" #: data/ui/preferences.ui:100 data/ui/shortcuts-dialog.ui:111 #: data/ui/sidebar.ui:192 msgid "Commands" msgstr "Команди" #. In this context meaning "work environment". #: data/ui/preferences.ui:108 msgid "Desktop" msgstr "Стільниця" #: data/ui/preferences.ui:111 msgid "Appearance" msgstr "Вигляд" #: data/ui/preferences.ui:114 msgid "_Style" msgstr "_Стиль" #: data/ui/preferences.ui:131 msgid "Follow System" msgstr "Так само як в системі" #: data/ui/preferences.ui:142 msgid "Light" msgstr "Світлий" #: data/ui/preferences.ui:154 msgid "Dark" msgstr "Темний" #: data/ui/preferences.ui:164 msgid "Show _indicator" msgstr "Показати _індикатор" #: data/ui/preferences.ui:173 msgid "Notifications" msgstr "Сповіщення" #: data/ui/preferences.ui:176 msgid "Display notification when the connection is l_ost" msgstr "Показувати повідомлення про втрату _з'єднання" #: data/ui/preferences.ui:182 msgid "Display notification when a member _joins" msgstr "Показувати повідомлення коли учасник _приєднується" #: data/ui/preferences.ui:188 msgid "Display notification when a member _leaves" msgstr "Показувати повідомлення коли учасник _від'єднується" #: data/ui/preferences.ui:194 msgid "Display notification when a member comes o_nline" msgstr "Показувати повідомлення коли користувач стає _доступним" #: data/ui/preferences.ui:200 msgid "Display notification when a member goes o_ffline" msgstr "Показувати повідомлення коли користувач стає _недоступним" #: data/ui/preferences.ui:212 msgid "_Save a Backup…" msgstr "_Зберегти резервну копію…" #: data/ui/preferences.ui:216 msgid "_Restore from Backup…" msgstr "_Відновити з резервної копії…" #: data/ui/shortcuts-dialog.ui:10 data/ui/shortcuts-window.ui:14 msgid "Show help" msgstr "Показати довідку" #: data/ui/shortcuts-dialog.ui:16 data/ui/shortcuts-window.ui:20 msgid "Show client information" msgstr "Показати дані клієнта" #: data/ui/shortcuts-dialog.ui:22 data/ui/shortcuts-window.ui:26 msgid "Open menu" msgstr "Відкрити меню" #: data/ui/shortcuts-dialog.ui:28 data/ui/shortcuts-window.ui:44 msgid "Preferences" msgstr "Налаштування" #: data/ui/shortcuts-dialog.ui:34 data/ui/shortcuts-window.ui:50 msgid "Keyboard shortcuts" msgstr "Клавіатурні скорочення" #: data/ui/shortcuts-dialog.ui:40 data/ui/shortcuts-window.ui:56 msgid "Quit" msgstr "Вийти" #: data/ui/shortcuts-dialog.ui:47 data/ui/sidebar.ui:223 msgid "Connection" msgstr "З'єднання" #: data/ui/shortcuts-dialog.ui:51 data/ui/shortcuts-window.ui:32 #: data/ui/window.ui:212 msgid "Connect" msgstr "Підключити" #: data/ui/shortcuts-dialog.ui:57 data/ui/shortcuts-window.ui:38 #: data/ui/window.ui:226 msgid "Disconnect" msgstr "Відключити" #: data/ui/shortcuts-dialog.ui:64 data/ui/shortcuts-window.ui:63 #: data/ui/window.ui:496 msgid "Network List" msgstr "Список мереж" #: data/ui/shortcuts-dialog.ui:68 data/ui/shortcuts-window.ui:67 msgid "Join a network" msgstr "Приєднатись до мережі" #: data/ui/shortcuts-dialog.ui:74 data/ui/shortcuts-window.ui:73 msgid "Create a network" msgstr "Створити мережу" #: data/ui/shortcuts-dialog.ui:80 data/ui/shortcuts-window.ui:79 #: data/ui/window.ui:202 data/ui/window.ui:287 msgid "Refresh" msgstr "Оновити" #: data/ui/shortcuts-dialog.ui:86 data/ui/shortcuts-window.ui:85 #: data/ui/window.ui:237 msgid "Search" msgstr "Пошук" #: data/ui/shortcuts-dialog.ui:92 data/ui/shortcuts-window.ui:91 msgid "Show/hide offline members" msgstr "Показати/приховати неактивних користувачів" #: data/ui/shortcuts-dialog.ui:98 data/ui/shortcuts-window.ui:97 msgid "Expand all networks" msgstr "Розгорнути всі мережі" #: data/ui/shortcuts-dialog.ui:104 data/ui/shortcuts-window.ui:103 msgid "Collapse all networks" msgstr "Згорнути всі мережі" #: data/ui/shortcuts-dialog.ui:115 data/ui/shortcuts-window.ui:109 msgid "Execute command" msgstr "Виконати команду" #: data/ui/sidebar.ui:19 data/ui/window.ui:487 src/sidebar.vala:272 msgid "Information" msgstr "Інформація" #: data/ui/sidebar.ui:29 msgid "Attach" msgstr "Приєднати" #: data/ui/sidebar.ui:41 msgid "Cancel" msgstr "Скасувати" #: data/ui/sidebar.ui:53 data/ui/sidebar.ui:203 #: data/ui/widgets/command-entry-row.ui:48 msgid "Client ID" msgstr "ІД клієнта" #: data/ui/sidebar.ui:58 data/ui/sidebar.ui:208 msgid "IPv4 Address" msgstr "Адреса IPv4" #: data/ui/sidebar.ui:63 data/ui/sidebar.ui:213 msgid "IPv6 Address" msgstr "Адреса IPv6" #: data/ui/sidebar.ui:68 msgid "Hamachi Version" msgstr "Версія Hamachi" #: data/ui/sidebar.ui:82 data/ui/sidebar.ui:187 msgid "Status" msgstr "Статус" #: data/ui/sidebar.ui:87 msgid "Leave Network" msgstr "Покинути мережу" #: data/ui/sidebar.ui:98 msgid "Delete Network" msgstr "Вилучити мережу" #: data/ui/sidebar.ui:115 msgid "Owner" msgstr "Власник" #: data/ui/sidebar.ui:131 msgid "Members" msgstr "Учасники" #: data/ui/sidebar.ui:147 msgid "Capacity" msgstr "Місткість" #: data/ui/sidebar.ui:218 msgid "Tunnel" msgstr "Тунель" #: data/ui/widgets/command-entry-row.ui:7 #: data/ui/widgets/command-entry-row.ui:15 msgid "Command Variables" msgstr "Змінні для команди" #: data/ui/widgets/command-entry-row.ui:36 msgid "Address" msgstr "Адреса" #: data/ui/widgets/command-entry-row.ui:63 msgid "Terminal Emulator" msgstr "Емулятор терміналу" #: data/ui/widgets/command-entry-row.ui:69 msgid "File Manager" msgstr "Менеджер файлів" #: data/ui/widgets/command-entry-row.ui:75 msgid "Remote Desktop Viewer" msgstr "Перегляд віддаленого робочого столу" #: data/ui/widgets/commands-editor.ui:12 msgid "_Restore Default" msgstr "_Відновити типові значення" #: data/ui/widgets/commands-editor.ui:35 msgid "_Add Command" msgstr "_Додати команду" #: data/ui/widgets/commands-editor.ui:56 msgid "_Browse Shares" msgstr "_Перегланути спільне" #: data/ui/widgets/commands-editor.ui:59 msgid "_View Remote Desktop" msgstr "_Перегляд Віддаленої Стільниці" #: data/ui/widgets/commands-editor.ui:62 msgid "_Ping" msgstr "_Пінг" #: data/ui/widgets/commands-editor-row.ui:17 msgid "Default Action" msgstr "Типова дія" #: data/ui/widgets/commands-editor-row.ui:34 msgid "Options" msgstr "Опції" #: data/ui/widgets/commands-editor-row.ui:61 msgid "_Edit…" msgstr "_Змінити…" #: data/ui/widgets/commands-editor-row.ui:65 msgid "Du_plicate…" msgstr "_Дублювати…" #: data/ui/widgets/commands-editor-row.ui:71 msgid "Move _Up" msgstr "Перемістити в_гору" #: data/ui/widgets/commands-editor-row.ui:75 msgid "Move _Down" msgstr "Перемістити в_низ" #: data/ui/widgets/commands-editor-row.ui:81 msgid "_Set As Default Action" msgstr "В_становити як типова дія" #: data/ui/widgets/commands-editor-row.ui:87 msgid "_Remove" msgstr "_Вилучити" #: data/ui/widgets/sidebar-row.ui:9 msgid "Copy" msgstr "Копіювати" #: data/ui/window.ui:195 src/window.vala:542 msgid "Initializing" msgstr "Ініціалізація" #: data/ui/window.ui:247 msgid "Main Menu" msgstr "Головне меню" #: data/ui/window.ui:265 msgid "Search networks and members" msgstr "Пошук мереж і учасників" #: data/ui/window.ui:299 msgid "Add Network" msgstr "Додати мережу" #: data/ui/window.ui:340 src/controller.vala:711 msgid "Hamachi Lost Connection" msgstr "Hamachi втратив підключення" #: data/ui/window.ui:347 src/dialogs/confirm.vala:25 msgid "_Cancel" msgstr "_Скасувати" #: data/ui/window.ui:386 msgid "You Are Connected!" msgstr "Ви під’єднані!" #: data/ui/window.ui:387 msgid "Use the + button to add a network" msgstr "Використовуйте кнопку +, щоб додати мережу" #: data/ui/window.ui:408 msgid "No Results Found" msgstr "Нічого не знайдено" #: data/ui/window.ui:409 msgid "Try a different search" msgstr "Спробуйте інші критерії пошуку" #: data/ui/window.ui:426 msgid "Please download Hamachi and follow the installation instructions" msgstr "Будь ласка, завантажте Hamachi та слідуйте інструкції зі встановлення" #: data/ui/window.ui:432 msgid "_Download" msgstr "_Звантажити" #: data/ui/window.ui:451 msgid "Hamachi Is Not Configured" msgstr "Hamachi не налаштовано" #: data/ui/window.ui:452 msgid "You need to configure Hamachi before you can connect" msgstr "Спершу потрібно налаштувати Hamachi" #: data/ui/window.ui:458 msgid "C_onfigure" msgstr "На_лаштувати" #: data/ui/window.ui:516 src/indicator.vala:124 msgid "_Information" msgstr "_Інформація" #: data/ui/window.ui:523 msgid "Sort by _Name" msgstr "Впорядкувати за _назвою" #: data/ui/window.ui:529 msgid "Sort by _Status" msgstr "Впорядкувати за _статусом" #: data/ui/window.ui:537 msgid "Show _Offline Members" msgstr "_Показати учасників, що поза мережею" #: data/ui/window.ui:544 msgid "_Preferences" msgstr "П_араметри" #: data/ui/window.ui:548 msgid "_Keyboard Shortcuts" msgstr "_Клавіатурні скорочення" #: data/ui/window.ui:552 msgid "_Help" msgstr "_Довідка" #: data/ui/window.ui:556 msgid "_About Haguichi" msgstr "_Про Haguichi" #: data/ui/window.ui:562 src/indicator.vala:132 msgid "_Quit" msgstr "Ви_йти" #: src/bubble.vala:44 msgid "Reconnect" msgstr "Перез'єднатись" #: src/controller.vala:283 msgid "No internet connection" msgstr "Відсутнє під'єднання до Інтернету" #: src/controller.vala:288 src/controller.vala:321 msgid "Logging in" msgstr "Вхід" #: src/controller.vala:348 msgid "Error connecting" msgstr "Помилка з'єднання" #: src/controller.vala:378 msgid "Hamachi login failed" msgstr "Помилка входу Hamachi" #: src/controller.vala:459 msgid "Updating" msgstr "Оновлення" #: src/controller.vala:622 src/indicator.vala:85 src/window.vala:546 msgid "Connected" msgstr "З'єднано" #: src/controller.vala:730 msgid "Member Joined" msgstr "Користувач підключився" #. Notification bubble. For example: "T-800 joined the network Skynet". #: src/controller.vala:732 msgid "{0} joined the network {1}" msgstr "{0} підключився до мережі {1}" #. Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". #: src/controller.vala:734 msgid "{0} joined the network {1} and {2} other network" msgid_plural "{0} joined the network {1} and {2} other networks" msgstr[0] "{0} під’єднався до мережі {1} та до мережі {2}" msgstr[1] "{0} під’єднався до мережі {1} та до інших мереж {2}" msgstr[2] "{0} під’єднався до мережі {1} та до інших мереж {2}" #: src/controller.vala:760 msgid "Member Left" msgstr "Користувач покинув мережу" #. Notification bubble. For example: "T-800 left the network Skynet". #: src/controller.vala:762 msgid "{0} left the network {1}" msgstr "{0} покинув мережу {1}" #. Notification bubble. For example: "T-800 left the network Skynet and 1 other network". #: src/controller.vala:764 msgid "{0} left the network {1} and {2} other network" msgid_plural "{0} left the network {1} and {2} other networks" msgstr[0] "{0} від’єднався від мережі {1} та від мережі {2}" msgstr[1] "{0} від’єднався від мережі {1} та від інших мереж {2}" msgstr[2] "{0} від’єднався від мережі {1} та від інших мереж {2}" #: src/controller.vala:786 msgid "Member Online" msgstr "Учасники в мережі" #. Notification bubble. For example: "T-800 came online in the network Skynet". #: src/controller.vala:788 msgid "{0} came online in the network {1}" msgstr "{0} з’єявився в мережі {1}" #. Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". #: src/controller.vala:790 msgid "{0} came online in the network {1} and {2} other network" msgid_plural "{0} came online in the network {1} and {2} other networks" msgstr[0] "{0} з’явився в мережі {1} та в мережі {2}" msgstr[1] "{0} з’явився в мережі {1} та в {2} інших мережах" msgstr[2] "{0} з’явився в мережі {1} та в {2} інших мережах" #: src/controller.vala:812 msgid "Member Offline" msgstr "Користувач відключився" #. Notification bubble. For example: "T-800 went offline in the network Skynet". #: src/controller.vala:814 msgid "{0} went offline in the network {1}" msgstr "{0} покинув мережу {1}" #. Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". #: src/controller.vala:816 msgid "{0} went offline in the network {1} and {2} other network" msgid_plural "{0} went offline in the network {1} and {2} other networks" msgstr[0] "{0} покинув мережу {1} та в мережу {2}" msgstr[1] "{0} покинув мережу {1} та інші мережі {2}" msgstr[2] "{0} покинув мережу {1} та інші мережі {2}" #: src/dialogs/add-edit-command.vala:77 msgid "Edit Command" msgstr "Змінити команду" #: src/dialogs/add-edit-command.vala:77 msgid "Add Command" msgstr "Додати команду" #: src/dialogs/attach.vala:55 msgid "Attach request sent" msgstr "Запит на додавання надіслано" #: src/dialogs/attach.vala:64 msgid "Account not found" msgstr "Обліковий запис не знайдено" #: src/dialogs/join-create-network.vala:33 msgid "Join Network" msgstr "Приєднати мережу" #: src/dialogs/join-create-network.vala:33 msgid "Create Network" msgstr "Створити мережу" #: src/dialogs/join-create-network.vala:35 msgid "_Join" msgstr "При_єднати" #: src/dialogs/join-create-network.vala:35 msgid "C_reate" msgstr "С_творити" #: src/dialogs/join-create-network.vala:73 msgid "Join request sent" msgstr "Запит на приєднання надіслано" #: src/dialogs/join-create-network.vala:98 msgid "Network not found" msgstr "Мережу не знайдено" #: src/dialogs/join-create-network.vala:102 msgid "Invalid password" msgstr "Хибний пароль" #: src/dialogs/join-create-network.vala:104 msgid "Network is full" msgstr "Мережа немає вільних місць" #: src/dialogs/join-create-network.vala:106 msgid "Network is locked" msgstr "Мережа заблокована" #: src/dialogs/join-create-network.vala:109 msgid "Network already joined" msgstr "Мережа вже приєднана" #: src/dialogs/join-create-network.vala:171 msgid "Network ID is already taken" msgstr "Ідентифікатор мережі вже використовуються" #: src/hamachi.vala:550 src/member.vala:69 src/network.vala:158 msgid "Unknown" msgstr "Невідомо" #: src/hamachi.vala:578 src/window.vala:467 msgid "Anonymous" msgstr "Анонімний" #: src/hamachi.vala:699 src/hamachi.vala:702 msgid "Password changed" msgstr "Пароль змінено" #: src/hamachi.vala:723 msgid "Saving backup…" msgstr "Збереження резервної копії…" #: src/hamachi.vala:740 msgid "Backup saved" msgstr "Резервну копію збережено" #: src/hamachi.vala:740 msgid "Failed to save backup" msgstr "Помилка збереження резервної копії" #: src/hamachi.vala:754 msgid "Restoring backup…" msgstr "Відновлення з резервної копії…" #: src/hamachi.vala:795 msgid "Backup restored" msgstr "Резервну копію відновлено" #: src/hamachi.vala:795 msgid "Failed to restore backup" msgstr "Помилка відновлення з резервної копії" #: src/hamachi.vala:802 msgid "Archive does not contain expected files" msgstr "Архів не містить очікуваних файлів" #: src/indicator.vala:85 src/window.vala:544 msgid "Connecting" msgstr "З’єднання" #: src/indicator.vala:85 src/window.vala:548 msgid "Disconnected" msgstr "Роз’єднано" #: src/indicator.vala:93 msgid "_Show Haguichi" msgstr "_Показати Haguichi" #: src/indicator.vala:104 msgid "_Disconnect" msgstr "_Відключити" #: src/indicator.vala:104 msgid "C_onnect" msgstr "П_ідключити" #: src/member.vala:231 msgid "Are you sure you want to evict member “{0}” from network “{1}”?" msgstr "Впевнені, що бажаєте виселити користувача”{0}” з мережі “{1}”?" #: src/member.vala:232 msgid "If admitted, evicted members can rejoin the network at any later time." msgstr "Якщо обрано, то користувач може приєднатись до мережі пізніше знову." #: src/network.vala:148 msgid "You" msgstr "Ви" #: src/network.vala:345 msgid "Are you sure you want to leave the network “{0}”?" msgstr "Впевнені, що бажаєте покинути мережу “{0}”?" #: src/network.vala:346 msgid "If admitted, you can rejoin the network at any later time." msgstr "Якщо обрано, то ви можете приєднатись до мережі пізніше знову." #: src/network.vala:374 msgid "Are you sure you want to delete the network “{0}”?" msgstr "Впевнені, що бажаєте вилучити мережу “{0}”?" #: src/network.vala:375 msgid "If you delete a network, it will be permanently lost." msgstr "Після вилучення, мережу буде втрачено." #: src/preferences.vala:107 msgid "Not present" msgstr "Відсутній" #: src/preferences.vala:285 msgid "All supported archives" msgstr "Усі підтримувані архіви" #: src/preferences.vala:305 msgid "Save a Backup" msgstr "Зберегти резервну копію" #: src/preferences.vala:327 msgid "Restore from Backup" msgstr "Відновити з резервної копії" #: src/preferences.vala:328 src/widgets/commands-editor.vala:62 msgid "_Restore" msgstr "_Відновити" #: src/preferences.vala:372 msgid "Never" msgstr "Ніколи" #: src/preferences.vala:395 #, c-format msgid "%S second" msgid_plural "%S seconds" msgstr[0] "%S секунда" msgstr[1] "%S секунди" msgstr[2] "%S секунд" #: src/preferences.vala:399 #, c-format msgid "%S minute" msgid_plural "%S minutes" msgstr[0] "%S хвилина" msgstr[1] "%S хвилини" msgstr[2] "%S хвилин" #: src/sidebar.vala:174 msgid "Unavailable" msgstr "Недоступно" #: src/sidebar.vala:192 msgid "pending" msgstr "в очікуванні" #: src/sidebar.vala:193 msgid "Not attached" msgstr "Не під'єднано" #: src/sidebar.vala:211 msgid "{0} online, {1} total" msgstr "{0} в мережі, {1} загалом" #: src/status.vala:35 msgid "Offline" msgstr "Поза мережею" #: src/status.vala:39 msgid "Online" msgstr "В мережі" #: src/status.vala:41 src/status.vala:75 src/status.vala:85 msgid "Relayed" msgstr "Через ретранслятор" #: src/status.vala:48 msgid "Unreachable" msgstr "Недосяжний" #: src/status.vala:52 msgid "Awaiting approval" msgstr "В очікуванні затвердження" #: src/status.vala:56 msgid "Unknown error" msgstr "Невідома помилка" #: src/status.vala:60 msgid "Protocol mismatch" msgstr "Протокол не збігається" #: src/status.vala:62 msgid "Conflicting address" msgstr "Конфліктуючі адреси" #: src/status.vala:73 msgid "Direct" msgstr "Безпосередній" #: src/widgets/commands-editor.vala:60 msgid "Restore default commands?" msgstr "Відновити типові команди?" #: src/widgets/commands-editor.vala:61 msgid "All customizations will be lost." msgstr "Всі налаштування буде втрачено" #: src/widgets/commands-editor.vala:103 #, c-format msgid "Removed command “%s”" msgstr "Вилучено команду «%s»" #: src/widgets/commands-editor.vala:104 msgid "_Undo" msgstr "_Скасувати" #: src/window.vala:198 msgid "Configuring" msgstr "Налаштування" #. Translator credits. Put one translator per line, in the form of "NAME URL". #: src/window.vala:363 msgid "translator-credits" msgstr "" "Aleksei Motsik https://launchpad.net/~naghual80\n" "Fedir Zinchuk https://launchpad.net/~fedikw" #: src/window.vala:444 msgid "Copied to clipboard" msgstr "Скопійовано до буфера обміну" #: src/window.vala:479 msgid "Reconnecting in {0} second" msgid_plural "Reconnecting in {0} seconds" msgstr[0] "Перепід’єднання через {0} секунду" msgstr[1] "Перепід’єднання через {0} секунди" msgstr[2] "Перепід’єднання через {0} секунд" #: src/window.vala:510 msgid "Hamachi Is Not Installed" msgstr "Hamachi не встановлено" #: src/window.vala:512 #, c-format msgid "Hamachi Version %s Is Obsolete" msgstr "Версія %s Hamachi є застарілою" #: src/window.vala:611 msgid "" "Haguichi will continue to run when its window is closed so that it can " "monitor the connection and send notifications." msgstr "" "Haguichi продовжить працювати у фоновому режимі, коли вікно закрито, щоб " "мати змогу моніторити з’єднання та надсилати сповіщення." ================================================ FILE: src/application.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ using Config; namespace Haguichi { public Application app; public Window win; public Indicator indicator; public static Connection connection; public static Session session; public static Inhibitor inhibitor; public static bool run_in_background; public static bool demo_mode; public static string demo_list_path; public static string current_desktop; public static ThreadPool member_threads; public static ThreadPool network_threads; private static uint registration_id; public class Application : Adw.Application { public Application () { Object (application_id: APP_ID, flags: ApplicationFlags.DEFAULT_FLAGS); Intl.bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); Intl.bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); Intl.textdomain (GETTEXT_PACKAGE); } construct { add_main_option_entries ({ { "version", 'v', 0, OptionArg.NONE, null, "Show version number", null }, { "debug", 'd', 0, OptionArg.NONE, null, "Print debug messages", null }, { "background", 'b', 0, OptionArg.NONE, out run_in_background, "Run in background", null }, { "demo", 0, 0, OptionArg.NONE, out demo_mode, "Run in demo mode", null }, { "list", 0, 0, OptionArg.STRING, out demo_list_path, "Use a text file as list in demo mode", "FILE" }, { null } }); ActionEntry[] action_entries = { { "toggle-window", toggle_window_action, }, { "connect", connect_action }, { "disconnect", disconnect_action }, { "join-network", join_network_action }, { "create-network", create_network_action }, { "approve-reject", approve_reject_action, "as" }, { "info", info_action }, { "quit", quit_action }, }; add_action_entries (action_entries, this); } public static int main (string[] args) { if ("-v" in args || "--version" in args) { stdout.printf ("%s %s\n", APP_NAME, VERSION); return 0; } if ("-d" in args || "--debug" in args) { Environment.set_variable ("G_MESSAGES_DEBUG", APP_NAME, true); } app = new Application (); #if FOR_ELEMENTARY Gtk.init (); Granite.init (); #endif return app.run (args); } public override void startup () { base.startup (); uint64 startup_moment = get_real_time (); debug ("Greetings, I am %s %s", APP_NAME, VERSION); debug ("running_under_flatpak: %s", Xdp.Portal.running_under_flatpak ().to_string ()); Command.spawn_wrap = Xdp.Portal.running_under_flatpak () ? "flatpak-spawn --host " : ""; current_desktop = Environment.get_variable ("XDG_CURRENT_DESKTOP"); debug ("current_desktop: %s", current_desktop); var gtk_settings = Gtk.Settings.get_default (); // Never show window icon inside the headerbar gtk_settings.gtk_decoration_layout = gtk_settings.gtk_decoration_layout.replace ("icon", ""); #if FOR_ELEMENTARY // Pin stylesheet and icon theme on elementary OS gtk_settings.set ("gtk-theme-name", "io.elementary.stylesheet.strawberry"); gtk_settings.set ("gtk-icon-theme-name", "elementary"); #endif connection = new Connection (); inhibitor = new Inhibitor (); try { member_threads = new ThreadPool.with_owned_data ((member) => { member.get_long_nick_thread (); }, 2, false); network_threads = new ThreadPool.with_owned_data ((network) => { network.determine_ownership_thread (); }, 2, false); } catch (ThreadError e) { critical ("threading: %s", e.message); } Controller.init (); debug ("startup: Completed startup in %s microseconds", (get_real_time () - startup_moment).to_string ()); } public override void activate () { base.activate (); if (win == null) { win = new Window (this); if (!run_in_background) { win.present (); win.set_focus (null); } } else { win.present (); } } public override bool dbus_register (DBusConnection connection, string object_path) throws Error { base.dbus_register (connection, object_path); session = new Session (); registration_id = connection.register_object ("/com/github/ztefn/haguichi", session); return true; } public override void dbus_unregister (DBusConnection connection, string object_path) { connection.unregister_object (registration_id); base.dbus_unregister (connection, object_path); } public void set_color_scheme (int scheme) { var color_scheme = scheme == 1 ? Adw.ColorScheme.FORCE_LIGHT : scheme == 2 ? Adw.ColorScheme.FORCE_DARK : Adw.ColorScheme.DEFAULT; debug ("set_color_scheme: setting color scheme to %s", color_scheme.to_string ()); style_manager.set_color_scheme (color_scheme); } public void toggle_window_action () { if (win.visible) { win.hide (); } else { win.present (); } } private void connect_action () { win.trigger_action ("connect"); } private void disconnect_action () { win.trigger_action ("disconnect"); } public void join_network_action () { win.present (); win.trigger_action ("join-network"); } public void create_network_action () { win.present (); win.trigger_action ("create-network"); } private void info_action () { win.present (); win.trigger_action ("info"); } private void quit_action () { win.trigger_action ("quit"); } private void approve_reject_action (SimpleAction action, Variant? param) { string[] args = param.get_strv (); // We expect at least three arguments (operation, client ID and one or more network IDs) if (args.length > 2) { var operation = args[0]; var client_id = args[1]; // Collect the network IDs string[] network_ids = {}; for (int i = 2; i < args.length; i++) { network_ids += args[i]; } debug ("approve_or_reject: Go %s join request for client %s in network(s) %s\n", operation, client_id, string.joinv (", ", network_ids)); // Approve or reject member only if we are still connected if (Controller.last_status >= 6) { // Iterate all supplied network IDs foreach (string network_id in network_ids) { // Find actual network that matches the ID foreach (Network network in connection.networks) { if (network.id == network_id) { // Find our member in the network foreach (Member member in network.members) { if (member.id == client_id) { // Check if member still requires approval if (member.status.status_int == 3) { // Finally execute the desired operation if (operation == "approve") { member.approve (); } else if (operation == "reject") { member.reject (); } } // Stop iteration of members break; } } // Stop iteration of networks break; } } } } else { debug ("approve_reject: Not connected"); } } else { warning ("approve_reject: Too few arguments, expected \"operation, client_id, network_id1, network_id2, ...\""); } } } } ================================================ FILE: src/bubble.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2024 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Bubble : Object { private Notification notification; public Bubble (string summary, string? body) { notification = new Notification (summary); if (body != null) { notification.set_body (body); } // On elementary OS set_icon is only used to set a badge icon, // the app icon itself is automatically set based on application ID // https://docs.elementary.io/develop/apis/notifications#badge-icons if (Haguichi.current_desktop != "Pantheon") { notification.set_icon (new ThemedIcon (Config.APP_ID)); } } public void show () { Haguichi.app.send_notification (null, notification); } public bool server_supports_actions () { // Unity desktop running NotifyOSD server doesn't support actions // https://wiki.ubuntu.com/NotifyOSD return Haguichi.current_desktop.has_prefix ("Unity") ? false : true; } public void add_reconnect_action () { if (server_supports_actions ()) { notification.add_button (_("Reconnect"), "app.connect"); } } public void add_approve_reject_actions (string client_id, string[] network_ids) { if (server_supports_actions ()) { string[] approve_args = {"approve", client_id}; string[] reject_args = {"reject", client_id}; foreach (string network_id in network_ids) { approve_args += network_id; reject_args += network_id; } notification.add_button_with_target_value (Utils.remove_mnemonics (_("_Approve")), "app.approve-reject", approve_args); notification.add_button_with_target_value (Utils.remove_mnemonics (_("_Reject")), "app.approve-reject", reject_args); } } } } ================================================ FILE: src/command.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Command : Object { public static bool hamachi_binary_exists; public static bool hamachi_use_daemon; public static string spawn_wrap; public static string sudo; public static string sudo_start; public static string terminal; public static string file_manager; public static string remote_desktop; private static string flatpak_list; private static Menu commands_menu; private static CustomCommand default_command; private static Array active_commands; private static Settings settings; public static void init () { settings = new Settings (Config.APP_ID + ".commands"); hamachi_binary_exists = exists ("hamachi"); hamachi_use_daemon = !hamachi_binary_exists && Utils.path_exists ("f", Hamachi.DAEMON_PATH); if (!hamachi_binary_exists) { warning ("Hamachi binary not found%s", hamachi_use_daemon ? ", using daemon instead" : ""); } if (exists ("flatpak")) { flatpak_list = return_output ("flatpak list --app"); debug ("flatpak_list:\n%s", flatpak_list); } determine_sudo (); determine_terminal (); determine_file_manager (); determine_remote_desktop (); Idle.add_full (Priority.DEFAULT_IDLE, () => { fill_custom_commands (); return false; }); } public static void execute (string command) { if (command == "") { return; } try { Process.spawn_command_line_async (spawn_wrap + command); } catch (SpawnError e) { critical ("execute: %s", e.message); } } public static string return_output (string command) { string stdout; string stderr; int exit_status; string cmd = parse_hamachi_command (command); try { Process.spawn_command_line_sync (spawn_wrap + cmd, out stdout, out stderr, out exit_status); if (stderr != "") { warning ("return_output stderr: %s", stderr); } } catch (SpawnError e) { critical ("return_output: %s", e.message); } // We don't like NULL strings if (stdout == null) { stdout = ""; } // When Hamachi is busy try again after a little while if (stdout.contains (".. failed, busy")) { debug ("Hamachi is busy, waiting to try again..."); Thread.usleep (100000); stdout = return_output (cmd); } // When there's no regular output we'd want to return the error if available return (stdout == "" && stderr != "") ? stderr : stdout; } public static string return_output_with_timeout (int timeout, string command) { return return_output ("timeout %d %s".printf (timeout, parse_hamachi_command (command))); } private static string parse_hamachi_command (string command) { string cmd = command; if (hamachi_use_daemon && command.has_prefix ("hamachi")) { // Call daemon with process name set to `hamachi` so that it acts as command line interface cmd = "bash -c 'exec -a hamachi %s%s'".printf (Hamachi.DAEMON_PATH, command.substring (7).replace ("'", "'\\''")); } return cmd; } public static bool exists (string? command) { if (command == null || command == "") { return false; } bool result; if (command.has_prefix ("flatpak run ")) { try { // Extract application ID and check for its presence in the list // Ignore any OPTIONS and ARGUMENTS from the command string and find the application ID by its reverse-DNS format MatchInfo mi; new Regex ("""^flatpak run.*? (?[a-zA-Z0-9][a-zA-Z0-9\.\_\-]+[a-zA-Z0-9]).*?$""").match (command, 0, out mi); string id = mi.fetch_named ("id"); result = (flatpak_list != null && flatpak_list.contains ("\t%s\t".printf (id))); } catch (RegexError e) { critical ("exists: %s", e.message); return false; } } else { string stdout = return_output ("bash -c \"command -v %s &>/dev/null || echo 'command not found'\"".printf (command.split (" ", 0)[0])); result = !stdout.contains ("command not found"); } debug ("exists: %s %s", command, result.to_string ()); return result; } private static void determine_sudo () { sudo = settings.get_string ("super-user"); sudo_start = ""; if (sudo == "auto") { sudo = get_available ({ "pkexec", "kdesu", "run0", "sudo" }, ""); } if (sudo == "sudo") { sudo_start = "-- "; } debug ("determine_sudo: %s", sudo); } private static string get_available (string[] commands, string? fallback) { // Check each command in the list for existence, and return immediately if it does foreach (string cmd in commands) { if (exists (cmd)) { return cmd; } } // Return fallback if no command is available return fallback; } private static void determine_terminal () { terminal = get_available ({ "flatpak run app.devsuite.Ptyxis", "flatpak run org.gnome.Console", "flatpak run org.kde.konsole", "gnome-terminal", "mate-terminal", "io.elementary.terminal", "kgx", "ptyxis", "ghostty", "tilix", "xfce4-terminal", "konsole", "deepin-terminal", "qterminal", "lxterminal", "cosmic-term", "uxterm", "xterm" }, "gnome-terminal"); debug ("determine_terminal: %s", terminal); } private static void determine_file_manager () { file_manager = get_available ({ "flatpak run org.gnome.Nautilus", "flatpak run org.kde.dolphin", "nautilus", "caja", "nemo", "io.elementary.files", "thunar", "dolphin", "dde-file-manager", "pcmanfm-qt", "pcmanfm", "cosmic-files" }, "nautilus"); debug ("determine_file_manager: %s", file_manager); } private static void determine_remote_desktop () { remote_desktop = get_available ({ "flatpak run org.kde.krdc", "gvncviewer", "krdc", "vncviewer", "xtightvncviewer", "xvnc4viewer", "rdesktop", "vinagre" }, "gvncviewer"); debug ("determine_remote_desktop: %s", remote_desktop); } public static Menu get_commands_menu () { if (commands_menu == null) { commands_menu = new Menu (); } return commands_menu; } public static void fill_custom_commands () { new Thread (null, () => { // Initiate or clear existing commands default_command = null; active_commands = new Array (); get_commands_menu ().remove_all (); int number = 1; string[] commands = settings.get_strv ("customizable"); foreach (string command_str in commands) { string[] command = command_str.split (";", 6); if (command.length == 6) { string is_active = command[0]; string is_default = command[1]; string label = command[2]; string cmd_ipv4 = command[3].replace ("{COLON}", ";"); string cmd_ipv6 = command[4].replace ("{COLON}", ";"); string priority = command[5]; var custom_command = new CustomCommand (is_active, is_default, label, cmd_ipv4, cmd_ipv6, priority); if (custom_command.exists ()) { if (command[0] == "true") { win.install_action ("win.run-command-%d".printf (number), null, (Gtk.WidgetActionActivateFunc) run_command_action); active_commands.append_val (custom_command); commands_menu.append (_(label), "win.run-command-%d".printf (number)); number ++; } if (command[1] == "true") { default_command = custom_command; } } } } return null; }); } public static void set_active_commands_enabled (Member member) { if (active_commands != null) { var number = 1; foreach (CustomCommand command in active_commands) { win.action_set_enabled ("win.run-command-%d".printf (number), command.enabled_for_member (member)); number ++; } } } public static string replace_variables (owned string command, string address, string nick, string id) { command = command.replace ("%A", address); command = command.replace ("%N", nick ); command = command.replace ("%ID", id ); if (command.contains ("%TERMINAL")) { bool use_double_dash = strv_contains ({ "gnome-terminal", "ptyxis", "flatpak run app.devsuite.Ptyxis", "cosmic-term" }, terminal); bool use_quotes = !use_double_dash && terminal != "ghostty"; string option = use_double_dash ? "--" : "-e"; string quote = use_quotes ? "\"" : ""; try { // For terminals that use quotes for the command argument escape any quotes in the command itself // unless already preceded by a backslash if (use_quotes) { Regex regex = new Regex ("(? * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Connection : Object { private HashTable long_nicks_hash; private Settings settings; public List networks; public Connection () { networks = new List (); long_nicks_hash = new HashTable (str_hash, str_equal); // Retrieve saved long nicks from GSettings settings = new Settings (Config.APP_ID + ".network-list"); string[] long_nicks = settings.get_strv ("long-nicks"); // Add saved long nicks to the hash table foreach (string long_nick in long_nicks) { string[] parts = long_nick.split (";", 2); if (parts.length == 2) { add_long_nick (parts[0], parts[1]); } } } public void add_network (Network network) { networks.append (network); win.network_list.add_network (network, true); } public void remove_network (Network network) { networks.remove (network); win.network_list.remove_network (network); } public bool has_network (Network network) { return (networks.index (network) > -1); } public void clear_networks () { networks = new List (); } public bool has_long_nick (string client_id) { return long_nicks_hash.contains (client_id); } public string get_long_nick (string client_id) { return long_nicks_hash.lookup (client_id); } public void add_long_nick (string client_id, string long_nick) { // Lock hash table while inserting because this function can be called from asynchronous Member.get_long_nick threads lock (long_nicks_hash) { long_nicks_hash.insert (client_id, long_nick); } } public void save_long_nicks () { string[] long_nicks = {}; long_nicks_hash.foreach ((client_id, long_nick) => { long_nicks += client_id + ";" + long_nick; }); settings.set_strv ("long-nicks", long_nicks); } } } ================================================ FILE: src/controller.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Controller : Object { public static bool continue_update; public static bool manual_update; public static bool restore; public static int restore_countdown; public static int last_status; public static int num_update_cycles; private static int num_wait_for_internet_cycles; private static string start_output; private static string old_list; private static Settings behavior; private static Settings config; private static Settings notifications; private static HashTable members_left_hash; private static HashTable members_online_hash; private static HashTable members_offline_hash; private static HashTable members_joined_hash; private static List new_networks_list; public static void init () { behavior = new Settings (Config.APP_ID + ".behavior"); config = new Settings (Config.APP_ID + ".config"); notifications = new Settings (Config.APP_ID + ".notifications"); new_networks_list = new List (); new Thread (null, init_thread); } private static void* init_thread () { Command.init (); Hamachi.init (); Idle.add_full (Priority.HIGH_IDLE, () => { win.sidebar.update (); return false; }); last_status = -2; status_check (); Idle.add_full (Priority.HIGH_IDLE, () => { if (last_status >= 6) { restore = behavior.get_boolean ("reconnect-on-connection-loss"); win.set_mode ("Connected"); get_network_list (); } else if (last_status >= 5) { restore = behavior.get_boolean ("reconnect-on-connection-loss"); go_connect (); } else if (last_status >= 3 && behavior.get_boolean ("connect-on-startup")) { restore = true; go_connect (); } else if (last_status >= 2 && behavior.get_boolean ("connect-on-startup")) { restore = true; win.set_mode ("Disconnected"); wait_for_internet_cycle (); } else if (last_status >= 2) { win.set_mode ("Disconnected"); } else if (last_status >= 1) { win.set_mode ("Not configured"); } else { win.set_mode ("Not installed"); } return false; }); return null; } public static void status_check () { last_status = status_int (); } private static int status_int () { if (demo_mode) { return 6; } if (last_status > 1) { if (!has_internet_connection ()) { // We don't want to call Hamachi if there's no Internet connection... debug ("status_check: No internet connection"); return 2; } } string output; if (last_status == -2) { // Reuse last info requested by Hamachi.init when (re)initializing to increase startup speed output = Hamachi.last_info; } else { output = Hamachi.get_info (); } try { if (Hamachi.version == "") { debug ("status_check: Not installed"); return 0; } if (Hamachi.version.has_prefix ("0.9.9.") || Hamachi.version.has_prefix ("2.0.") || Hamachi.version.has_prefix ("2.1.0.1") || Hamachi.version == "2.1.0.68" || Hamachi.version == "2.1.0.76" || Hamachi.version == "2.1.0.80" || Hamachi.version == "2.1.0.81" || Hamachi.version == "2.1.0.84" || Hamachi.version == "2.1.0.86") { debug ("status_check: Obsolete version %s installed", Hamachi.version); return 0; } if (output.contains ("You do not have permission to control the hamachid daemon.") || !Utils.path_exists ("f", Hamachi.CONFIG_PATH)) { debug ("status_check: Not configured"); return 1; } if (last_status <= 1) { if (!has_internet_connection ()) { debug ("status_check: No internet connection"); return 2; } } if (output.contains ("Hamachi does not seem to be running.")) { debug ("status_check: Not started"); return 3; } if (new Regex ("status([ ]+):([ ]+)offline").match (output)) { debug ("status_check: Not logged in"); return 4; } if (new Regex ("status([ ]+):([ ]+)logging in").match (output)) { debug ("status_check: Logging in"); return 5; } if (new Regex ("status([ ]+):([ ]+)logged in").match (output)) { debug ("status_check: Logged in"); return 6; } } catch (RegexError e) { critical ("status_check: %s", e.message); } debug ("status_check: Unknown"); return -1; } public static bool has_internet_connection () { bool success = false; string stdout; string stderr; int status; debug ("has_internet_connection: Trying to ping %s...", config.get_string ("check-internet-ip")); try { Process.spawn_command_line_sync ("%sping -c1 -W1 %s".printf (Command.spawn_wrap, config.get_string ("check-internet-ip")), out stdout, out stderr, out status); success = (status == 0); string output = (stderr != "") ? stderr : stdout; if (!success) { warning ("has_internet_connection: %s", output); } else { debug ("has_internet_connection: %s", output); } } catch (SpawnError e) { critical ("has_internet_connection: %s", e.message); } if (!success) { debug ("has_internet_connection: Ping failed. Trying to resolve hostname %s using dig...", config.get_string ("check-internet-hostname")); try { Process.spawn_command_line_sync ("%sdig +short +tries=1 +time=1 %s".printf (Command.spawn_wrap, config.get_string ("check-internet-hostname")), out stdout, out stderr, out status); success = (status == 0 && stdout != ""); string output = (stderr != "") ? stderr : stdout; if (!success) { warning ("has_internet_connection: %s", output); } else { debug ("has_internet_connection: %s", output); } } catch (SpawnError e) { critical ("has_internet_connection: %s", e.message); } } if (!success && !Command.exists ("dig")) { debug ("has_internet_connection: Dig not available - trying to connect to %s on port 53... ", config.get_string ("check-internet-ip")); try { SocketClient client = new SocketClient (); client.timeout = 1; client.connect_to_host (config.get_string ("check-internet-ip"), 53); success = true; } catch (Error e) { critical ("has_internet_connection: %s", e.message); } } debug ("has_internet_connection: %s", success ? "Success!" : "No success"); return success; } public static void start_hamachi () { restore_countdown = 0; go_connect (); } public static void restart_hamachi () { stop_hamachi (); win.set_mode ("Connecting"); new Thread (null, () => { // Wait a second before starting Hamachi again Thread.usleep (1000000); Idle.add_full (Priority.HIGH_IDLE, () => { start_hamachi (); return false; }); return null; }); } public static void stop_hamachi () { new Thread (null, () => { if (!demo_mode) { Hamachi.logout (); } return null; }); restore = false; connection_stopped (); } public static void go_connect () { new Thread (null, () => { Idle.add_full (Priority.HIGH_IDLE, () => { win.set_mode ("Connecting"); return false; }); status_check (); if (demo_mode) { Idle.add_full (Priority.HIGH_IDLE, () => { connection_established (); return false; }); } else if (last_status == 2) { Idle.add_full (Priority.HIGH_IDLE, () => { connection_stopped (); win.show_toast (_("No internet connection")); return false; }); } else if (last_status >= 4) { Idle.add_full (Priority.HIGH_IDLE, () => { win.window_title.subtitle = _("Logging in"); return false; }); go_login_thread (); } else if (last_status >= 3) { debug ("go_connect: Not yet started, go start"); // Wait half a second to finish updating GUI before showing blocking sudo dialog Thread.usleep (500000); Idle.add_full (Priority.HIGH_IDLE, () => { go_start (); return false; }); } return null; }); } private static void go_start () { start_output = Hamachi.start (); new Thread (null, () => { string output = start_output; debug ("go_start: Hamachi should be started now, let's check..."); status_check (); if (last_status >= 4) { debug ("go_start: Hamachi is successfully started, now go login"); Idle.add_full (Priority.HIGH_IDLE, () => { win.window_title.subtitle = _("Logging in"); return false; }); go_login_thread (); } else if (last_status == 1) { debug ("go_start: Hamachi is successfully started, but not configured"); Idle.add_full (Priority.HIGH_IDLE, () => { connection_stopped (); init (); return false; }); } else if (output != "" && !output.contains ("Request dismissed")) { debug ("go_start: Failed to start Hamachi, showing output"); restore = false; Idle.add_full (Priority.HIGH_IDLE, () => { connection_stopped (); win.show_toast (output.strip ()); return false; }); } else { debug ("go_start: Failed to start Hamachi, no output to show - user might have canceled sudo dialog"); restore = false; Idle.add_full (Priority.HIGH_IDLE, () => { connection_stopped (); win.show_toast (_("Error connecting")); return false; }); } start_output = null; return null; }); } private static void* go_login_thread () { string output = Hamachi.login (); if (output.contains (".. ok") || output.contains ("Already logged in")) { // Ok, logged in debug ("go_login_thread: Connected!"); last_status = 6; Thread.usleep (2000000); // Wait two seconds to get updated info and list Hamachi.get_info (); Idle.add_full (Priority.HIGH_IDLE, () => { get_network_list (); return false; }); } else { debug ("go_login_thread: Error connecting"); Idle.add_full (Priority.HIGH_IDLE, () => { connection_stopped (); win.show_toast (_("Hamachi login failed")); return false; }); } return null; } public static void connection_established () { win.set_mode ("Connected"); win.sidebar.update (); // Update protocol if needed var protocol = config.get_string ("protocol"); if (Hamachi.ip_version.down () != protocol) { new Thread (null, () => { Hamachi.set_protocol (protocol); return null; }); } // Set nick after login new Thread (null, () => { Thread.usleep (2000000); Hamachi.set_nick (Utils.parse_nick (config.get_string ("nickname"))); return null; }); restore = behavior.get_boolean ("reconnect-on-connection-loss"); num_update_cycles ++; update_cycle (); } public static void connection_stopped () { if (restore) { win.network_list.save_state (); } win.set_disconnected_stack_page ("empty"); win.set_mode ("Disconnected"); // Stop update interval continue_update = false; if (restore) { if (last_status == 2) { wait_for_internet_cycle (); } else { restore_connection_cycle (); } } if (!demo_mode) { connection.clear_networks (); } last_status = 4; } private static void get_network_list () { Hamachi.get_list (); connection.networks = Hamachi.return_networks (); win.network_list.fill_tree (); connection_established (); } public static void update_connection () { manual_update = true; update_connection_timeout (); } private static bool update_connection_timeout () { debug ("update_connection_timeout: Number of active update cycles: %s", num_update_cycles.to_string ()); if (!manual_update && num_update_cycles > 1) { num_update_cycles --; return false; } if (continue_update) { debug ("update_connection: Retrieving connection status..."); win.window_title.subtitle = _("Updating"); new Thread (null, update_connection_thread); } else { num_update_cycles --; } return false; } private static void* update_connection_thread () { status_check (); if (last_status >= 6) { old_list = Hamachi.last_list; Hamachi.get_list (); if (old_list != Hamachi.last_list) { new_networks_list = Hamachi.return_networks (); } } if (continue_update) { Idle.add_full (Priority.HIGH_IDLE, () => { update_list (); win.sidebar.update (); return false; }); } else { num_update_cycles --; } return null; } private static void update_list () { if (last_status == 2) { debug ("update_list: Internet connection lost"); connection_stopped (); num_update_cycles --; } else if (last_status < 6) { debug ("update_list: Hamachi connection lost"); // Display connection lost notification only if window is not currently focused if (!(win.visible && win.is_active)) { notify_connection_lost (); } connection_stopped (); num_update_cycles --; } else if (last_status >= 6) { // We are still connected if (demo_mode) { debug ("update_list: Demo mode, not really updating list"); win.network_list.sort (); win.network_list.refilter (); } else if (old_list == Hamachi.last_list) { debug ("update_list: Connected, list not changed"); } else { debug ("update_list: Connected, updating list"); members_left_hash = new HashTable(str_hash, str_equal); members_online_hash = new HashTable(str_hash, str_equal); members_offline_hash = new HashTable(str_hash, str_equal); members_joined_hash = new HashTable(str_hash, str_equal); HashTable old_networks_hash = new HashTable(str_hash, str_equal); foreach (Network old_network in connection.networks) { old_networks_hash.insert (old_network.id, old_network); } HashTable new_networks_hash = new HashTable(str_hash, str_equal); foreach (Network new_network in new_networks_list) { new_networks_hash.insert (new_network.id, new_network); } old_networks_hash.foreach ((old_network_id, old_network) => { if (!new_networks_hash.contains (old_network.id)) { // Network not in new list, removing... connection.remove_network (old_network); } }); new_networks_hash.foreach ((new_network_id, new_network) => { if (old_networks_hash.contains (new_network.id)) { // Network in new and old list, updating... Network old_network = (Network) old_networks_hash.get (new_network.id); old_network.update (new_network.status, new_network.name); // Check all network members HashTable old_members_hash = new HashTable(str_hash, str_equal); foreach (Member old_member in old_network.members) { old_members_hash.insert (old_member.id, old_member); } HashTable new_members_hash = new HashTable(str_hash, str_equal); foreach (Member new_member in new_network.members) { new_members_hash.insert (new_member.id, new_member); } old_members_hash.foreach ((old_member_id, old_member) => { if (!new_members_hash.contains (old_member.id)) { // Member not in new list, removing... old_network.remove_member (old_member); if ((old_member.status.status_int < 3 ) && (!old_member.is_evicted)) { add_member_to_hash (members_left_hash, old_member, old_network); } } }); new_members_hash.foreach ((new_member_id, new_member) => { if (old_members_hash.contains (new_member.id)) { // Member in old and new list, updating... Member old_member = (Member) old_members_hash [new_member.id]; if ((old_member.status.status_int == 0) && (new_member.status.status_int == 1)) { add_member_to_hash (members_online_hash, old_member, old_network); } if ((old_member.status.status_int == 1) && (new_member.status.status_int == 0)) { add_member_to_hash (members_offline_hash, old_member, old_network); } old_member.update (new_member.status, new_member.ipv4, new_member.ipv6, new_member.nick, new_member.tunnel); } else { // Member not in old list, adding... old_network.add_member (new_member); new_member.network = old_network; new_member.init (); add_member_to_hash (members_joined_hash, new_member, old_network); } }); old_network.set_label_markup (); } else { // Network not in old list, adding... connection.add_network (new_network); } }); win.network_list.sort (); win.network_list.refilter (); notify_members_joined (); notify_members_left (); notify_members_online (); notify_members_offline (); } if (manual_update) { manual_update = false; num_update_cycles ++; } // Continue update interval update_cycle (); win.window_title.subtitle = _("Connected"); } } private static void add_member_to_hash (HashTable hash, Member member, Network network) { MemberEvent member_event = new MemberEvent (member.id, member.known_name); if (hash.contains (member.id)) { member_event = (MemberEvent) hash.get (member.id); } member_event.add_network (network.name); if (member.status.status_int == 3) { member_event.add_network_approval (network.id); } hash.replace (member.id, member_event); } public static void wait_for_internet_cycle () { num_wait_for_internet_cycles ++; new Thread (null, () => { Thread.usleep (2000000); if (num_wait_for_internet_cycles > 1) { // Do nothing } else if (!restore) { // Do nothing } else if (has_internet_connection ()) { Idle.add_full (Priority.HIGH_IDLE, () => { start_hamachi (); return false; }); } else { debug ("wait_for_internet_cycle: Waiting for internet connection..."); Idle.add_full (Priority.HIGH_IDLE, () => { wait_for_internet_cycle (); return false; }); } num_wait_for_internet_cycles --; return null; }); } public static void restore_connection_cycle () { debug ("restore_connection_cycle: Trying to reconnect..."); restore_countdown = config.get_int ("reconnect-interval"); win.set_restore_countdown (restore_countdown); win.set_disconnected_stack_page ("restore"); Timeout.add (1000, restore_connection); } private static bool restore_connection () { if (restore && restore_countdown > 0) { restore_countdown --; if (restore_countdown == 0) { start_hamachi (); } else { win.set_restore_countdown (restore_countdown); return true; } } return false; } public static bool update_cycle () { continue_update = true; uint interval = (uint) (1000 * config.get_int ("update-interval")); if (interval > 0) { Timeout.add (interval, update_connection_timeout); } else { Timeout.add (1000, update_cycle); } return false; } public static void notify_connection_lost () { if (notifications.get_boolean ("connection-loss")) { Bubble bubble = new Bubble (_("Hamachi Lost Connection"), null); bubble.add_reconnect_action (); bubble.show (); } } public static void notify_members_joined () { members_joined_hash.foreach ((member_id, member_event) => { notify_member_joined (member_event.name, member_event.first_network_name, member_event.networks_length - 1, member_event.id, member_event.get_network_approval_ids ()); }); } public static void notify_member_joined (string nick, string network, int more, string client_id, string[] network_approval_ids) { if (notifications.get_boolean ("member-join")) { var bubble = compose_bubble ( _("Member Joined"), // Notification bubble. For example: "T-800 joined the network Skynet". _("{0} joined the network {1}"), // Notification bubble. For example: "T-800 joined the network Skynet and 1 other network". ngettext ("{0} joined the network {1} and {2} other network", "{0} joined the network {1} and {2} other networks", more), nick, network, more); if (network_approval_ids.length > 0) { bubble.add_approve_reject_actions (client_id, network_approval_ids); } bubble.show (); } } public static void notify_members_left () { members_left_hash.foreach ((member_id, member_event) => { notify_member_left (member_event.name, member_event.first_network_name, member_event.networks_length - 1); }); } public static void notify_member_left (string nick, string network, int more) { if (notifications.get_boolean ("member-leave")) { var bubble = compose_bubble ( _("Member Left"), // Notification bubble. For example: "T-800 left the network Skynet". _("{0} left the network {1}"), // Notification bubble. For example: "T-800 left the network Skynet and 1 other network". ngettext ("{0} left the network {1} and {2} other network", "{0} left the network {1} and {2} other networks", more), nick, network, more); bubble.show (); } } public static void notify_members_online () { members_online_hash.foreach ((member_id, member_event) => { notify_member_online (member_event.name, member_event.first_network_name, member_event.networks_length - 1); }); } public static void notify_member_online (string nick, string network, int more) { if (notifications.get_boolean ("member-online")) { var bubble = compose_bubble ( _("Member Online"), // Notification bubble. For example: "T-800 came online in the network Skynet". _("{0} came online in the network {1}"), // Notification bubble. For example: "T-800 came online in the network Skynet and 1 other network". ngettext ("{0} came online in the network {1} and {2} other network", "{0} came online in the network {1} and {2} other networks", more), nick, network, more); bubble.show (); } } public static void notify_members_offline () { members_offline_hash.foreach ((member_id, member_event) => { notify_member_offline (member_event.name, member_event.first_network_name, member_event.networks_length - 1); }); } public static void notify_member_offline (string nick, string network, int more) { if (notifications.get_boolean ("member-offline")) { var bubble = compose_bubble ( _("Member Offline"), // Notification bubble. For example: "T-800 went offline in the network Skynet". _("{0} went offline in the network {1}"), // Notification bubble. For example: "T-800 went offline in the network Skynet and 1 other network". ngettext ("{0} went offline in the network {1} and {2} other network", "{0} went offline in the network {1} and {2} other networks", more), nick, network, more); bubble.show (); } } public static Bubble compose_bubble ( string heading, string message_one, string message_more, string nick, string network, int more) { var message = more > 0 ? message_more : message_one; message = message.replace ("{0}", nick); message = message.replace ("{1}", network); message = message.replace ("{2}", more.to_string ()); return new Bubble (heading, message); } public static void quit () { if (last_status > 4 && behavior.get_boolean ("disconnect-on-quit")) { stop_hamachi (); } } } } ================================================ FILE: src/custom-command.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class CustomCommand : Object { public string is_active; public string is_default; public string label; public string cmd_ipv4; public string cmd_ipv6; public string priority; public CustomCommand (string _is_active, string _is_default, string _label, string _cmd_ipv4, string _cmd_ipv6, string _priority) { is_active = _is_active; is_default = _is_default; label = _label; cmd_ipv4 = _cmd_ipv4; cmd_ipv6 = _cmd_ipv6; priority = _priority; } public bool exists () { return Command.exists (Command.replace_variables (cmd_ipv4, "", "", "")) || Command.exists (Command.replace_variables (cmd_ipv6, "", "", "")); } public bool enabled_for_member (Member member) { // Enabled if member is online or command doesn't use address variable return member.status.status_int == 1 || (!cmd_ipv4.contains ("%A") && !cmd_ipv6.contains ("%A")); } public string return_for_member (Member member) { string command = ""; string address = ""; if (Hamachi.ip_version == "Both") { if (priority == "IPv4") { command = (member.ipv4 != null) ? cmd_ipv4 : cmd_ipv6; address = (member.ipv4 != null) ? member.ipv4 : member.ipv6; } if (priority == "IPv6") { command = (member.ipv6 != null) ? cmd_ipv6 : cmd_ipv4; address = (member.ipv6 != null) ? member.ipv6 : member.ipv4; } } else if (Hamachi.ip_version == "IPv4") { command = cmd_ipv4; address = member.ipv4; } else if (Hamachi.ip_version == "IPv6") { command = cmd_ipv6; address = member.ipv6; } return Command.replace_variables (command, address, member.nick, member.id); } } } ================================================ FILE: src/dialogs/add-edit-command.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/dialogs/add-edit-command.ui")] public class AddEditCommandDialog : Adw.Dialog { private string mode; private CommandsEditor editor; [GtkChild] unowned Gtk.Button save_button; [GtkChild] unowned Adw.EntryRow label_entry; [GtkChild] unowned CommandEntryRow command_ipv4_entry; [GtkChild] unowned CommandEntryRow command_ipv6_entry; [GtkChild] unowned Adw.ActionRow priority; #if ADW_1_7 && !FOR_ELEMENTARY private Adw.ToggleGroup priority_group; private Adw.Toggle priority_ipv4; private Adw.Toggle priority_ipv6; #else private Gtk.CheckButton priority_ipv4; private Gtk.CheckButton priority_ipv6; #endif construct { #if ADW_1_7 && !FOR_ELEMENTARY priority_ipv4 = new Adw.Toggle () { label = name = "IPv4" }; priority_ipv6 = new Adw.Toggle () { label = name = "IPv6" }; priority_group = new Adw.ToggleGroup () { valign = Gtk.Align.CENTER }; priority_group.add (priority_ipv4); priority_group.add (priority_ipv6); priority.add_suffix (priority_group); #else priority_ipv4 = new Gtk.CheckButton () { label = "IPv4", valign = Gtk.Align.CENTER }; priority_ipv6 = new Gtk.CheckButton () { group = priority_ipv4, label = "IPv6", valign = Gtk.Align.CENTER }; priority.add_suffix (priority_ipv4); priority.add_suffix (priority_ipv6); #endif } public AddEditCommandDialog (string _mode, CommandsEditor _editor, string label, string command_ipv4, string command_ipv6, string priority) { mode = _mode; editor = _editor; title = (mode == "Edit") ? _("Edit Command") : _("Add Command"); label_entry.text = label; command_ipv4_entry.text = command_ipv4; command_ipv6_entry.text = command_ipv6; #if ADW_1_7 && !FOR_ELEMENTARY priority_group.active_name = priority; #else priority_ipv4.active = (priority == "IPv4"); priority_ipv6.active = (priority == "IPv6"); #endif set_state (); present (_editor); } [GtkCallback] private void save_command () { #if ADW_1_7 && !FOR_ELEMENTARY var ip_mode = priority_group.active_name; #else var ip_mode = priority_ipv6.active ? "IPv6" : "IPv4"; #endif if (mode == "Edit") { editor.update_selected_command (label_entry.text, command_ipv4_entry.text, command_ipv6_entry.text, ip_mode); } else { editor.insert_command (label_entry.text, command_ipv4_entry.text, command_ipv6_entry.text, ip_mode); } close (); } [GtkCallback] private void set_state () { var ipv4 = command_ipv4_entry.text.length; var ipv6 = command_ipv6_entry.text.length; #if ADW_1_7 && !FOR_ELEMENTARY priority_ipv4.enabled = ipv4 > 0; priority_ipv6.enabled = ipv6 > 0; #else priority_ipv4.sensitive = ipv4 > 0; priority_ipv6.sensitive = ipv6 > 0; #endif if (ipv4 == 0 && ipv6 > 0) { #if ADW_1_7 && !FOR_ELEMENTARY priority_group.active_name = "IPv6"; #else priority_ipv6.active = true; #endif } else if (ipv4 > 0 && ipv6 == 0) { #if ADW_1_7 && !FOR_ELEMENTARY priority_group.active_name = "IPv4"; #else priority_ipv4.active = true; #endif } save_button.sensitive = label_entry.text.length > 0 && (ipv4 > 0 || ipv6 > 0); } } } ================================================ FILE: src/dialogs/attach.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/dialogs/attach.ui")] public class AttachDialog : Adw.Dialog { [GtkChild] unowned Gtk.Revealer revealer; [GtkChild] unowned Gtk.Label message_label; [GtkChild] unowned Gtk.Button attach_button; [GtkChild] unowned Adw.EntryRow account_entry; [GtkChild] unowned Adw.SwitchRow include_networks_switch; [GtkCallback] private void attach () { set_buttons_sensitivity (false); new Thread (null, () => { string account = account_entry.text; string output; if (demo_mode) { if (account.contains ("@")) { output = ".. ok"; Hamachi.demo_account = account + " (pending)"; } else if (account.contains ("#")) { output = ".. failed"; } else if (account.contains ("!")) { output = ""; } else { output = ".. failed, not found"; } } else { output = Hamachi.attach (account, include_networks_switch.active); } Idle.add_full (Priority.HIGH_IDLE, () => { if (output.contains (".. ok")) { win.sidebar.set_account (account + " (pending)"); win.show_toast (_("Attach request sent")); close (); } else { set_buttons_sensitivity (true); if (output.contains (".. failed, not found") || output.contains (".. failed, [248]")) { account_entry.add_css_class ("error"); account_entry.grab_focus_without_selecting (); show_message (_("Account not found")); } else { show_message (output.strip ()); } } return false; }); return null; }); } [GtkCallback] private void entry_changed () { dismiss_message (); account_entry.remove_css_class ("error"); attach_button.sensitive = account_entry.text.length > 0; } private void set_buttons_sensitivity (bool sensitive) { attach_button.sensitive = sensitive; } private void show_message (string message) { if (message != "") { revealer.reveal_child = true; message_label.label = message; } } private void dismiss_message () { revealer.reveal_child = false; } } } ================================================ FILE: src/dialogs/change-access.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/dialogs/change-access.ui")] public class ChangeAccessDialog : Adw.Dialog { private Network network; [GtkChild] unowned Adw.SwitchRow locked; [GtkChild] unowned Adw.ComboRow approval; public ChangeAccessDialog (Network _network) { network = _network; locked.active = network.lock_state == "locked"; approval.sensitive = network.lock_state == "unlocked"; approval.selected = network.approve == "manual" ? 1 : 0; } [GtkCallback] private void change_access () { network.updating = true; network.lock_state = locked.active ? "locked" : "unlocked"; network.approve = approval.selected == 1 ? "manual" : "auto"; win.sidebar.set_network (network); new Thread (null, () => { Hamachi.set_access (network.id, locked.active ? "lock" : "unlock", network.approve); network.updating = false; return null; }); close (); } [GtkCallback] private void lock_changed () { approval.sensitive = !locked.active; } } } ================================================ FILE: src/dialogs/change-password.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/dialogs/change-password.ui")] public class ChangePasswordDialog : Adw.Dialog { private Network network; [GtkChild] unowned Adw.EntryRow password_entry; public ChangePasswordDialog (Network _network) { network = _network; } [GtkCallback] private void change_password () { new Thread (null, () => { Hamachi.set_password (network.id, password_entry.text); return null; }); close (); } } } ================================================ FILE: src/dialogs/confirm.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class ConfirmDialog : Object { public signal void confirm (); public ConfirmDialog (Gtk.Widget parent, string heading, string body, string confirm_label, Adw.ResponseAppearance response_appearance) { var dialog = new Adw.AlertDialog (heading, body); dialog.add_response ("cancel", _("_Cancel")); dialog.add_response ("confirm", confirm_label); dialog.set_response_appearance ("confirm", response_appearance); dialog.default_response = "confirm"; dialog.close_response = "cancel"; dialog.response.connect ((dialog, response) => { if (response == "confirm") { confirm (); } }); if (parent == win) { win.show_dialog (dialog); } else { dialog.present (parent); } } } } ================================================ FILE: src/dialogs/join-create-network.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/dialogs/join-create-network.ui")] public class JoinCreateNetworkDialog : Adw.Dialog { private string mode; [GtkChild] unowned Gtk.Revealer revealer; [GtkChild] unowned Gtk.Label message_label; [GtkChild] unowned Gtk.Button add_button; [GtkChild] unowned Adw.EntryRow id_entry; [GtkChild] unowned Adw.PasswordEntryRow password_entry; public JoinCreateNetworkDialog (string _mode) { mode = _mode; title = (mode == "Join") ? _("Join Network") : _("Create Network"); add_button.label = (mode == "Join") ? _("_Join") : _("C_reate"); } [GtkCallback] private void add_network () { set_buttons_sensitivity (false); if (mode == "Join") { new Thread (null, go_join_thread); } else { new Thread (null, go_create_thread); } } private void* go_join_thread () { string id = id_entry.text; string password = password_entry.text; string output; if (demo_mode) { if (id == "not found") { output = ".. failed, network not found"; } else if (id == "invalid password") { output = ".. failed, invalid password"; } else if (id == "full") { output = ".. failed, the network is full"; } else if (id == "joined") { output = ".. failed, you are already a member"; } else if (id == "failed") { output = ".. failed"; } else { output = ".. ok, request sent"; } } else { output = Hamachi.join_network (id, password); } if (output.contains (".. ok, request sent")) { Idle.add_full (Priority.HIGH_IDLE, () => { win.show_toast (_("Join request sent")); close (); return false; }); } else if (output.contains (".. ok")) { Idle.add_full (Priority.HIGH_IDLE, () => { close (); return false; }); // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.HIGH_IDLE, () => { win.network_list.select_network_id = id; Controller.update_connection (); return false; }); } else { Idle.add_full (Priority.HIGH_IDLE, () => { set_buttons_sensitivity (true); if (output.contains (".. failed, network not found")) { id_entry.add_css_class ("error"); id_entry.grab_focus_without_selecting (); show_message (_("Network not found")); } else if (output.contains (".. failed, invalid password")) { password_entry.add_css_class ("error"); password_entry.grab_focus_without_selecting (); show_message (_("Invalid password")); } else if (output.contains (".. failed, the network is full")) { show_message (_("Network is full")); } else if (output.contains (".. failed, network is locked")) { show_message (_("Network is locked")); } else if (output.contains (".. failed, you are already a member") || output.contains (".. failed, you are an owner")) { show_message (_("Network already joined")); } else { show_message (output.strip ()); } return false; }); } return null; } private void* go_create_thread () { string id = id_entry.text; string password = password_entry.text; string output; if (demo_mode) { if (id == "taken") { output = ".. failed, network name is already taken"; } else if (id == "failed") { output = ".. failed"; } else { Idle.add_full (Priority.HIGH_IDLE, () => { close (); Network new_network = new Network (new Status ("*"), id, id, "This computer", 5); win.network_list.select_network_id = id; connection.add_network (new_network); Controller.update_connection (); return false; }); return null; } } else { output = Hamachi.create_network (id, password); } if (output.contains (".. ok")) { Idle.add_full (Priority.HIGH_IDLE, () => { close (); return false; }); // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.HIGH_IDLE, () => { win.network_list.select_network_id = id; Controller.update_connection (); return false; }); } else { Idle.add_full (Priority.HIGH_IDLE, () => { set_buttons_sensitivity (true); if (output.contains (".. failed, network name is already taken")) { id_entry.add_css_class ("error"); id_entry.grab_focus_without_selecting (); show_message (_("Network ID is already taken")); } else { show_message (output.strip ()); } return false; }); } return null; } [GtkCallback] private void entry_changed () { dismiss_message (); id_entry.remove_css_class ("error"); password_entry.remove_css_class ("error"); // Network name must be between 4 and 64 characters long add_button.sensitive = (id_entry.text.length >= 4 && id_entry.text.length <= 64); } private void set_buttons_sensitivity (bool sensitive) { add_button.sensitive = sensitive; } private void show_message (string message) { if (message != "") { revealer.reveal_child = true; message_label.label = message; } } private void dismiss_message () { revealer.reveal_child = false; } } } ================================================ FILE: src/hamachi.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Hamachi : Object { public const string DAEMON_PATH = "/opt/logmein-hamachi/bin/hamachid"; public const string DATA_PATH = "/var/lib/logmein-hamachi"; public const string CONFIG_PATH = DATA_PATH + "/h2-engine-override.cfg"; public static string version; public static string ip_version; public static string demo_account; public static string last_info; public static string last_list; public static string service; public static void init () { ip_version = ""; demo_account = "-"; get_info (); determine_version (); determine_service (); } private static void determine_version () { version = ""; if (demo_mode) { version = "2.1.0.203"; return; } if (!(Command.hamachi_binary_exists || Command.hamachi_use_daemon)) { return; } version = retrieve (last_info, "version"); if (version.has_prefix ("hamachi-lnx-")) { version = version.replace ("hamachi-lnx-", ""); } if (version != "") { debug ("determine_version: Hamachi %s detected", version); return; } string output = Command.return_output ("hamachi -h"); if (output == "") { output = Command.return_output ("stdbuf -o0 hamachi -h"); // Adjust stdout stream buffering } if (output == "") { debug ("determine_version: No output"); return; } debug ("determine_version: %s", output); if (output.contains ("Hamachi, a zero-config virtual private networking utility, ver ")) { try { MatchInfo mi; new Regex ("Hamachi, a zero-config virtual private networking utility, ver (.+)").match (output, 0, out mi); version = mi.fetch (1); } catch (RegexError e) { critical ("determine_version: %s", e.message); } } if (version != "") { debug ("determine_version: Hamachi %s detected", version); return; } debug ("determine_version: Unknown version"); } private static void determine_service () { service = ""; var settings = new Settings (Config.APP_ID + ".commands"); string init_system = settings.get_string ("init-system"); if (init_system == "systemctl" || (init_system == "auto" && Utils.path_exists ("d", "/run/systemd/system") && Command.exists ("systemctl") && systemctl_unit_found ())) { // Systemd service = "systemctl %s logmein-hamachi.service"; } else if (init_system == "init.d" || (init_system == "auto" && Utils.path_exists ("f", "/etc/init.d/logmein-hamachi"))) { // Sysvinit service = "/etc/init.d/logmein-hamachi %s"; } else if (init_system == "rc.d" || (init_system == "auto" && Utils.path_exists ("f", "/etc/rc.d/logmein-hamachi"))) { // BSD style init service = "/etc/rc.d/logmein-hamachi %s"; } else if (init_system == "none" || (init_system == "auto" && Utils.path_exists ("f", DAEMON_PATH))) { // Run Hamachi daemon directly service = DAEMON_PATH; } debug ("determine_service %s: %s", init_system, service); } private static bool systemctl_unit_found () { bool found = true; string output = Command.return_output ("systemctl status logmein-hamachi.service"); debug ("systemctl_unit_found output: %s", output); if (output.contains ("Loaded: not-found") || output.contains ("Unit logmein-hamachi.service could not be found.")) { found = false; } debug ("systemctl_unit_found result: %s", found.to_string ()); return found; } public static string retrieve (string? output, string nfo) { if (output == null) { return ""; } string retrieved = null; try { MatchInfo mi; new Regex (nfo + "[ ]*:[ ]+(.+)").match (output, 0, out mi); retrieved = mi.fetch (1); } catch (RegexError e) { critical ("retrieve: %s", e.message); } if (retrieved == null) { return ""; } return retrieved; } public static void configure () { new Thread (null, () => { string output = Command.return_output ("%s %sbash -c \"%s; %s; killall -9 hamachid &> /dev/null; echo \'Ipc.User %s\' >> %s; %s\"".printf ( Command.sudo, Command.sudo_start, service.printf ("start"), service.printf ("stop"), Environment.get_user_name (), CONFIG_PATH, service.printf ("start"))); debug ("configure: %s", output); // Wait a second to let Hamachi settle Thread.usleep (1000000); Idle.add_full (Priority.HIGH_IDLE, () => { Controller.init (); return false; }); return null; }); } public static string start () { string output = Command.return_output ("%s %s%s".printf (Command.sudo, Command.sudo_start, service.printf ("restart"))); debug ("start: %s", output); // Wait a second to let Hamachi settle Thread.usleep (1000000); return output; } public static string login () { string output = Command.return_output ("hamachi login"); debug ("login: %s", output); return output; } public static string logout () { string output = Command.return_output ("hamachi logout"); debug ("logout: %s", output); return output; } public static string get_account () { if (demo_mode) { return demo_account; } string output = retrieve (last_info, "lmi account"); debug ("get_account: %s", output); return output; } public static string get_client_id () { if (demo_mode) { return "090-123-456"; } string output = retrieve (last_info, "client id"); debug ("get_client_id: %s", output); return output; } public static string[] get_address () { if (demo_mode) { ip_version = "Both"; return new string[] {"25.123.456.78", "2620:9b::56d:f78e"}; } string ipv4 = null; string ipv6 = null; string ouput = retrieve (last_info, "address"); try { MatchInfo mi; new Regex ("""^(?[0-9\.]{7,15})?[ ]*(?[0-9a-f\:]{6,39})?$""").match (ouput, 0, out mi); ipv4 = mi.fetch_named ("ipv4"); ipv6 = mi.fetch_named ("ipv6"); debug ("get_address ipv4: %s", ipv4); debug ("get_address ipv6: %s", ipv6); } catch (RegexError e) { critical ("get_address: %s", e.message); } if (ipv4 == "") { ipv4 = null; } if (ipv6 == "") { ipv6 = null; } if (ipv4 != null && ipv6 != null) { ip_version = "Both"; } else if (ipv4 != null) { ip_version = "IPv4"; } else if (ipv6 != null) { ip_version = "IPv6"; } debug ("get_address: IP version: %s", ip_version); return new string[] {ipv4, ipv6}; } public static string get_info () { if (!demo_mode && (Command.hamachi_binary_exists || Command.hamachi_use_daemon)) { last_info = Command.return_output ("hamachi"); debug ("get_info: %s", last_info); } return last_info; } public static bool go_online (Network network) { bool success = true; if (!demo_mode) { string output = Command.return_output ("hamachi go-online \"%s\"".printf (Utils.clean_string (network.id))); debug ("go_online: %s", output); if (!output.contains (".. ok")) { success = false; Idle.add_full (Priority.HIGH_IDLE, () => { win.show_toast (output.strip ()); return false; }); } } return success; } public static bool go_offline (Network network) { bool success = true; if (!demo_mode) { string output = Command.return_output ("hamachi go-offline \"%s\"".printf (Utils.clean_string (network.id))); debug ("go_offline: %s", output); if (!output.contains (".. ok")) { success = false; Idle.add_full (Priority.HIGH_IDLE, () => { win.show_toast (output.strip ()); return false; }); } } return success; } public static bool delete (Network network) { bool success = true; if (!demo_mode) { string output = Command.return_output ("hamachi delete \"%s\"".printf (Utils.clean_string (network.id))); debug ("delete: %s", output); if (!output.contains (".. ok")) { success = false; Idle.add_full (Priority.HIGH_IDLE, () => { win.show_toast (output.strip ()); return false; }); } } return success; } public static bool leave (Network network) { bool success = true; if (!demo_mode) { string output = Command.return_output ("hamachi leave \"%s\"".printf (Utils.clean_string (network.id))); debug ("leave: %s", output); if (!output.contains (".. ok")) { success = false; Idle.add_full (Priority.HIGH_IDLE, () => { win.show_toast (output.strip ()); return false; }); } } return success; } public static bool approve (Member member) { bool success = true; if (!demo_mode) { string output = Command.return_output ("hamachi approve \"%s\" %s".printf (Utils.clean_string (member.network.id), member.id)); debug ("approve: %s", output); if (output.contains (".. failed")) { success = false; } } return success; } public static bool reject (Member member) { bool success = true; if (!demo_mode) { string output = Command.return_output ("hamachi reject \"%s\" %s".printf (Utils.clean_string (member.network.id), member.id)); debug ("reject: %s", output); if (output.contains (".. failed")) { success = false; } } return success; } public static bool evict (Member member) { bool success = true; if (!demo_mode) { string output = Command.return_output ("hamachi evict \"%s\" %s".printf (Utils.clean_string (member.network.id), member.id)); debug ("evict: %s", output); if (!output.contains (".. ok")) { success = false; Idle.add_full (Priority.HIGH_IDLE, () => { win.show_toast (output.strip ()); return false; }); } } return success; } public static string random_address () { string address = "25."; address += Random.int_range (1, 255).to_string (); address += "."; address += Random.int_range (1, 255).to_string (); address += "."; address += Random.int_range (1, 255).to_string (); return address; } public static string random_client_id () { string id = "0"; id += Random.int_range (80, 99).to_string (); id += "-"; id += Random.int_range (100, 999).to_string (); id += "-"; id += Random.int_range (100, 999).to_string (); return id; } public static string random_network_id () { string id = "0"; id += Random.int_range (40, 45).to_string (); id += "-"; id += Random.int_range (100, 999).to_string (); id += "-"; id += Random.int_range (100, 999).to_string (); return id; } public static string get_list () { string output = ""; if (demo_mode) { if (last_list != null) { return last_list; } else if (demo_list_path != null) { output = Command.return_output ("cat " + demo_list_path); } else { output += " * [Artwork] capacity: 3/5, subscription type: Free, owner: ztefn (090-736-821)\n"; output += " " + random_client_id () + " Lapo " + random_address () + " alias: not set direct\n"; output += " * 090-736-821 ztefn " + random_address () + " alias: not set 2146:0d::987:a654 direct\n"; output += " [Bug Hunters] capacity: 4/5, [192.168.155.24/24] subscription type: Free, owner: This computer\n"; output += " x " + random_client_id () + " Eduardo 192.168.155.21\n"; output += " * " + random_client_id () + " freijon 192.168.155.22 alias: not set direct\n"; output += " ? 094-139-744 \n"; output += " You are approaching your member limit and may soon have to upgrade your network.\n"; output += " * [" + random_network_id () + "] Development capacity: 2/32, subscription type: Standard, owner: ztefn (090-736-821)\n"; output += " * 090-736-821 ztefn " + random_address () + " alias: not set 2146:0d::987:a654 direct\n"; output += " [" + random_network_id () + "]Packaging capacity: 4/256, subscription type: Premium, owner: Andrew (094-409-761)\n"; output += " * 094-409-761 Andrew " + random_address () + " alias: not set via relay\n"; output += " * " + random_client_id () + " carstene1ns " + random_address () + " alias: not set direct\n"; output += " " + random_client_id () + " etamPL " + random_address () + "\n"; output += " * [" + random_network_id () + "]Translators capacity: 18/256, subscription type: Multi-network, owner: translators@haguichi.net\n"; output += " x " + random_client_id () + " Aytunç " + random_address () + "\n"; output += " * " + random_client_id () + " Brbla " + random_address () + " alias: not set via relay\n"; output += " " + random_client_id () + " Daniel " + random_address () + "\n"; output += " ! " + random_client_id () + " dimitrov " + random_address () + " alias: not set IP protocol mismatch between you and peer\n"; output += " * " + random_client_id () + " enolp " + random_address () + " alias: not set direct\n"; output += " " + random_client_id () + " enricog " + random_address () + "\n"; output += " * " + random_client_id () + " fitojb " + random_address () + "\n"; output += " * " + random_client_id () + " Fedik " + random_address () + " alias: not set direct\n"; output += " * " + random_client_id () + " galamarv " + random_address () + " alias: not set via relay\n"; output += " " + random_client_id () + " ryonakano " + random_address () + "\n"; output += " * " + random_client_id () + " Jean-Marc " + random_address () + " alias: not set direct\n"; output += " ! " + random_client_id () + " jmb_kz " + random_address () + " alias: not set direct\n"; output += " x " + random_client_id () + " Ḷḷumex03 " + random_address () + "\n"; output += " * " + random_client_id () + " Moo " + random_address () + " alias: not set direct\n"; output += " * " + random_client_id () + " piotrdrag " + random_address () + " alias: not set direct\n"; output += " * " + random_client_id () + " Rodrigo " + random_address () + " alias: not set via relay\n"; output += " ! " + random_client_id () + " scrawl " + random_address () + " alias: 25.353.432.28 2620:9b::753:b470 direct UDP 170.45.240.141:43667 This address is also used by another peer\n"; output += " " + random_client_id () + " Sergey " + random_address () + "\n"; output += " x " + random_client_id () + " Soker " + random_address () + "\n"; output += " * " + random_client_id () + " Zdeněk " + random_address () + " alias: not set direct\n"; output += " * " + random_client_id () + " ztefn " + random_address () + " alias: not set 2146:0d::987:a654 direct\n"; } } else { output = Command.return_output ("hamachi list"); debug ("get_list:\n%s", output); } last_list = output; return last_list; } public static List return_networks () { List networks = new List (); string[] split = last_list.split ("\n"); Network cur_network = null; try { int64 start_time = get_real_time (); Regex network_regex_part1 = new Regex ("""^ (?.{1}) \[(?[0-9-]{11}|.+)\][ ]*(?.*?)[ ]*$"""); Regex network_regex_part2 = new Regex ("""^(capacity: [0-9]{1,3}/(?[0-9]{1,3}),)?[ ]*(\[(?[0-9\./]{9,19})\])?[ ]*( subscription type: (?[^,]+),)?( owner: (?.*))?$"""); Regex normal_member_regex = new Regex ("""^ (?.{1}) (?[0-9-]{11})[ ]+(?.*?)[ ]*(?[0-9\.]{7,15})?[ ]*(alias: (?not set|[0-9\.]{7,15}))?[ ]*(?[0-9a-f\:]{6,39})?[ ]*(?direct|via relay|via server)?[ ]*(?UDP|TCP)?[ ]*(?[0-9\.]{7,15}\:[0-9]{1,5})?[ ]*(?[ a-zA-Z]+)?$"""); Regex unapproved_member_regex = new Regex ("""^ \? (?[0-9-]{11})[ ]*$"""); foreach (string s in split) { // Check string for minimum chars if (s.length > 5) { // Line contains network if (s.index_of ("[") == 3) { int index = s.last_index_of ("capacity: "); string part1 = s.substring (0, index); string part2 = s.substring (index, -1); MatchInfo mi1; network_regex_part1.match (part1, RegexMatchFlags.NOTEMPTY, out mi1); MatchInfo mi2; network_regex_part2.match (part2, RegexMatchFlags.NOTEMPTY, out mi2); string id = mi1.fetch_named ("id"); string name = mi1.fetch_named ("name"); string owner = mi2.fetch_named ("owner"); string capacity = mi2.fetch_named ("capacity"); Status status = new Status (mi1.fetch_named ("status")); if (name == "") { name = id; } int capacity_int = 0; if (capacity != null) { capacity_int = int.parse (capacity); } Network network = new Network (status, id, name, owner, capacity_int); networks.append (network); cur_network = network; } else if (s.index_of ("?") == 5) { // Line contains unapproved member MatchInfo mi; unapproved_member_regex.match (s, RegexMatchFlags.NOTEMPTY, out mi); string id = mi.fetch_named ("id"); string nick = _("Unknown"); Status status = new Status ("?"); Member member = new Member (status, cur_network, null, null, nick, id, null); cur_network.add_member (member); } else if (s.index_of ("-") == 10) { // Line contains normal member // UTF-8 multibyte characters in long nicknames may get cut off in the network list. // Therefore by calling the make_valid string function, bytes that could not be // interpreted as valid Unicode are replaced with the Unicode replacement character (U+FFFD). s = s.make_valid (); MatchInfo mi; normal_member_regex.match (s, RegexMatchFlags.NOTEMPTY, out mi); string id = mi.fetch_named ("id"); string nick = mi.fetch_named ("nick"); string ipv4 = mi.fetch_named ("ipv4"); string ipv6 = mi.fetch_named ("ipv6"); string alias = mi.fetch_named ("alias"); string tunnel = mi.fetch_named ("tunnel"); string connection = mi.fetch_named ("connection"); string message = mi.fetch_named ("message"); Status status = new Status.complete (mi.fetch_named ("status"), connection, message); if (nick == "" || nick == "anonymous") { nick = _("Anonymous"); } if (ipv4 == "") { ipv4 = null; } if (ipv6 == "") { ipv6 = null; } if (alias != null && alias.contains (".")) { ipv4 = alias; ipv6 = null; // IPv6 address doesn't work when the alias is set, therefore clearing it } if (tunnel == "") { tunnel = null; } Member member = new Member (status, cur_network, ipv4, ipv6, nick, id, tunnel); cur_network.add_member (member); } } } debug ("return_networks: Parsed network list in %s microseconds".printf ((get_real_time () - start_time).to_string ())); } catch (RegexError e) { critical ("return_networks: %s", e.message); } return networks; } public static string set_nick (string nick) { string output = ""; if (!demo_mode) { output = Command.return_output ("hamachi set-nick \"%s\"".printf (Utils.clean_string (nick))); debug ("set_nick: %s", output); } return output; } public static string set_protocol (string protocol) { string output = ""; if (!demo_mode) { output = Command.return_output ("hamachi set-ip-mode \"%s\"".printf (protocol)); debug ("set_protocol: %s", output); } return output; } public static string attach (string account_id, bool with_networks) { string output = ""; string command = "attach"; if (with_networks) { command += "-net"; } output = Command.return_output ("hamachi %s \"%s\"".printf (command, Utils.clean_string (account_id))); debug ("attach: %s", output); return output; } public static string cancel () { string output = ""; if (demo_mode) { demo_account = "-"; } else { output = Command.return_output ("hamachi cancel"); debug ("cancel: %s", output); } return output; } public static string join_network (string name, string password) { string output = Command.return_output ("hamachi do-join \"%s\" \"%s\"".printf (Utils.clean_string (name), Utils.clean_string (password))); debug ("join_network: %s", output); return output; } public static string set_access (string network_id, string locking, string approve) { string output = ""; if (!demo_mode) { output = Command.return_output ("hamachi set-access \"%s\" %s %s".printf (Utils.clean_string (network_id), locking, approve)); debug ("set_access: %s", output); if (!output.contains (".. ok")) { Idle.add_full (Priority.HIGH_IDLE, () => { win.show_toast (output.strip ()); return false; }); } } return output; } public static string set_password (string network_id, string password) { string output = ""; if (!demo_mode) { // Call with timeout because this command frequently hangs output = Command.return_output_with_timeout (1, "hamachi set-pass \"%s\" \"%s\"".printf (Utils.clean_string (network_id), Utils.clean_string (password))); debug ("set_password: %s", output); Idle.add_full (Priority.HIGH_IDLE, () => { if (output.has_suffix (" ..")) { warning ("set_password: command hanged, restarting hamachi..."); win.network_list.save_state (); win.show_toast (_("Password changed")); Controller.restart_hamachi (); } else if (output.contains (".. ok")) { win.show_toast (_("Password changed")); } else { win.show_toast (output.strip ()); } return false; }); } return output; } public static string create_network (string name, string password) { string output = Command.return_output ("hamachi create \"%s\" \"%s\"".printf (Utils.clean_string (name), Utils.clean_string (password))); debug ("create_network: %s", output); return output; } public static void save_config (string path, Adw.PreferencesDialog dialog) { new Thread (null, () => { var save_toast = new Adw.Toast (_("Saving backup…")) { timeout = 0 }; Idle.add_full (Priority.HIGH_IDLE, () => { dialog.add_toast (save_toast); return false; }); // Wait a second to show toast for minimum amount of time Thread.usleep (1000000); string output = Command.return_output ("tar -cavPf '%s' %s".printf (path, DATA_PATH)); debug ("save_config: %s", output); Idle.add_full (Priority.HIGH_IDLE, () => { save_toast.dismiss (); dialog.add_toast (new Adw.Toast (output.contains (DATA_PATH) ? _("Backup saved") : _("Failed to save backup"))); return false; }); return null; }); } public static void restore_config (string path, Adw.PreferencesDialog dialog) { new Thread (null, () => { string output = Command.return_output ("tar -tvf '%s'".printf (path)); debug ("restore_config: Listing archive contents...\n%s", output); if (output.contains (DATA_PATH)) { var restore_toast = new Adw.Toast (_("Restoring backup…")) { timeout = 0 }; Idle.add_full (Priority.HIGH_IDLE, () => { dialog.add_toast (restore_toast); Controller.stop_hamachi (); return false; }); string working_path = path; // When running inside Flatpak sandbox we create temporary copy of the file within the home directory so it's accessible as super user, // otherwise we get a permission error when trying to access /run/user/1000/doc/xxxxxxxx/etc if (Xdp.Portal.running_under_flatpak ()) { working_path = "/home/%s/.hamachi-config-restore".printf (Environment.get_user_name ()); debug ("restore_config: Creating temporary file at %s...", working_path); Command.return_output ("cp %s %s".printf (path, working_path)); } output = Command.return_output ("%s %sbash -c \"%s; %s; killall -9 hamachid &> /dev/null; rm %s/*; tar -xavf '%s' -C /; %s\"".printf ( Command.sudo, Command.sudo_start, service.printf ("start"), service.printf ("stop"), DATA_PATH, working_path, service.printf ("start"))); debug ("restore_config: %s", output); // Remove temporary copy of the file if (Xdp.Portal.running_under_flatpak ()) { debug ("restore_config: Removing temporary file at %s...", working_path); Command.return_output ("rm " + working_path); } // Wait a second to let Hamachi settle Thread.usleep (1000000); Idle.add_full (Priority.HIGH_IDLE, () => { Controller.init (); restore_toast.dismiss (); dialog.add_toast (new Adw.Toast (output.contains (DATA_PATH) ? _("Backup restored") : _("Failed to restore backup"))); return false; }); } else { debug ("restore_config: Archive doesn't contain %s", DATA_PATH); Idle.add_full (Priority.HIGH_IDLE, () => { dialog.add_toast (new Adw.Toast (_("Archive does not contain expected files"))); return false; }); } return null; }); } } } ================================================ FILE: src/indicator.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2024 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ using Config; namespace Haguichi { public class Indicator { private Menu menu; private int icon_num; private string icon_postfix; public StatusNotifierItem item; public Indicator () { // Only on specific desktops we use symbolic icons if (current_desktop.contains ("GNOME") || current_desktop == "COSMIC" || current_desktop == "MATE" || current_desktop == "Pantheon" || current_desktop == "X-Cinnamon") { icon_postfix = "-symbolic"; } item = new StatusNotifierItem () { id = APP_ID + ".indicator", category = "ApplicationStatus", title = APP_NAME, icon_name = APP_ID + "-disconnected" + icon_postfix, status = "Active", is_menu = true, }; item.scroll.connect ((delta, orientation) => { debug ("scroll delta %d, orientation %s", delta, orientation); if (orientation.down () != "vertical") return; // Show window when scrolling up and hide it when scrolling down if (delta < 0) { win.present (); } else { win.hide (); } }); item.notify["host-registered"].connect (() => { if (item.host_registered) { item.register (); } }); item.init (); } public bool active { get { return item.status == "Active"; } set { if (value) { item.register (); } item.status = (value == true) ? "Active" : "Passive"; } } private string icon_name { get { return item.icon_name; } set { item.icon_name = APP_ID + "-" + value + icon_postfix; } } public void update_status (string mode, bool modal, bool visible) { set_icon (mode); var status_text = (mode == "Connected") ? _("Connected") : (mode == "Connecting") ? _("Connecting") : _("Disconnected"); item.tool_tip = { APP_ID, {}, APP_NAME, status_text }; // For available properties see: // https://github.com/AyatanaIndicators/libdbusmenu/blob/master/libdbusmenu-glib/dbus-menu.xml menu = new Menu (); var show = new MenuItem (_("_Show Haguichi"), "app.toggle-window"); show.set_attribute_value ("toggle-type", "checkmark"); show.set_attribute_value ("toggle-state", (int) visible); show.set_attribute_value ("enabled", !modal); menu.append_item (show); var separator = new MenuItem (null, null); separator.set_attribute_value ("type", "separator"); menu.append_item (separator); if (mode.down ().contains ("connect")) { var connect = new MenuItem ((mode == "Connected") ? _("_Disconnect") : _("C_onnect"), (mode == "Connected") ? "app.disconnect" : "app.connect"); connect.set_attribute_value ("enabled", (!modal && mode != "Connecting")); set_menu_item_icon_name (connect, "network-" + (mode == "Connected" ? "disconnect" : "connect")); menu.append_item (connect); menu.append_item (separator); var join = new MenuItem (_("_Join Network…"), "app.join-network"); join.set_attribute_value ("enabled", !modal && mode == "Connected"); set_menu_item_icon_name (join, "list-add"); menu.append_item (join); var create = new MenuItem (_("_Create Network…"), "app.create-network"); create.set_attribute_value ("enabled", !modal && mode == "Connected"); set_menu_item_icon_name (create, "list-add"); menu.append_item (create); menu.append_item (separator); var info = new MenuItem (_("_Information"), "app.info"); info.set_attribute_value ("enabled", !modal); set_menu_item_icon_name (info, "documentinfo"); menu.append_item (info); menu.append_item (separator); } var quit = new MenuItem (_("_Quit"), "app.quit"); set_menu_item_icon_name (quit, "application-exit"); menu.append_item (quit); item.menu_model = menu; } private void set_menu_item_icon_name (MenuItem menu_item, string icon_name) { // Only on KDE icons seems to be commonly used with menu items if (current_desktop == "KDE") { menu_item.set_attribute_value ("icon-name", icon_name); } } private void set_icon (string mode) { // Check if there isn't already an animation going on when connecting if (mode == "Connecting" && icon_name.contains ("-connecting-")) { return; } icon_num = 0; switch (mode) { case "Connecting": Timeout.add (400, switch_icon); break; case "Connected": icon_name = "connected"; break; default: icon_name = "disconnected"; break; } } private bool switch_icon () { // Stop animation when not connecting anymore if (win.get_mode () != "Connecting") { return false; } switch (icon_num) { case 0: icon_name = "connecting-1"; icon_num = 1; break; case 1: icon_name = "connecting-2"; icon_num = 2; break; default: icon_name = "connecting-3"; icon_num = 0; break; } return true; } } } ================================================ FILE: src/inhibitor.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2024 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [DBus (name = "org.freedesktop.login1.Manager")] public interface LogindManager : DBusProxy { public signal void prepare_for_sleep (bool before); public abstract UnixInputStream inhibit (string what, string who, string why, string mode) throws Error; } public class Inhibitor : Object { private LogindManager manager; private UnixInputStream lock_file = null; public Inhibitor () { try { // Connect to the logind manager on the system bus: https://www.freedesktop.org/wiki/Software/systemd/logind/ manager = Bus.get_proxy_sync (BusType.SYSTEM, "org.freedesktop.login1", "/org/freedesktop/login1"); } catch (IOError e) { critical ("manager: %s", e.message); } manager.prepare_for_sleep.connect ((before) => { if (before) { debug ("Preparing for sleep"); // Only restore connection after wake up if currently connected or already marked to do so if (Controller.restore || Controller.last_status >= 6) { debug ("Stopping connection"); // Abort any pending connection restore cycle and make sure we don't trigger a new one either Controller.restore_countdown = 0; Controller.restore = false; // It's now safe to call the following method Controller.connection_stopped (); // And don't forget the most important bit! Hamachi.logout (); // Finally, mark the connection to be restored again after wake up Controller.restore = true; } release (); } else { debug ("Waking up"); if (Controller.restore) { // Restore the connection when internet is available again Controller.wait_for_internet_cycle (); } acquire (); } }); acquire (); } public void release () { debug ("Releasing inhibit lock"); if (lock_file != null) { try { lock_file.close (); } catch (IOError e) { critical ("release: %s", e.message); } finally { lock_file = null; } } } public void acquire () { debug ("Acquiring inhibit lock"); try { lock_file = manager.inhibit ("sleep", "Haguichi", "Properly disconnect", "delay"); } catch (Error e) { critical ("acquire: %s", e.message); } } } } ================================================ FILE: src/member-event.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2024 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ public class MemberEvent { public string id; public string name; private string[] network_approval_ids; private string[] network_names; public MemberEvent (string _id, string _name) { id = _id; name = _name; network_approval_ids = {}; network_names = {}; } public void add_network (string network_name) { network_names += network_name; } public void add_network_approval (string network_id) { network_approval_ids += network_id; } public string[] get_network_approval_ids () { return network_approval_ids; } public string first_network_name { get { return network_names[0]; } } public int networks_length { get { return network_names.length; } } } ================================================ FILE: src/member.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Member : Object { private ConfirmDialog dialog; private string new_nick; public Status status; public Network network; public string ipv4; public string ipv6; public string nick; public string id; public string tunnel; public string label { get; private set; } public string[] node_css_classes { get; private set; } public string[] label_css_classes { get; private set; } public string name_sort_string; public string status_sort_string; public bool is_owner; public bool is_evicted; public Member (Status _status, Network _network, string? _ipv4, string? _ipv6, string? _nick, string _id, string? _tunnel) { status = _status; network = _network; ipv4 = _ipv4; ipv6 = _ipv6; nick = _nick; id = _id; tunnel = _tunnel; set_label_markup (); set_row_css_classes (); set_sort_strings (); is_evicted = false; } public void init () { get_long_nick (nick, true); } public void update (Status _status, string? _ipv4, string? _ipv6, string? _nick, string? _tunnel) { status = _status; ipv4 = _ipv4; ipv6 = _ipv6; tunnel = _tunnel; set_row_css_classes (); get_long_nick (_nick, false); } public string known_name { get { return (nick == _("Unknown")) ? id : nick; } } public void set_label_markup () { string name = Markup.escape_text (known_name).replace ("%", "{PERCENTSIGN}"); string template = win.network_list.member_label_template; template = template.replace ("%ID", id); template = template.replace ("%N", name); template = template.replace ("%A", (ipv4 != null && ipv6 != null) ? ipv4 + " / " + ipv6 : (ipv4 != null) ? ipv4 : (ipv6 != null) ? ipv6 : ""); template = template.replace ("%IP4", (ipv4 != null) ? ipv4 : ""); template = template.replace ("%IP6", (ipv6 != null) ? ipv6 : ""); template = template.replace ("%TUN", (tunnel != null) ? tunnel : ""); template = template.replace ("%S", status.status_text); template = template.replace ("%CX", status.connection_type); template = template.replace ("
", "\n"); if (is_owner) { template = template.replace ("%*", "★"); template = template.replace ("%_*", " ★"); template = template.replace ("%*_", "★ "); } else { template = template.replace ("%*", ""); template = template.replace ("%_*", ""); template = template.replace ("%*_", ""); } label = template.replace ("{PERCENTSIGN}", "%"); } public void set_row_css_classes () { node_css_classes = new string[] {"network-node", status.get_css_classes ()}; label_css_classes = new string[] {"member-label", status.status_int == 0 ? "dim-label" : ""}; } public void set_sort_strings () { name_sort_string = network.name_sort_string + "0" + known_name + id; status_sort_string = network.status_sort_string + "0" + status.status_sortable + nick + id; } private void get_long_nick (string _nick, bool _init) { new_nick = _nick; if (_init == false && new_nick.length >= 25 && nick.length >= 25 && nick.has_prefix (new_nick.replace ("�", ""))) { // Long nick has already been retrieved and is probably not altered, since the first 25 characters are identical } else if (new_nick.length >= 25) { string cached_nick = get_long_nick_from_cache (); if (cached_nick != null) { // If we got a long nick from cache then use it nick = cached_nick; } else { // If not then get long nick from Hamachi try { this.ref (); member_threads.add (this); } catch (ThreadError e) { this.unref (); critical ("get_long_nick: %s", e.message); } } } else { // Save passed nick nick = new_nick; } set_label_markup (); set_sort_strings (); } public void get_long_nick_thread () { try { // First try the cache again, because an other thread might have retrieved it already for the same member in a different network string cached_nick = get_long_nick_from_cache (); if (cached_nick != null) { nick = cached_nick; } else { // Okay, really retrieve it from Hamachi now string output = Command.return_output ("hamachi peer %s".printf (id)); debug ("get_long_nick_thread: %s", output); string _nick = Hamachi.retrieve (output, "nickname"); if (_nick != "") { nick = _nick; } // Add retrieved long nick to the cache connection.add_long_nick (id, nick); } Idle.add_full (Priority.HIGH_IDLE, () => { set_label_markup (); set_sort_strings (); // Update sidebar with new nick when selected if (win.network_list.get_selected_item () == this) { win.sidebar.set_member (this); } return false; }); } finally { this.unref (); } } private string get_long_nick_from_cache () { string _nick = null; if (connection.has_long_nick (id) && connection.get_long_nick (id).has_prefix (new_nick.replace ("�", ""))) { _nick = connection.get_long_nick (id); debug ("get_long_nick_from_cache: Retrieved long nick for client %s from cache: %s", id, _nick); } return _nick; } public void approve () { new Thread (null, () => { bool success = Hamachi.approve (this); if (success) { // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.DEFAULT_IDLE, () => { if (demo_mode) { update (new Status ("*"), "192.168.155.23", null, "Nick", null); win.sidebar.set_member (this); } Controller.update_connection (); return false; }); } return null; }); } public void reject () { new Thread (null, () => { bool success = Hamachi.reject (this); if (success) { Idle.add_full (Priority.HIGH_IDLE, () => { network.remove_member (this); return false; }); // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.DEFAULT_IDLE, () => { Controller.update_connection (); return false; }); } return null; }); } public void evict () { var heading = _("Are you sure you want to evict member “{0}” from network “{1}”?").replace ("{0}", nick).replace ("{1}", network.name); var body = _("If admitted, evicted members can rejoin the network at any later time."); dialog = new ConfirmDialog (win, heading, body, _("_Evict"), Adw.ResponseAppearance.DESTRUCTIVE); dialog.confirm.connect (() => { is_evicted = true; new Thread (null, () => { bool success = Hamachi.evict (this); if (success) { Idle.add_full (Priority.HIGH_IDLE, () => { network.remove_member (this); return false; }); // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.DEFAULT_IDLE, () => { Controller.update_connection (); return false; }); } return null; }); }); } } } ================================================ FILE: src/meson.build ================================================ config = configure_file( input: 'config.vala.in', output: 'config.vala', configuration: conf ) sources = [ 'application.vala', 'bubble.vala', 'command.vala', 'connection.vala', 'controller.vala', 'custom-command.vala', 'dialogs/add-edit-command.vala', 'dialogs/attach.vala', 'dialogs/change-access.vala', 'dialogs/change-password.vala', 'dialogs/confirm.vala', 'dialogs/join-create-network.vala', 'hamachi.vala', 'indicator.vala', 'inhibitor.vala', 'member.vala', 'member-event.vala', 'network.vala', 'network-list.vala', 'preferences.vala', 'session.vala', 'sidebar.vala', 'status.vala', 'status-notifier-item.vala', 'utils.vala', 'widgets/command-entry-row.vala', 'widgets/command-variable-button.vala', 'widgets/commands-editor.vala', 'widgets/commands-editor-row.vala', 'widgets/sidebar-row.vala', 'widgets/sidebar-page.vala', 'widgets/throbber.vala', 'window.vala', ] deps = [ dependency('gee-0.8', version: '>= 0.20.6'), dependency('gio-unix-2.0', version: '>= 2.80'), dependency('gtk4', version: '>= 4.14'), dependency('libadwaita-1', version: '>= 1.5'), dependency('libportal', version: '>= 0.7.1'), dependency('libportal-gtk4', version: '>= 0.7.1'), ] adw_version = dependency('libadwaita-1').version() foreach minor_version : ['6', '7', '8'] if adw_version.version_compare('>= 1.' + minor_version) add_project_arguments( ['-D', 'ADW_1_' + minor_version], language: 'vala' ) endif endforeach if get_option('for-elementary') deps += dependency('granite-7') add_project_arguments( ['-D', 'FOR_ELEMENTARY'], language: 'vala' ) endif if get_option('for-ubuntu') add_project_arguments( ['-D', 'FOR_UBUNTU'], language: 'vala' ) endif executable(binary_name, config, sources, resources, dependencies: deps, install: true, ) ================================================ FILE: src/network-list.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ using Gtk; namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/network-list.ui")] public class NetworkList : Adw.Bin { [GtkChild] private unowned ScrolledWindow scrolled_window; [GtkChild] private unowned ListView list_view; private GLib.Settings settings; private GLib.ListStore store; private Sorter sorter; private Filter filter; private TreeListModel tree_list_model; private SortListModel sort_model; private FilterListModel filter_model; private SingleSelection selection_model; private PopoverMenu list_view_popover_menu; private PopoverMenu network_popover_menu; private PopoverMenu member_popover_menu; private Menu member_menu_model; private bool commands_menu_present = false; private bool skip_save_collapsed_networks; private bool show_offline_members; private string sort_by; public string network_label_template; public string member_label_template; public string restore_search_text; public string select_member_id; public string select_network_id; construct { install_action ("row.context-menu", null, (WidgetActionActivateFunc) on_context_menu); install_action ("row.collapse", null, (WidgetActionActivateFunc) on_collapse_row); install_action ("row.expand", null, (WidgetActionActivateFunc) on_expand_row); install_action ("row.delete", null, (WidgetActionActivateFunc) on_delete_row); install_action ("network.go-online", null, (WidgetActionActivateFunc) on_go_online); install_action ("network.go-offline", null, (WidgetActionActivateFunc) on_go_offline); install_action ("network.leave", null, (WidgetActionActivateFunc) on_delete_row); install_action ("network.delete", null, (WidgetActionActivateFunc) on_delete_row); install_action ("network.change-access", null, (WidgetActionActivateFunc) on_change_access); install_action ("network.change-password", null, (WidgetActionActivateFunc) on_change_password); install_action ("network.copy-id", null, (WidgetActionActivateFunc) on_copy_id); install_action ("network.details", null, (WidgetActionActivateFunc) on_show_details); install_action ("member.approve", null, (WidgetActionActivateFunc) on_approve_row); install_action ("member.reject", null, (WidgetActionActivateFunc) on_reject_row); install_action ("member.evict", null, (WidgetActionActivateFunc) on_delete_row); install_action ("member.copy-id", null, (WidgetActionActivateFunc) on_copy_id); install_action ("member.copy-ipv4", null, (WidgetActionActivateFunc) on_copy_ipv4); install_action ("member.copy-ipv6", null, (WidgetActionActivateFunc) on_copy_ipv6); install_action ("member.details", null, (WidgetActionActivateFunc) on_show_details); settings = new GLib.Settings (Config.APP_ID + ".network-list"); show_offline_members = settings.get_boolean ("show-offline-members"); sort_by = settings.get_string ("sort-by"); network_label_template = settings.get_string ("network-template"); member_label_template = settings.get_string ("member-template"); settings.changed.connect ((key) => { if (key == "sort-by") { sort_by = settings.get_string ("sort-by"); sort (); } else if (key == "show-offline-members") { autoselect (true); show_offline_members = settings.get_boolean ("show-offline-members"); refilter (); } }); store = new GLib.ListStore (typeof (Network)); tree_list_model = new TreeListModel (store, false, true, create_model); sorter = new CustomSorter((a, b) => { var itemA = ((TreeListRow) a).get_item (); var itemB = ((TreeListRow) b).get_item (); return sort_by_string (get_item_sort_string (itemA), get_item_sort_string (itemB)); }); sort_model = new SortListModel (tree_list_model, sorter); filter = new CustomFilter ((row) => { var item = ((TreeListRow) row).get_item (); return filter_tree_row (item, win.search_entry.text); }); filter_model = new FilterListModel (sort_model, filter); filter_model.items_changed.connect_after (() => { // When items are added or removed from the model no selection-changed signal will be emitted // so we need to listen to items-changed as well and manually call selection_changed() selection_changed (); }); selection_model = new SingleSelection (filter_model); selection_model.autoselect = false; selection_model.can_unselect = true; selection_model.selection_changed.connect (() => { selection_changed (); }); list_view.model = selection_model; var network_list_menu_builder = new Builder.from_resource("/com/github/ztefn/haguichi/ui/menus/network-list-menu.ui"); list_view_popover_menu = (PopoverMenu) network_list_menu_builder.get_object ("popover_menu"); list_view_popover_menu.set_parent (this); var network_menu_builder = new Builder.from_resource("/com/github/ztefn/haguichi/ui/menus/network-menu.ui"); network_popover_menu = (PopoverMenu) network_menu_builder.get_object ("popover_menu"); network_popover_menu.set_parent (this); var member_menu_builder = new Builder.from_resource("/com/github/ztefn/haguichi/ui/menus/member-menu.ui"); member_popover_menu = (PopoverMenu) member_menu_builder.get_object ("popover_menu"); member_popover_menu.set_parent (this); member_menu_model = (Menu) member_menu_builder.get_object ("menu_model"); var secondary_click_gesture = new GestureClick () { button = Gdk.BUTTON_SECONDARY }; secondary_click_gesture.pressed.connect ((n_press, x, y) => { var widget = pick (x, y, PickFlags.DEFAULT); if (widget is ListView) { show_context_menu (null, (int) x, (int) y); } else { //print ("type: %s\n", widget.get_type ().name ()); TreeExpander tree_expander; if (widget is TreeExpander) { // Widget is tree expander itself tree_expander = (TreeExpander) widget; } else if (widget.get_first_child () is TreeExpander) { // Get child of list item widget tree_expander = (TreeExpander) widget.get_first_child (); } else { // Find tree expander in ancestor tree_expander = (TreeExpander) widget.get_ancestor (typeof (TreeExpander)); } if (tree_expander != null) { var item = tree_expander.item; if (item is Network) { var network = (Network) item; selection_model.selected = find_selection_model_position (network); show_context_menu (item, (int) x, (int) y); } else if (item is Member) { var member = (Member) item; selection_model.selected = find_selection_model_position (member); show_context_menu (item, (int) x, (int) y); } } } }); add_controller (secondary_click_gesture); } [GtkCallback] public void on_activate () { var item = get_selected_item (); if (item is Network) { var network = (Network) item; if (network.status.status_int == 1) { network.go_offline (); } else { network.go_online (); } } else if (item is Member) { var member = (Member) item; Command.execute_default_command (member); } } private void on_collapse_row () { var item = get_selected_item (); if (item is Network) { set_row_expanded ((Network) item, false); } } private void on_expand_row () { var item = get_selected_item (); if (item is Network) { set_row_expanded ((Network) item, true); } } public void on_delete_row () { var item = get_selected_item (); if (item is Network) { var network = (Network) item; if (network.is_owner == 1) { network.delete (); } else if (network.is_owner == 0) { network.leave (); } } else if (item is Member) { var member = (Member) item; if (member.network.is_owner == 1 && member.status.status_int != 3) { member.evict (); } } } private void on_context_menu () { // Position context menu based on focused row in list view Graphene.Rect out_bounds; var focus_widget = list_view.get_focus_child (); focus_widget.compute_bounds (list_view, out out_bounds); show_context_menu (get_selected_item (), 6, (int) out_bounds.get_y () + focus_widget.get_height () + 11); } private void show_context_menu (Object? item, int x, int y) { var rect = Gdk.Rectangle () { x = x, y = y }; if (item is Network) { var network = (Network) item; action_set_enabled ("network.go-online", network.status.status_int == 0); action_set_enabled ("network.go-offline", network.status.status_int == 1); action_set_enabled ("network.leave", network.is_owner == 0); action_set_enabled ("network.delete", network.is_owner == 1); action_set_enabled ("network.change-access", network.is_owner == 1); action_set_enabled ("network.change-password", network.is_owner == 1); action_set_enabled ("network.details", !win.split_view.show_sidebar); network_popover_menu.pointing_to = rect; network_popover_menu.popup (); } else if (item is Member) { var member = (Member) item; action_set_enabled ("member.approve", member.network.is_owner == 1 && member.status.status_int == 3); action_set_enabled ("member.reject", member.network.is_owner == 1 && member.status.status_int == 3); action_set_enabled ("member.evict", member.network.is_owner == 1 && member.status.status_int != 3); action_set_enabled ("member.copy-ipv4", member.ipv4 != null && member.status.status_int != 3); action_set_enabled ("member.copy-ipv6", member.ipv6 != null && member.status.status_int != 3); action_set_enabled ("member.details", !win.split_view.show_sidebar); if (member.status.status_int == 3 && commands_menu_present) { member_menu_model.remove (0); commands_menu_present = false; } else if (member.status.status_int != 3 && !commands_menu_present) { member_menu_model.insert_section (0, null, Command.get_commands_menu ()); commands_menu_present = true; } member_popover_menu.pointing_to = rect; member_popover_menu.popup (); } else { list_view_popover_menu.pointing_to = rect; list_view_popover_menu.popup (); } } private void on_go_online () { var item = get_selected_item (); if (item is Network) { var network = (Network) item; network.go_online (); } } private void on_go_offline () { var item = get_selected_item (); if (item is Network) { var network = (Network) item; network.go_offline (); } } private void on_change_access () { var item = get_selected_item (); if (item is Network) { var network = (Network) item; network.change_access (); } } private void on_change_password () { var item = get_selected_item (); if (item is Network) { var network = (Network) item; network.change_password (); } } private void on_approve_row () { var item = get_selected_item (); if (item is Member) { var member = (Member) item; member.approve (); } } private void on_reject_row () { var item = get_selected_item (); if (item is Member) { var member = (Member) item; member.reject (); } } private void on_copy_id () { var item = get_selected_item (); if (item is Network) { var network = (Network) item; copy_to_clipboard (network.id); } else if (item is Member) { var member = (Member) item; copy_to_clipboard (member.id); } } private void on_copy_ipv4 () { var item = get_selected_item (); if (item is Member) { var member = (Member) item; copy_to_clipboard (member.ipv4); } } private void on_copy_ipv6 () { var item = get_selected_item (); if (item is Member) { var member = (Member) item; copy_to_clipboard (member.ipv6); } } private void copy_to_clipboard (string text) { win.get_clipboard ().set_text (text); win.show_copied_to_clipboard_toast (); } private void on_show_details () { win.toggle_sidebar (); } private ListModel? create_model (Object item) { if (item is Network) { return item.store; } return null; } public void fill_tree () { remove_all (); foreach (Network network in connection.networks) { add_network (network, false); } if (store.n_items > 0) { // Make sure the scrollbar is at top most position list_view.scroll_to (0, ListScrollFlags.NONE, null); // Select specified item select_item (); } if (restore_search_text != null) { win.search_bar.search_mode_enabled = true; win.search_entry.text = restore_search_text; } clear_state (); } public void add_network (Network network, bool select) { store.append (network); network.init (); foreach (Member member in network.members) { member.init (); } // Show network list when the first network has been added if (store.n_items == 1) { set_connected_stack_page (); } // Set row expanded state if (is_collapsed (network)) { set_row_expanded (network, false); } // Connect to expanded signal on row to save collapsed networks tree_list_model.get_row (find_tree_model_position (network)).notify["expanded"].connect (() => { save_collapsed_networks (); }); if (select) { select_item (); clear_state (); } } public void remove_network (Network network) { autoselect (true); uint position; store.find (network, out position); store.remove (position); refilter (); } public void remove_all () { skip_save_collapsed_networks = true; store.remove_all (); skip_save_collapsed_networks = false; } public void sort () { sorter.changed (SorterChange.DIFFERENT); } public void refilter () { filter.changed (FilterChange.DIFFERENT); selection_changed (); set_connected_stack_page (); } public Object? get_selected_item () { var row = ((TreeListRow) selection_model.get_selected_item ()); if (row is TreeListRow) { return row.get_item (); } return null; } public Member? get_selected_member () { var item = get_selected_item (); if (item is Member) { return (Member) item; } return null; } private void select_item () { if (select_network_id != null) { foreach (Network network in connection.networks) { if (select_network_id == network.id) { uint pos = -1; if (select_member_id != null) { Member member = network.return_member_by_id (select_member_id); if (member != null) { pos = find_selection_model_position (member); } } else { pos = find_selection_model_position (network); } // Only continue if selection is visible if (pos < selection_model.n_items) { list_view.scroll_to (pos, ListScrollFlags.FOCUS, null); selection_model.selected = pos; } } } } } public void unselect () { var item = get_selected_item (); if (item != null) { selection_model.unselect_item (find_selection_model_position (item)); } } public void autoselect (bool autoselect) { selection_model.autoselect = autoselect; } public void save_state () { if (win.search_bar.search_mode_enabled) { restore_search_text = win.search_entry.text; } var item = get_selected_item (); if (item is Network) { select_network_id = item.id; } else if (item is Member) { select_member_id = item.id; select_network_id = item.network.id; } } public void clear_state () { restore_search_text = null; select_member_id = null; select_network_id = null; } public void selection_changed () { Idle.add_full (Priority.HIGH_IDLE, () => { autoselect (false); return false; }); var item = get_selected_item (); if (item is Network) { var network = (Network) item; win.sidebar.set_network (network); } else if (item is Member) { var member = (Member) item; win.sidebar.set_member (member); } else { win.sidebar.show_page ("Information"); } } private void set_row_expanded (Network network, bool expanded) { tree_list_model.get_row (find_tree_model_position (network)).expanded = expanded; } public void set_all_rows_expanded (bool expanded) { uint64 start = get_real_time (); var network_rows = new List (); for (uint pos = 0; pos < tree_list_model.n_items; pos++) { var row = tree_list_model.get_row (pos); var item = row.get_item (); if (item is Network) { network_rows.append (row); } } // Calculate scrolled percentage to determine optimal direction double scrolled = (scrolled_window.vadjustment.value / scrolled_window.vadjustment.upper); if (expanded && scrolled > 0.6 || !expanded && scrolled < 0.66) { // Go backwards through list network_rows.reverse (); } skip_save_collapsed_networks = true; foreach (TreeListRow network_row in network_rows) { network_row.expanded = expanded; } skip_save_collapsed_networks = false; save_collapsed_networks (); debug ("set_all_rows_expanded: %s all in %s microseconds at %f scrolled\n", expanded ? "expanded" : "collapsed", (get_real_time () - start).to_string (), scrolled); } private bool is_collapsed (Network network) { string[] collapsed = settings.get_strv ("collapsed-networks"); return (network.id in collapsed); } public void save_collapsed_networks () { if (skip_save_collapsed_networks) { return; } string[] collapsed = {}; for (uint pos = 0; pos < tree_list_model.n_items; pos++) { var row = tree_list_model.get_row (pos); if (!row.expanded) { var item = row.get_item (); if (item is Network) { collapsed += ((Network) item).id; } } } settings.set_strv ("collapsed-networks", collapsed); } private int sort_by_string (string a, string b) { return strcmp (a.collate_key (), b.collate_key ()); } private uint? find_selection_model_position (Object item) { for (uint pos = 0; pos < selection_model.n_items; pos++) { if (((TreeListRow) selection_model.model.get_item (pos)).get_item () == item) { return pos; } } return -1; } private uint? find_tree_model_position (Object item) { for (uint pos = 0; pos < tree_list_model.n_items; pos++) { if (((TreeListRow) tree_list_model.get_row (pos)).get_item () == item) { return pos; } } return -1; } private string get_item_sort_string (Object item) { var sort_string = ""; if (item is Network) { Network network = (Network) item; sort_string = (sort_by == "status") ? network.status_sort_string : network.name_sort_string; } else if (item is Member) { Member member = (Member) item; sort_string = (sort_by == "status") ? member.status_sort_string : member.name_sort_string; } return sort_string; } private bool filter_tree_row (Object item, string search_text) { string match_text = ""; if (item is Network) { Network network = (Network) item; // If there is no search text then network is shown if (search_text == "") return true; // Compose text to match with search text match_text = "%s %s %s".printf (network.name, network.id, network.owner); foreach (Member member in network.members) { if (show_offline_members || member.status.status_int != 0) { match_text += " %s %s %s %s".printf (member.nick, member.id, member.ipv4, member.ipv6); } } } else if (item is Member) { Member member = (Member) item; // If offline members should be hidden then check status first if (!show_offline_members && member.status.status_int == 0) return false; // If there is no search text then member is shown if (search_text == "") return true; // Compose text to match with search text match_text = "%s %s %s %s %s %s %s".printf (member.network.name, member.network.id, member.network.owner, member.nick, member.id, member.ipv4, member.ipv6); } // Split search text into multiple terms and match all string[] terms = search_text.casefold ().split_set (" +"); foreach (string term in terms) { // If term contains comma match any of multiple words, otherwise match full term if (term.contains (",")) { bool match = false; string[] words = term.split (","); foreach (string word in words) { if (word != "" && match_text.casefold ().contains (word)) { match = true; break; } } if (!match) { return false; } } else if (!match_text.casefold ().contains (term)) { return false; } } return true; } private void set_connected_stack_page () { win.set_connected_stack_page (win.search_entry.text.length > 0 && filter_model.n_items == 0 ? "no-results" : store.n_items == 0 ? "empty" : "network-list"); } } } ================================================ FILE: src/network.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Network : Object { private ConfirmDialog dialog; public List members; public ListStore store; public Status status; public string id; public string name; public int is_owner; public string owner; public string lock_state; public string approve; public int capacity; public bool hide_expander { get; private set; } public string label { get; private set; } public string[] node_css_classes { get; private set; } public string[] label_css_classes { get; private set; } public string name_sort_string; public string status_sort_string; public bool updating; public Network (Status _status, string _id, string? _name, string? _owner, int? _capacity) { status = _status; id = _id; name = _name; members = new List (); store = new ListStore (typeof (Member)); is_owner = -1; owner = _owner; lock_state = ""; approve = ""; capacity = _capacity; show_hide_expander (); set_label_markup (); set_row_css_classes (); set_sort_strings (); } public void init () { determine_ownership (); } public void update (Status _status, string? _name) { // Check updating flag to prevent the background update process from overriding a very recent change if (!updating) { status = _status; name = _name; set_row_css_classes (); set_sort_strings (); } } private void show_hide_expander () { hide_expander = store.n_items == 0; } public void set_label_markup () { string id = Markup.escape_text (id).replace ("%", "{PERCENTSIGN}"); string name = Markup.escape_text (name).replace ("%", "{PERCENTSIGN}"); string template = win.network_list.network_label_template; template = template.replace ("%ID", id); template = template.replace ("%N", name); template = template.replace ("%S", status.status_text); template = template.replace ("%CAP", capacity.to_string ()); template = template.replace ("
", "\n"); if (template.contains ("%T") || template.contains ("%O")) { int member_count; int member_online_count; return_member_count (out member_count, out member_online_count); template = template.replace ("%T", member_count.to_string ()); template = template.replace ("%O", member_online_count.to_string ()); } if (is_owner == 1) { template = template.replace ("%*", "★"); template = template.replace ("%_*", " ★"); template = template.replace ("%*_", "★ "); } else { template = template.replace ("%*", ""); template = template.replace ("%_*", ""); template = template.replace ("%*_", ""); } label = template.replace ("{PERCENTSIGN}", "%"); } public void set_row_css_classes () { node_css_classes = new string[] {"network-node", status.get_css_classes ()}; label_css_classes = new string[] {"network-label", status.status_int == 0 ? "dim-label" : ""}; } public void set_sort_strings () { name_sort_string = name; status_sort_string = status.status_sortable + name; } public void return_member_count (out int total_count, out int online_count) { total_count = 1; // Include client itself online_count = status.status_int; // Include client itself if online foreach (Member member in members) { total_count ++; if (member.status.status_int > 0 && member.status.status_int < 3) { online_count ++; } } } public Member? return_member_by_id (string id) { foreach (Member member in members) { if (member.id == id) { return member; } } return null; } public string return_owner_string () { string _owner; if (is_owner == 1) { _owner = _("You"); } else if (owner != null) { _owner = owner; foreach (Member member in members) { if (member.id == _owner) { _owner = member.nick; } } } else { _owner = _("Unknown"); } return _owner; } private void determine_ownership () { try { this.ref (); network_threads.add (this); } catch (ThreadError e) { this.unref (); critical ("determine_ownership: %s", e.message); } } public void determine_ownership_thread () { try { if (owner == "This computer") { is_owner = 1; string output; if (demo_mode) { output = """ id : %s name : %s type : Mesh owner : This computer status : unlocked approve : auto""".printf (id, name); } else { output = Command.return_output ("hamachi network \"%s\"".printf (Utils.clean_string (id))); } debug ("determine_ownership_thread: %s", output); lock_state = Hamachi.retrieve (output, "status"); approve = Hamachi.retrieve (output, "approve"); } else { is_owner = 0; try { MatchInfo mi; new Regex ("""^.*? \((?[0-9-]{11})\)$""").match (owner, 0, out mi); string id = mi.fetch_named ("id"); if (id != null) { owner = id; foreach (Member member in members) { if (member.id == owner) { Idle.add_full (Priority.HIGH_IDLE, () => { member.is_owner = true; member.set_label_markup (); return false; }); } } } } catch (RegexError e) { critical ("determine_ownership_thread: %s", e.message); } } debug ("determine_ownership_thread: Owner for network %s: %s", id, owner); Idle.add_full (Priority.HIGH_IDLE, () => { set_label_markup (); // Update sidebar with new ownership info when selected if (win.network_list.get_selected_item () == this) { win.sidebar.set_network (this); } return false; }); } finally { this.unref (); } } public void add_member (Member member) { members.append (member); store.append (member); show_hide_expander (); } public void remove_member (Member member) { members.remove (member); win.network_list.autoselect (true); uint position; store.find (member, out position); store.remove (position); show_hide_expander (); } public void go_online () { updating = true; status = new Status ("*"); set_row_css_classes (); win.sidebar.set_network (this); new Thread (null, () => { bool success = Hamachi.go_online (this); if (success) { // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.DEFAULT_IDLE, () => { if (demo_mode) { set_sort_strings (); foreach (Member member in members) { member.set_sort_strings (); } set_label_markup (); } Controller.update_connection (); return false; }); } else { status = new Status (" "); Idle.add_full (Priority.HIGH_IDLE, () => { set_row_css_classes (); win.sidebar.set_network (this); return false; }); } updating = false; return null; }); } public void go_offline () { updating = true; status = new Status (" "); set_row_css_classes (); win.sidebar.set_network (this); new Thread (null, () => { bool success = Hamachi.go_offline (this); if (success) { // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.DEFAULT_IDLE, () => { if (demo_mode) { set_sort_strings (); foreach (Member member in members) { member.set_sort_strings (); } set_label_markup (); } Controller.update_connection (); return false; }); } else { status = new Status ("*"); Idle.add_full (Priority.HIGH_IDLE, () => { set_row_css_classes (); win.sidebar.set_network (this); return false; }); } updating = false; return null; }); } public void change_password () { var dialog = new ChangePasswordDialog (this); win.show_dialog (dialog); } public void change_access () { var dialog = new ChangeAccessDialog (this); win.show_dialog (dialog); } public void leave () { var heading = _("Are you sure you want to leave the network “{0}”?").replace ("{0}", name); var body = _("If admitted, you can rejoin the network at any later time."); dialog = new ConfirmDialog (win, heading, body, _("_Leave"), Adw.ResponseAppearance.SUGGESTED); dialog.confirm.connect (() => { new Thread (null, () => { bool success = Hamachi.leave (this); if (success) { Idle.add_full (Priority.HIGH_IDLE, () => { connection.remove_network (this); return false; }); // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.DEFAULT_IDLE, () => { Controller.update_connection (); return false; }); } return null; }); }); } public void delete () { var heading = _("Are you sure you want to delete the network “{0}”?").replace ("{0}", name); var body = _("If you delete a network, it will be permanently lost."); dialog = new ConfirmDialog (win, heading, body, _("_Delete"), Adw.ResponseAppearance.DESTRUCTIVE); dialog.confirm.connect (() => { new Thread (null, () => { bool success = Hamachi.delete (this); if (success) { Idle.add_full (Priority.HIGH_IDLE, () => { connection.remove_network (this); return false; }); // Wait a second to get an updated list Thread.usleep (1000000); Idle.add_full (Priority.DEFAULT_IDLE, () => { Controller.update_connection (); return false; }); } return null; }); }); } } } ================================================ FILE: src/preferences.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/preferences.ui")] public class Preferences : Adw.PreferencesDialog { private Settings config; private Settings behavior; private Settings notifications; private Settings ui; private enum ColorScheme { SYSTEM, LIGHT, DARK, } private enum UpdateInterval { 15_SECONDS = 15, 30_SECONDS = 30, 1_MINUTE = 60, 2_MINUTES = 120, 5_MINUTES = 300, 10_MINUTES = 600, 15_MINUTES = 900, 30_MINUTES = 1800, NEVER = 0, } [GtkChild] unowned Adw.PreferencesPage general_page; [GtkChild] unowned Adw.PreferencesPage commands_page; [GtkChild] unowned Adw.PreferencesPage desktop_page; [GtkChild] unowned Adw.ActionRow configuration; [GtkChild] unowned Adw.EntryRow nickname; [GtkChild] unowned Adw.ComboRow protocol; [GtkChild] unowned Adw.ComboRow update_interval; [GtkChild] unowned Adw.SwitchRow connect_on_startup; [GtkChild] unowned Adw.SwitchRow reconnect_on_connection_loss; [GtkChild] unowned Adw.SwitchRow disconnect_on_quit; [GtkChild] public unowned CommandsEditor commands_editor; [GtkChild] public unowned Gtk.CheckButton system; [GtkChild] public unowned Gtk.CheckButton light; [GtkChild] public unowned Gtk.CheckButton dark; [GtkChild] public unowned Adw.SwitchRow show_indicator; [GtkChild] unowned Adw.SwitchRow notify_on_connection_loss; [GtkChild] unowned Adw.SwitchRow notify_on_member_join; [GtkChild] unowned Adw.SwitchRow notify_on_member_leave; [GtkChild] unowned Adw.SwitchRow notify_on_member_online; [GtkChild] unowned Adw.SwitchRow notify_on_member_offline; construct { // Lower minimum width request to match window ((Adw.BreakpointBin) general_page.get_ancestor (typeof (Adw.BreakpointBin))).width_request = win.width_request; general_page.icon_name = Utils.get_available_theme_icon ({ "applications-system-symbolic", "emblem-system-symbolic", "preferences-system-symbolic" }); commands_page.icon_name = Utils.get_available_theme_icon ({ "utilities-terminal-symbolic", "system-run-symbolic" }); desktop_page.icon_name = Utils.get_available_theme_icon ({ "preferences-desktop-appearance-symbolic", "user-desktop-symbolic" }); config = new Settings (Config.APP_ID + ".config"); behavior = new Settings (Config.APP_ID + ".behavior"); notifications = new Settings (Config.APP_ID + ".notifications"); ui = new Settings (Config.APP_ID + ".ui"); install_action ("config.open", null, (Gtk.WidgetActionActivateFunc) open_config); install_action ("config.save", null, (Gtk.WidgetActionActivateFunc) save_config); install_action ("config.restore", null, (Gtk.WidgetActionActivateFunc) restore_config); var config_exists = Utils.path_exists ("d", Hamachi.DATA_PATH); configuration.subtitle = config_exists ? Hamachi.DATA_PATH : _("Not present"); action_set_enabled ("config.open", config_exists); action_set_enabled ("config.save", config_exists); nickname.text = Utils.parse_nick (config.get_string ("nickname")); nickname.apply.connect (() => { var nick = nickname.text; var parsed_nick = Utils.parse_nick (nick); debug ("nickname changed to: %s (parsed: %s)", nick, parsed_nick); nickname.editable = false; nickname.sensitive = false; nickname.text = parsed_nick; nickname.sensitive = true; nickname.editable = true; config.set_string ("nickname", nick); win.set_nick (parsed_nick); // Run hamachi command if connected if (Controller.last_status >= 6) { new Thread (null, () => { Hamachi.set_nick (parsed_nick); }); } }); #if FOR_ELEMENTARY // Workaround for styling issue with AdwViewSwitcher // https://github.com/elementary/stylesheet/issues/1312 var navigation_page = general_page.get_ancestor (typeof (Adw.NavigationPage)); if (navigation_page != null) { var view_switcher = (Gtk.Widget) navigation_page .get_first_child () // AdwBreakPointBin breakpoint_bin .get_first_child () // AdwToolbarView .get_first_child () // GtkStack content_stack .get_next_sibling () // GtkRevealer .get_first_child () // GtkWindowHandle .get_first_child () // GtkBox .get_first_child () // AdwHeaderBar .get_first_child () // GtkWindowHandle .get_first_child () // GtkCenterBox .get_first_child () // AdwGizmo .get_next_sibling () // AdwBin .get_first_child () // GtkStack title_stack .get_first_child () // GtkStack view_switcher_stack .get_first_child (); // AdwViewSwitcher view_switcher // If the view switcher was found then add the "linked" class if (view_switcher is Adw.ViewSwitcher) { ((Adw.ViewSwitcher) view_switcher).add_css_class ("linked"); } } // Workaround for missing adw-entry-apply-symbolic icon in elementary icon theme // https://github.com/elementary/icons/issues/1333 if (!Utils.get_icon_theme ().has_icon ("adw-entry-apply-symbolic")) { var button = (Gtk.Widget) nickname .get_first_child () // GtkBox header .get_first_child () // GtkBox prefixes .get_next_sibling () // AdwGizmo editable_area .get_first_child () // GtkLabel empty_title .get_next_sibling () // GtkLabel title .get_next_sibling () // GtkText text .get_next_sibling () // GtkImage indicator .get_next_sibling (); // GtkButton apply_button // If the button was found then change the icon to one that we know exists if (button is Gtk.Button) { ((Gtk.Button) button).halign = Gtk.Align.CENTER; var image = button.get_first_child (); // GtkImage // If the image was found then change the icon to one that we know exists if (image is Gtk.Image) { ((Gtk.Image) image).icon_name = "object-select-symbolic"; } } } #endif protocol.selected = (int) config.get_enum ("protocol"); protocol.notify["selected-item"].connect (() => { var i = (int) protocol.selected; config.set_enum ("protocol", i); // Run hamachi command if connected if (Controller.last_status >= 6) { new Thread (null, () => { var protocol = "both"; if (i == 1) { protocol = "ipv4"; } else if (i == 2) { protocol = "ipv6"; } Hamachi.set_protocol (protocol); }); } }); var model = new Adw.EnumListModel (typeof (UpdateInterval)); var expression = new Gtk.CClosureExpression (typeof (string), null, {}, (Callback) update_interval_name, null, null); update_interval.expression = expression; update_interval.model = model; update_interval.selected = get_update_interval_row_index (); update_interval.notify["selected-item"].connect (() => { var item = (Adw.EnumListItem) update_interval.selected_item; var val = (UpdateInterval) item.get_value (); config.set_int ("update-interval", val); }); behavior.bind ("connect-on-startup", connect_on_startup, "active", DEFAULT); behavior.bind ("reconnect-on-connection-loss", reconnect_on_connection_loss, "active", DEFAULT); behavior.bind ("disconnect-on-quit", disconnect_on_quit, "active", DEFAULT); var scheme = (ColorScheme) ui.get_enum ("color-scheme"); system.active = scheme == ColorScheme.SYSTEM; light.active = scheme == ColorScheme.LIGHT; dark.active = scheme == ColorScheme.DARK; system.toggled.connect (on_style_selection); light.toggled.connect (on_style_selection); dark.toggled.connect (on_style_selection); ui.bind ("show-indicator", show_indicator, "active", DEFAULT); show_indicator.visible = indicator.item.host_registered; indicator.item.notify["host-registered"].connect (() => { show_indicator.visible = indicator.item.host_registered; }); show_indicator.notify["active"].connect (() => { indicator.active = ui.get_boolean ("show-indicator"); win.update_indicator_status (); }); notifications.bind ("connection-loss", notify_on_connection_loss, "active", DEFAULT); notifications.bind ("member-join", notify_on_member_join, "active", DEFAULT); notifications.bind ("member-leave", notify_on_member_leave, "active", DEFAULT); notifications.bind ("member-online", notify_on_member_online, "active", DEFAULT); notifications.bind ("member-offline", notify_on_member_offline, "active", DEFAULT); if (demo_mode) { notify_on_connection_loss.notify["active"].connect (() => { Controller.notify_connection_lost (); }); notify_on_member_join.notify["active"].connect (() => { Controller.notify_member_joined ("T-800", "Skynet", 0, "000-000-000", {"000-000-000"}); }); notify_on_member_leave.notify["active"].connect (() => { Controller.notify_member_left ("T-800", "Skynet", 0); }); notify_on_member_online.notify["active"].connect (() => { Controller.notify_member_online ("T-800", "Skynet", 1); }); notify_on_member_offline.notify["active"].connect (() => { Controller.notify_member_offline ("T-800", "Skynet", 2); }); } } private void on_style_selection (Gtk.CheckButton btn) { if (!btn.active) return; int scheme = ColorScheme.SYSTEM; if (btn == light) { scheme = ColorScheme.LIGHT; } else if (btn == dark) { scheme = ColorScheme.DARK; } ui.set_enum ("color-scheme", scheme); app.set_color_scheme (scheme); } private void open_config () { Command.open_file (Hamachi.DATA_PATH); } private ListStore get_file_filters () { var tar = new Gtk.FileFilter (); tar.set_filter_name (_("All supported archives")); tar.add_mime_type ("application/x-tar"); tar.add_mime_type ("application/x-compressed-tar"); tar.add_mime_type ("application/x-bzip-compressed-tar"); tar.add_mime_type ("application/x-lzma-compressed-tar"); tar.add_mime_type ("application/x-xz-compressed-tar"); tar.add_mime_type ("application/x-zstd-compressed-tar"); var filters = new ListStore (typeof (Gtk.FileFilter)); filters.append (tar); return filters; } private void save_config () { debug ("config.save action activated"); var now = new DateTime.now_local (); var dialog = new Gtk.FileDialog () { title = _("Save a Backup"), initial_name = "logmein-hamachi-config_%s.tar.gz".printf (now.format ("%Y-%m-%d")), modal = true, filters = get_file_filters () }; dialog.save.begin (win, null, (obj, res) => { try { var file = dialog.save.end (res); var path = file.get_path (); debug ("save_config: Selected path %s: ", path); Hamachi.save_config (path, this); } catch (Error e) { critical ("save_config %s: ", e.message); } }); } private void restore_config () { debug ("config.restore action activated"); var dialog = new Gtk.FileDialog () { title = _("Restore from Backup"), accept_label = _("_Restore"), modal = true, filters = get_file_filters () }; dialog.open.begin (win, null, (obj, res) => { try { var file = dialog.open.end (res); var path = file.get_path (); debug ("restore_config: Selected path %s: ", path); Hamachi.restore_config (path, this); } catch (Error e) { critical ("restore_config: %s", e.message); } }); } private int get_update_interval_row_index () { var interval = config.get_int ("update-interval"); if (interval == 0) { return 8; // Never } else if (interval < 30) { return 0; // 15 seconds } else if (interval < 60) { return 1; // 30 seconds } else if (interval < 120) { return 2; // 1 minute } else if (interval < 300) { return 3; // 2 minutes } else if (interval < 600) { return 4; // 5 minutes } else if (interval < 900) { return 5; // 10 minutes } else if (interval < 1800) { return 6; // 15 minutes } else { return 7; // 30 minutes } } private static string update_interval_name (Adw.EnumListItem item) { switch (item.get_value ()) { case UpdateInterval.NEVER: return _("Never"); case UpdateInterval.15_SECONDS: return get_seconds_interval_label (15); case UpdateInterval.30_SECONDS: return get_seconds_interval_label (30); case UpdateInterval.1_MINUTE: return get_minutes_interval_label (1); case UpdateInterval.2_MINUTES: return get_minutes_interval_label (2); case UpdateInterval.5_MINUTES: return get_minutes_interval_label (5); case UpdateInterval.10_MINUTES: return get_minutes_interval_label (10); case UpdateInterval.15_MINUTES: return get_minutes_interval_label (15); case UpdateInterval.30_MINUTES: return get_minutes_interval_label (30); default: return ""; } } private static string get_seconds_interval_label (int interval) { return ngettext ("%S second", "%S seconds", interval).replace ("%S", interval.to_string ()); } private static string get_minutes_interval_label (int interval) { return ngettext ("%S minute", "%S minutes", interval).replace ("%S", interval.to_string ()); } } } ================================================ FILE: src/session.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2024 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [DBus (name = "com.github.ztefn.haguichi")] public class Session : Object { public void show () throws Error { win.present (); } public void hide () throws Error { win.hide (); } public void start_hamachi () throws Error { win.trigger_action ("connect"); } public void stop_hamachi () throws Error { win.trigger_action ("disconnect"); } public void join_network () throws Error { win.present (); win.trigger_action ("join-network"); } public void create_network () throws Error { win.present (); win.trigger_action ("create-network"); } public void information () throws Error { win.present (); win.trigger_action ("info"); } public void preferences () throws Error { win.present (); win.trigger_action ("preferences"); } public void about () throws Error { win.present (); win.trigger_action ("about"); } public void quit_app () throws Error { win.trigger_action ("quit"); } public string get_mode () throws Error { return win.get_mode (); } public bool get_modality () throws Error { return (win.modal_dialog != null); } public bool get_visibility () throws Error { return win.visible; } public signal void mode_changed (string mode); public signal void modality_changed (bool modal); public signal void visibility_changed (bool visible); public signal void quitted (); } } ================================================ FILE: src/sidebar.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/sidebar.ui")] public class Sidebar : Adw.Bin { private Member member; private Network network; [GtkChild] private unowned Gtk.Stack stack; [GtkChild] private unowned Gtk.ScrolledWindow scrolled_window; [GtkChild] private unowned SidebarPage network_page; [GtkChild] private unowned SidebarPage member_page; [GtkChild] unowned SidebarRow account_row; [GtkChild] unowned SidebarRow client_id_row; [GtkChild] unowned SidebarRow client_ipv4_row; [GtkChild] unowned SidebarRow client_ipv6_row; [GtkChild] unowned SidebarRow hamachi_row; [GtkChild] unowned SidebarRow network_status_row; [GtkChild] unowned SidebarRow network_id_row; [GtkChild] unowned SidebarRow network_owner_row; [GtkChild] unowned SidebarRow network_members_row; [GtkChild] unowned SidebarRow network_capacity_row; [GtkChild] unowned SidebarRow member_status_row; [GtkChild] unowned SidebarRow member_id_row; [GtkChild] unowned SidebarRow member_ipv4_row; [GtkChild] unowned SidebarRow member_ipv6_row; [GtkChild] unowned SidebarRow member_tunnel_row; [GtkChild] unowned SidebarRow member_connection_row; [GtkChild] public unowned Gtk.Button attach_button; [GtkChild] public unowned Gtk.Button cancel_button; [GtkChild] public unowned Gtk.Button network_leave_button; [GtkChild] public unowned Gtk.Button network_delete_button; [GtkChild] public unowned Gtk.Button network_password_button; [GtkChild] public unowned Gtk.Button network_access_button; [GtkChild] public unowned Gtk.Button network_go_online_button; [GtkChild] public unowned Gtk.Button network_go_offline_button; [GtkChild] public unowned Gtk.Button member_approve_button; [GtkChild] public unowned Gtk.Button member_reject_button; [GtkChild] public unowned Gtk.Button member_evict_button; [GtkChild] private unowned Gtk.MenuButton member_command_menubutton; construct { // Setup member command menubutton member_command_menubutton.menu_model = Command.get_commands_menu (); Command.get_commands_menu ().items_changed.connect (() => { set_member_command_menubutton_visible (); if (member != null) { Command.set_active_commands_enabled (member); } }); // Use different leave icon for Yaru and elementary themes var theme_name = Utils.get_icon_theme ().theme_name; if (theme_name.has_prefix ("Yaru") || theme_name == "elementary") { network_leave_button.icon_name = "system-log-out-symbolic"; } } [GtkCallback] public void set_reveal_sidebar_title () { win.sidebar_title_revealer.reveal_child = (scrolled_window.vadjustment.value >= 24); } [GtkCallback] private void on_network_leave () { network.leave (); } [GtkCallback] private void on_network_delete () { network.delete (); } [GtkCallback] private void on_network_change_password () { network.change_password (); } [GtkCallback] private void on_network_change_access () { network.change_access (); } [GtkCallback] private void on_network_go_online () { network.go_online (); } [GtkCallback] private void on_network_go_offline () { network.go_offline (); } [GtkCallback] private void on_member_approve () { member.approve (); } [GtkCallback] private void on_member_reject () { member.reject (); } [GtkCallback] private void on_member_evict () { member.evict (); } private void set_member_command_menubutton_visible () { member_command_menubutton.visible = member != null && member.status.status_int != 3 && Command.get_commands_menu ().get_n_items () > 0; } private void set_version () { string ver = Hamachi.version; if (ver == null) { ver = _("Unavailable"); } hamachi_row.set_value (ver); } private void set_address () { string[] address = Hamachi.get_address (); client_ipv4_row.set_value (address[0]); client_ipv6_row.set_value (address[1]); } private void set_client_id () { client_id_row.set_value (Hamachi.get_client_id ()); } public void set_account (string account) { account_row.title = account.has_suffix (" (pending)") ? "%s (%s)".printf (_("Account"), _("pending")) : _("Account"); account_row.set_value ((account == "" || account == "-") ? _("Not attached") : account.replace (" (pending)", "")); attach_button.visible = (account == "" || account == "-"); cancel_button.visible = account.has_suffix (" (pending)"); } public void set_network (Network _network) { network = _network; win.sidebar_title.title = network.name; int total, online; network.return_member_count (out total, out online); network_page.heading = network.name; network_status_row.set_value (network.status.status_text); network_id_row.set_value (network.id); network_owner_row.set_value (network.return_owner_string ()); network_members_row.set_value (_("{0} online, {1} total").replace ("{0}", online.to_string ()).replace ("{1}", total.to_string ())); network_capacity_row.set_value (network.capacity.to_string ()); network_owner_row.show_copy = network.is_owner == 0; network_leave_button.visible = network.is_owner == 0; network_delete_button.visible = network.is_owner == 1; network_password_button.visible = network.is_owner == 1; network_access_button.visible = network.is_owner == 1; network_go_online_button.visible = network.status.status_int == 0; network_go_offline_button.visible = network.status.status_int == 1; if (network.is_owner == 1) { network_access_button.remove_css_class ("success"); network_access_button.remove_css_class ("warning"); network_access_button.remove_css_class ("error"); network_access_button.add_css_class (network.lock_state == "locked" ? "error" : network.approve == "manual" ? "warning" : "success"); network_access_button.icon_name = network.lock_state == "locked" ? "changes-prevent-symbolic" : "changes-allow-symbolic"; } show_page ("Network"); } public void set_member (Member _member) { member = _member; win.sidebar_title.title = member.nick; member_page.heading = member.nick; member_status_row.set_value (member.status.status_text); member_id_row.set_value (member.id); member_ipv4_row.set_value (member.ipv4); member_ipv6_row.set_value (member.ipv6); member_tunnel_row.set_value (member.tunnel); member_connection_row.set_value (member.status.connection_type); member_approve_button.visible = member.network.is_owner == 1 && member.status.status_int == 3; member_reject_button.visible = member.network.is_owner == 1 && member.status.status_int == 3; member_evict_button.visible = member.network.is_owner == 1 && member.status.status_int != 3; set_member_command_menubutton_visible (); Command.set_active_commands_enabled (member); show_page ("Member"); } public void update () { set_account (Hamachi.get_account ()); set_version (); set_address (); set_client_id (); if (stack.visible_child_name == "Network") { set_network (network); } else if (stack.visible_child_name == "Member") { set_member (member); } } public void show_page (string page) { if (page == "Information") { win.sidebar_title.title = _("Information"); } stack.visible_child_name = page; } } } ================================================ FILE: src/status-notifier-item.vala ================================================ /* * SNI implementation based on: * https://github.com/dino/dino/pull/1209 * * Copyright (C) 2022 Dino contributors * Copyright (C) 2024 Stephen Brandt * * SPDX-License-Identifier: GPL-3.0-or-later */ [DBus (name = "org.kde.StatusNotifierWatcher")] private interface DBusStatusNotifierWatcher : Object { [DBus (name = "RegisterStatusNotifierItem")] public abstract async void register_item(string service) throws Error; [DBus (name = "RegisteredStatusNotifierItems")] public abstract string[] registered_items { owned get; } [DBus (name = "IsStatusNotifierHostRegistered")] public abstract bool is_host_registered { get; } [DBus (name = "ProtocolVersion")] public abstract int version { get; } [DBus (name = "StatusNotifierItemRegistered")] public signal void item_registered(string service); [DBus (name = "StatusNotifierItemUnregistered")] public signal void item_unregistered(string service); [DBus (name = "StatusNotifierHostRegistered")] public signal void host_registered(); [DBus (name = "StatusNotifierHostUnregistered")] public signal void host_unregistered(); } [DBus (name = "org.kde.StatusNotifierItem")] private class DBusStatusNotifierItem : Object { private StatusNotifierItem item; private ObjectPath menu_path; public DBusStatusNotifierItem(StatusNotifierItem item, ObjectPath? menu_path) { this.item = item; this.menu_path = menu_path ?? new ObjectPath("/NO_DBUSMENU"); } [DBus (name = "Category")] public string category { owned get { return item.category; } } [DBus (name = "Id")] public string id { owned get { return item.id; } } [DBus (name = "Title")] public string title { owned get { return item.title; } } [DBus (name = "Status")] public string status { owned get { return item.status; } } [DBus (name = "WindowId")] public int32 window_id { get { return item.window_id; } } [DBus (name = "IconName")] public string icon_name { owned get { return item.icon_name; } } [DBus (name = "OverlayIconName")] public string overlay_icon_name { owned get { return item.overlay_icon_name ?? ""; } } [DBus (name = "AttentionIconName")] public string attention_icon_name { owned get { return item.attention_icon_name ?? icon_name; } } [DBus (name = "ToolTip")] public DBusStatusNotifierItemToolTip tool_tip { owned get { return item.tool_tip ?? DBusStatusNotifierItemToolTip.empty(); } } [DBus (name = "ItemIsMenu")] public bool is_menu { get { return item.is_menu; } } [DBus (name = "Menu")] public ObjectPath menu { get { return menu_path; } } [DBus (name = "ContextMenu")] public void context_menu(int x, int y) throws Error { item.context_menu(x, y); } // Connecting to "Activate" causes a delay in opening the menu when using // "AppIndicator and KStatusNotifierItem Support" GNOME Shell extension, // because it waits too see if there is a double click //[DBus (name = "Activate")] //public void activate(int x, int y) throws Error { item.activate(x, y); } [DBus (name = "SecondaryActivate")] public void secondary_activate(int x, int y) throws Error { item.secondary_activate(x, y); } [DBus (name = "Scroll")] public void scroll(int delta, string orientation) throws Error { item.scroll(delta, orientation); } [DBus (name = "NewTitle")] public signal void on_new_title(); [DBus (name = "NewIcon")] public signal void on_new_icon(); [DBus (name = "NewMenu")] public signal void on_new_menu(); [DBus (name = "NewToolTip")] public signal void on_new_tool_tip(); [DBus (name = "NewStatus")] public signal void on_new_status(string status); } [DBus (name = "com.canonical.dbusmenu")] private class DBusMenu : Object { private StatusNotifierItem item; public DBusMenu(StatusNotifierItem item) { this.item = item; } [DBus (name = "Version")] public uint32 version { get { return 3; } } [DBus (name = "TextDirection")] public string text_direction { get { return "ltr"; } } [DBus (name = "Status")] public string status { get { return "normal"; } } public static int32[] get_children_ids(int32 parent_id, MenuModel model) { MenuModel local_model = model; int32 local_id = parent_id; if (local_id != 0) { var sub_id = local_id % 0xff - 1; HashTable links; if (local_model.get_n_items() <= sub_id) return {}; local_model.get_item_links(sub_id, out links); if (links == null || links.size() == 0) return {}; local_model = links.get_values().first().data; local_id = local_id >> 8; } int n = local_model.get_n_items(); int32[] arr = new int32[n]; for(int i = 0; i < n; i++) { arr[i] = (parent_id << 8) + i + 1; } return arr; } private static Gee.Map? get_properties(int32 id, MenuModel model) { if (id == 0) { Gee.Map result = new Gee.HashMap(); result["children-display"] = "submenu"; return result; } MenuModel local_model = model; int32 local_id = id; if (local_id > 0xff) { var sub_id = local_id % 0xff - 1; HashTable links; if (local_model.get_n_items() <= sub_id) return null; local_model.get_item_links(sub_id, out links); if (links == null || links.size() == 0) return null; local_model = links.get_values().first().data; local_id = local_id >> 8; } var sub_id = local_id - 1; if (local_model.get_n_items() <= sub_id) return null; HashTable attributes; local_model.get_item_attributes(sub_id, out attributes); if (attributes == null) return null; Gee.Map result = new Gee.HashMap(); attributes.for_each((key, val) => { switch(key) { case "submenu": result["children-display"] = "submenu"; break; case "section": result["children-display"] = "section"; break; default: result[key] = val; break; } }); return result; } public static VariantDict? get_properties_dict(int32 id, MenuModel model, string[] property_names) { var properties = get_properties(id, model); if (properties == null) return null; var dict = new VariantDict(); foreach(var entry in properties) { if (entry.key in property_names || property_names.length == 0) { dict.insert_value(entry.key, entry.value); } } return dict; } [DBus (name = "GetLayout")] public void get_layout(int32 parent_id, int32 recursion_depth, string[] property_names, out uint revision, [DBus (signature = "(ia{sv}av)")] out Variant layout) throws Error { var builder = new VariantBuilder(new VariantType("(ia{sv}av)")); builder.add("i", parent_id); var properties = get_properties_dict(parent_id, item.menu_model, property_names) ?? new VariantDict(); builder.add_value(properties.end()); Variant[] children = {}; if (recursion_depth != 0) { int32[] ids = get_children_ids(parent_id, item.menu_model); foreach(int32 id in ids) { Variant child; get_layout(id, recursion_depth - 1, property_names, null, out child); children += new Variant.variant(child); } } builder.add_value(new Variant.array(VariantType.VARIANT, children)); revision = item.menu_model_revision; layout = builder.end(); } [DBus (name = "GetGroupProperties")] public void get_group_properties(int32[] ids, string[] property_names, [DBus (signature = "a(ia{sv})")] out Variant properties) throws Error { Variant[] items = {}; foreach(int32 id in ids) { var properties_dict = get_properties_dict(id, item.menu_model, property_names); if (properties_dict != null) { var builder = new VariantBuilder(new VariantType("(ia{sv})")); builder.add("i", id); builder.add_value(properties_dict.end()); items += builder.end(); } } properties = new Variant.array(new VariantType("(ia{sv})"), items); } [DBus (name = "GetProperty")] public new void get_property(int32 id, string name, out Variant value) throws Error { var properties = get_properties(id, item.menu_model); if (properties != null && properties.has_key(name)) { value = properties[name]; } else { value = null; } } private bool resolve_event(int32 id, string event_id, Variant data, uint32 timestamp) throws Error { if (event_id == "clicked") { if (id == 0) return false; MenuModel local_model = item.menu_model; int32 local_id = id; if (local_id > 0xff) { var sub_id = local_id % 0xff - 1; HashTable links; if (local_model.get_n_items() <= sub_id) return false; local_model.get_item_links(sub_id, out links); if (links == null || links.size() == 0) return false; local_model = links.get_values().first().data; local_id = local_id >> 8; } var sub_id = local_id - 1; if (local_model.get_n_items() <= sub_id) return false; Variant? action_variant = local_model.get_item_attribute_value(sub_id, "action", VariantType.STRING); if (action_variant == null) return false; size_t action_length; unowned string actionu = action_variant.get_string(out action_length); string detailed_action = actionu.substring(0, (long) action_length); string action; Variant parameter; Action.parse_detailed_name(detailed_action, out action, out parameter); if (action.has_prefix("app.")) { GLib.Application.get_default().activate_action(action.substring(4), parameter); } else { warning("Unknown action: %s", action); return false; } } else { return false; } return true; } [DBus (name = "Event")] public void event(int32 id, string event_id, Variant data, uint32 timestamp) throws Error { resolve_event(id, event_id, data, timestamp); } [DBus (name = "EventGroup")] public int[] event_group(DBusMenuEventStruct[] events) throws Error { var ret = new Gee.ArrayList(); foreach(var ev in events) { if (!resolve_event(ev.id, ev.event_id, ev.data, ev.timestamp)) { ret.add(ev.id); } } if (ret.size == events.length) { throw new DBusError.INVALID_ARGS("None of the events were valid."); } return ret.to_array(); } public struct DBusMenuEventStruct { public int id; public string event_id; public GLib.Variant data; public uint timestamp; } [DBus (name = "AboutToShow")] public bool about_to_show(int32 id) throws Error { return false; } [DBus (name = "ItemsPropertiesUpdated")] public signal void item_properties_updated([DBus (signature = "a(ia{sv})")] Variant updated_properties, [DBus (signature = "a(ias)")] Variant removed_properties); [DBus (name = "LayoutUpdated")] public signal void layout_updated(uint32 revision, int32 parent); [DBus (name = "ItemActivationRequested")] public signal void item_activation_requested(int32 id, uint32 timestamp); } public struct DBusStatusNotifierIconData { public int width; public int height; public uint8[] data; } public struct DBusStatusNotifierItemToolTip { public string icon_name; public DBusStatusNotifierIconData[] icon; public string title; public string body; public static DBusStatusNotifierItemToolTip empty() { return { "", {}, "", "" }; } } public class StatusNotifierItem : Object { public string id { get; set; } public string title { get; set; } public string category { get; set; } public string status { get; set; } public int32 window_id { get; set; } public bool is_menu { get; set; } public bool host_registered { get; set; } public string icon_name { get; set; } public string? overlay_icon_name { get; set; } public string? attention_icon_name { get; set; } public DBusStatusNotifierItemToolTip? tool_tip { get; set; } public MenuModel? menu_model { get; set; } public uint32 menu_model_revision = 1; public signal void context_menu(int x, int y); public signal void activate(int x, int y); public signal void secondary_activate(int x, int y); public signal void scroll(int delta, string orientation); private DBusStatusNotifierItem dbus_item; private DBusMenu dbus_menu; private string name { owned get { return id; } } private bool registered; private uint name_owner_id; private DBusConnection dbus_connection; private uint dbus_item_registration_id; private uint dbus_menu_registration_id; private DBusStatusNotifierWatcher watcher; private void on_bus_acquired(DBusConnection dbus_connection) { try { this.dbus_connection = dbus_connection; if (menu_model == null) dbus_menu = null; if (menu_model != null && dbus_menu == null) dbus_menu = new DBusMenu(this); if (dbus_menu != null) dbus_menu_registration_id = dbus_connection.register_object("/StatusNotifierMenu", dbus_menu); if (dbus_item == null) dbus_item = new DBusStatusNotifierItem(this, dbus_menu != null ? new ObjectPath("/StatusNotifierMenu") : null); dbus_item_registration_id = dbus_connection.register_object("/StatusNotifierItem", dbus_item); notify["title"].connect((o, _) => ((StatusNotifierItem)o).dbus_item.on_new_title()); notify["icon-name"].connect((o, _) => ((StatusNotifierItem)o).dbus_item.on_new_icon()); notify["menu"].connect((o, _) => ((StatusNotifierItem)o).dbus_item.on_new_menu()); notify["tool-tip"].connect((o, _) => ((StatusNotifierItem)o).dbus_item.on_new_tool_tip()); notify["status"].connect((o, _) => ((StatusNotifierItem)o).dbus_item.on_new_status(((StatusNotifierItem)o).status)); notify["menu-model"].connect((o, _) => { ((StatusNotifierItem)o).dbus_menu.layout_updated(++((StatusNotifierItem)o).menu_model_revision, 0); try { var item = ((StatusNotifierItem)o); var menu = item.dbus_menu; Variant properties; menu.get_group_properties(DBusMenu.get_children_ids(0, item.menu_model), {}, out properties); menu.item_properties_updated(properties, new Variant.array(new VariantType("(ia{sv})"), {})); } catch (Error e) { critical(e.message); } }); } catch (IOError e) { critical("on_bus_acquired: %s", e.message); } } private void on_name_acquired (DBusConnection dbus_connection) { try { watcher = Bus.get_proxy_sync(BusType.SESSION, "org.kde.StatusNotifierWatcher", "/StatusNotifierWatcher"); watcher.host_registered.connect(() => host_registered = true); watcher.host_unregistered.connect(() => host_registered = false); host_registered = watcher.is_host_registered; } catch (IOError e) { critical("on_name_acquired: %s", e.message); } } public void init() { if (id == null) critical("StatusNotifierItem.id not set before initializing"); name_owner_id = Bus.own_name(BusType.SESSION, name, BusNameOwnerFlags.NONE, on_bus_acquired, on_name_acquired, () => warning("Could not acquire name: %s", name)); } public void register() { if (watcher == null || registered) return; watcher.register_item.begin(name); registered = true; } public void unregister() { if (!registered) return; if (name_owner_id != 0) Bus.unown_name(name_owner_id); name_owner_id = 0; if (dbus_item_registration_id != 0 && dbus_connection != null) dbus_connection.unregister_object(dbus_item_registration_id); if (dbus_menu_registration_id != 0 && dbus_connection != null) dbus_connection.unregister_object(dbus_menu_registration_id); dbus_item_registration_id = 0; dbus_menu_registration_id = 0; dbus_connection = null; registered = false; } } ================================================ FILE: src/status.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2024 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ public class Status : Object { public int status_int; public string status_text; public string status_sortable; public string message; public string connection_type; public Status (string status) { message = ""; connection_type = ""; set_status (status); } public Status.complete (string status, string? connection, string? _message) { message = _message; set_connection_type (connection); set_status (status); } public void set_status (string status) { if (status == " ") { status_int = 0; status_text = _("Offline"); status_sortable = "f"; } else if (status == "*") { status_int = 1; status_text = _("Online"); if (connection_type == _("Relayed")) { status_sortable = "b"; } else { status_sortable = "a"; } } else if (status == "x") { status_int = 2; status_text = _("Unreachable"); status_sortable = "d"; } else if (status == "?") { status_int = 3; status_text = _("Awaiting approval"); status_sortable = "c"; } else if (status == "!") { status_int = 4; status_text = _("Unknown error"); status_sortable = "e"; if (message == "IP protocol mismatch between you and peer") { status_text = _("Protocol mismatch"); } else if (message == "This address is also used by another peer") { status_text = _("Conflicting address"); } } } private void set_connection_type (string? connection) { connection_type = ""; if (connection == null) { return; } else if (connection == "direct") { connection_type = _("Direct"); } else if (connection.contains ("via ")) { connection_type = _("Relayed"); } } public string get_css_classes () { string icon_name = ""; if (status_int == 0) { icon_name = "network-node-offline"; } if (status_int == 1) { if (connection_type == _("Relayed")) { icon_name = "network-node-online-relayed"; } else { icon_name = "network-node-online"; } } else if (status_int == 2) { icon_name = "network-node-unreachable"; } else if (status_int == 3) { icon_name = "network-node-unapproved"; } else if (status_int == 4) { icon_name = "network-node-error"; } return icon_name; } } ================================================ FILE: src/utils.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { public class Utils : Object { public static string remove_mnemonics (owned string label) { try { label = new Regex ("""\(_[a-zA-Z]\)""").replace (label, -1, 0, ""); // Japanese translations label = label.replace ("_", ""); // All other translations } catch (RegexError e) { critical ("remove_mnemonics: %s", e.message); } return label; } public static string clean_string (owned string _string) { _string = _string.replace ("\\", "\\\\"); _string = _string.replace ("\"", "\\\""); return _string; } public static string parse_nick (string nick) { var parsed_nick = nick; if (nick == "%USERNAME") { parsed_nick = Environment.get_user_name (); } else if (nick == "%REALNAME") { parsed_nick = Environment.get_real_name (); } else if (nick == "%HOSTNAME") { parsed_nick = Environment.get_host_name (); } return parsed_nick; } public static unowned Gtk.IconTheme get_icon_theme () { return Gtk.IconTheme.get_for_display (Gdk.Display.get_default ()); } public static string get_available_theme_icon (string[] icon_names) { var icon_theme = get_icon_theme (); // Check each icon name in the list for existence, and return immediately if it does foreach (string icon_name in icon_names) { if (icon_theme.has_icon (icon_name)) { return icon_name; } } // Return the first icon name as fallback return icon_names[0]; } public static bool path_exists (string type, string path) { var result = FileUtils.test (path, FileTest.EXISTS); debug ("path_exists: FileUtils tested %s for path %s", result.to_string (), path); if (result) { return true; } if (Xdp.Portal.running_under_flatpak ()) { string output = Command.return_output ("bash -c \"test -%s %s &>/dev/null || echo 'path not found'\"".printf (type, path)); debug ("path_exists test output: %s", output); if (!output.contains ("path not found")) { return true; } } debug ("path_exists: Path %s was not found", path); return false; } public static string get_debug_info () { var gtk_settings = Gtk.Settings.get_default (); var kernel = Command.return_output ("uname -sri").strip (); var distro = Command.return_output ("awk -F= '/^PRETTY_NAME/ {gsub(/\"/,\"\"); print $2}' /etc/os-release").strip (); var initsys = Command.return_output ("ps -p 1 -o comm=").strip (); var engine = Command.return_output ("cat %s".printf (Hamachi.CONFIG_PATH)); return """ Haguichi: %s Distribution: %s Kernel: %s Vala: %s GLib: %s.%s.%s GTK: %s.%s.%s Adwaita: %s Color scheme: %s Accent color: %s High contrast: %s Theme: %s Icons: %s Font: %s Decoration layout: %s Locale: %s Desktop: %s Session: %s Flatpak: %s Hamachi: %s IP mode: %s Service: %s Init: %s Sudo: %s Terminal: %s File manager: %s Remote desktop: %s Engine override: %s""".printf ( Config.VERSION, distro, kernel, Config.VALA_VERSION, Version.MAJOR.to_string (), Version.MINOR.to_string (), Version.MICRO.to_string (), Gtk.MAJOR_VERSION.to_string (), Gtk.MINOR_VERSION.to_string (), Gtk.MICRO_VERSION.to_string (), Adw.VERSION_S, app.style_manager.color_scheme.to_string ().replace ("ADW_COLOR_SCHEME_", "").down (), #if ADW_1_6 app.style_manager.accent_color.to_string ().replace ("ADW_ACCENT_COLOR_", "").down (), #else "(not available)", #endif app.style_manager.high_contrast.to_string (), gtk_settings.gtk_theme_name, gtk_settings.gtk_icon_theme_name, gtk_settings.gtk_font_name, gtk_settings.gtk_decoration_layout, Environment.get_variable ("LANG"), Environment.get_variable ("XDG_CURRENT_DESKTOP"), Environment.get_variable ("XDG_SESSION_TYPE"), Xdp.Portal.running_under_flatpak ().to_string (), Hamachi.version, Hamachi.ip_version, Hamachi.service, initsys, Command.sudo, Command.exists (Command.terminal) ? Command.terminal : null, Command.exists (Command.file_manager) ? Command.file_manager : null, Command.exists (Command.remote_desktop) ? Command.remote_desktop : null, engine ).chug (); } } } ================================================ FILE: src/widgets/command-entry-row.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/widgets/command-entry-row.ui")] public class CommandEntryRow : Adw.EntryRow { [GtkChild] public unowned Gtk.MenuButton menu_button; [GtkChild] public unowned CommandVariableButton address_var; [GtkChild] public unowned CommandVariableButton nickname_var; [GtkChild] public unowned CommandVariableButton client_id_var; [GtkChild] public unowned CommandVariableButton terminal_var; [GtkChild] public unowned CommandVariableButton file_manager_var; [GtkChild] public unowned CommandVariableButton remote_desktop_var; } } ================================================ FILE: src/widgets/command-variable-button.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/widgets/command-variable-button.ui")] public class CommandVariableButton : Gtk.Button { [GtkChild] unowned Gtk.Label title_label; [GtkChild] unowned Gtk.Label variable_label; public string title { get { return title_label.label; } set { title_label.label = value; } } public string variable { get { return variable_label.label; } set { variable_label.label = value; } } [GtkCallback] private void on_insert_value () { // Find menu button and close popover var menu_button = (Gtk.MenuButton) get_ancestor (typeof (Gtk.MenuButton)); menu_button.popdown (); // Find entry and insert variable at cursor position var entry = (Adw.EntryRow) get_ancestor (typeof (Adw.EntryRow)); var position = entry.cursor_position; entry.do_insert_text (variable, -1, ref position); } } } ================================================ FILE: src/widgets/commands-editor-row.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/widgets/commands-editor-row.ui")] public class CommandsEditorRow : Adw.ActionRow { private CommandsEditor editor; private double drag_x = 0; private double drag_y = 0; public bool is_active; public bool is_default; public string label; public string command_ipv4; public string command_ipv6; public string priority; [GtkChild] unowned Gtk.Image drag_handle; [GtkChild] unowned Gtk.Image default_emblem; [GtkChild] unowned Gtk.Switch command_switch; [GtkChild] unowned Gtk.MenuButton command_menu_button; construct { install_action ("row.open-menu", null, (Gtk.WidgetActionActivateFunc) on_open_menu); install_action ("row.edit", null, (Gtk.WidgetActionActivateFunc) on_edit); install_action ("row.duplicate", null, (Gtk.WidgetActionActivateFunc) on_duplicate); install_action ("row.move-up", null, (Gtk.WidgetActionActivateFunc) on_move_up); install_action ("row.move-down", null, (Gtk.WidgetActionActivateFunc) on_move_down); install_action ("row.set-default", null, (Gtk.WidgetActionActivateFunc) on_set_deault); install_action ("row.remove", null, (Gtk.WidgetActionActivateFunc) on_remove); drag_handle.icon_name = Utils.get_available_theme_icon ({ "list-drag-handle-symbolic", "drag-handle-symbolic" }); default_emblem.icon_name = Utils.get_available_theme_icon ({ "object-select-symbolic", "emblem-default-symbolic", "emblem-ok-symbolic", "selection-mode-symbolic" }); } public CommandsEditorRow (CommandsEditor _editor, bool _is_active, bool _is_default, string _label, string _command_ipv4, string _command_ipv6, string _priority) { editor = _editor; is_active = _is_active; is_default = _is_default; command_switch.active = is_active; command_switch.state_set.connect ((state) => { is_active = state; editor.update_commands (); return false; }); update (_label, _command_ipv4, _command_ipv6, _priority); set_default (is_default); } public void on_open_menu () { command_menu_button.popup (); } public void on_edit () { editor.edit_command (this); } public void on_duplicate () { editor.duplicate_command (this); } public void on_move_up () { editor.move_command (this, get_index () - 1); } public void on_move_down () { editor.move_command (this, get_index () + 1); } public void on_set_deault () { editor.set_default (this); } public void on_remove () { editor.remove_command (this); } [GtkCallback] public Gdk.ContentProvider on_drag_prepare (double x, double y) { drag_x = x; drag_y = y; return new Gdk.ContentProvider.for_value (this); } [GtkCallback] public void on_drag_begin (Gtk.DragSource source, Gdk.Drag drag) { drag.set_hotspot ((int) drag_x, (int) drag_y); var drag_row = new CommandsEditorRow (editor, is_active, is_default, label, command_ipv4, command_ipv6, priority); // Property 'use_underline' with value 'true' triggers a segmentation fault here, // so turn it off and remove underscores manually drag_row.use_underline = false; drag_row.title = _(label).replace ("_", ""); var drag_widget = new Gtk.ListBox (); drag_widget.set_size_request (get_width (), get_height ()); #if FOR_ELEMENTARY // Add "boxed-list" class to get some styling on our dragged row drag_widget.add_css_class ("boxed-list"); #endif drag_widget.append (drag_row); drag_widget.drag_highlight_row (drag_row); var icon = (Gtk.DragIcon) #if VALA_0_56_19 new #endif Gtk.DragIcon.get_for_drag (drag); icon.child = drag_widget; } [GtkCallback] public bool on_drop (Gtk.DropTarget target, GLib.Value val, double x, double y) { var row = (CommandsEditorRow) val; if (row == this) { // Do nothing if dropped onto itself return false; } else { // Move dropped row to index of this editor.move_command (row, get_index ()); return true; } } public void update (string _label, string _command_ipv4, string _command_ipv6, string _priority) { label = _label; command_ipv4 = _command_ipv4; command_ipv6 = _command_ipv6; priority = _priority; string command = (priority == "IPv6") ? command_ipv6 : command_ipv4; string address = (priority == "IPv6") ? "2620:9b::56d:f78e" : "25.123.456.78"; title = _(_label); subtitle = Command.replace_variables (command, address, "Nick", "090-123-456"); } public void set_default (bool _is_default) { is_default = _is_default; default_emblem.visible = is_default; } } } ================================================ FILE: src/widgets/commands-editor.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/widgets/commands-editor.ui")] public class CommandsEditor : Adw.PreferencesGroup { private Settings settings; private string[] default_commands; private string[] undo_remove_commands_string; private List rows; private CommandsEditorRow selected_row; private ConfirmDialog dialog; private int insert_position; private Adw.Toast toast; [GtkChild] unowned Gtk.Button restore_button; [GtkChild] unowned Gtk.ListBox list_box; construct { settings = new Settings (Config.APP_ID + ".commands"); default_commands = (string[]) settings.get_default_value ("customizable"); rows = new List (); populate (); set_button_sensitivity (compose_commands_string ()); } [GtkCallback] private void on_row_activated (Gtk.ListBoxRow row) { if (row.get_index () == (int) rows.length ()) { on_add_command (); } else { edit_command ((CommandsEditorRow) row); } } [GtkCallback] private void on_add_command () { // Insert new command at the end of the list insert_position = (int) rows.length (); new Haguichi.AddEditCommandDialog ("Add", this, "", "", "", "IPv4"); } [GtkCallback] private void on_restore_commands () { var parent = (Adw.Dialog) get_ancestor (typeof (Adw.Dialog)); dialog = new ConfirmDialog (parent, _("Restore default commands?"), _("All customizations will be lost."), _("_Restore"), Adw.ResponseAppearance.DESTRUCTIVE); dialog.confirm.connect (() => { refill (default_commands); }); } private void undo_remove () { refill (undo_remove_commands_string); } private void refill (string[] commands_string) { settings.set_strv ("customizable", commands_string); populate (); update_commands (); } public void set_default (CommandsEditorRow default_row) { foreach (CommandsEditorRow row in rows) { row.set_default (row == default_row); } update_commands (); } public void move_command (CommandsEditorRow row, int new_index) { // Remove the row and insert at new index rows.remove (row); rows.insert (row, new_index); list_box.remove (row); list_box.insert (row, new_index); update_commands (); } public void remove_command (CommandsEditorRow row) { undo_remove_commands_string = compose_commands_string (); rows.remove (row); list_box.remove (row); update_commands (); toast = new Adw.Toast (_("Removed command “%s”").printf (Utils.remove_mnemonics (_(row.label)))) { use_markup = false }; toast.button_label = _("_Undo"); toast.button_clicked.connect (() => { undo_remove (); }); var dialog = (Adw.PreferencesDialog) get_ancestor (typeof (Adw.PreferencesDialog)); dialog.add_toast (toast); } public void update_selected_command (string label, string command_ipv4, string command_ipv6, string priority) { selected_row.update (label, command_ipv4, command_ipv6, priority); update_commands (); } public void insert_command (string label, string command_ipv4, string command_ipv6, string priority) { var row = new CommandsEditorRow (this, true, false, label, command_ipv4, command_ipv6, priority); rows.insert (row, insert_position); list_box.insert (row, insert_position); update_commands (); } public void edit_command (CommandsEditorRow row) { selected_row = row; new Haguichi.AddEditCommandDialog ("Edit", this, _(row.label), row.command_ipv4, row.command_ipv6, row.priority); } public void duplicate_command (CommandsEditorRow row) { // Insert duplicated command after the original insert_position = row.get_index () + 1; new Haguichi.AddEditCommandDialog ("Add", this, _(row.label), row.command_ipv4, row.command_ipv6, row.priority); } private void clear () { foreach (CommandsEditorRow row in rows) { list_box.remove (row); } rows = new List (); } public void populate () { clear (); string[] commands = settings.get_strv ("customizable"); var index = 0; foreach (string command in commands) { string[] parts = command.split (";", 6); if (parts.length == 6) { bool is_active = bool.parse (parts[0]); bool is_default = bool.parse (parts[1]); string command_ipv4 = parts[3]; string command_ipv6 = parts[4]; string priority = parts[5]; command_ipv4 = command_ipv4.replace ("{COLON}", ";"); command_ipv6 = command_ipv6.replace ("{COLON}", ";"); var row = new CommandsEditorRow (this, is_active, is_default, parts[2], command_ipv4, command_ipv6, priority); rows.append (row); list_box.insert (row, index); index ++; } } } public void update_commands () { if (toast != null) { toast.dismiss (); } var commands_string = compose_commands_string (); set_button_sensitivity (commands_string); settings.set_strv ("customizable", commands_string); Command.fill_custom_commands (); } private string[] compose_commands_string () { string[] commands_string = {}; foreach (CommandsEditorRow row in rows) { commands_string += compose_command_string (row); } return commands_string; } private string compose_command_string (CommandsEditorRow row) { string command_ipv4 = row.command_ipv4.replace (";", "{COLON}"); string command_ipv6 = row.command_ipv6.replace (";", "{COLON}"); return string.join (";", row.is_active.to_string (), row.is_default.to_string (), row.label, command_ipv4, command_ipv6, row.priority.to_string ()); } private void set_button_sensitivity (string[] commands_string) { // Set restore button sensitive if the current commands are different than the default restore_button.sensitive = (string.joinv ("", commands_string) != string.joinv ("", default_commands)); // Update enabled state for row actions var total = (int) rows.length () - 1; foreach (CommandsEditorRow row in rows) { var index = row.get_index (); row.action_set_enabled ("row.move-up", index > 0); row.action_set_enabled ("row.move-down", index < total); row.action_set_enabled ("row.set-default", !row.is_default); } } } } ================================================ FILE: src/widgets/sidebar-page.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2025 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/widgets/sidebar-page.ui")] public class SidebarPage : Gtk.Box, Gtk.Buildable { [GtkChild] unowned Gtk.Label label; [GtkChild] unowned Gtk.ListBox list_box; #if FOR_ELEMENTARY construct { label.margin_start = 12; label.margin_end = 12; list_box.add_css_class ("rich-list"); } #endif public string heading { get { return label.label; } set { label.label = value; } } public bool heading_selectable { get { return label.selectable; } set { label.selectable = value; } } public void add_child (Gtk.Builder builder, Object child, string? type) { if (type == "row") { list_box.add_child (builder, child, type); return; } base.add_child (builder, child, type); } } } ================================================ FILE: src/widgets/sidebar-row.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/widgets/sidebar-row.ui")] public class SidebarRow : Adw.ActionRow, Gtk.Buildable { [GtkChild] unowned Gtk.Button copy_button; public void set_value (string? value) { subtitle = value == null ? "" : value; visible = (value != null && value != ""); } public bool show_copy { get { return copy_button.visible; } set { copy_button.visible = value; } } [GtkCallback] private void on_copy_value () { win.get_clipboard ().set_text (subtitle); win.show_copied_to_clipboard_toast (); } } } ================================================ FILE: src/widgets/throbber.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2024 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ #if ADW_1_6 using Adw; #else using Gtk; #endif namespace Haguichi { public class Throbber : Adw.Bin { public Spinner spinner; construct { spinner = new Spinner () { width_request = 20, height_request = 20 }; set_child (spinner); } public bool spinning { #if ADW_1_6 get; set; #else get { return spinner.spinning; } set { spinner.spinning = value; } #endif } } } ================================================ FILE: src/window.vala ================================================ /* * This file is part of Haguichi, a graphical frontend for Hamachi. * Copyright (C) 2007-2026 Stephen Brandt * * Haguichi is free software: 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. * * SPDX-License-Identifier: GPL-3.0-or-later */ using Config; namespace Haguichi { [GtkTemplate (ui = "/com/github/ztefn/haguichi/ui/window.ui")] public class Window : Adw.ApplicationWindow { [GtkChild] private unowned Adw.ToastOverlay toast_overlay; [GtkChild] public unowned Adw.OverlaySplitView split_view; [GtkChild] public unowned Adw.WindowTitle window_title; [GtkChild] public unowned Adw.StatusPage not_installed_status_page; [GtkChild] public unowned Sidebar sidebar; [GtkChild] public unowned Gtk.Revealer sidebar_title_revealer; [GtkChild] public unowned Adw.WindowTitle sidebar_title; [GtkChild] public unowned NetworkList network_list; [GtkChild] private unowned Gtk.Button refresh_button; [GtkChild] public unowned Gtk.ToggleButton connect_button; [GtkChild] public unowned Gtk.ToggleButton disconnect_button; [GtkChild] public unowned Gtk.ToggleButton search_button; [GtkChild] public unowned Gtk.SearchBar search_bar; [GtkChild] public unowned Gtk.SearchEntry search_entry; [GtkChild] public unowned Gtk.Stack stack; [GtkChild] public unowned Gtk.Stack connected_stack; [GtkChild] public unowned Gtk.Stack disconnected_stack; [GtkChild] public unowned Adw.StatusPage restore_status_page; [GtkChild] public unowned Throbber throbber; [GtkChild] private unowned Gtk.Button configure_button; [GtkChild] private unowned Gtk.Button overlay_refresh_button; [GtkChild] private unowned Gtk.MenuButton overlay_add_network_button; private Xdp.Portal portal = new Xdp.Portal (); public Gtk.Widget modal_dialog; #if FOR_ELEMENTARY private static Gtk.CssProvider provider; [GtkChild] public unowned Adw.HeaderBar header_bar; #endif public Window (Application app) { Object (application: app, title: APP_NAME, icon_name: APP_ID); var config = new Settings (APP_ID + ".config"); var list = new Settings (APP_ID + ".network-list"); var ui = new Settings (APP_ID + ".ui"); set_nick (demo_mode ? "Joe Demo" : Utils.parse_nick (config.get_string ("nickname"))); var sort_by = list.create_action ("sort-by"); add_action (sort_by); var show_offline_members = list.create_action ("show-offline-members"); add_action (show_offline_members); app.set_color_scheme ((int) ui.get_enum ("color-scheme")); #if ADW_1_7 add_css_class ("adw-1-7"); #endif if (strv_contains (Intl.get_language_names (), "ru")) { add_css_class ("custom"); } #if FOR_ELEMENTARY // Update stylesheet when dark mode is turned on or off Adw.StyleManager.get_default ().notify["dark"].connect (load_stylesheet); load_stylesheet (); // Move search button to the right because the close button takes up a lot of space on the left search_button.unparent (); header_bar.pack_end (search_button); ((Gtk.Box) search_button.get_ancestor (typeof (Gtk.Box))).spacing = 0; // Add CSS classes to toggle button inside the menu button to get correct styling var toggle_button = (Gtk.ToggleButton) overlay_add_network_button.get_first_child (); toggle_button.add_css_class ("circular"); toggle_button.add_css_class ("suggested-action"); #endif default_width = ui.get_int ("width"); default_height = ui.get_int ("height"); ui.bind ("width", this, "default-width", DEFAULT); ui.bind ("height", this, "default-height", DEFAULT); indicator = new Indicator (); indicator.active = ui.get_boolean ("show-indicator"); update_indicator_status (); // Create controller to capture Delete key presses in the search entry // and activate row delete action when there is no actual text to delete var key_controller = new Gtk.EventControllerKey (); key_controller.propagation_phase = Gtk.PropagationPhase.CAPTURE; key_controller.key_pressed.connect ((keyval, keycode, state) => { if (keyval == Gdk.Key.Delete) { if (search_entry.cursor_position == search_entry.text.length) { network_list.on_delete_row (); // Stop propagation return true; } } // Continue propagation return false; }); search_entry.add_controller (key_controller); search_entry.search_changed.connect (() => { network_list.autoselect (search_entry.text.length > 0); network_list.refilter (); }); search_entry.activate.connect (() => { network_list.on_activate (); }); hide.connect (() => { session.visibility_changed (false); update_indicator_status (); }); show.connect (() => { session.visibility_changed (true); update_indicator_status (); }); } construct { install_action ("win.connect", null, (Gtk.WidgetActionActivateFunc) connect_action); install_action ("win.disconnect", null, (Gtk.WidgetActionActivateFunc) disconnect_action); install_action ("win.join-network", null, (Gtk.WidgetActionActivateFunc) join_network_action); install_action ("win.create-network", null, (Gtk.WidgetActionActivateFunc) create_network_action); install_action ("win.attach", null, (Gtk.WidgetActionActivateFunc) attach_action); install_action ("win.attach-cancel", null, (Gtk.WidgetActionActivateFunc) attach_cancel_action); install_action ("win.start-search", null, (Gtk.WidgetActionActivateFunc) start_search_action); install_action ("win.refresh", null, (Gtk.WidgetActionActivateFunc) refresh_action); install_action ("win.toggle-sidebar", null, (Gtk.WidgetActionActivateFunc) toggle_sidebar_action); install_action ("win.cycle-mode", null, (Gtk.WidgetActionActivateFunc) cycle_mode_action); install_action ("win.expand-all-networks", null, (Gtk.WidgetActionActivateFunc) expand_all_networks_action); install_action ("win.collapse-all-networks", null, (Gtk.WidgetActionActivateFunc) collapse_all_networks_action); install_action ("win.preferences", null, (Gtk.WidgetActionActivateFunc) preferences_action); install_action ("win.shortcuts", null, (Gtk.WidgetActionActivateFunc) shortcuts_action); install_action ("win.help", null, (Gtk.WidgetActionActivateFunc) help_action); install_action ("win.info", null, (Gtk.WidgetActionActivateFunc) info_action); install_action ("win.about", null, (Gtk.WidgetActionActivateFunc) about_action); install_action ("win.quit", null, (Gtk.WidgetActionActivateFunc) quit_action); } #if FOR_ELEMENTARY private void load_stylesheet () { if (provider == null) { provider = new Gtk.CssProvider (); } provider.load_from_resource ("/com/github/ztefn/haguichi/elementary%s.css".printf (Adw.StyleManager.get_default ().dark ? "-dark" : "")); Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif [GtkCallback] private void download_hamachi () { Command.open_redirect_uri ("get-hamachi"); } [GtkCallback] private void configure_hamachi () { window_title.subtitle = _("Configuring"); configure_button.sensitive = false; action_set_enabled ("win.refresh", false); if (!demo_mode) { Hamachi.configure (); } } [GtkCallback] private void cancel_restore () { Controller.restore = false; Controller.connection_stopped (); network_list.clear_state (); } [GtkCallback] private void go_back_button_clicked () { split_view.show_sidebar = false; } private void connect_action () { Controller.start_hamachi (); } private void disconnect_action () { Controller.stop_hamachi (); } private void join_network_action () { add_network_action ("Join"); } private void create_network_action () { add_network_action ("Create"); } private void add_network_action (string mode) { var add_network = new JoinCreateNetworkDialog (mode); show_dialog (add_network); } private void attach_action () { var attach = new AttachDialog (); show_dialog (attach); } private void attach_cancel_action () { new Thread (null, () => { Hamachi.cancel (); return null; }); sidebar.set_account ("-"); } private void start_search_action () { search_bar.search_mode_enabled = true; search_entry.grab_focus (); } private void refresh_action () { if (Controller.last_status <= 1) { Controller.init (); } else if (Controller.last_status >= 6) { Controller.update_connection (); } } private void toggle_sidebar_action () { if (split_view.collapsed == false) return; toggle_sidebar (); } private void cycle_mode_action () { if (!demo_mode) return; var cur_mode = get_mode (); var new_mode = ""; switch (cur_mode) { case "Initializing": new_mode = "Disconnected"; break; case "Disconnected": new_mode = "Connecting"; break; case "Connecting": new_mode = "Connected"; break; case "Connected": new_mode = "Not installed"; break; case "Not installed": new_mode = "Not configured"; break; case "Not configured": new_mode = "Initializing"; break; } debug ("new mode: %s", new_mode); set_mode (new_mode); } private void expand_all_networks_action () { network_list.set_all_rows_expanded (true); } private void collapse_all_networks_action () { network_list.set_all_rows_expanded (false); } private void preferences_action () { var prefs = new Preferences () { search_enabled = true }; show_dialog (prefs); } private void shortcuts_action () { #if ADW_1_8 var builder = new Gtk.Builder.from_resource ("/com/github/ztefn/haguichi/ui/shortcuts-dialog.ui"); var shortcuts = (Adw.ShortcutsDialog) builder.get_object ("shortcuts"); #else var builder = new Gtk.Builder.from_resource ("/com/github/ztefn/haguichi/ui/shortcuts-window.ui"); var shortcuts = (Gtk.ShortcutsWindow) builder.get_object ("shortcuts"); #endif #if FOR_ELEMENTARY // Find the search button so that we can fix its appearance var toggle_button = (Gtk.Widget) shortcuts .get_first_child () // GtkBox .get_next_sibling () // GtkHeaderBar .get_first_child () // GtkWindowHandle .get_first_child () // GtkCenterBox .get_first_child () // GtkBox .get_first_child () // GtkWindowControls .get_next_sibling (); // GtkToggleButton // If the search button was found then change the vertical alignment if (toggle_button is Gtk.ToggleButton) { ((Gtk.ToggleButton) toggle_button).valign = Gtk.Align.CENTER; } #endif show_dialog (shortcuts); } private void help_action () { Command.open_redirect_uri ("help"); } private void info_action () { show_info (); } private void about_action () { var developer_name = "Stephen Brandt"; var about = new Adw.AboutDialog () { application_name = APP_NAME, application_icon = APP_ID, copyright = "© 2007-2026 %s".printf (developer_name), debug_info_filename = "haguichi-debug-info_%s.txt".printf (new DateTime.now_local ().format ("%Y-%m-%dT%H:%M")), developer_name = developer_name, issue_url = "https://github.com/ztefn/haguichi/issues", license_type = Gtk.License.GPL_3_0, // Translator credits. Put one translator per line, in the form of "NAME URL". translator_credits = _("translator-credits"), version = VERSION, website = "https://haguichi.net", // Lower minimum width request to match window width_request = width_request }; #if FOR_UBUNTU if (Utils.get_icon_theme ().theme_name.has_prefix ("Yaru")) { about.artists = { "Sam Hewitt https://github.com/snwh", "Stuart Jaggers https://github.com/ubuntujaggers" }; } #endif show_dialog (about); // Get debug information in a separate thread new Thread (null, () => { about.debug_info = Utils.get_debug_info (); return null; }); } private void quit_action () { Controller.quit (); if (modal_dialog != null) { modal_dialog.destroy (); } hide (); connection.save_long_nicks (); session.quitted (); debug ("quit_action: Bye!"); app.quit (); } public void trigger_action (string action_name) { activate_action_variant ("win." + action_name, null); } public void show_dialog (Gtk.Widget widget) { if (modal_dialog != null) return; if (widget is Gtk.Window) { var dialog = (Gtk.Window) widget; dialog.transient_for = this; dialog.modal = true; dialog.close_request.connect (() => { set_modal_dialog (null); return false; }); dialog.present (); set_modal_dialog (dialog); } else if (widget is Adw.Dialog) { var dialog = (Adw.Dialog) widget; dialog.closed.connect (() => { set_modal_dialog (null); }); dialog.present (this); set_modal_dialog (dialog); } } private void set_modal_dialog (Gtk.Widget? dialog) { modal_dialog = dialog; session.modality_changed (dialog == null ? false : true); update_indicator_status (); } public void show_toast (string title, uint timeout = 5) { toast_overlay.add_toast (new Adw.Toast (title) { timeout = timeout, use_markup = false }); } public void show_copied_to_clipboard_toast () { show_toast (_("Copied to clipboard"), 2); } public void show_info () { network_list.unselect (); split_view.show_sidebar = true; } public void toggle_sidebar () { split_view.show_sidebar = !split_view.show_sidebar; } public void show_sidebar () { split_view.show_sidebar = (default_width > 520); split_view.pin_sidebar = false; } public void hide_sidebar () { split_view.show_sidebar = false; split_view.pin_sidebar = true; } public void set_nick (string nick) { window_title.title = (nick == "") ? _("Anonymous") : nick; } public void set_connected_stack_page (string page) { connected_stack.visible_child_name = page; } public void set_disconnected_stack_page (string page) { disconnected_stack.visible_child_name = page; } public void set_restore_countdown (int countdown) { restore_status_page.description = ngettext ("Reconnecting in {0} second", "Reconnecting in {0} seconds", countdown).replace ("{0}", countdown.to_string ()); } public string get_mode () { return stack.visible_child_name; } public void set_mode (string mode) { session.mode_changed (mode); stack.visible_child_name = mode; bool is_configured = mode.down ().contains ("connect"); action_set_enabled ("win.connect", mode == "Disconnected"); action_set_enabled ("win.disconnect", mode == "Connected"); action_set_enabled ("win.join-network", mode == "Connected"); action_set_enabled ("win.create-network", mode == "Connected"); action_set_enabled ("win.start-search", mode == "Connected"); action_set_enabled ("win.refresh", true); action_set_enabled ("win.toggle-sidebar", is_configured); action_set_enabled ("win.info", is_configured); action_set_enabled ("win.sort-by", is_configured); action_set_enabled ("win.show-offline-members", is_configured); refresh_button.visible = (mode == "Not installed" || mode == "Not configured"); if (mode == "Not installed") { if (demo_mode || Hamachi.version == "") { not_installed_status_page.title = _("Hamachi Is Not Installed"); } else { not_installed_status_page.title = _("Hamachi Version %s Is Obsolete").printf (Hamachi.version); } } connect_button.visible = (mode == "Disconnected"); disconnect_button.visible = (mode == "Connecting" || mode == "Connected"); search_button.visible = is_configured; search_button.sensitive = (mode == "Connected"); search_bar.sensitive = (mode == "Connected"); if (mode != "Connected") { search_bar.search_mode_enabled = false; } if (is_configured) { sidebar.attach_button.sensitive = (mode == "Connected"); sidebar.cancel_button.sensitive = (mode == "Connected"); show_sidebar (); } else { hide_sidebar (); } throbber.spinning = (mode == "Connecting"); configure_button.sensitive = (mode == "Not configured" && Hamachi.service != ""); overlay_refresh_button.visible = (mode == "Connected"); overlay_add_network_button.visible = (mode == "Connected"); if (mode == "Initializing") { window_title.subtitle = _("Initializing"); } else if (mode == "Connecting") { window_title.subtitle = _("Connecting"); } else if (mode == "Connected") { window_title.subtitle = _("Connected"); } else { window_title.subtitle = _("Disconnected"); sidebar.show_page ("Information"); } // Only sandboxed applications can set background status if (Xdp.Portal.running_under_flatpak ()) { set_background_status.begin (); } update_indicator_status (); } public async void set_background_status () { try { bool success = yield portal.set_background_status (window_title.subtitle, null); if (!success) { warning ("set_background_status: Updating background status failed"); } } catch (Error e) { critical ("set_background_status: %s", e.message); } } public void update_indicator_status () { if (indicator != null) { indicator.update_status (get_mode (), modal_dialog != null, visible); } } public override void hide () { if (modal_dialog == null) { base.hide (); } } public override bool close_request () { // If connecting or connected request to run in background var mode = get_mode (); if (mode == "Connecting" || mode == "Connected") { request_background.begin ((obj, res) => { if (request_background.end (res)) { hide (); } else { destroy (); } }); } else { destroy (); } return true; } public async bool request_background () { var parent = Xdp.parent_new_gtk (this); var command = new GenericArray (); command.add (APP_ID); command.add ("--background"); try { return yield portal.request_background ( parent, _("Haguichi will continue to run when its window is closed so that it can monitor the connection and send notifications."), command, Xdp.BackgroundFlags.NONE, null ); } catch (Error e) { critical ("request_background: %s", e.message); // If background portal is not available then return true to hide window return true; } } } }