pax_global_header00006660000000000000000000000064145770214070014521gustar00rootroot0000000000000052 comment=555c4f54e11f8975a415d3f129e643d74fd1f796 Kooha-2.3.0/000077500000000000000000000000001457702140700125645ustar00rootroot00000000000000Kooha-2.3.0/.github/000077500000000000000000000000001457702140700141245ustar00rootroot00000000000000Kooha-2.3.0/.github/FUNDING.yml000066400000000000000000000001561457702140700157430ustar00rootroot00000000000000# These are supported funding model platforms github: SeaDve custom: ["https://www.buymeacoffee.com/seadve"] Kooha-2.3.0/.github/ISSUE_TEMPLATE/000077500000000000000000000000001457702140700163075ustar00rootroot00000000000000Kooha-2.3.0/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000020541457702140700210020ustar00rootroot00000000000000--- name: Bug report about: Create a bug report to help Kooha improve. title: '' labels: '' assignees: '' --- **Affected version** **Bug summary** **Steps to reproduce** **Expected behavior** **Relevant logs, screenshots, screencasts, etc.** Kooha-2.3.0/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000010651457702140700220360ustar00rootroot00000000000000--- name: Feature request about: Suggest a feature to help Kooha improve. title: '' labels: '' assignees: '' --- **Feature summary** **How would you like it to work** **Relevant links, screenshots, screencasts, etc.** Kooha-2.3.0/.github/workflows/000077500000000000000000000000001457702140700161615ustar00rootroot00000000000000Kooha-2.3.0/.github/workflows/audit.yml000066400000000000000000000004511457702140700200120ustar00rootroot00000000000000on: push: paths: - "**/Cargo.toml" - "**/Cargo.lock" name: Audit jobs: rust-audit: name: Rust Audit runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - uses: rustsec/audit-check@v1.4.1 with: token: ${{ secrets.GITHUB_TOKEN }} Kooha-2.3.0/.github/workflows/ci.yml000066400000000000000000000025321457702140700173010ustar00rootroot00000000000000on: push: branches: [main] pull_request: name: CI jobs: checks: name: Checks runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 # FIXME uncomment when we don't --skip ui_files anymore # - name: Download dependencies # run: sudo apt -y install libgtk-4-dev - name: Run checks.py run: curl https://raw.githubusercontent.com/SeaDve/scripts/main/checks.py | python - --verbose --skip rustfmt typos ui_files rustfmt: name: Rustfmt runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - name: Create blank versions of configured file run: echo -e "" >> src/config.rs - name: Run cargo fmt run: cargo fmt --all -- --check typos: name: Typos runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - name: Check for typos uses: crate-ci/typos@master flatpak: name: Flatpak runs-on: ubuntu-22.04 container: image: bilelmoussaoui/flatpak-github-actions:gnome-nightly options: --privileged steps: - uses: actions/checkout@v3 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: kooha.flatpak manifest-path: build-aux/io.github.seadve.Kooha.Devel.json run-tests: true cache-key: flatpak-builder-${{ github.sha }} Kooha-2.3.0/.gitignore000066400000000000000000000002251457702140700145530ustar00rootroot00000000000000target/ build/ _build/ builddir/ build-aux/app build-aux/.flatpak-builder/ .flatpak-builder/ src/config.rs *.ui.in~ *.ui~ .flatpak/ vendor/ .vscode/ Kooha-2.3.0/COPYING000066400000000000000000001045141457702140700136240ustar00rootroot00000000000000 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 . Kooha-2.3.0/Cargo.lock000066400000000000000000001313561457702140700145020ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "aho-corasick" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "android-tzdata" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" [[package]] name = "android_system_properties" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ "libc", ] [[package]] name = "anyhow" version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "arrayvec" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-channel" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" dependencies = [ "concurrent-queue", "event-listener", "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "atomic_refcell" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "block" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "bumpalo" version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "cairo-rs" version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2650f66005301bd33cc486dec076e1293c4cecf768bc7ba9bf5d2b1be339b99c" dependencies = [ "bitflags", "cairo-sys-rs", "glib", "libc", "thiserror", ] [[package]] name = "cairo-sys-rs" version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64" dependencies = [ "glib-sys", "libc", "system-deps", ] [[package]] name = "cc" version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" [[package]] name = "cfg-expr" version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d" dependencies = [ "smallvec", "target-lexicon", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "windows-targets", ] [[package]] name = "color_quant" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "concurrent-queue" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] [[package]] name = "core-foundation-sys" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "crossbeam-utils" version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "deluxe" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ed332aaf752b459088acf3dd4eca323e3ef4b83c70a84ca48fb0ec5305f1488" dependencies = [ "deluxe-core", "deluxe-macros", "once_cell", "proc-macro2", "syn 2.0.53", ] [[package]] name = "deluxe-core" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eddada51c8576df9d6a8450c351ff63042b092c9458b8ac7d20f89cbd0ffd313" dependencies = [ "arrayvec", "proc-macro2", "quote", "strsim", "syn 2.0.53", ] [[package]] name = "deluxe-macros" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f87546d9c837f0b7557e47b8bd6eae52c3c223141b76aa233c345c9ab41d9117" dependencies = [ "deluxe-core", "heck 0.4.1", "if_chain", "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 2.0.53", ] [[package]] name = "either" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "event-listener" version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" dependencies = [ "concurrent-queue", "parking", "pin-project-lite", ] [[package]] name = "event-listener-strategy" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" dependencies = [ "event-listener", "pin-project-lite", ] [[package]] name = "field-offset" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ "memoffset", "rustc_version", ] [[package]] name = "futures-channel" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", ] [[package]] name = "futures-core" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", "futures-util", ] [[package]] name = "futures-io" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", "syn 2.0.53", ] [[package]] name = "futures-task" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", "futures-macro", "futures-task", "pin-project-lite", "pin-utils", "slab", ] [[package]] name = "gdk-pixbuf" version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6a23f8a0b5090494fd04924662d463f8386cc678dd3915015a838c1a3679b92" dependencies = [ "gdk-pixbuf-sys", "gio", "glib", "libc", ] [[package]] name = "gdk-pixbuf-sys" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dcbd04c1b2c4834cc008b4828bc917d062483b88d26effde6342e5622028f96" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", "system-deps", ] [[package]] name = "gdk4" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9100b25604183f2fd97f55ef087fae96ab4934d7215118a35303e422688e6e4b" dependencies = [ "cairo-rs", "gdk-pixbuf", "gdk4-sys", "gio", "glib", "libc", "pango", ] [[package]] name = "gdk4-sys" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0b76874c40bb8d1c7d03a7231e23ac75fa577a456cd53af32ec17ec8f121626" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gio-sys", "glib-sys", "gobject-sys", "libc", "pango-sys", "pkg-config", "system-deps", ] [[package]] name = "gdk4-wayland" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13fc91be838be766ff038221e068e05e4083f3b6cf48ef1f5251ba28f98f80bf" dependencies = [ "gdk4", "gdk4-wayland-sys", "gio", "glib", "libc", ] [[package]] name = "gdk4-wayland-sys" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5cdc6c5cb3f64ba9b810782077939a0fc8d82e809f0147054bbe41910ac2b51" dependencies = [ "glib-sys", "libc", "system-deps", ] [[package]] name = "gdk4-win32" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab6181b6e5c91ee292dca0032b00d48dee8e61358253742c9752537a88486b3f" dependencies = [ "gdk4", "gdk4-win32-sys", "gio", "glib", "libc", ] [[package]] name = "gdk4-win32-sys" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efa8530d6619cf43f007f3efd993a356e1ca4e643c4d0bd2a99832a08af2e402" dependencies = [ "gdk4-sys", "glib-sys", "libc", "system-deps", ] [[package]] name = "gdk4-x11" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bff98d3e61807ecc1ddd15cf746b9de14fb6499fc259ca9e8d87d92e8901c7db" dependencies = [ "gdk4", "gdk4-x11-sys", "gio", "glib", "libc", ] [[package]] name = "gdk4-x11-sys" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30406b31a7c355c73c504c9b31d35806397944165730eca7db46f0409abf8f8f" dependencies = [ "gdk4-sys", "glib-sys", "libc", "system-deps", ] [[package]] name = "gettext-rs" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364" dependencies = [ "gettext-sys", "locale_config", ] [[package]] name = "gettext-sys" version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d" dependencies = [ "cc", "temp-dir", ] [[package]] name = "gif" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" dependencies = [ "color_quant", "weezl", ] [[package]] name = "gio" version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c64947d08d7fbb03bf8ad1f25a8ac6cf4329bc772c9b7e5abe7bf9493c81194f" dependencies = [ "futures-channel", "futures-core", "futures-io", "futures-util", "gio-sys", "glib", "libc", "pin-project-lite", "smallvec", "thiserror", ] [[package]] name = "gio-sys" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcf8e1d9219bb294636753d307b030c1e8a032062cba74f493c431a5c8b81ce4" dependencies = [ "glib-sys", "gobject-sys", "libc", "system-deps", "windows-sys", ] [[package]] name = "glib" version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01e191cc1af1f35b9699213107068cd3fe05d9816275ac118dc785a0dd8faebf" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-executor", "futures-task", "futures-util", "gio-sys", "glib-macros", "glib-sys", "gobject-sys", "libc", "memchr", "smallvec", "thiserror", ] [[package]] name = "glib-macros" version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9972bb91643d589c889654693a4f1d07697fdcb5d104b5c44fb68649ba1bf68d" dependencies = [ "heck 0.5.0", "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.53", ] [[package]] name = "glib-sys" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630f097773d7c7a0bb3258df4e8157b47dc98bbfa0e60ad9ab56174813feced4" dependencies = [ "libc", "system-deps", ] [[package]] name = "gobject-sys" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c85e2b1080b9418dd0c58b498da3a5c826030343e0ef07bde6a955d28de54979" dependencies = [ "glib-sys", "libc", "system-deps", ] [[package]] name = "graphene-rs" version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99e4d388e96c5f29e2b2f67045d229ddf826d0a8d6d282f94ed3b34452222c91" dependencies = [ "glib", "graphene-sys", "libc", ] [[package]] name = "graphene-sys" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "236ed66cc9b18d8adf233716f75de803d0bf6fc806f60d14d948974a12e240d0" dependencies = [ "glib-sys", "libc", "pkg-config", "system-deps", ] [[package]] name = "gsettings-macro" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f4ea0f496faeabbfdd1f5d9c39d9b9f7cff83f52d2cbbdec3c94b0e51b3f2f3" dependencies = [ "deluxe", "heck 0.4.1", "proc-macro-error", "proc-macro2", "quick-xml", "quote", "serde", "syn 2.0.53", ] [[package]] name = "gsk4" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c65036fc8f99579e8cb37b12487969b707ab23ec8ab953682ff347cbd15d396e" dependencies = [ "cairo-rs", "gdk4", "glib", "graphene-rs", "gsk4-sys", "libc", "pango", ] [[package]] name = "gsk4-sys" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd24c814379f9c3199dc53e52253ee8d0f657eae389ab282c330505289d24738" dependencies = [ "cairo-sys-rs", "gdk4-sys", "glib-sys", "gobject-sys", "graphene-sys", "libc", "pango-sys", "system-deps", ] [[package]] name = "gst-plugin-gif" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19c655ca8e32df099d13265f7ec7ab30a4a53b0753194d9391e64a1536c846f0" dependencies = [ "atomic_refcell", "gif", "gst-plugin-version-helper", "gstreamer", "gstreamer-video", "once_cell", ] [[package]] name = "gst-plugin-gtk4" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162762eb8df14f696707ff54382b3c02f58706255ab3a37a61d59bc1d0c0115a" dependencies = [ "async-channel", "gdk4-wayland", "gdk4-win32", "gdk4-x11", "gst-plugin-version-helper", "gstreamer", "gstreamer-base", "gstreamer-gl", "gstreamer-gl-egl", "gstreamer-gl-wayland", "gstreamer-gl-x11", "gstreamer-video", "gtk4", "once_cell", "windows-sys", ] [[package]] name = "gst-plugin-version-helper" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8185b029682824ac93ee2d9e17f84130d4c8a701e9255dfba68d72e1a4230749" dependencies = [ "chrono", "toml_edit 0.22.8", ] [[package]] name = "gstreamer" version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "066f3c354c526792a3deb8b6d349eba8ffcc13bae4d0bf05d4adf4bf1b91e459" dependencies = [ "cfg-if", "futures-channel", "futures-core", "futures-util", "glib", "gstreamer-sys", "itertools", "libc", "muldiv", "num-integer", "num-rational", "once_cell", "option-operations", "paste", "pin-project-lite", "smallvec", "thiserror", ] [[package]] name = "gstreamer-base" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514c71195b53c7eced4842b66ca9149833e41cf6a1d949e45e2ca4a4fa929850" dependencies = [ "atomic_refcell", "cfg-if", "glib", "gstreamer", "gstreamer-base-sys", "libc", ] [[package]] name = "gstreamer-base-sys" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "286591e0f85bbda1adf9bab6f21d015acd9ca0a4d4acb61da65e3d0487e23c4e" dependencies = [ "glib-sys", "gobject-sys", "gstreamer-sys", "libc", "system-deps", ] [[package]] name = "gstreamer-gl" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d21c0c5fbf74018a0254b3ab77bca0a5b2c0f002bcfd910c09113ae90a95d98" dependencies = [ "glib", "gstreamer", "gstreamer-base", "gstreamer-gl-sys", "gstreamer-video", "libc", "once_cell", ] [[package]] name = "gstreamer-gl-egl" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfde7bf67f5f7c87e1ff29cdeea4918530d677b51e3f4847121ada44f1fab139" dependencies = [ "glib", "gstreamer", "gstreamer-gl", "gstreamer-gl-egl-sys", "libc", ] [[package]] name = "gstreamer-gl-egl-sys" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c9ec3c03af5d4ed3e58ddbca4eea13e90e01b88e37f6c0689b26e05168eb7bf" dependencies = [ "glib-sys", "gstreamer-gl-sys", "libc", "system-deps", ] [[package]] name = "gstreamer-gl-sys" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61d1e3b9b02abc23835e9d770f2bd705b67a50406ea37e963b4526a77c6a7cd8" dependencies = [ "glib-sys", "gobject-sys", "gstreamer-base-sys", "gstreamer-sys", "gstreamer-video-sys", "libc", "system-deps", ] [[package]] name = "gstreamer-gl-wayland" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9fbfe3d0c2469023b73df8408a4b19daaf7bd30141e9fc67e4ab63d41db5ee2" dependencies = [ "glib", "gstreamer", "gstreamer-gl", "gstreamer-gl-wayland-sys", "libc", ] [[package]] name = "gstreamer-gl-wayland-sys" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83bc79debd1ef92795a3bd411986b19dbfe2527424f396e460aacc59d5fab4f1" dependencies = [ "glib-sys", "gstreamer-gl-sys", "libc", "system-deps", ] [[package]] name = "gstreamer-gl-x11" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ed82941c84668d89dbf81f220083422268c22ec6ab4991806649ed6758cec8" dependencies = [ "glib", "gstreamer", "gstreamer-gl", "gstreamer-gl-x11-sys", "libc", ] [[package]] name = "gstreamer-gl-x11-sys" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b59f2782f5e71e3ef5fd534598938966a4dc3911f2540807f7d13b586e4ed1" dependencies = [ "glib-sys", "gstreamer-gl-sys", "libc", "system-deps", ] [[package]] name = "gstreamer-sys" version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5ddf526b3bf90ea627224c804f00b8bcb0452e3b447978b4d5092f8e8ff5918" dependencies = [ "glib-sys", "gobject-sys", "libc", "system-deps", ] [[package]] name = "gstreamer-video" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ab3f4045ddb92bf2b469f5db8825d4f5eb46e4beff661fc97f50bb4e2b2c626" dependencies = [ "cfg-if", "futures-channel", "glib", "gstreamer", "gstreamer-base", "gstreamer-video-sys", "libc", "once_cell", "thiserror", ] [[package]] name = "gstreamer-video-sys" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1ea7996ba44fbbf563aeeda96e24259efc9f06b407854d837ee58e260d7ba78" dependencies = [ "glib-sys", "gobject-sys", "gstreamer-base-sys", "gstreamer-sys", "libc", "system-deps", ] [[package]] name = "gtk4" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa82753b8c26277e4af1446c70e35b19aad4fb794a7b143859e7eeb9a4025d83" dependencies = [ "cairo-rs", "field-offset", "futures-channel", "gdk-pixbuf", "gdk4", "gio", "glib", "graphene-rs", "gsk4", "gtk4-macros", "gtk4-sys", "libc", "pango", ] [[package]] name = "gtk4-macros" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40300bf071d2fcd4c94eacc09e84ec6fe73129d2ceb635cf7e55b026b5443567" dependencies = [ "anyhow", "proc-macro-crate 3.1.0", "proc-macro-error", "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "gtk4-sys" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0db1b104138f087ccdc81d2c332de5dd049b89de3d384437cc1093b17cd2da18" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gdk4-sys", "gio-sys", "glib-sys", "gobject-sys", "graphene-sys", "gsk4-sys", "libc", "pango-sys", "system-deps", ] [[package]] name = "hashbrown" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "iana-time-zone" version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", "windows-core", ] [[package]] name = "iana-time-zone-haiku" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ "cc", ] [[package]] name = "if_chain" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" [[package]] name = "indexmap" version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", "hashbrown", ] [[package]] name = "itertools" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itoa" version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "kooha" version = "2.3.0" dependencies = [ "anyhow", "futures-channel", "futures-util", "gdk4-wayland", "gdk4-x11", "gettext-rs", "gsettings-macro", "gst-plugin-gif", "gst-plugin-gtk4", "gstreamer", "gtk4", "libadwaita", "num-traits", "once_cell", "serde", "serde_yaml", "tracing", "tracing-subscriber", ] [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libadwaita" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91b4990248b9e1ec5e72094a2ccaea70ec3809f88f6fd52192f2af306b87c5d9" dependencies = [ "gdk-pixbuf", "gdk4", "gio", "glib", "gtk4", "libadwaita-sys", "libc", "pango", ] [[package]] name = "libadwaita-sys" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23a748e4e92be1265cd9e93d569c0b5dfc7814107985aa6743d670ab281ea1a8" dependencies = [ "gdk4-sys", "gio-sys", "glib-sys", "gobject-sys", "gtk4-sys", "libc", "pango-sys", "system-deps", ] [[package]] name = "libc" version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "locale_config" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" dependencies = [ "lazy_static", "objc", "objc-foundation", "regex", "winapi", ] [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "malloc_buf" version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" dependencies = [ "libc", ] [[package]] name = "memchr" version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "muldiv" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "956787520e75e9bd233246045d19f42fb73242759cc57fba9611d940ae96d4b0" [[package]] name = "nu-ansi-term" version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ "overload", "winapi", ] [[package]] name = "num-integer" version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ "num-traits", ] [[package]] name = "num-rational" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-traits" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] [[package]] name = "objc" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", ] [[package]] name = "objc-foundation" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" dependencies = [ "block", "objc", "objc_id", ] [[package]] name = "objc_id" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" dependencies = [ "objc", ] [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "option-operations" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c26d27bb1aeab65138e4bf7666045169d1717febcc9ff870166be8348b223d0" dependencies = [ "paste", ] [[package]] name = "overload" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1264d13deb823cc652f26cfe59afb1ec4b9db2a5bd27c41b738c879cc1bfaa1" dependencies = [ "gio", "glib", "libc", "pango-sys", ] [[package]] name = "pango-sys" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52ef6a881c19fbfe3b1484df5cad411acaaba29dbec843941c3110d19f340ea" dependencies = [ "glib-sys", "gobject-sys", "libc", "system-deps", ] [[package]] name = "parking" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "paste" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "proc-macro-crate" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", "toml_edit 0.19.15", ] [[package]] name = "proc-macro-crate" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ "toml_edit 0.21.1", ] [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", "syn 1.0.109", "version_check", ] [[package]] name = "proc-macro-error-attr" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", "quote", "version_check", ] [[package]] name = "proc-macro2" version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" dependencies = [ "memchr", "serde", ] [[package]] name = "quote" version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] [[package]] name = "regex" version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", "regex-automata", "regex-syntax", ] [[package]] name = "regex-automata" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] [[package]] name = "ryu" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "semver" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", "syn 2.0.53", ] [[package]] name = "serde_spanned" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] [[package]] name = "serde_yaml" version = "0.9.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0623d197252096520c6f2a5e1171ee436e5af99a5d7caa2891e55e61950e6d9" dependencies = [ "indexmap", "itoa", "ryu", "serde", "unsafe-libyaml", ] [[package]] name = "sharded-slab" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] [[package]] name = "slab" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "strsim" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "syn" version = "2.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "system-deps" version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", "toml", "version-compare", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "temp-dir" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd16aa9ffe15fe021c6ee3766772132c6e98dfa395a167e16864f61a9cfb71d6" [[package]] name = "thiserror" version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", "syn 2.0.53", ] [[package]] name = "thread_local" version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", ] [[package]] name = "toml" version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde", "serde_spanned", "toml_datetime", "toml_edit 0.22.8", ] [[package]] name = "toml_datetime" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" version = "0.22.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c12219811e0c1ba077867254e5ad62ee2c9c190b0d957110750ac0cda1ae96cd" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", "winnow 0.6.5", ] [[package]] name = "tracing" version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "pin-project-lite", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", "syn 2.0.53", ] [[package]] name = "tracing-core" version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", ] [[package]] name = "tracing-log" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ "log", "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "nu-ansi-term", "sharded-slab", "smallvec", "thread_local", "tracing-core", "tracing-log", ] [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unsafe-libyaml" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "valuable" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version-compare" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-bindgen" version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", "syn 2.0.53", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", "syn 2.0.53", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "weezl" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ "winapi-i686-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ "windows-targets", ] [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", "windows_i686_msvc", "windows_x86_64_gnu", "windows_x86_64_gnullvm", "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winnow" version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] [[package]] name = "winnow" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" dependencies = [ "memchr", ] Kooha-2.3.0/Cargo.toml000066400000000000000000000022351457702140700145160ustar00rootroot00000000000000[package] name = "kooha" version = "2.3.0" authors = ["Dave Patrick Caberto "] license = "GPL-3.0-or-later" edition = "2021" [profile.release] lto = true # Don't compile and link debug info; these reduce build times at the # cost of not having line numbers in backtraces. [profile.dev] debug = 0 strip = "debuginfo" [dependencies] adw = { package = "libadwaita", version = "0.6", features = ["v1_5"] } anyhow = "1.0.59" futures-channel = "0.3.19" futures-util = { version = "0.3", default-features = false } gdk-wayland = { package = "gdk4-wayland", version = "0.8" } gdk-x11 = { package = "gdk4-x11", version = "0.8" } gettext-rs = { version = "0.7.0", features = ["gettext-system"] } gsettings-macro = "0.2" gst = { package = "gstreamer", version = "0.22", features = ["v1_20"] } gst-plugin-gif = "0.12" gst-plugin-gtk4 = { version = "0.12", features = [ "gtk_v4_14", "wayland", "x11egl", "x11glx", ] } gtk = { package = "gtk4", version = "0.8", features = ["gnome_46"] } num-traits = "0.2" once_cell = "1.19.0" serde_yaml = "0.9.31" serde = { version = "1.0.196", features = ["derive"] } tracing = "0.1.36" tracing-subscriber = "0.3.15" Kooha-2.3.0/Kooha.doap000066400000000000000000000017521457702140700144770ustar00rootroot00000000000000 Kooha Elegantly record your screen Rust Dave Patrick Caberto SeaDve Kooha-2.3.0/README.md000066400000000000000000000146401457702140700140500ustar00rootroot00000000000000

Kooha
Kooha

Elegantly record your screen

Download on Flathub
Buy Me a Coffee


Translation status Flathub downloads CI status

Preview

Capture your screen in an intuitive and straightforward way without distractions. Kooha is a simple screen recorder with a minimal interface. You can simply click the record button without having to configure a bunch of settings. The main features of Kooha include the following: * 🎙️ Record microphone, desktop audio, or both at the same time * 📼 Support for WebM, MP4, GIF, and Matroska formats * 🖥️ Select a monitor or a portion of the screen to record * 🛠️ Configurable saving location, pointer visibility, frame rate, and delay * 🚀 Experimental hardware-accelerated encoding ## 😕 It Doesn't Work There are many possibilities on why it may not be working. You may not have the runtime requirements mentioned below installed, or your distro doesn't support it. For troubleshooting purposes, the [screencast compatibility page](https://github.com/emersion/xdg-desktop-portal-wlr/wiki/Screencast-Compatibility) of `xdg-desktop-portal-wlr` wiki may help determine if your distro has support for it out of the box. If it does, but it still doesn't work, you can also check for the [troubleshooting checklist](https://github.com/emersion/xdg-desktop-portal-wlr/wiki/%22It-doesn't-work%22-Troubleshooting-Checklist). ## ⚙️ Experimental Features These features are disabled by default due to stability issues and possible performance degradation. However, they can be enabled manually by running Kooha with `KOOHA_EXPERIMENTAL` env var set to `all` (e.g., `KOOHA_EXPERIMENTAL=all flatpak run io.github.seadve.Kooha`), or individually, by setting `KOOHA_EXPERIMENTAL` to the following keys (e.g., `KOOHA_EXPERIMENTAL=experimental-formats,window-recording`): | Feature | Description | Issues | | ------------------------ | ------------------------------------------------------------------------ | ------------------------- | | `all` | Enables all experimental features | - | | `experimental-formats` | Enables other codecs (e.g., hardware-accelerate encoders*, VP9, and AV1) | Stability | | `multiple-video-sources` | Enables recording multiple monitor or windows | Stability and performance | | `window-recording` | Enables recording a specific window | Flickering | \* Requires `GST_VAAPI_ALL_DRIVERS` env var to be set to `1` and `gstreamer-vaapi` to be installed. ## 📋 Runtime Requirements * pipewire * gstreamer-plugin-pipewire * xdg-desktop-portal * xdg-desktop-portal-(e.g., gtk, kde, wlr) ## 🏗️ Building from source ### GNOME Builder GNOME Builder is the environment used for developing this application. It can use Flatpak manifests to create a consistent building and running environment cross-distro. Thus, it is highly recommended you use it. 1. Download [GNOME Builder](https://flathub.org/apps/details/org.gnome.Builder). 2. In Builder, click the "Clone Repository" button at the bottom, using `https://github.com/SeaDve/Kooha.git` as the URL. 3. Click the build button at the top once the project is loaded. ### Meson #### Prerequisites The following packages are required to build Kooha: * meson * ninja * appstream-glib (for checks) * cargo * x264 (for MP4) * gstreamer * gstreamer-plugins-base * gstreamer-plugins-ugly (for MP4) * gstreamer-vaapi (for hardware acceleration) * glib2 * gtk4 * libadwaita #### Build Instruction ```shell git clone https://github.com/SeaDve/Kooha.git cd Kooha meson _build --prefix=/usr/local ninja -C _build install ``` ## 📦 Third-Party Packages Unlike Flatpak, take note that these packages are not officially supported by the developer. ### Repology You can also check out other third-party packages on [Repology](https://repology.org/project/kooha/versions). ## 🙌 Help translate Kooha You can help Kooha translate into your native language. If you find any typos or think you can improve a translation, you can use the [Weblate](https://hosted.weblate.org/engage/seadve/) platform. ## ☕ Support me and the project Kooha is free and will always be for everyone to use. If you like the project and would like to support it, you may [buy me a coffee](https://www.buymeacoffee.com/seadve). ## 💝 Acknowledgment I would like to express my gratitude to the [contributors](https://github.com/SeaDve/Kooha/graphs/contributors) and [translators](https://hosted.weblate.org/engage/seadve/) of the project. I would also like to thank the open-source software projects, libraries, and APIs that were used in developing this app, such as GStreamer, GTK, LibAdwaita, and many others, for making Kooha possible. I would also like to acknowledge [RecApp](https://github.com/amikha1lov/RecApp), which greatly inspired the creation of Kooha, as well as [GNOME Screenshot](https://gitlab.gnome.org/GNOME/gnome-screenshot), which served as a reference for Kooha's icon design. Kooha-2.3.0/build-aux/000077500000000000000000000000001457702140700144565ustar00rootroot00000000000000Kooha-2.3.0/build-aux/dist-vendor.sh000077500000000000000000000003601457702140700172520ustar00rootroot00000000000000#!/bin/bash export DIST="$1" export SOURCE_ROOT="$2" cd "$SOURCE_ROOT" mkdir "$DIST"/.cargo cargo vendor | sed 's/^directory = ".*"/directory = "vendor"/g' > $DIST/.cargo/config # Move vendor into dist tarball directory mv vendor "$DIST" Kooha-2.3.0/build-aux/io.github.seadve.Kooha.Devel.json000066400000000000000000000047631457702140700226170ustar00rootroot00000000000000{ "id": "io.github.seadve.Kooha.Devel", "runtime": "org.gnome.Platform", "runtime-version": "master", "sdk": "org.gnome.Sdk", "sdk-extensions": [ "org.freedesktop.Sdk.Extension.rust-stable", "org.freedesktop.Sdk.Extension.llvm16" ], "command": "kooha", "finish-args": [ "--device=dri", "--filesystem=xdg-videos", "--socket=fallback-x11", "--socket=pulseaudio", "--socket=wayland", "--env=RUST_BACKTRACE=1", "--env=RUST_LIB_BACKTRACE=0", "--env=RUST_LOG=kooha=debug", "--env=G_MESSAGES_DEBUG=none", "--env=KOOHA_EXPERIMENTAL=all" ], "build-options": { "append-path": "/usr/lib/sdk/llvm16/bin:/usr/lib/sdk/rust-stable/bin", "build-args": [ "--share=network" ], "env": { "CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER": "clang", "CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold" } }, "modules": [ { "name": "x264", "config-opts": [ "--enable-shared", "--enable-pic", "--disable-cli" ], "sources": [ { "type": "git", "url": "https://code.videolan.org/videolan/x264.git", "branch": "stable", "commit": "31e19f92f00c7003fa115047ce50978bc98c3a0d" } ] }, { "name": "gst-plugins-ugly", "buildsystem": "meson", "builddir": true, "config-opts": [ "-Ddoc=disabled", "-Dnls=disabled", "-Dtests=disabled", "-Dgpl=enabled" ], "sources": [ { "type": "archive", "url": "https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.22.10.tar.xz", "sha256": "cc80a81a22c0b3b31ab7f1b8bf18dda23c72d2791b86cc6264923a68336329ea" } ] }, { "name": "kooha", "buildsystem": "meson", "run-tests": true, "config-opts": [ "-Dprofile=development" ], "sources": [ { "type": "dir", "path": "../" } ] } ] } Kooha-2.3.0/data/000077500000000000000000000000001457702140700134755ustar00rootroot00000000000000Kooha-2.3.0/data/icons/000077500000000000000000000000001457702140700146105ustar00rootroot00000000000000Kooha-2.3.0/data/icons/io.github.seadve.Kooha-symbolic.svg000066400000000000000000000044171457702140700233540ustar00rootroot00000000000000 Kooha-2.3.0/data/icons/io.github.seadve.Kooha.Devel.svg000066400000000000000000000166051457702140700225750ustar00rootroot00000000000000 Kooha-2.3.0/data/icons/io.github.seadve.Kooha.Source.svg000066400000000000000000005462311457702140700230010ustar00rootroot00000000000000 Adwaita Icon Template image/svg+xml GNOME Design Team Adwaita Icon Template Hicolor Symbolic battery is full and there is no a/c connected. Kooha-2.3.0/data/icons/io.github.seadve.Kooha.svg000066400000000000000000000070111457702140700215260ustar00rootroot00000000000000 Kooha-2.3.0/data/icons/meson.build000066400000000000000000000004241457702140700167520ustar00rootroot00000000000000install_data( '@0@.svg'.format(application_id), install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps' ) install_data( '@0@-symbolic.svg'.format(base_id), install_dir: iconsdir / 'hicolor' / 'symbolic' / 'apps', rename: '@0@-symbolic.svg'.format(application_id) ) Kooha-2.3.0/data/io.github.seadve.Kooha.desktop.in.in000066400000000000000000000006461457702140700223060ustar00rootroot00000000000000[Desktop Entry] Name=Kooha Exec=kooha Comment=Elegantly record your screen Type=Application Terminal=false Categories=GTK;GNOME;Utility;Recorder; # Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. Keywords=Screencast;Recorder;Screen;Video; Icon=@icon@ StartupNotify=true DBusActivatable=true X-GNOME-UsesNotifications=true Kooha-2.3.0/data/io.github.seadve.Kooha.gschema.xml.in000066400000000000000000000023511457702140700224310ustar00rootroot00000000000000 "monitor-window" true false true 0 b"" "webm-vp8" (30, 1) "" (-1, -1, -1, -1) ((-1, -1, -1, -1), (-1, -1)) Kooha-2.3.0/data/io.github.seadve.Kooha.metainfo.xml.in.in000066400000000000000000000405331457702140700232350ustar00rootroot00000000000000 @app-id@ CC0-1.0 GPL-3.0-or-later Kooha Elegantly record your screen

Capture your screen in a intuitive and straightforward way without distractions.

Kooha is a simple screen recorder with a minimalist interface. You can just click the record button without having to configure a bunch of settings.

The main features of Kooha include the following:

  • 🎙️ Record microphone, desktop audio, or both at the same time
  • 📼 Support for WebM, MP4, GIF, and Matroska formats
  • 🖥️ Select a monitor or a portion of the screen to record
  • 🛠️ Configurable saving location, pointer visibility, frame rate, and delay
  • 🚀 Experimental hardware accelerated encoding
https://raw.githubusercontent.com/SeaDve/Kooha/main/data/screenshots/screenshot.png https://raw.githubusercontent.com/SeaDve/Kooha/main/data/screenshots/screenshot2.png https://raw.githubusercontent.com/SeaDve/Kooha/main/data/screenshots/screenshot3.png https://github.com/SeaDve/Kooha/issues https://github.com/SeaDve/Kooha https://seadve.github.io/donate/ https://hosted.weblate.org/projects/seadve/kooha/ https://github.com/SeaDve/Kooha

This release contains new features and fixes:

  • Area selector window is now resizable
  • Previous selected area is now remembered
  • Logout and idle are now inhibited while recording
  • Video format and FPS are now shown in the main view
  • Notifications now show the duration and size of the recording
  • Notification actions now work even when the application is closed
  • Progress is now shown when flushing the recording
  • It is now much easier to pick from frame rate options
  • Actually fixed audio from stuttering and being cut on long recordings
  • Record audio in stereo rather than mono when possible
  • Recordings are no longer deleted when flushing is cancelled
  • Significant improvements in recording performance
  • Improved preferences dialog UI
  • Fixed incorrect output video orientation on certain compositors
  • Fixed incorrect focus on area selector
  • Fixed too small area selector window default size on HiDPI monitors
  • Updated translations

This release contains minor fixes:

  • Added window close shortcut
  • Improve file saving handling (thanks to @DaPigGuy)
  • Updated translations

This release contains minor fixes:

  • Fixed indefinite flushing time on certain distros
  • Slightly improved performance on certain configurations
  • Updated translations

This release contains minor fixes:

  • Fixed error dialog showing when show uri is simply cancelled
  • Fixed more audio issues
  • Updated translations

This release contains minor fixes:

  • Only show None profile when it is active
  • Guard window selection behind `KOOHA_EXPERIMENTAL` env var
  • Updated translations

This release contains new features and fixes:

  • New area selection UI
  • Added option to change the frame rate through the UI
  • Improved delay settings flexibility
  • Added preferences window for easier configuration
  • Added `KOOHA_EXPERIMENTAL` env var to show experimental (unsupported) encoders like VAAPI-VP8 and VAAPI-H264
  • Added the following experimental (unsupported) encoders: VP9, AV1, and VAAPI-VP9
  • Unavailable formats/encoders are now hidden from the UI
  • Fixed broken audio on long recordings
  • Updated translations

This release contains fixes:

  • Improved tooltip text on settings toggle buttons
  • Fallback to manual mode when failed to get default device name through GStreamer device monitor

This release contains new features and fixes:

  • Remember previously selected video sources
  • Added ability to cancel while flushing the recording
  • Use different icons for settings toggle button to discern state more clearly
  • Added 3 seconds delay option
  • Fixed x264 encoder failing to initialize on uneven resolutions
  • Fixed minutes stuck on 00 if time is equal or greater than an hour
  • Recordings are now stored by default in `~/Videos/Kooha` (This won't affect existing settings)
  • "Show in Files" button in notifications now highlights the file in the file manager
  • Improved support information in the new about window
  • Improved error handling
  • Improved codebase and stability
  • Updated translations

This is a minor release:

  • GIF recordings now loops infinitely
  • Minor codebase improvements
  • Added Serbian Cyrillic translations
  • Added Serbian Latin translations
  • Updated Croatian translations
  • Updated Ukrainian translations
  • Updated Basque translations
  • Updated Dutch translations
  • Updated Turkish translations
  • Updated Italian translations
  • Updated Spanish translations
  • Updated Hungarian translations
  • Updated German translations
  • Updated Slovak translations

This is a big release containing a lot of fixes and new features!

  • Added MP4 and GIF formats
  • Added feature to record a single window or monitor
  • Added optional-in hardware accelerated encoding
  • Added multiple video sources recording
  • Added much improved error handling
  • Fixed broken UI on non-default close button placement
  • Fixed major bug in GNOME 41
  • Fixed off selection region on integer scaling
  • Fixed saving the recording to a hidden directory
  • Improved performance
  • Now working for certain desktop environments and window managers
  • Full rewrite to Rust
  • Updated translations

This release contains small fixes and improvements:

  • Focus start record button on startup
  • Improved UI and UX
  • Fixed bug when tmp folder doesn't exist
  • Updated Swedish translations
  • Updated Spanish translations
  • Updated Turkish translations
  • Updated Italian translations
  • Updated Dutch translations
  • Updated French translations
  • Updated Portuguese (Brazil) translations
  • Updated Norwegian Bokmål translations

This release brings the new GTK4 and an important fix for GNOME 40.

  • Recording performance improvements
  • Major UI improvements
  • Dynamically change the multiplexer
  • Fix GNOME 40 crashes
  • Fix crashes in non-supported environment
  • Updated Spanish translations
  • Updated Portuguese translations
  • Updated Turkish translations
  • Updated Norwegian Bokmål translations
  • Updated Italian translations
  • Updated Indonesian translations

New fixes and translations update coming this release:

  • More responsive shortcuts
  • Fix crashing when no desktop environment is set up
  • Updated Slovak Translations
  • Updated Portuguese (Brazil) translations
  • Updated Russian translations
  • Updated Indonesian translations

This is a minor release composing of fixes and improvements:

  • Minor performance optimizations
  • Updated Dutch translations
  • Updated Turkish translations
  • Updated Spanish translations
  • Updated Indonesian translations
  • Updated Filipino translations
  • Updated Italian translations
  • Updated French translations
  • Updated German translations
  • Updated Norwegian Bokmål translations
  • Updated Chinese(simplified) translations

This release is composing of minor changes:

  • Minor UI improvements
  • Code cleaning and minor performance improvements
  • Fixed a bug when trying to save in an inaccessible location
  • Added Persian translations
  • Added Chinese(simplified) translations
  • Updated translations

This update brings new features and few bug fixes:

  • Added a processing view to avoid recording corruption
  • Added a notification after recording to show saving location
  • Added option to change framerate through Kooha's keyfile
  • Minor improvements

This is a small update composing of bug fixes:

  • Fix audio recording in other locales
  • Fix when using keyboard shortcuts unexpectedly
  • Minor improvements
  • Update translations

This release brings a couple of improvements:

  • New! Ability to select audio devices through GNOME Settings
  • Removed the annoying tong sound
  • Fixed when the selection is not divisible by 2
  • Minor UI tweaks and other bug fixes
  • Performance improvements
  • Added new translations
  • Updated translations

A couple of bug fixes here and improvements there:

  • Minor performance improvements
  • Bug fixes
  • Added Swedish translations
  • Added Indonesian translations
  • Update Filipino translations

This release brings a couple of small changes:

  • set WebM as default format
  • Minor fixes
  • Add Filipino translations

Version 1.0.1 brings fixes to a couple of bugs:

  • Catch the error when the path of the directory no longer exists
  • Fix the bug when the path contains spaces
  • Fix missing argument argv
  • Possible fix for GioDBus: The name is not activatable
  • Make desktop environment check less strict

This is the 1.0 release of Kooha. The features of this release include the following:

  • Record your screen and also audio from your microphone or desktop
  • Option to show or hide the pointer
  • Option to record only an area on your screen
  • Select the saving location of the record
  • Ability to add a delay before recording starts
  • Video format settings (MKV and WebM)
  • And of course, keyboard shortcuts!

Initial release.

ModernToolkit HiDpiIcon Notifications Dave Patrick Caberto Dave Patrick Caberto davecruz48@gmail.com @gettext-package@ @app-id@.desktop keyboard pointing touch
Kooha-2.3.0/data/io.github.seadve.Kooha.service.in000066400000000000000000000001111457702140700216530ustar00rootroot00000000000000[D-BUS Service] Name=@app-id@ Exec=@bindir@/kooha --gapplication-service Kooha-2.3.0/data/meson.build000066400000000000000000000042101457702140700156340ustar00rootroot00000000000000subdir('icons') subdir('resources') # Desktop file desktop_conf = configuration_data() desktop_conf.set('icon', application_id) desktop_file = i18n.merge_file( type: 'desktop', input: configure_file( input: '@0@.desktop.in.in'.format(base_id), output: '@BASENAME@', configuration: desktop_conf ), output: '@0@.desktop'.format(application_id), po_dir: podir, install: true, install_dir: datadir / 'applications' ) # Validate Desktop file if desktop_file_validate.found() test( 'validate-desktop', desktop_file_validate, args: [ desktop_file.full_path() ], depends: desktop_file, ) endif # Appdata appdata_conf = configuration_data() appdata_conf.set('app-id', application_id) appdata_conf.set('gettext-package', gettext_package) appdata_file = i18n.merge_file( input: configure_file( input: '@0@.metainfo.xml.in.in'.format(base_id), output: '@BASENAME@', configuration: appdata_conf ), output: '@0@.metainfo.xml'.format(application_id), po_dir: podir, install: true, install_dir: datadir / 'metainfo' ) # Validate Appdata if appstreamcli.found() test( 'validate-appdata', appstreamcli, args: [ 'validate', '--no-net', '--explain', appdata_file.full_path() ], depends: appdata_file, ) endif # GSchema gschema_conf = configuration_data() gschema_conf.set('app-id', application_id) gschema_conf.set('gettext-package', gettext_package) configure_file( input: '@0@.gschema.xml.in'.format(base_id), output: '@0@.gschema.xml'.format(application_id), configuration: gschema_conf, install: true, install_dir: datadir / 'glib-2.0' / 'schemas' ) # Validate GSchema if glib_compile_schemas.found() test( 'validate-gschema', glib_compile_schemas, args: [ '--strict', '--dry-run', meson.current_build_dir() ], ) endif # D-Bus service file service_conf = configuration_data() service_conf.set('app-id', application_id) service_conf.set('bindir', bindir) configure_file( input: 'io.github.seadve.Kooha.service.in', output: '@0@.service'.format(application_id), configuration: service_conf, install: true, install_dir: datadir / 'dbus-1/services', ) Kooha-2.3.0/data/resources/000077500000000000000000000000001457702140700155075ustar00rootroot00000000000000Kooha-2.3.0/data/resources/icons/000077500000000000000000000000001457702140700166225ustar00rootroot00000000000000Kooha-2.3.0/data/resources/icons/scalable/000077500000000000000000000000001457702140700203705ustar00rootroot00000000000000Kooha-2.3.0/data/resources/icons/scalable/actions/000077500000000000000000000000001457702140700220305ustar00rootroot00000000000000Kooha-2.3.0/data/resources/icons/scalable/actions/audio-volume-high-symbolic.svg000066400000000000000000000026501457702140700277160ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/audio-volume-muted-symbolic.svg000066400000000000000000000021251457702140700301120ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/checkmark-symbolic.svg000066400000000000000000000004341457702140700263210ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/microphone-disabled-symbolic.svg000066400000000000000000000016511457702140700303030ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/microphone2-symbolic.svg000066400000000000000000000010741457702140700266170ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/mouse-wireless-disabled-symbolic.svg000066400000000000000000000016261457702140700311250ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/mouse-wireless-symbolic.svg000066400000000000000000000011101457702140700273440ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/refresh-symbolic.svg000066400000000000000000000015771457702140700260400ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/selection-symbolic.svg000066400000000000000000000016211457702140700263550ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/source-pick-symbolic.svg000066400000000000000000000022211457702140700266110ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/icons/scalable/actions/warning-symbolic.svg000066400000000000000000000014701457702140700260370ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/meson.build000066400000000000000000000003161457702140700176510ustar00rootroot00000000000000# Resources resources = gnome.compile_resources( 'resources', 'resources.gresource.xml', gresource_bundle: true, source_dir: meson.current_build_dir(), install: true, install_dir: pkgdatadir, ) Kooha-2.3.0/data/resources/profiles.yml000066400000000000000000000065001457702140700200560ustar00rootroot00000000000000# Note: # - videoenc and audioenc will be connected directly to the muxer # - audioenc and muxer are optional, but if audioenc is set, muxer must also be set # - ${N_THREADS} will be replaced with ideal thread count # - default suggested-max-fps is 60 supported: - id: webm-vp8 name: WebM extension: webm videoenc: > videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=${N_THREADS} ! vp8enc max-quantizer=17 cpu-used=16 deadline=1 static-threshold=100 keyframe-mode=disabled buffer-size=20000 threads=${N_THREADS} ! queue audioenc: > audioconvert ! opusenc ! queue muxer: webmmux - id: mp4 name: MP4 extension: mp4 videoenc: > videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=${N_THREADS} ! x264enc qp-max=17 speed-preset=ultrafast threads=${N_THREADS} ! capsfilter caps=video/x-h264,profile=baseline ! queue ! h264parse audioenc: > audioconvert ! lamemp3enc ! queue ! mpegaudioparse muxer: mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise - id: matroska-h264 name: Matroska extension: mkv videoenc: > videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=${N_THREADS} ! x264enc qp-max=17 speed-preset=ultrafast threads=${N_THREADS} ! capsfilter caps=video/x-h264,profile=baseline ! queue ! h264parse audioenc: > audioconvert ! opusenc ! queue muxer: matroskamux - id: gif name: GIF extension: gif suggested-max-fps: 24 videoenc: > videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=${N_THREADS} ! gifenc repeat=-1 speed=30 ! queue experimental: - id: webm-vp9 name: WebM (VP9) extension: webm videoenc: > videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=${N_THREADS} ! vp9enc max-quantizer=17 cpu-used=16 deadline=1 static-threshold=100 keyframe-mode=disabled buffer-size=20000 threads=${N_THREADS} ! queue audioenc: > audioconvert ! opusenc ! queue muxer: webmmux - id: webm-av1 name: WebM (AV1) extension: webm videoenc: > videoconvert chroma-mode=none dither=none matrix-mode=output-only n-threads=${N_THREADS} ! av1enc usage-profile=realtime max-quantizer=17 cpu-used=5 end-usage=cq buf-sz=20000 threads=${N_THREADS} ! queue audioenc: > audioconvert ! opusenc ! queue muxer: webmmux - id: va-h264 name: WebM VA H264 extension: mp4 videoenc: > vapostproc ! vah264enc ! queue ! h264parse audioenc: > audioconvert ! lamemp3enc ! queue ! mpegaudioparse muxer: mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise - id: vaapi-vp8 name: WebM VAAPI VP8 extension: webm videoenc: > glupload ! glcolorconvert ! gldownload ! vaapivp8enc ! queue audioenc: > audioconvert ! opusenc ! queue muxer: webmmux - id: vaapi-vp9 name: WebM VAAPI VP9 extension: webm videoenc: > glupload ! glcolorconvert ! gldownload ! vaapivp9enc ! queue audioenc: > audioconvert ! opusenc ! queue muxer: webmmux Kooha-2.3.0/data/resources/resources.gresource.xml000066400000000000000000000037131457702140700222440ustar00rootroot00000000000000 icons/scalable/actions/audio-volume-high-symbolic.svg icons/scalable/actions/audio-volume-muted-symbolic.svg icons/scalable/actions/checkmark-symbolic.svg icons/scalable/actions/microphone-disabled-symbolic.svg icons/scalable/actions/microphone2-symbolic.svg icons/scalable/actions/mouse-wireless-disabled-symbolic.svg icons/scalable/actions/mouse-wireless-symbolic.svg icons/scalable/actions/refresh-symbolic.svg icons/scalable/actions/selection-symbolic.svg icons/scalable/actions/source-pick-symbolic.svg icons/scalable/actions/warning-symbolic.svg profiles.yml style.css ui/area_selector.ui ui/item_row.ui ui/preferences_dialog.ui ui/shortcuts.ui ui/view_port.ui ui/window.ui Kooha-2.3.0/data/resources/style.css000066400000000000000000000010341457702140700173570ustar00rootroot00000000000000row.error-view { padding: 0px; } label.large-time { font-size: 450%; font-weight: 300; font-feature-settings: "tnum"; } label.recording { color: @destructive_bg_color; } label.paused { animation-name: blinking; animation-iteration-count: infinite; animation-timing-function: cubic-bezier(1.0, 0, 0, 1.0); animation-duration: 1s; } button.copy-done { color: @accent_bg_color; } window.area-selector .view-port { padding: 12px; padding-top: 6px; } @keyframes blinking { 0% { color: @window_fg_color; } } Kooha-2.3.0/data/resources/ui/000077500000000000000000000000001457702140700161245ustar00rootroot00000000000000Kooha-2.3.0/data/resources/ui/area_selector.ui000066400000000000000000000066131457702140700213010ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/ui/item_row.ui000066400000000000000000000023631457702140700203140ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/ui/preferences_dialog.ui000066400000000000000000000054521457702140700223110ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/ui/shortcuts.ui000066400000000000000000000070531457702140700205260ustar00rootroot00000000000000 True shortcuts General F10 Open Menu app.show-preferences Show Preferences win.show-help-overlay Show Shortcuts app.quit Quit Recording win.toggle-record Toggle Record False win.toggle-pause Toggle Pause win.cancel-record Cancel Record Settings win.record-desktop-audio Toggle Desktop Audio win.record-microphone Toggle Microphone win.show-pointer Toggle Pointer Kooha-2.3.0/data/resources/ui/view_port.ui000066400000000000000000000012451457702140700205030ustar00rootroot00000000000000 Kooha-2.3.0/data/resources/ui/window.ui000066400000000000000000000360441457702140700200010ustar00rootroot00000000000000
_Preferences app.show-preferences _Keyboard Shortcuts win.show-help-overlay _About Kooha app.show-about
Kooha-2.3.0/data/screenshots/000077500000000000000000000000001457702140700160355ustar00rootroot00000000000000Kooha-2.3.0/data/screenshots/preview.png000066400000000000000000002205641457702140700202350ustar00rootroot00000000000000PNG  IHDR)'N pHYsodtEXtSoftwarewww.inkscape.org< IDATx{UwWgI&\ɍ$BBKYPwrGUEouU]DՕBDEhD.D`dr!ddcMOOUuUwuwUxcO:5ޜO]"DBP,FPPT)EJEE@QQPT)EJEE@QQPT)EJEE@QQPT)EJEE@QQPT)EJEE@QQPT)EJEE@QQPT)EJEE@QQPT)EJEE@QQPT)EJE+E"HH$!(g}3&4Jp FE"#}Pj)Q0P(/[;r@rBAPD^'  r„Ȇ|P#R@!dWd=3kd8ALDE}BA)}BA& | }~EA!}~EE2D8n}AEA.>"ep 3,2}aE >G2rDx-_d@!7ܐ}‰"ePx5> #>A2X#sp"`|) {"'>C &CH  rO}'X(R!\=F[d`HsT d /d o)} @\K@q{J@q}"R(=k}(-rOq}(-P B*Cp-B),B%VF!\3ZKp'm +cY/[d*0܎edҢHY"! ڇ0ϊ:#r;P={Cv}"E`PzAH^@B{d}>`dE" HHbAO@x.|Pّ}e܃ })E㠚ϸO't2Z}eSf>2GAN(ROCjc+Bp}S䞐"`G(Rj.%`0Ch%'>B() 'A0f܆rdB y!@EJ PaZN=>Fsd2FC%nM@RS@{|@} EJ0:ݮ__ȏ_qdad2@r<'1;>e"JTlX"+l8NуOC+هD !`샼PC @^\ (A;X @d@ Jd8B2G%w>R/J)RoQ#\fFH"bTnpO𢏢 VO (rO{$O@(O}J"K> %H!@a"Oh5A)Ydǻ R>%#x׿cA>F҅"BT?&Puȧ?_ V>P>=n#}rf>~@!\PgFn$,^{ٯW}h%E8E܈sDp쓹gH@_Cj$;^Jd|//+xPch%x=>=þHGiY4;f#p \s\~>EP|s0D\/°9"`6JTR P n <2Eh%xErD‹d?HiA˳rWW Fv mv%;îSt%*eaBqaq(R(aP-FHgr//?q^ dOW~'=ROId_Pf?H! AXtY@ - \CZ>yo'>?pؓu!>'>P>ʑb@)EPu3AE`aҲXnOJ׈þں飜}AB!mqHG!WR)tf}a.{'  q=.3 qf ź DMq\M:Dž(bPP Oh*"eh%ܖ#&8I}B}"BTLyl}@R}u\*}\%!xPu!>Nd@1}ڐ}^ ɺg/d@}rPJ ~'f./E# lh H|[!侮+*R@I 'u]HYࠚ&a4cnA>P2k7z\CZ>>Pz{l4xQ$/~>!SEʀU)Ilc+ k^RPl-C.}L}<{mm;)'% }2UY)CTs n#?yP\Kd|w~=CϮoB+g2 _쓱Bq'b@yT (TH-u\p&אc>ݴZϪ]f YDgElƔK#޶}@ؐ{?#xϋP$ƒc'J"MWI\CW֬-)3Hxyܜf_[zv]Ϭ#}!ط+y}r-P}@oteU,Ӡ-zPP^#.ϭk.5XZ>d ēudcpy C2o)=6{e~6\zR|~[|C(tp Lh-aܓ/rDq};d(_d|} lE:OA5>+ 7/&p!:>0Cݮ$W}\m\dv\M(R89.Kˠ$ .9 d}V=c׮ud}V>c׎Be(Rѭk}oP*Jh x~Pv;~iЇ")>=;}CqEJOvAA?`!}\H>:PAYtVˬwif=%붭U ne E=x‡3Pb‡3gHc6 F͔xT^Mevg9YV3>Y}I=2nv>d>a"eU'4ߐjw^m{+`aSxΦs<W6d~>lfmB{$}C`#ط5kF)s6fs vw> ۟Af[B#[.}n<5XZX$}{m)R2iqBqN{"el\^.AI?r׹Ugw|8=-s`i:39mhu̺H4{r ,= jI!d@!}jPtmwEPur]rIsgHI#ܓ}sO}̑} <>ٗ2P  )7sR) ?@x9-zlg؅9gC #dooul! J8I!dooB )]tI[JڞדtV8ðX(/fC]5;.kCN"%P=X,uqR,D?@ أHB芔>(PZss6A,:괝 l5[V3̎^I!@!#>z'ه3߲ȎCVԣH['6iެm`kͿ M@psY]5 rg˙5k"%ggf1C`!طkǩG*\2#'>P>Z-3UiȊz*R*J7A5.pZo5I$t&gIHudkzuakhUeN|Ϭ;'هȎS#YsǪ@4mpScq {R 9v3 ˆE;f[}x/װe%0b:ѡ0KDAؐКX};d}튍C"{=('ӗ}}>+)Cpe3¢ۖe.3L> hq!x@8d f!xH2.iPgeׄMl$벝i$̗:'\$ 2Ҿ}{z= JoKq/15>})Pf+Nf.7!@agRdCRܣH[T>jonWmjT!¤fp ,e~:.i@5}+NfBkzO{ծlHY'S׋vDkp}!+Tү's~3vN ɯ9}MǾӐBQ U|b+4Tg馛njO6m⺺aD&HOx<رc-w~{}fڵIe7\/+=::7]}cINt8y\sN?STVV6 c*-P%I${v׿;cc=֭׋}(P}4r'~骫Z2scƌgƌH$2QR&@O۱cZg֮]ZĜy C"M*t4N''׋ix-*xp뭷eԩo6 cH<={~}7?Q>iׯ* VV&Bkby{gHYn'*$K,?pժU544D ǎ{|Æ r-۞^~FrH*R58=9+[23D6󶷽~ڵp UTT,?yOk>"|fgGҦ[V¦2 7B,**馛o3J+{n_]u܄u͸gf"ePOĬ .??\l啕gX^Ho~gԧ>c=֥vs~*R>vJf? ԧa„ WF"z ~_[oϜ(R :.[P쟻:4|]'"mmmW677dRb_>}=nz52y-˜VYI}"~p;WWWk2^ %<[z2Jr0g})(nk{ KΘ10ƘBI8pSO=&oʜ^47 Φs$UN&$yw577px)|coo]{< OiXyVdLx18]e$]^r{۪s8~^u%rW_=AǏQ2?~{~{yrVfN 1Ib_g=zf͚ 0:?^L8mmmO.Y`Χq%IrKtbϦK2 e$駟~ŋo3'xmҥq~^@HfPv bY˱:[}`8/&Gy{><sX;HmP'OkJD]>g={.&ϦرӧOdT[[̙S nY?)[h ~NA>ǮϰgCaw{%\uuuo03%sرG׭[kf}q-HgB&dnʘIƖ-[6G"F]4O?9<P^G+T3ݙwftjT(0}[vn j5| I<6Z۱+>=ַ(P|5k]wݵPǮ*>{^6 vs>(7eʔOl޼=&LH^PŜO l@WQsڏYN63H,E)/?$?>j{wŋo{ij9?ŤP溅RTy嗏5cǎ}˱PtcǎK.jp2&r{1a}2-˖-?ht=N:.&|N`IYp."Vipc>N#c٭`+tllxw?S_;s~ӧi {>uǮ@mΧZq/֞,.\/;wSy-ϥbPu*Z}nd "mmmWPaڮqRǺ㨗ŏ'YL.ϜI}݋N;RaN9唋~.$b2/PI# ~> EJ㥗^f(P0O/t *)vgׯ\sߩ>g{ :~]ܓkv܇\p\~VfpԜ??O:uuHdLq;'NЇ?6㉠>2Eʐd||dv3 IO~EABs:fxqf俫]J~#Y8u-"ӦM;nX6e=w3y123L^gs2d|򓟼ޤ? r׿B bZ2\*VHcJYfLcco566^f͚1}Ecge;*Txrj?)WtI˪pφ IDATTYYl…/ZFù슂l=UX2ߏYzuÄ .D"uE1f̘'|Fd/3?O?1Ik׮2. ȳΦK<{:Xqeyn,DI;gEg͜9,"SN}l^23{T3v,=lpnEEEMqw[n?|<YJp}D/6mjc׎RǸ%g['#ү>VmWRήYp,VMMEʤln۸M:M7ss#HMcW&O11S(Rz&s&sY+ *0nf0y1PJ0e7pC^?c.s&,>WNc3cH2V\Y7y9aLdaӚO\jUFf|O&ˬhWs>{&bS%Uy3\J0W\qŤ |EJw£r }ӗ9 1I+1HǏmc^FXe,|Xn՗~wO~8qĩc pƏ?-oyK Z}%P'[_V~fs>W\ VXKN9 T2@bV}_'*)r ',`LBr?^!?EmϜMg yKP? I~kk̞=zcjkk̙3ALg{*DN)>Wdnwƌ è,И(iӦ-N}| "@u4IUhSI=7g9+Ӑ"g>קGQ}mO~/˩?я4gΜ??_Ecafuϭ)K_neߔ28kD?~ 9߉bMMMM4VNrrbd<9YH9>@h֞X]]~rs>!+) PV;Ǫl1$)L&АnVqvQڱ-Yrnna'1«Þ}""au=|0UUU ~e|q4SQQ1Y\h4:-%O1C L9ggٽHD"&@ mݺU?wݥ xx\xDd P,S,SEE ß4?E2&SH{ouC.gy6J}̮ }h:bXc('>9 "B$4Eo3B)R>N+n*΀̥]Zc|?|577z(@qOm444X,*UUU`D".@}Χ"H$j슏fgd[s 0vRx|@`n}/B?lgc>O+LvrڵZ|jks{͛o|C[nq5ظqwS\s***F{n]r%Z=#ztwh˖-v^{̙O=~%~رGHD/oiƍ+*++u覛nRCCÈq% =3z衇a^w>hMvI߯zbv+ɶMN#?g'c =ƒ{Fssjs>rǜObV tLrFBeΜ9+}Ot}п뿺Gwq֭[gzeGGӧ?i͛7ϲn?7 lرCo~uȑQ9rD_/kɒ%G߯7zgu}.ٺu/|r]]]Z~y}K_ҥK-"tѢnsppPVCC VD*HۧWc CEQ1/}-ud_\ߋ2(g\ n|]z_ I' q7W]ufΜz\[n^#b1 ܹSrKM+wybaZli{e[og}{sjnnVuuv===g?^q zzz^LwтZ6Nnyt]j[lnD+'_{&Ls>V<~jQWR:U1/'!-ܢQ"P<?y}݊Fزe֭[zԤO}S:3400?u1IҮ]t=}{_ֱ-oѲe488Ck҅^YfW^ڵk/htRŋSWl? &ꫯִitg֭[um֦z[৆IRr 555޴f^#_AG(<Fx.'xL|>0812)v})BSO՚5ktK^~e?e]&)wy6~-Z$i7jjj҇?Tue-Ru]M7i$}#I_d>=yψ}k_K]9n8}Ж-[RϱRGGƍZ3Ez׻ޕZsNGE0@t1Q[JG7>b AA>n  84O;w0hL n2f?siYv믿~UwgϞ;vL[lI?SSt˗/'zޮN~'L@)I+Vlƌ#i„ n?DtiXfx<m߾}-@_yc V=bnXgv嘛N)aEl?l2?cP_II 9~x]m&V uuu?z۫o]{Q<O={e xowguN466^[vXkmm׿u]s5:tE}<5CTY]APm{~UurP]~Ss>rĜOȕ^ E^ƕP:t$?lNwwv?~鮻Ј~T[[} KwwwVteppPݪ-?0k-B u[Kܐ{+/k#|BEʈ3y}mn¯$V\YmܸCtMzꩧRWjַZ6mڈwlkxYwwz'ŋU__/Izۂ"7x(|uwwz- (= B=pBn1 }+dI.+Or ӜOQE"H6>^sřo]˜0a>:tH{m:|vCCCڼys}MMN`u4՗%X"UD2dzzzJ=J<\^ ~jOZ\.Hcpه91")'/s/XK.u~ɒ%ݺ5000w߭.H/6WGGGu<qW}R\L1_,cf13gPs#lH$oY_~?/{رCsSO驧J?~>l^5k^|EIR">1]s5jjjRKK>'M4/K͛7O:ujƍzX3mjco#?fʙ;{)ea|BxޓN? ͜9S\sofm;{l]uU#ݸsNܹsTJۿۈ[ի&~۶m?xN:I$=s+h"u]ɧH7Y4qD]Y3+_+Iv\Ujy+>\rOb"?}n6y L ([]vF^{>qYYx~jwg뮓a|ҥW666C")ٶmOGlSOS| Ra'P^9|jLr=^9_I~!0f͚e˖Ib[}mr.Bq~-[Cq{2sw)OfDn|$몫XhѢ[ZZz9lr>$|\2r[pXz袋۫oJ撡!}***t뭷e]WRyJ?cs>!@2fa1vs׬Y#Iַ5ߵk*(/첼gRRo>r=rU٧(RO]8^reQqƢn ͫB_PyEe& Rы^ #ۭ|}('G7I%ۼ9927)[ }Q(^:~͚5z/G?{Yx-qޏ] ac~C:"H9)K`vjjj2-RF"M8#*03K5WN`.H'}s~Ka>fi_lSO sn3 k"Зe_޳y9v?7w<KgR(xF$0 gG#hڵ# "b򶬉DBwybV^6 sĬay}KP(=c8@}H7x+҇EJG"|'`2?~xby?RWKJʏ~%+*t5HJdmU<~O56Jo9oɇ@)-km"ȝab̫&]wuo}ӛޤJ};ɻ@JLJn0bP 0rʢnoƍE k޽~N8Ak֬)pʹH_U??P&UUUGZF" /$LopL KPg}VSLѻ.vO<.p m7mڤM6i:묳<s6_W%Ioy[4w\?ݻb XPÓ$۷O۶mS{{>A566jڴi:U[[k/-[ҸqpBr)v俏_Ѩ$W[[ۈ رc5~x-^Xf2ghhH۶muuuuR4iΝiӦ;߫ұcJ= W|\,l@$586[)K ߘ={}Y۷O4m}v>|Xp̮Hꫯ.M6OZ]viEL{$UVVjر~=z;ߩ)SZ7H跿^|EIRCCb߯E_|bohhPCC755PPGGo߮Yfo}k) ?dԤ^:t(W_}]' PMMzzzJ=GjjjRl&Dz{ŝ!7OQ,,(eڴiT4gv;vH޾}.___^{5hҤIz5myɓ'k̙:餓4vn /+TEEňuz)⋪vM8Q͚5k-P?(ޣG<|̙3Dg=-E,u444* zv@!7a@qr,b0 3gݫV-^8|ΝJ$#U9o<߿_---# i$[>cڿ;s۶mڳg+V0}ݻWhT͒oA{GՎ;cM:Ug֬Yl*q;vC4;8;.>G &r!WR%YXܵkcE"EʹsJ\UfM;vٳG(%iZtsNӱ(c}(iJȡ!3f/^Nmݺug6mRUU(%i``r3x\v޽{SȆE"h߯AE"QWQ$Q<:G򫧧ttthgg/_ŋJ{ц t}{ /0wm/05vX9rDPssڪ)S(D;V'Nԁޮ& ijllTcc㈾W]a)ISL$]?~誫aD"Wgg;fYL-lkk$UVV1uEݿ$EQ͜9S3gԪUsiÆ jkkӓO>:*EQuuuipp(یb\cV25Hd0ZOP`jڴiԞ={400;wɴب &:|Z[[UYYSj,͚5K~g4|ljkkuꩧjzGTSSSN9%1DTKuuu:rR˦Mݻwk۶m?z/$b$o[[mmyNԤn/ b)04sL i։'h~޼y{N5ki#ɭ[]Ԯ]LkϞ=jhhИ1c^ =3]Y ]]]ڿ"&OZ~ꩧ*U^ggvء*-^CK:?^uuuyݒ5%|1 V%1{lIғO>)VIsΕ$=3ޛ>}Ν=+ =zr;7nT<OoooC=D"UV>2]uu.R^ZK,qD7oNݚ5]kk~_hppPK,QHѢEH$_B{M}va[N:S}Sݲe~am߾}U400gyF7nT4-ٿI566jjhhPMM***FGD"EQUTTF ?~|$Xq|8{--'$!df͚H$D"z[7NMMMjoo$͜9Ӳ矯nٳG?я4qD7N:x𠺺ʯ'|R?Ənutt(HhٲeBSf-:tH6lІ FU__/0եIW{?st!g?UQQ*x:3Ov^}UرC۶m4z Kx\ SW[aJUUU8y"#"/B(jM2E{챽kҼyޮɓ'Ʋ]mm.RmݺU۷oסCtAjZ|^m۶MS]]N7lY> d*IU6l˗$>(7o_A= ~"HgE;/̾I2:;;UWWs;@,Z^'7''~,RRy@ꇳ@5Cut8i$^cǎSͅFȑ#1l0|=! ?GNNf3`~R)we9s$***x)"qLRSX,|~)6o<T*",, T_)33/x:9:"""ҥKx'PWW<"((F¼y9`a՗_~ Vk}}a̙dNqn݊Z놆l߾O=ͪR""GoDDDDDD]j(**BQQRSSeL<> hZÎƈ:Z Z۷6m<{nnnLV:ZYlVT!{XWW7Α.&MDDDDDtZ-~Y)I`}-JĨnZƇ~^z phH$kHUMcرs!Dk \fFسgѣGv7D455aͨCBB.\gFDD!777( HVfs9{,a2XGIg .DYY`4qw`ѢE-mLR1m4'|١M^T*1vX<Ӹ7PZZ F?¬Y; ((HЃ 0LN$"""""&wwwcԨQ&4559)*"""(T*fϞmjZh `W""""" ___X!==?V!0dL0gȑ#TVVHIIA~~> 1h b„ 2e T^s8s ʠÇcҤI6m;aXv-G}K.իWq>|pssC\\,X>j5?"// puuѣqw"##֭CFFk+^W^gy֭úuvV^`8}4憰0L6 zkz[jYϣ ̙31i$$%%ah48q"V^quo""9<{EZZ^#,, ~;Ν+ٙСC8y$///aԨQ6m! Gjj*.^jHR"::ӧOGBB2E{=RSSa41tP_^^^¶mې FPL:˖-IaϞ=h4&M… ݴi֭[N͛%7{lkU{χ^ǁ?  Axx8,Y#Gv˗{n;v W^bA@@xbbͅlƣ>+WBPto8s ~iA_ԏ?QQQ}Y;v & s{( $''c8Sb#??=^}{ܦ&۷_|JJJl744ٳc!((H0شi= ^/҂*8q_5.] ӳCѠ?6l؀\붺:xyy VZ,?~| Iss3j-''vBcc#8VkV__2;v ªU0vX1͂h HNNFTTF#Qj݇ ֭[͛7\֢'OΝ;3`ԨQ&ƪ;ȑ#0 mUUUm6+[!;]UUU:MMM(..ƞ={? 2QWZZ|g+9wl_ ~+WpرZQoWWW[!//yyyطoVZ˗wLl=/---m/^ŋm6̛7;#;;[p5kyxyyu+AND7&)l6.]yxx ((&g2w^[W^tXnE]V㫯͛mn'Hxjj*֮]wyUUUXv-jkkr.Wڵ wFuuͶ!C 00ȑ#Xn;_OܪW_}ɄTxyy& xl6$0:c2b]}2`03=jTl/''O=֮]P˗/_y=B(r>6o,#yyyx'o۬kb ^# byv%\p_;c0cذavرcG_[ш;vhMw]???N"'%Q7477#)) | 1cOOO֭[ JJsbո{%Uz=9~z=ك۷$(J%???HR`С}gϞ͛mrѨ{n$%%u4@ 2IPb <#F)r9\]]"KKKñcln^zIPJ$T* >DDD7@ffg~z;vLĊƊ+c$njjK/+W¨Q0l0Y"Xm6lݺ&A憈{jllK/ZebH$رc?333ddGHHHJ:ݯY6矕={$(r91tP+kE&j͛7=U.$"""""jʲDX,hnnFUUsh_P -- 999ֱx^ֱ .`ݺu8rǏGLL HNNh2d^̟?Zb jHMMɓ'cJwy'VXX,?ǁ74 N8q!**.883f@||<$ jjjBٌcǎYKג'NUhhhΝ;_cT'NҥK1n8xxx `k+X/]ZmCj64yL<VBtt4D"k.lٲeee=vDD/_~iM Z,֢&7tP,^ئBii);A+V`ժUpuuݻo51y;wǏ&lقK. H111xꩧiMfd2 QWW7 zyyg3 a6&JJJ{n,]D^[CCCVQ[[C,d2ᣏ>!JcٲejEE^{58qG7^wqBBB qk(**˗QXXcZ?gɄ>@pT*#<|J"?=̝;{/F L2曂`0رc )ݜ$"""""jÕݭ}$?;wz z+bccFS󨪪pm^II a6gZe˖{p.?̚5DQPP H._˗/|.* -Zd̛7˖-$scbb3`5kqq1ƌcLKK9+V`ٲe(88:Ν9H$T _,_555q$5DDDDDDDll,^~e<#~U[_:Æ [ϺjVu%_EE1qn*))+WU*}v"+ IDAT"[ <&Laìc(//հa:LP@YYT*Ell J&ϯJC nȶ&)[ VFJRMJ$xzz-qGDDԙe˖O?dl+##CPt„ P(vm9RPּsΡ^PntŊpss/{mJ[oUhGccc%_:]wiCYJ/tqqApppL u9RAy,ZnOGT J#%$$-m9JJ"""""!^CC555ػw C.p2**Jp.& _|d2OPw_~l6_FW^dlܸQЦ3gǬY裏"33kbٌ/?.⋨鷟@$%Q7r-HLL*8s >z܈3FpeAAf  >^^^1F-[`˖-6/ZA<9r`^JJ ֮]sYo⫯·~+!** cǎʰa0j(AO?EJJ---ؽ{7>fO>|8F%> iiie:III8t萓"%"fժU6+!0{lk֬={:LTFzAf >&Lz*}]| p%?rĉ8}4q9r))) lz+FDD`ԩ7BP`ʔ)Ajjuٳxg1h }rey={iiiӧOg|||VyQߣRxb|gē^G}_~YRhh(,X?֤dcc#^ul۶ QQQ L&Cmm- gXt5)(b ⋂L<#1bD ;w#Goa-=)S~&t:{=| ECC***l~.Κ5K#Fcʕxw[bǎ6l$ ._ܧUXb [lq+gV'O$“1k,\8y͵jCC2331x`);| DOaUd2]Q?ӎʺv6-  #cXd2&MI& Ə?C nb̜9/Lҭ())yӟEͭ}bjAPTbɒ%xꩧcccsa7J,㮻£>jk`7ŋSbǪU) ѣz󕈈6\5klI$O“O> __n?77&QW^ûC-Hp%Ar?kO&aɒ%?H$xW0a֬Yoooۑ$ ^uLywwwۜߴi~&L`sMNj$c:#!!gϞkjjBJJ F-H`D"b8<>lBB.cРA Dtt4L#Fu%yyؿ?Ξ=rFxzzBR!22ӧOGttMo'Bya„ 8vQPP:H$c̘11c#RĢEرc())X,FPP0k, 99gϞp3o>2 CԩS1sL9rׯO$uj̙صkӭǪ_ )qc޼y8x N8\j x{{!!!4i&O ///ȄaΝHKK^'d2ARaĉ;g<#==hjj0a̝;AAA}-OOOHNNFRRrrrV#F`:u*r9f͚۷CH,7 og@`РA>|8/^I&aժU*=;BϷ /?.]Bpp0|Ixb455aǎhllĉSO V#-v6cch_7w={~L6Q9[fxzǦ/}ѣGi4YYA49;\ [kK׭AnNmm_\ݝ2]ugF}/> e&MM7΋Gf_|uӱzjDDD89:o unڧ},ۻ7ԝkޟ@R__UT|h3͘7o~;,XCoDɘ1cfht:~,}0!rDDDDDDD=@@V JyzzÉQ@QRRb tȐ!]%"+݊dff"++Z&!((vbTDDD4P|嗂^...5jT*JD77$""""""NYYYňuhĉ'W_ҥKH5KW^šC0e:6mݻa4ś+_Q$%u*..ƶmې IɄ ʯ)JL2111N'O?ƿ/ 00 BMM .]:|///,[(_a:]zeee"77\Lyapqq0:}4L&uqq/~D0IIDDDDDDt<w} @PYY H<󈈈`/J"w$""""""N-BBBRSSqI\rUUU0 ˆ#0yd$&&"((Q?{ܹs8prssQ^^( 4ƍ1i$HOD{]'H,^/vv8DDD4D"DEE!**١&""""""""""""^ŕDDghZ|HOONsj, X&)Ohllįk9;"߇!"""""""""0Xuer_a (LRQ:{% fdff"##EEEh40ٷT* xC$9dtsihhpvh4h@ah+**ƍqٿhDMM jjjp)aŊ6lX?{%[oXҞR[cQ$%UTT`0 ֯_^?6}LR @f7ntJ`M`6MLR @Z#,JDDDDDDDDDDD6$N:2221LR @/_vvVKIDDDDDDDDDDDI9Ft7;Xc!jϙ3ǩ'"""""""""p%%d4;% <a"""""""""""IJ"""""""""""""ULRQbOJ"')((;ptzB@HH.\ؾǤ\6lJ>$rϿ%t:ŋ{ B"""""""""""$%رfc6eDDDDDDDDDDDDD{$r+W8l_Qo`OJ"')%^;b4/Ѿd_۾qNQJJ"""""""""""""ULRQbz{R}u{(nΜ9]][r%*++7lJuC$"""""""""+)W1IIDDDDDDDDDDDDDIJH*s}}Îվn> @p /\cN{yy98hȞqFg@DDDDDDDDDD$%ih4h4Z,DDDDDDDDDDDDm+R,DDDDDDDDDDD70II4r-3 'a9cn>̵jb,@2$1Ŏ"q2d8 kJBӦ`/HTxWp*&hJPyKcht#'3,oh|ipg\Xde/076Ba4}AGɤT(4 |M4559;"~IJ"455& ---H$d􄛛#%"""G2kѼ[4SI`0B<3pcX.h@,?-xrsE%׬6i?W? E 5Yr(>}idrvHM"ѐPz-Š DD$%Md2!++ (..FEEݼ&JRc"66 `&۞ۣZ֑! \6lJ{'b94~1ZyM$ґBBV Z  `^ힽp~[Uiԣ;Jv>ᡐx/*/X\i9]+u3pݜ,--Х П<hvh?0 N} sqѐŌcW""Sv؁#Gt1IItSzqʕ^шR"-- !!!x!݌㑒0슋svDDe1Ѳ Ƽ 'd˂1 Ґ`dC~Z~}0g*,BknWAYƒR4o K~Pv+\́QXcCNppP,|Bx\/D5{; ׅ. д JYSo3]4/_.gbMb0B*Ml.9Nnlk IDAT@W_E]]'UE.&)nBO<vFsCqww삂b͚58u+j*95""G-h|#kjmƌ/VC9vʟ|;\Ed4oކ _T^!҂lL&x HWs6\·!"A{kKNIf3\ D?73hd#t?$ɵ9wm47_\r/y&M~Kk"776ns`IJ?~agA7ve' J.sf_@鸾AU>TpA'ػN`(uAw6P?(\C ݶD n4} M_~K  h\"w(MuqhtZébAp7," oBYgc@b!廊;[ &MŋqQ&)$%@gehXr&\WCC$(Od?-I_-h{x V*Oa,)E'вsMZY|,3 |xo[j1qJDD}–-[h{1en2"IJ"a4fbѢE9s^+WDee RQϳJ"mR.sC{,j4\/vtGS! ih0ĞW+}V6[IHBC^)R(nFX5ݹҰP>Wr6cq ۔0nK:</ ЋOOπ>SAP@1>Q#я~zX裏B^DD7 &)H5Ak%$""=Kc`\>e"ܖiPĥsE** &#)Ōݽ_؄K=&yu=pY0pB 7\.; 9h9xqѐ z[w?y0.[ ysX177C* qY8bnDDwhZꫨ) <+ Dd6Aj޽$""o̵jI!#S0.9 Pqh\AXp \=e9uih9`0 ƕ3e])O[àk6 a<#)nj}zTU `l[J$4r$ܖ ۫1ҍ3d!4`28(C>>2g&""?0~/H$'FFD?1IID'([1QIDDRв{ܦ̫TPΛnb_(fτ>7T6]Jd1phYc*+s12o!KG&x!EW2M%h9rX†\f Yh޼canjtX(\9:>)hUC; M1$1bnqPϳХgB`\:*ܜ5GΝ;oS~?11 ,‰gLRQ VLTRWZ6nzjtǎUr H|FGa8s͏%UUПLqZÇJ,еKB&|Z"&J ](1Z} OKRhv4LWÆZ548 _zXSu5t'(%FP>i}L1 9箭l C3IQ]SQQwy6g##"z )IPڻw/m Qэ0d B䉐O9A#C>(l2dxza*TL%qy\ ӦB܇n# ow V&ZIt=ldIҿR)7i\Yeg@ i$`c sR`DDDloJX,תD"# AȧLrnN{kqI3?qGk8 C[a8 b[9V(o(OAe~<}KgdRW'y8'EEDDtW_}tL^t)&L nD7lD%Qe8 v 7 q"q1vWxs?٣7Ȃ%vIΝ)%?w NSŷCJ967?S?:RMJΝyyg(0T)TմO&f|sQ`%^zEɿӣ/XPbpRdR i.Ppi ~ eY[?fou( )})}s+*;G|exj~U0!rTMrbqx`/@_JxnkSjon2zN)S E"cn~2t+$}g{UcckԲeYq`ȱ,+Ϙ&Uu|e T(rkVvRҺ(?cӧe\c)P=CY5i㩦}Jm"ضܼ55S:'{T`"ۼy~-\Pg>@:,kOkOI L )%?}3]cNOLց;2vy_{6SOQ`fu^M[1]3eAE3w(5:^:(եnM]]]c7"y1BH 9YgLS`Z7E4fwZGZd:ضCGd:>T+$2&ƭ#ulU+TTzj555q믿^f͒/*|s֑Yo<_yUUQU#㯪R`qQYoe&tZ[:tX֐Էޢj~6UuD£Pa#-zjdߓO>g}Vi]|ZrBGH 9Ho|K嫨𨢑M*b4hUȑ v-4J+/9?L5Ge>AE6*ٸ5fD# -S`ީUۧbcUUUD< &BJ ]ݲ3++-2y!_i|\VYK)+*WV&km"D::ؐlNZy oi[oU[[[7 %d!%6Y--i㾲R*+PkBTJvGQjkukrz+IvGv*fo9h-J /W茅mٲEր%>ONAz!%c:9t3J)ڞZOqLΠ+OoҤNJ;3# vW 2mw8]KdD < 0mذA<^h>O [)k… V,&>3b2q9ȆeN*/I}a3(ܵ[ɍr:ƃ\ZQU%oo|r]s5 V !% )%0\T%+ 0nӱcBn&%8BJ OCPiIwH 1ݫQCgNr[W_} < p) Ɔ/p*+'~A4tÅ'cQI} z%Ɛe ska _uGƳzK?&OQh@෍,@a |RAAvGV KNgkWX8Hv{ֶQKv1ٝƍ¨Qg;1d&9==zj= 0Y[oU---~6m<())I M"%\cV{R:춎u5}%%򕕍ؾI z$nk`n6(d +)b %7lu_$3˛ڽޫFY?j*s9 yI  bq٭U- IDAT9}6tjLQV:c_ǰ󻓲-~_ЯȔT>%7lJ\T%axT`ڼy~ܹ>HdtkD" L (_$ӻ yW]JK-Up"o[O>}Y?GЇXX0UUU4M555y] `hT^'W5E$;diHi RNjUFR)_U=w^ߴ9OmSJ){πXLF?MyT`<ڷo~ӟ*irgΝJRm۶QEwr*((`v:!%f J(R"gD"͟?_˖-̙3UZZP('`|>AEQ5(<2E!Rڛ_[j :E hD"WM5Pf)fp Y>r5J 0E-[ZW,i_9'Z^ӧ?&m:pP -PjP1M9Ϭyۃr4oe fV+0{GUar%7(ٸ5++UN!C0BJ Uӷ.u(ڵ[N*%#;Rn9T+0gvFYY2R{ڵ'oBԾ}ݟ ̚)?K) {lh-d@]q:LsNq4w]|iӦ1q%S]k;[!̔R;w+kyW 2w}Gڸ/P$ ̞ם9` Jmۮߜ ]aj0o4 \VܿԩS5ujMa?i$}HpSqqGU@aMJ`T+0wNxjnol󠢓gڣ6wH+Ye9F0(6;ޔu5 ڱSN,̚S:|Dɍtk+TWr !%0OdLry}Jm.'b2wk<04X8& :W;en`|sgziAXD3[eQˇ?{֖!$oTq{ShR/(y CyZt{ܲ| _ܺ]M )xƂ19g9 q4ܺMɆMrR19o&8)mJm;M3NgCƯ)ۇd/]Fu[t[eޛs"g]JnlLZ8xdF= @>#ƉX|FڸJZ{1ضR֝zg,pLNkB ,is;27m-}}\anۡd&9k<` O>%I~FO<%76?D )NU Rㄯdϗ{EK-2wwfޫMr] $x| ܣan~Mf{M_Eg,̟m2_:~'&mJ5-'1mm[//2GBK:̴ Jnmښ[ͯ+(%]K[QUBJ` ̬VeUv% sn%^|YxhiB)ƘW^U vmGğ_v &)^ye׷]_Zm sװ|BK0!%0Bu sVڮ J99AaCm%/5l*TT1X[q(>s|qSda}JRzZZ.GD`"ƙszUC%GOQϽQen ?߲ӈ9S^Wa(tY ok|eO}XvjyN<ާBR;WE 3>k}S*:s3O7*9hS#QpY3ߵ `b!y2_{CR}6MkVeZS\ O.z{iw}꿳ZPz?%'ww .`LCsG5u~t >ptrlhL9tBu}S(.@MU+بԶ}3U􅿓/zmN*5O+'{ }L#>\%7@G M8o*Jmw_K |f瞣9JY/GY5 _B2x9 E)_eKZ|7EW)B瞭K,'?t(G+/W>ijϫ_wh.V䲕Wz+z}wKL.orj]֑~z>+.,2EѫP+vNdޡFY{\+NF$Qe)_a"L]>|X{LfKu_)mkWYURd^誫Zw:zn~b>*R}]5WW\z01d(k{PjC .[/kSyLey-u;+ .[ȕuOϧ+r͕R(g{QuRcsϽ??\|\igJnh99orGo)q.tY*Y/{Vߡ{-;lG_Vm.Qg?)Y؜$&MR#(z%ߠLSc}$hw9v̵_=C .8oΏܴo-ʔ eK*kR+rJ9Z}C]ە񦊮V!̑{wnY_tyf93!0ZYٱzҽӲ4KK. fko'w?J:\}S*U(rՇ:ŸRJoPrkq_eBKQe#BJ`0AE\NoKvKkSWUQ"^"ߤuXg(rDŽ?O_O_0SUtݵrJ%?{kYMi}Utg؇e sv%A]ա -@fRC"uNY{ӃԶ(vo5*xO:s8Jn~M_??IN*<Ѽ1Z|Ju+iNW>ğ^PE*\PF8|{n'1j}JJ%7ƌ¨ ) #&#R+tX]P79}~#*xcr$scvxhiu2^@Rϧ W(0{/ݐ$9J<Ͻv IÆC ̟/|^D4S4_nPp_Gۆ~e)Nܩؽz{ ֶQX?Z3cdn!s`:^fT٭mcr\1R˖*h7E) *0F% {J6l:$IɊ\q ? Y9((PC) +A]g:K~K?ϻ@jiQrc}]E ZZ+g9x\GUggbLӔs6lj1 C`PhT%%%P$!YD"!4eYޕW0T8?G0v~`la\rB瞭s/ +8rE.['>S: ǁ*o(U7})G[3p`UR++*1\ CeK]MQ=BJx6< :G_KޯdcWw* .eL4ewd9횦T+-.!%r¡Ck.:<ҢGjܹ^uww{ZDH$H$TTT\>#RpB-ԤAVk̭ەں]ց-YhTƤb+3[3_S-_dbM 鯬P*zJ57| v*XX\ T,dӧ)x&ĐBu y]Ƹd**~lץ0nDQ*̇ WRsSSSe@}U;wiX,X,ɹnٶh4/x/r'eE_7x]M^0Wp|KGN^9S"AMMM:tPK@Cbz{{~^ ūڵke`vrMI1,b-$!- )!%$If҅^.L`0eQjnnVGG1pX9sjkkUWW'Q)`wZZZt7T=zTgm۴m6YFwTQQEz衇K$:|>W_}U?,U ^Qزe_20>w}ZfV^-qL& (ڽ{]ie"q;|׀r(---;裏 &BJ`o߮K'\˲'r8i'xǀݻw'x#{|guWfRd[cccZ@ uk:uk"[ouwu>S={jkkR? :)ޮNJ'\˲4Muuuq0_~yؚ5ktwT677񚚚2^#+J顇r[VZYf5k,}#M7ݤrzHeik)X#za n`ғO>aawk׮*O&`&6mrM ukԩmٲE7uM7^s6m/) 9rD6m R'(J;G| ϧ/5?qġ'rʕck׮ի= ^hlltm_pi$P{{~_6mVX8{ю;N[l׾5}_ז-[\.btTJ/RFEf 7+&._|ǵ@gykL4 xaÆ~߯.;vLw}:;;A]r%ǿK"7 5+&UUU#>LL4w0жm;cضu<C=k쬳҃>(4%IGUssfΜ91{\ -H5 7߬~еaWT$ŋ]ٵk׈χ졣#xGGNWӧO߶,K֭s=SOumٳgظK|{2A套^ !%0;2r0bŊw<ٳ]ۇȹ16O~Aʕ+= DH .ϟ>xkԵݝscl86 C7x#S¥lȯo#Hyykرc"6!e~bJ O~Reee*++'?I`ܟ +6+H^xwyAe*Қ5k΋/o~uYڵ˵={Qc=y%|ׯ_[JhΜ9T]VW믿7J?,GH PRRәg9_?/_X,-[3wckʔ) %u~b ?E]vrXm IDAT5ַQy<˯.5%%%?{3Ϝ1|H$kƵݺu2M sܧ?iVssnf}V4U W\+A.D"!o k6/w-zNUlٲ~'> M4I%%%k]]iVǝ{2 #c"LN 믿[r*++zyzk܁Na>.ر]xbvmC{ֿ77cgŊ:v9f}+_Ѳe˴b -\P2 CmmmԂ \~V^o:O̜9S^~f͚5c[ε=@"NP }{Gt ۶Ouh!w}ԤIHݒ 6hÆ iE9TPyVjs=s=WӦM;ǜy智kU__?FP~>Z[[u-О={H$ҞH$g-ܢ}ahժUc^?{F`GqyʐmuWK/u曇|S毺:\zI}ʕ+dɒLyNJ`͛뮻Neee^qE8a誫ٳCȑ#')ShժUtP)CǃJ:(Omm-ZM6QjooO[2kɪQmmjkkYGH SOy^^y5)d!%"U@VRax]N Ÿ5)D0l\+[Q5⾐F2dF^kl\# k S)ቒK Ƶ;+eq_}\#BH OTTTx]NP6U8s`tq/>L!'"*++.RHd *sX8tr[&BJxFax]ajjjv>ֺ]ټ6rS?BJx&hܹ^a̝;7]S~_EEEY;NLQQQV(㾐}?0RSUUU9se`3g*-((2DQdrW[jAڵKx]΄fΝi FY "~pNq_{p?0R"D"UWWR~?T3> 0R*BJYEH )d!%"U@VR*BJYEH )d!%"U@VR*BJYEH )d!%"U knljє{lَU3BTT_ T3uYawt*A>d&Y3 Q[ W(^R+&T>>/"sv--,|rO;UTW92|!wR"g4Y}R`°VkwR&u=da>wn!a%0N>Gu>^u9018nSj6~[N¿"\DX T>u~TN@V؎JUWuUp* ̛KX@HئIk[{KuEmrqܶ]]?SOc<ں]7zN7|Q{]0:'R`})>F%-E?QA""x?/^]x]`ۑn]ӥϜSu9lؤT^qާS+늀q~c.Kg;Wv[tP0 O=)N@ 9{ئeスmv%ċ/gw|cץB??!*am`xinݵ| kfy]NzoK޵(ewtz] RMytw rYwnM9u)){^a Jw0rɍ}ϬA qxe%o us/%Qd^W hn^oM ѩz}ץN@j6%nJ`RM9q~dM7%BJxbc3ow#cuHfT>Yz] $^8 u$GH O>I .Qhv{d]L OR= pFy]$8x2䴷K*9^W@ -/ ?8@R @VR*BJYEH )d!%"U@V.wnTҽб1WP lȒB K  ˛nhv: ! MSm 6r۫yսhFicitΙ#]̜;V$IWns]TIҺ%G)vϽgX-EmLtHUgԤÖWE&_Nk4|=A%׼)}ǪP)>SbxR/Пdt$%ЛIZ?@5Hg~YMG:y&}xG8TMK+l2i|=Śq԰d+W{atmWdWpOp1@1}.-*wWJX3DX Ԍ%s|Q__VMP6pm[4oU(^nC;Z8I[_s5e?)cd=%JJqlК$.tmjI1uLξϮTM|FZw`{ 6>R(ؠRbj\zR +8OڸIV+_RוP|Lo>Hi1{(Bcx )^z7kgNcWDEb]հF_T#=W.ƛ}bnŏnLS֚qwkk6pӯ*aS׼1ICT˽.3F° N$%۝- R ;4hzc~wc|/PSfT|֬ɷ*McJ칇9;Nnq5-9DMKV*>{M+*-1 Z?.b]/R7OPE\I KjFi!l:}.-]ШD]&n_J>ү[W ڎ~vc;u.MjJLMcA~zl.hRcTqC2U@jZg뷧o#I3tO~;6c:ώS֯_<ؗWC_жS=CizŠ똬 2̟ ~\QVR󶷼XXIkK5x+'#qgx4O)m k oS?Ζ{}j zL3CyoktS? Mjkl${{~\5uZ?r=DNS6n_*;|OmbMt75&Qi>6_5ykZwsVӒ3 54cٕy|?/Ă44 mil a$%ЫK;̘u60~'Ъ۩ XLڮN翿K٬3oXjTGc϶ Zf O:UgݩzM޷W.hԿ٣8l>[b6N\r9aݳyZ]-qvD 7(zi]%I׌o~]m-oݎ;Ϩ3x\svTyg#sey!v-ϫni|`KIt"[[&A%o( ʙqr³PVyjȉZ)J~fǏT,ox\׶Q>E<شIF55g(499LyŷJ~t~bD~5u9HDJt X@zx:~ȴ+)רo5982n7G#:퀹a'ٽY@״ ѤGWORg{_WaHMq]i#g3}2mHO‘&( CJZ]^ B- ɻЬ@;R~a{-{9,3ioktJm8Z]? J#9hOginƌ J#Qp/`g15|PB{ISAW!%t}:6Tm9;noXkm{ &uskiZ9g_>xss$14$cXfT8A|- sF}~2[Ś5nM~@Xq%%Ԓ6i"Ťۨ}s=Hҿ/P7|vKRgح[2mu4ugi2|6Āz3- 1}m!؀nY>w{S3˲Iϭ Mq}z)COw<7qC{mзOy6~)C?;'S}\Z93uּӫ???4vh!ң[~S? ,mVl~~42gOmy @f$ {JOgGMH{]urT_P)a{q__%cx}RݤQzxX->}$5x:Bc>tgG|挼2i'*95tp}i>xfIWCR<棎^S,Ww{~ҩȈ6yCj^vu;Ըj{>bj^{')]v`@=?XCߙY>Pn mW6oWOPaK'sUϮTO/1L-XY?wT>@1I 4>Ynɴ E[1{4k̩_w?orRӺ>]ْ2l\i:~]~SiiMwRk}6jw}2O5ߍm֘ kԼYZmlgިWכ/svVǧΦٽ}珯wsl+j?ʗVUX5-9X7ޢ6Wd1usvT+1̾W_RaL5)=8sR;(ܤ}Rb.{yv~u^v wQ^Tb]5Iok˿Z1Yƒ##OoO5|j/PMT?g|rrOSL>pM3GXSSy2WDNLRvsf ͉}4t_s/hSkδ9 ]yCwޭ֏cR,P^{Ju(`WzSR=j=!˿j0mH6ik_&cSiaHzٙKLas>Iȹ5Mي=<\]W6[+n77I:?O:뉾{V._Dkb'hnRâ'{% yķZL0Ըh5-98Ozxx? LB+)F@JoL\axjn|6)~`!JUS5?ˮЎ3ӛȸ=!_z'qzgï/1/瞖4>Ԛn G GŻ:t5-=D/;|a}|FyH❝w,߽Yi7]Y7kM06u+;sP.S| *^^{dLcio [it N5HY<CcMғ9=+1ux;(0yeՓWXکf뼉ĂWW։%jLR/]irqvjiȤe{67Kx~&baF3- SFmu{*֩}1A @Kj莻4tj8J̝#Izko54(0RLIIp##22꤂z$2FFd$rx޽@x=4>uvSϮk]XTcfj5dR~Ż:˿JӦOk=1)TO T-LR r u#{:&.?Nj4gްIϮ>k,5̄i>̬IN^ _t俶yٕfM9'H)D0Ȩ{P'2]Ϛẩto=Ċ;;ڰ1\E$ch(3iBIWmN_@0ѧQjKb㊷ܳ}޷d L}V :=a%vEFuUfE;󖮭aGG'Vlɫ73/Ր!e@hDNAZ7<6M9VuN&eRݛ4kb]mr*Խ+So~ϛ;}Nm7oQz>H&5p-2FHW?٭:^L/k7ǖWm2/λ2&ploou%eotot@T^{~d6%a@h Ńy۾7jἥO?_{Zy{F~Nn+sשS>w7ŷK|WԬ.ٹI]- *bj?3W1ͻ_d6j>muo+`uf)>kִK;S𥳐_{ZCdN&5J8FK=ZK蠡ի|cB\󖌜g||m}/}W 5쿯TYA*ҢXSr:)V~iU7_~ur Xku\04t22Ǟby3ܯvh X @A|p:j G?,NoJx__9:4l<.쓳zdըt'ՔizI՝Ox@fLL͛U~bPW0ӬڭIfӛ 7/ԉZ5gbuݿl=I-&e{LmÐ~tGdĀyq$䂭ԭחF?4`+@85PU'?аR6*J)ҬUݶ҃#}vRݛꞺB#nWzl\\7d]CDB'L집?Ȱ:P xs$i5(ݗY~XR@E+ޚY)cŕ~JmTWW^V[MN46-=XO[_{]^:U6jgOZ[N؋/RjŻ+phRyΙMyz.L(3I}*`' eհnj8`?mWdgtgj>(%X<#ӶIsF}A͊o5[짦kY-|]}N}sn,+B-mH?W񱩳6Pr?֯#wmҾ;fMI'-nIۦ957I7Oҫ ?{wk gBXпѣO3غZӗk/kWI5LcaV[N:| -TO>4+\%v|$xn%oig:p͚xg?u?u1\3]z64Cc7ϛDհjsiK{[C]+#.TbKǦ5t_5#?c/ f_bٳc1|!IMG^12)֒9Aej=~YAؓhߨӟ\6.q96쳗F[Y`@=H.OŻ:Ŕf~4FyLJ&S>}#ß- AzBWF[S{uqeiݨИdmTC:MzksҢV3xQ}-kcJ_[g۶S}rPfy:n@>Bݤ_Jٖ_z~cZvLklPb\m$Vߕߺ@cKɤP:O7ZJMIJ)=4Ao?Vwg׻Jzz&hYJ_/cb9ޟ]1frw:[&cdݟSw.Prɾ2Ɣ}O>$P~{C{rTWR76%bTx;Rr6 ~*إ ݚ ˢv/oٵJC{Q|Kv]f'ӆmI龗֖铘gޠ֬vj6uŤMi=yDFFg~41ov::iݖY9<9g]g]ggWWsϔX@ 9;~okSzU/].5az~rG=R;WL5]BFroF}\GPVdR5ojG4I%^RkV|{U?oLj4|Ͻu* қ\MƥUݶwvSJ[?OJ&̯醃#eQ%X?E+_Rþ{+եxkK>驓WW!Wzh{Jkf(8c7}j>P%v[;+)z[MӲM/qj>032ܰQ㯼Tw>[j:pm,k6i +vVb=l6Vuc6er_7+;nZLxNxmbcccZo nLZbeK.NğCy#} [cF7|Z%nkjjVÎLBe矘|Gk# 1:Ŷ{:gpB^/p_"6XyP9b 8&)TIJU$7XjFr>{!xjOw5r[ZZATwi莻', ':4 ?Éa !&)?jKX3DX *IJ2jww͎1.)V tbZ] gYqP$"ap.Ռ@~6B; ceP~DJYp!ҢXs݈ d 0q،R{=Ku3g ;ϗ$pb` @pc܄]ݑc#"R?U~wB9~{HeaOFpqRnx-RkT1I _k]n4wRb]~|RQG* L#Gn!$ei/ܙuZ'bٞM;ꁰf;]j8 ﵇]8Pje(>+;F"ZB{UWk1qK WW]iW+`tA3wf}Vʈ|s\6%e0P!45gk܄ڵ)*AьxWZt[F{@cO?[ke r%TB,XkQGEQ d}xQjkA1IJ%rsSWekK YNrW7>W#X-}V=5f B'cfa='%J}vK\(&)+/2^*u{l:n3kUԕṡ J8S#,]%\sҶ+r 9!;)w|.0Zl0qIc@OU3(S,;lOI(}I"0]&0M519],+ {/Qy''e䰤 e?tu]ĐfIJw j1 ;J1ȫIJ9=CRR;@mn9OJdޒ{@o}>3>>d hRԺT*ewO1IY9Xsۮ~Ӓ}w9c[bcrTjjdX-}olڴwllU$1>>yӦM=2rO>ϼz5a0I U###8yLRrd{m;NJV^v-%>`'l~X)IKJ뛇6444W_.iv)r{>nm'-IW~=JO@8Y8yLRV_T$ ˥$*glKYYQs~e߾qƍx|iӦw΍ʌV$Dc>Ƶ^R:F[o$%|",ГaKPʚgaziI+;L>U~_2|+VYYWJy/ڪ$nْv'xbxݺu4^:^;~G=fK1x_5\ett9I %ɧQ;ͳ $e pْ̙fusNJ2֮]{Xc7MPvSSFZRjʕk_vQ@zW^Y̕%dr|N&roJf͚.,o_SOMIJW [nA.$}_E[11Ic^:sTJ0fiIK.իWjaa[]tEk48(n)nOmN{drȤ-ĸ ߼ysvRO$ei'w[H g$-[\[F?ݖ-[;5T|\tXjje톤իGV\2FGGz|WFO&bk"+vpܶ6lpa;|jp%-v󏨔tbS3&2ibl㥛mn(;/~7|ڦ,Af]K/t_E9k}o>v\yrMy̸袋nIc>5I1;SqII+{ݺuVTu.+51~:.NOaٔ|V>GT&XݏvykYtKo_~q&)s.:%[ʛ=O<7$IoJ&O'J&O͟?c>6}*T2C5gv.))u駿#ܝN׺'IVXqiR'LTx@8wvrO>?1qI^{%'I&Oq7oٲ%%ԔORit[va5VrdꫯO (Kʌe{2QckkN^/jnw\e&&*o@k׮ەW^&(s>tkN^/jϥH/?,7|%骫j||PmM7tɦM1 ZQJj8;@gfs3F%8UO>_=>3V)TGe}F]v٘[A;rNJerj1+4vmmky;lٲ믿w(3duec22ypnۋ3;+V|7|-L8yg/8_Nc>TZ-NRU *Wv4"XdVqVZ%Kܯ862L:Yy.Nӽ% [fwq1$ee}|X#Ml3;n{&*Ajժx:%?guFuj eǸ^{5 {믿zUq?n5l|F%/) Zf|%|j؅Gfՙftzw+`?TbŊoOLPXJdz3fc1bcy 0fd֍IJs9]r%Wvww`?Te˖?_ve??_r~?m~ߖ)a[-ɛSlS11MLT>&E@<-m˖-y (&)qsW: VgYүK.+<%L>U{ld+Kޯx5,6$wVf!qqr쓽` /|3ϼW^8N+=Pt:W_3θ ..:+,ϲeOz@H&O_s5?#Yc>5,fbX&<*oUucʘ[[}\<^R:IիW;i^cݺuΟ?O*M.x\jlZah5{lWVl/Y6)zV%%5HJH_~廝|ɟkmm=5cppo/}K+5<̳Ls]R׃}{r… O6o===IqǮ}O!Jʱ} Yn3IIȘ?-gy懻-?`tww_{g~8gr\l7c4},] IDAT=+W’}GhTROyٲez~}dddyP.cxxxe˖}ob2{nTc'x~n?G'|g?viXnݕaxؼy Gve&&(9I\Iiܮg-3ΦԩWʂ:Ie˖u\r%G͝;,7%ɧ|ͿuY}}2a5 c3rue8mݬU*zWR։jS&K/X?议W{/W^d@'k!-U)Ǒ>16^M1#8/>t…666j-L>v{;?c>ve%,WR2IiܮK/ łk??ui?N;{gguuu;bْZl>@m3$ )J]o_;Lvq?XusrxlWVDm2';YY}}M_.]tmvassx8ԧ>uꩧ.1cƌDbX,֜r=泮o՚5k^կ~W^)LfpǾ0I LRJ'*݆b繡,ZU@{ά^l ^( Vp[nXUAdY kݪgk1OɶgGDKrOI{/r1?&z3)l} 3cR|HhᘏyͶ["=/[X&)Sa,Unw|Ǭʹ2!2˖[((gVLZS!PI6mu^}vyb̂aJSA*\VsǽYؿpVU1M}gwƔ{ dW%sOnIY!䗯ԘU_*}^STܫc>1D|JuLPJ! R]hwP05&f, _.Yvg "X6hLͶ Vgi%kVΩZ>IMM\}} =k5HfIrfG9 Y)5?O WG1\w>Iiu@tS].fZ j>r_7 ȹsYB_svg^,Z.jbi9}>rSa=ٶ”}ܴS=(6Qi} _'@4} { Z,G4l90 k!yxaOvWx}nX]!R~ f C`*mverîU Cc3ڵ{=>dr)^d`-TPS,H\Sxgd>dj2 tzήN)mdeܐ\X*Ͻ'AL>m[ 1Sg(@eܔwV Hª~K v!6xX>}>twy)mx]R}Z1 喱4rb6.LB6I"!+ VuVg3ۇYhg!A2%pjՋUWgEg:S*7'7Oֵ{l/mdO0I9=:=VnY7u1`U8-\, ܿsgYuPV `A*D Nê]_*禝rz'}{3x=OcԫY̖w%@}1a4N53n(0;gU\ᗾN,cmfBx#. :y\Hs[m3{nվYb}ua>d*rO~#y} sD9Ǭrf}>@h!Z>lyZIRKYJ*rە}^xƛUpYج-qr佘u3 J v.H5 i:V!jNªU[v>3}ؕhه#y7>ڵWy].)lLܤU;V0{/fu">>(%*:n۵[#ܐ]8[fe,!³v 9+PrCfR[8j!g9iM/8mCZD.'۶٧SVa{R6>]dj!(J Y tR֪]u톦0}\xp0Lv* y+k>rOeca}=]wczfIӲvF g ‰c^cΫc6Xj1rk3[c^P.*KJÓ}8Y0W)K>/lj 4r[m7+R~ZPN* XFjlfjl?.an!ɾ犵I!@X{2OqI~dbeK>V ˓} :>m'WOY¸ԫĕ^rzK-|,+\͘xsϜm rBY{pZ]3 _+ xuX-Ϩ##@x{۴SG.erU9>P[>m!T WR4pΪ+VYpnZL3̮(oݪN_s "89jUuTd+%>w[֬LNZmb t&|d/rA=Rc6} ˒} >ӟ!+)YoVuJoזlvsf]kVȽ}fYˮb]YWN8񲮓0f4V,pzV*jKyV}"@{=NU ٧Y>ndO$JJIp5d&vseAdV}1c֦CvijI}6  vAجm2;)[NŜI1c^>*G*}|sfPt[7fU C1/S^E)1Iit PV}c+a a/ ۠촿[ntT MX-U+_N%&)%ױꏕe@{=NTbҬ]yX [[ه㴎kLR(@WSq{V]nd}vVEXD(prƘU`tT%wgs'^)c)m}e\drO8r~|,0edOx+ambuV'gyuΪNE97ܞiguV\fVJLRK.ocߞ]yuLRS<5}{vqIJUqj]bj^3kjNʖh \ łUNV:ձ+ icdrO0rTIJ R1+oG'8&) K:)_ꤎYJ)Sp( ;e^ӋZX'Hr.:6:8Pt<-M2>}LR}Rbhٕ)%y>t_NCϞ &D8 םΤ3k} ҁ:/%ط =uuV}sR~d: ORSjWnNs(ܩL4rVu%+fv'Z&)$NSYrwZi&zuݶU'W}> r}NSb㫗}> }N(LPJLR:n62{X˭k׆2L bA8˩[uRTjҪmO2d'rOsTIJ>ː} >>;^d&)_M}ծNծ,AUjnBq5êU;NU*uN}aA)ގ}jlDd{d6OvsQtռmT::)k:+ x8'm-SNP{\l[Xj&)&@AJMRZM)c_/PV)ە2n/Xݶ^*t^m njRnªӺŘ<H)\c/hG>nVbʐ}*4d{A>FlRIJ;n5n^~%Ϯ+ UyRVm}#@u{#UnҬmmN}A> so8bz;QYJ=X*I";m'i%EPnwVX%۶E=OcgJvdŶyQSli;a&};d†#8$e ͻ^L5ky\ݶ rDgY괮՞^ Vuړvۋ!Š㾞Ӻ%a2D{}:y , v圾^,ڽpn+C)0 XoJ4v*@=ޒ}-I'(%&)څm^ֵ[~ԳJ /ϐsZ3-7bUix$e}'ۼKǻAUSJFOdꖄI ՔV=XWrr~ބ[rCBg `?ªa}L_# oX_IdU d+U%`]\e_/':CR*J N(e\ RU&)%O:drU NjBxc_(KIJ)5[i[N @48 Nj^]vBV>e-m} =PՃtdpږ6>~dw}` ~w 9 ff j+ۆYi ur۞AUrv&U[^,UR >3C!{ܨFQrd@9>dEJJ׳ꊽ検Wg9i+f ?(M%C@mKG9g9GrU?-rOB{$>P;> m&)=M9)禾Wxx\C`%(uuH͖rUɷIJSd̐{sD)M}j>DIMLRJ5X_2<@)J]ZmxJqbe>=*vzʐ}n}}گ2dœ#_e>O$evUkl^`Jp)74xU R&)%Wme $D}@p}m,LRFXk9F%Y]/BW.}> Tۃtd*>RKR NRJXhWCSDCkmAJRJX%ԇROA h>%}v}}¬D!9 t^UX. _N, R!Rr?/C("V}>EdڂK5y%?ܔf9?dlTy~ drd'rǶ‰CBXݔcij j h:WsYJJqU6# !TlP3FPAB\>aTӓRUuA) @%g&JކUOjYMSŲwqS6'l'euǀ2rrYIR˚!@m)7TU*V.}QE >RYug͕Z' , }*N%)[%Ψ#Tt^!=ˆ>Hd +d}Hd0arBDk)嫽@mFH~"V>d@ő{\A:Pqd`2Gk%zgyF%)K5*٧6>,rOuSvd@٧ LPNa@^,_uv_IV>G#x>G#x |~wnw!d \ G%tPd@{ >WRᬺ]WZN8Z?g;!}*ANSQduU1Ii*Fh[UwdoX%D^DlRxtdȫ >-_jO}IJ! #*ߑ{>5I"|RyA j k RX%Pu}:&1I@k~g$ PQ䞀!PQdXbҡVɻMA U#}>rO0S#K &)] P`*h3H( =a d'rOa=٧m‰SDزߘ,A J#H|aZ#0'a{;{J#}d5I,fUO_?[%  9ad/- rO9Hd /- O=I24J {Q t5 >E"}\!@{٧H*>E&IJZ@(U db>@ 3FTO51I֬R:D9}@(-}IJ JV@4>BX%P{$U\Q+٧XHkV @hBK-U,QKG"P!}*I Yh cRA@YB!j9HdQ٧R֬0^ &U.6;{2>@&)+,5WT X"DS>XD^ #`)SYLRVIBk('@D.tT}5.rcq d`"XpAX-5=ΐ}5&2٧zA V3 Jj6@T#Bf~rOi>S}LR|NP#8x@50[d[/&) @T+@{*@}Iʀ!?j}>,LR#@u{E>$eZjx}('\>.LRErO}pNLRFk!`Md̑}I!0}d2=@':(+RkPk=5dhb\QFHE! =0CD'AW@PV+OaW@P5 = >`^~">{/db`@8EP}^# >}( !QACA}Ő}P&)Q1Y-R:r@ZBA0I j >\{dߞ 0?tXO48:>2>2߇׈@;="R)H@JR"%)H DJ %R)H@JR"%)H DJ %R)H@J`IDATR"%)H DJ %R)H@JR"%)H DJ %R)H@Y4LIENDB`Kooha-2.3.0/data/screenshots/screenshot.png000066400000000000000000000722661457702140700207350ustar00rootroot00000000000000PNG  IHDRV sBIT|dtEXtSoftwaregnome-screenshot>2tEXtCreation TimeSaturday, 02 March, 2024 09:10:08 AME$ IDATxy|T,YIK{E .ȭ[wuZk۪Zzj޺WQ}A쁄- !dG̾33G9g29|`6 R5\1 8 xa*R-R@DD06-^+T ""BHFqdCp <lFrs E,D.<5Kp#\3A's;k"d3Gp s@\3!xH=#ZzxN0BGs\-d\yrqzpr$Ɇ}C6Ʋ!ec8sd=fJvh˴ifO6$ 1" {2ly~2+DRIfj&% dx[^cݿV cftDBU^/V2UBQ"u^\ iƁL [ZkJՙTWB2/g*j,A5W%_DzXC+"Pêj*u-A6\ i@l  Rh Kp%ZW6hj2G?Mvx6Z-paݰk+*@jA5CV-$i݌'Z3TL vUK*UT+ wEwx\ j%$BF:NuXMGPM?m$lѲj~5B+5 uJa5mD+ nDk, VJְKj6\y-@If & .C͋&Z3@TwJXMVPu[d+y2=xZ.,\s!f&\8 [u5Ua5VPBm'ǖȲ eGMdxNo%6dFښJ+kr oTXj!5նZ,ddFRZ]J+kd{(KVtҚl=fTF< t fl?2Vc`="=Xf]+"O[icKPJ`A6+ ln0?־l~}k{=tH?lu-ChR6 := P5&ͯK=5v V`@XA5ږxOdxkM$Fjm%fl fd[MuX ^#g@ 5@.o{;١5UY 1jvX \<'KVkU T].\!dDP,4R@&#ʚFRX3%gM卖nÉ9$dXO<' FAοhY3%X#ȶp`xF{S4a5~2X= ;Euyp8 ^N4pBj5B+k-XdCjjV匦u-09"*+ް9*8MK[[SZie5I6Lo]Ԃ.0Qjjo$G:dkrY0dz ݒ\ ݂jTmm5F VZY$ƒZW#}}.FP#h:ԏJ aTkp($%u7m'Tx Ymۡjh adKTA5OAۢ[o+>r`GlrI!'Imv>rڍO;::qLwtt<OLToCJ?!4:{[|GᏙǐ  p7Xɓ~&#D{ ե.RP8~d4?>ҧp|fj<ddiaauٮޓ6:yxvȫXMJzO_5$s?F6;k|I={\EXd^gϞ{\W7J}ZteUX_5xI)E8?^bvp|8^'"ed`Ȣe~`Mew_.vv;p0jG@8tcK@˷V\eo4 mA&[<#G|;fd<ۭn\.\.nn߇>&..)ө[fdۭNuvvr]񨧧G===w:*((PAA«`T hhMEWXeLԫ. R4Z~ cifdۭ#GQGVq\ۊM'"3Yj\[Jr`5Qi<'Y-H2 4uT{ァw}pYبo]jkkKj)I]̖IRoXҪg\W_}ŋk֬Y*.˺uCiӦMD%\ *//z-I*..[o?\6l[_1zJ~imݺշ|YYZ}ߕfӖ-[룏>sѭުҀ<ꫯjժUjhhDgu~r5hK%%%r:-'D?xx_/hGx(@@h]EV8ctUWG$a:t7=uTqwPۃ>k18p~iÆ ~jjj}\<__|vU ^Gn7{h55X$Sdyh΄- dn!O"wȑM f͚)SrQUI3gNyOͦӧ۳gO}n555i۶m}&޹sg5\.B9|pZNXgtfSnj~Y_~O=#)| k]]]hƍ IõFzkƀ|C \MM[ .Yg .@_~.\\ggg]BH&Od;9% U/dl7Y_T:,}zw$I~^A]7lUy='ll6XKxtbr-!U&T}ݟs2!p"Uʙ>'|rZGuH[oUk׮{ȑ#kkkC.kEo?L믿^'OVII$%:F|nM鼔kSt*f?"/c{e**}Ӎz'.~CYG֭MiI:u^~emá{WsUI,cᣢbr#q|N9j=z@֘?~L_⵭MsOqVtX=a555n>v1iooCnxS-ƙ!U_?iV ͦnMW^y".M7O>7|S۷o駟~iڵZvoA?aOcYx<-\P֭[SO]С/&N1"eu#>x\ggg:f j;>Rݜˁ5݁.?ѧ6f-\PK.qt5ܱc(ϰsjŊ͛7qB>s]uU:裏&^$&:o 8ȑ# pꫯ p8tmBիOK_oqﻨH{pOQokH9;~NzoP˅Ͷeŕ5 $ .PGGwuyr\]wg?W\qEBaUJ^ҒtU*:HX2.X@lwŲla+HxÚJ#zD`dv\@JWd>oh ni *=&Hд\% f dX`+aUJnId-r)fӋ2x`j4d*Jl>ffc + ZC{6hɒ%Z|y- L+҂>n4Vo/^Vս< өs&PzюL2B;Cw}7ި-li``Mqcsš@V INgBWzwuwet-ZQ!5_~:V;jd}+?O+oXs[n?1}ge~sko Khmo7s=x$Z;1y5~:nt&|矯|L8:N3{rIvmf mt%Xn ]aZ~vyvJ$ٺ> 8҂+]!{3<ѣGv9r2bү_?l7JrH9G^> IDAT7;_~CM+>/FCim[.t,ia5mʻᆱkB.wks9GG?Xf)# I 5a„{T[[9shΜ9*Oo>m޼Y :t\. #GꤓNRqqql٢ 6^===8p?xxǿ>?Ѹp8$I?pnWYY ɓ'kر͛m6577U*))СC5a9Ҋg kAA%XM_Z XGe7Nׯ׾}ե|mۦCI K]|6G5ݻU[[gyF{$竬L]]]ׁ_K.xrJ}WR9N8p@֭[5Nx)--Uiii<HԤ&m۶McǎE] Ro__|Q*--ѡFckURRs=nHflA45(#GT~~gs1m߾w{۶m:s `gg߯" :4euGA[lѱqtv)6lƌ;NeeemmmqF-_\W_}uW֮]J%%%'4ۧ^zI㏏ΙghzsN}:묳$Iz饗ڪYfiƌ*,, Xjjj"i5jS(Wk6nj~ ) Cںujjj ksstqСCڿ4r>hر_f?ĉֲk.ݻWyyy y38p~qqoСCվ}g}&á h i&͙3'mfNPQQ^z%_^UUU*--Վ;Ң &vl:tnnXmmmfVqqq&fC̆_I(,}MMkĉz[Yxavw"{jjj}}G}|UUUF!7CsL@XPee\.6lؐZ7Nz|O۷ph̘1joo|[3쳭vUVVvO?UMM4iR@Mnݪׇ g֗_~5khҤI[n5gΜihh}o͚5kVTr 'O駟gyF#/} wwͪ y9s )ޮ{pBRo7s=Woo߮۷kĈ7nƎe v-3U~2a+ZJ3-ݻw\{|l;ip?VolX{5nܸ*IFҌ3٩;vV~ߔBc$cܺ*)Yv{nݻFKKKelWW\.l6[ȡǤr&ÇkϞ=!b9+I˗/WggN=Ԁ&O+R'OVAAj*=Sz'qƀ"+** %]R}6ZX1h YTEEzzzTSSÇ4d*,,T{{{үUTTM\Enט1cӣu֩MǏ"4vXM|}4XCCTZZG-\SLxtU__ZWKKZZZ|#Fh ˒ܪ0um/>l!n -rق m[4?xDC@F?EUmߏ''h n{_u-nP" Y%A V0R "VXF`X`iVXF`X`iVXF`X`iVX57.4+,-+_lY'+2`Wss-cvY@D͒9s\ .á<p] hooWMMSܹSr\IٶTYYƎ*UUUf%e-6.iV ܹS?R}˥544hݺu9rJ;6%YZRVwӶO@v#YjΝzGݝ}wwwGΝ;Ӿo@!Yv7%zuww'6@v Y>Kk7PjkkHB֭3O? d]v]XbX+ E3;А!CWUܵ^7o-@tQdUI{'~F`ч0֭[/F1[PPJ͟?_&LHQ@lI5JM?c:tX- nݪ{W[l9JRggl٢{W۶mKAX0/+@n=I"&Iڶvޝm`EaLO7P" aKqT;{?뢅F`X`ia,`ҥ1- E4ju{\4+}ZZZHۊT p$PE)???) {YYYRKi1+@=ztrvѣGe?E UUU]jd&+fΜ СCuI'] %0AAA:;;}ӉjtR_On;m'n{)G%:k1+haLPYYm#zq/ݞsݮ/\w\ >VOJKCioW nIvZ nt L0a'?ѳ>ݻw|ƾѣu饗ja=tkժUOcuww'R~yyy7nti)///6̺Bm+F7c3/x=}eo.dZm8L]BNHZVݮ¤l+577K̙cr%)lbCiVkrK$֣=G =~2o-|akŊZlUr$Eh.†U+VH{BZ`?%-@&z 0aU/B+ @'zZDV %Vӊ`a5~a2-@IFXV $3zZF Gx<=3ڻw˓uiذa:S]$fv!$Pۊvr-F gq-hveAK$ٻV<|f$]ss$iΜ9&WN?&*??TInIG{vL{ep# Z&>yNedn+)K#4+, K#4+, K#4+, K#4+, K#4+, K#4+, K#4+, K#6@ yyyfNl9xf0(+LQVVfv B`).K@"EEE2deTPP@ TVV2Zd=0MQQƏovJJJh]0հa4fP\\B@#tGք SRRBWXL555:x@N+((Pqq1`VXFQQ;8UVV^jkkSww<@ֲr8c4XSTTѣGkf,>4+, K#4+, K#4+, K#4+, K#4+, K#4+, Ks]]jnnV[[x.+l6婸Xeee*//WQQeQgg#mvIYnp(//Or8fdɤ.̺Bm+FLc3/x=}eo.dZm8,]555:x٥!C2RrJAA-\y_0?U[Rߞioﷂ ^iOޑ։w~<,iy>5 ۧm۶bb2ͦkذaѡVSku%%%*,,4eHrtt vޭ]v]$y<mݺU=z)5͔}Z[[vU\\ly_0/NAɂvڥ}}U ikkSGGG~#4ڶme m۶=m'm}~#4555M0ǣ폖UJs5F`)97t# SppBZ>#{: IDAT K#4+, Ks]Xf LWW^yڵk$iر:st*///===VuujjjtС>W+((Ѐ4fM6MӧO0b 3X '|R-2뗿v0/ԗ_~+VoWyyy:JFUWW.٩kZf oۚ>}z*2]lذA/.)O'Ԋ+d' ê۷Wgǣ^K.V\wvvj޽O{k7nMLE +&jooyݞ=Ç裏Ƶ7^tEy+V{_KkMMM󞌅rs|X---zG///O~Wf3MȰaVp,߲1JA쳵dɒB%yd)S$e;G~c=6`:xDԪ~|/B7._۾ӧOOe.L o>Pmmoph_( x+Xi&ڵkyfIٽu1D +WԒ%KqF}駒$ө:+͏2SVVf͚P_~9`z̙*++MiÆ ˌ?>!***t9Hm=6IRyy>?ʕ+}-FuŊZh3/F 37ߌz#O2d}-+ԇ~V;/Kt[o |JJJp>$ `Nĵ1-V ^zN:館L . h]3ѩʰVWQQo<}g[qư:i$0#:ݻ7m/ZX(l6]{:|pTo:u~o t:u)$VΙg=xЇ D0j[7Z.26y6"}K Nbe4o<͟??IUٍL:Uwye Cl6x㍒+0"DfK.Ѹqs1_QQK/T'xb*L fiӦiʔ)Z~USS H4h*++5m4M6MUO! Ij8p8TUU*K}X`iVXF`X`iV3҅ך,V"//ttZg>>YWeKFX,0¸ `,Jh 'mBg4NON@IbhPm!6(mOKt%Kawǽ{owf739vw~7k׮VS466ֳ!炝zyxX[jǎyw;v֭[{ޡ!*P]<pj``@=ɻ;Vմk׮\wN###뚚ʭXV[\ȟ @ VغuuQ;v,TYg۷[qohhH|ݩuiddĊk>Iud{[VvޡyjǼ>>͛7[cj4f]*z> jI𹐝"} ^.)ij巳i~p#oyxsOnyNOº?.kt+"NOºIWV#jVX X`5+F`V#jVX X`5+F`V#jVX X`5+֟w':9:Ǘtrw5ih]oץtCھ/nmjywG[Vvʴi1ﴺc5OM3{LR}aa. z״?wW]87_>Z:88x-֏\i}=[foS+rqb]g7B`E._ʻ F^iӗ|lg7B`E.: V#jVX X`5+F`V#jyw{|V9'Iޑyg#G``7=$݉nF5Fz%(Mu]{٘-z.X8yw@u5묁~ 0$@a\O鑉%IR_M6_<$ihZw< H@a.:]\)N,:zxbQԢV=zC(? #u}F_=36m:wS뵼}\PaP O^ѵjg }zw: -7Ǒ8mwO~[ݯK58O/;o7c\M]CZ׿6ܢ>t)__yÎ+o.~nj\kI}m^euZxz/V@qX^_]ڶqljӝWkd=j9}AW_8>;FglKGuUqѶA|dk_4_9jzw:7ַ}#5֞1{ɅvڍzՅ0R_v:F PxoZ?qv w~}j؜[tt~hNֆ\}~lKNۺ9XpX maqEO ^?T٨ #pUgXm:ҡG;XVGZ+;娰(gL_J@&uuzTCT|}5_߰zѓKsz}.ڶ7]>/|Jf`M7:ӑ>)})=qz}廆GׂCu>|i}'3[tg ݨ+!u Ob]P]4ڧɕ}~]{h[~J߬]|zNLP(V>tyR'gmӯzoZWê$m#>[~kV%c:uק_}gmh)=2G&/[SIﯵ/OWߢueXg^M/\4>vem'V}ۧ{Wȼ~s|aHR8r|IoS1h&6~ֵuڗ\khH=ٻkņ/hsj/{&aUvn^wˇ:99+l V11+X/Z\}kK\ol2stlhji3]'=~Eo;7;>˼롹up}  w>}|PѺ'ApX_wP?B|ZK8ƯJZ=\/i "\o>`  LW!j:J Ց99mwO/_:_ASWiG;VON6tr }KYeot  TJ)cXg;㮱l/<1gjW=wxk^~x!ƴ9|lmoota#5d:c> @X좣96w^^g }ٶ\<16ȃO1U<կ?߿z+c_t:梑[JX{mW*=iE ?^S/icf滓₡/פk/ӵu,sh-m~6N뭿Xxΰ>^-,9xZ3WaBdog4=o5k_pX}Q5lfPxw|}u\L%-_Ӈn?s ]|_] K':}y'u +p;6{0Ӿmʡiߝ}~"u@/Pa`/~۔$J_~j\A}7'j^!]CM=y{׏o; J/{֐ܯ6hl]MOM6Ɇ~y3E֧ EӖ}դSM<8{m%5,?}-gOznj_?9}_D64ѴeZ:q?nj]yi]w{{I-,,mxyʻ w e$5Wn7]?.֏~ɨg14v eLCgF@ɰV#jVXƾ2B V#jbb< ɰ- k6d 2DFYK*]} l l8jSB+sbkU-vnZ VӍK@L%.>ŕ @L|v#/doK7i߅|@QpH7ݍ2 C$@`Wm|h8Bז? ز!Oao{w7!޻UW /D4Vꚋ+ _;T;5 Tק#̯3 uݼRM'+k˕ՊUB"C5ֻ!Ѣ C-CN}3-+h56~j!mǼ[?u>1I}uht_&WH Voץtź^-)I͕ p#mg7ovQeޞ 2rU>@(9J`-UMʰo-sU$Q 3D`_84bZBVn7̨@'7XلTY%QX val k86Vu@r6[mle|2ӭ}N6֬ز^,"uj2 ʁ5mlDqGm[ٍPYQ_`_kX.Ϧ1:)>.}3b"&u֢, oq&J(-l?o' U)i# t8qx]Vm ,c(*ָWočFѤF}[ivP^L*H$MNN>bȝk\O yKcwqo:ѐ#G<c9Xϵok&'9sEGDlDpԮ!I'rȕkPg@T݁wYaˮNk]7Lu`('IDAT{~Vn]ӼJꛙK BYZZȻV<,Yq S#-M~\ H6X khL7$yGZ٧V&O Хָtx\qxq^neP$>MZ)>1>6-igJϫ6$nܸ:N<-[p?.}w(jk aW XUf%ʛ6F%YI.J>/vʾLZٷ)eiqH k:֠vixm=[qu?6,ȑ#oضmۍ>k=c޹s\]UUފ WTX@`JeWwxu?n ZP(W ʕr WjK4pǜ$gϞ=>>hy&WUs_ A#k69Gh:fﱡ?ݻw Ç?{ܝSװzƵ g^A#"kO|զ堺jX3AH 5eY5qaȢں2 lPuuUq҃4ߛ"mPfiCMUTiPӗӦ>*wްV]q3A4~/ЇȨf#*k3UZ}k-=oajOaMyXUJM?aa5(FVu] vʨ!۶q5-4CL[>ªleuBdXlzG A}j7m+ D YVYMa4hlww_4j xj荴sǩfz4} [Uk z8( jQǙzO| ZmZK幘捫$MUȨ"Bl0_[G귬T^װ- TX%9<UMӠCފi k[:{[נ*- nCRRo*zEFYV6iS:E YOr6DU^ߦTy&L*6 {IqچU7oz~{obzo4aJKBpm5)ܥ=4{߻|!B]I@t0 5~/ M7 pO7/jM:\nƷVWyo[` j*eZzWU5+ F5l~!7~aկoP]MI@/kD _h5Nި5cQy\T(ATLV >Jۨ$A`gx4 rW^@uNҜ7J q*YUS{v~mr3U|٫RӲơkwã }<HuRe~aCGiu$l6)NhUcaˏ[&#l)V(Z a'vޯoyG'm_ʰCnv?nh+QBhPWU1nPUJv?J`MVWaêT@P*kYV>DiWj* q~ҰviUQ];^֨JshiZNeMs#$)NĊR:M3= 2VaIG]oym¦qma5PdL;$쓆ݰ˴:ũHv㞠|iqj[uaLA"ҋin ZF6Iޓ2mPdINXLng7F-#zRZ!-E]W75hnkP[(K+I2N(eXl*kyFikVYI*ՠaU*cXe5 Q a%m2ɥt.#x8%]F/jy(MX7$@jj4*i!@4i,+qOrnSX,(КdCY׻)T(~SUT[ӓYe(@*>F]ga73=u%@9u[a q+E !L5IXuFy,m(@Q^t(A*՘Za2ig2&ijIAtagj9JVYuZT>n荬N Ǻ YeV3ξAV[XѼBm/deêTݓzbi(/{ͺZU-68M:Oƶ8V5qbHA* kZz֋z9 t5f6e=ܲ JX]Adsh>B+&]^*IV]8S^+CbW\A$n.6,oCZhg-@qU=̔9nkVКt>z: "5fW@Q2wX{V#D7NՐg;,~FJAއm6zxlyG[@uT%$65ˢ/y}K^' BX4N9 n?z d7ޟ3!ZdGP^7AB"=C{@@*3GP-OqA=?Bjtʅ5Ւ -%Dg@RK SM"#V nԊ#'*L S"[lC(H,}@J lvv#"W5#`itmq+IENDB`Kooha-2.3.0/data/screenshots/screenshot2.png000066400000000000000000000676531457702140700210230ustar00rootroot00000000000000PNG  IHDRV sBIT|dtEXtSoftwaregnome-screenshot>2tEXtCreation TimeSaturday, 02 March, 2024 09:10:32 AMmL IDATxw*((` D"5?5MMԯ=b]A(b &#((Ro/wg쾞{fvs2={fFp~ ߅.v8!8"( ؿ l },RF@W@E\a؉.&FsfHE? \]|< Gpu B;~W!9 $ _&~O|y>}rag=¶'V˅З upv^@WV6@zrF7O@X PcN XdSu:u9=)pԺr #󜸍Sɉ^='D'֔3 JN_R ~N N#J2 6P3$PC!XmJH"WןS+ֲs{&n~7K&  !XǮmzvJ8%%Z]:e;vlDɝN;i i"h'߂79 evk lolU Pe\޾D(HM6[*pV,#AК$CVӭMCW 32?ZBS!ؿ aVtJhM"qN֐?dHcXW=Jw qV}՞uGgPBߍagTj&CboȼL?}}iƚj| VX mv}0h2mMvE`a5ՠj%2qy in\ .o!Ma5!juU _|iTG xZmo!#_Ig:f#;6| פ{++zV\Z 9(N .#^]^@nK4^ N!_EdzUS T˾nce J$ .%\ ./!!CV .+_n=x$[+,&\!}+N]TXMW5Z[ҙ7þ :.:&2mvh5Mpwzj&jA5ِn[fwʊ^xT^D2Ze͂\VjdSzZӑ;cGHTj3BK<ծy =& "r]+ϰ{iLPnUh%&!zWS |D5iOv,l;/Q2_wnOeǑ5!錇XZˁ©ѮLPMq_Xz:D^DZ'r5lVzY3$WaCD{NS= ~'NpJhu\ vV+ƭf:F }r@v%h!1V5Q\ަVLg%&!a5|,JXW5ZPMtX5&#C%dio+jEh5r1(d*%zcL3[f $;}(FBYsj6n 8r-8w5qHXM$xny Ʉ{@nJpPkmM5vm^3& ׂE.ZVcFg<W`TV2Odj\ۚJ/Mr)w5^ffтټ?|q4Kxa, C,&ۚlh` Z$ƒzW}}+&hWuhP0YYu>.^/YH IjSGx F,'Zx Mzf#G[Vy]V<Ɛ+a"{W3V#GՀ:U]ve5~޽{*--zx<=$Dy%5P(cCC÷˖-[O|rm8ϦvuMs0thar%dwՊq V7F/@=N8n:W^{=EB?쫮iӦթ#L%#J]k+ r<+D`TkC]*ڲ/V#jW]vYUW]ujEEřQV oذaM7^MCZdӚpX\*x7$,kr!8)F>w5^XbQ|ћZUҥKϬĤ^2)r;3Y!]Ro Ec<ܖhh!=)X=ªG=O<͏\`XSSSsissO<H)UDZ*B16=/S9ǭ?\ؘVlF~XHw5-YΛ7AlR'v/Xwu6ch3ohS{Y]pV]Mg(@2aկg/Z>}ޤflt7M6aV0 0T,,v/ZX p>}~ѢE'Uݴ&xlL$xb}Cjw(Ź_fc\Fmjl5 Œ<; p>}~޼y1,ʿ?3fTƯ&swҸVן27LHfgI)m26+5R&VV n vnTƫF#rx?wKk6שK/㚌82ЪS{g8^GJ%d"20hX39f;M Xro4}Wu<ǐ&ho xy\E~eov, Z-jD֑ʧhut>Ic98c*i#%vG4=1:Qn\[~qN+y:=7*/sm.ܠ1/qxl-cC]q+wԹk&d貓s6ރwއ%X 9㣔6N9ڎ'ѯ+bQMJ^|5\+^_|qtOE鉴)UɉkB" C6UrgF\i㱭XEG>NXmYÄ[~Vm"zZPQDZNJg5ZiR$V'ȧDmi+SVV? pǶǺ͑h9f؏${`NyٝFr-3z$>\ӱ-^i*b-/X)y=Z!(O{f"{Qc=Hx<I mo9xw ArWq>ݻU9l _Yy|xI dȧK;7 1|̥S>V'ɛ 1V85$̧5>3N8z\Ɂ5ȶ|?:;9OGd C`uT!T1R@`;&Ʊfb ?pϠ| {Irؚ !| ,/vTwm#kq@2)";<BV8F`Xx``+ G#_'c]jDHC 8;S+;@9295fdO( cB`XhV8F`XhV8F`XhV8F`Xqy G#!Ue9u!p4+ G#p4+ G#p4+ow.L'x,Y_SN90ŋ駟[n6l~#)lwn`c̙뮻NPH4p@=V^ ~qѣz޽{k3f P!byG7UIZp~mx6Vc +>ӬYtc3<`0hwiym͚5 [XXV~: Ѳː!Csk裏j*׫Z=z5b 2D^zzwxbYF޽#Fh}YÅ^?XԷo_=Ӓ?PӧO_|:_xN;42-Z_|q6 r-jر m~X?UUU={aC3N]B=Smxb-^X>ZZZ;ӦMSQQnVr…ZpfϞ .@'|rB!{?ax|M>]G}t;v@, `0^{K[>}L][[.M>h"}'0a֮]k:}ѢE7niXTTTofvmjf7nB!]tEIdp5uԘ$SaUW]uMZ[[5qDQO|mmmzgҪ@~!HKmm}W]ڏ:(.}G]v}ws9: _oذAwqa9+LVn4h WśC?i66+Rmmmﯳ/Ҵjw>/l@ 6ltڝwiH?CKB 0@} !\rvejkkrJMv[tIezg7n\3foW_iln2e.]u{..CBip\v|.mݺuG 6lkx x]z`7 8c 53l0~ݻVZ5klB04@ .@'t1?}g 3U? >\}Q8ּye-Zŋw}\x:7%K[n1|hX6[wy7S^x.=s}gao̘1z_ln{6vW;.IU^W4%7xcO׫#FFǏ_z饄M7ݤ:(sj]ƏSN9KV[m'jĈqיcSOh=ЕW^K/˼K,XΝEug„ }ĉgU ` &hԩr-M{]6,Y;s{>3544t~yE]wyw߽KXlРA>|x/2Ꝿ:V%zM{7MuZ]`6lsq'.GG =,3fFy#Sjԩ - G~az qc?x`?< iժUfm&^Xdְ[܆vVmm.Dm&9H=rww<ѴBN2*++7?jQuuujooW}}}xӧ-I7ݺu;{/*3|#Gjڴi]Nh:J쳏a@ Bå8hР͏}>_ipX˗/O^ 71_cvidBr4gw&>8@J<.]o6=䓦']mV]a:`vmI,(~ Vǣ={v UN(PQQaI`²e˴n:PL !C?hʔ)2eh<Hڨ]zWL筭Ջ/إmСIM # {wvۭv=裦B!ØW -UPPХmҤI駟 uQwwW_vvi߿l%K.3jpGao4\zo~ɟ#FKu]wuyׯW_m:3}lnuuu HV[mO>Y'OҢ; IDATu~4vXM>}sۆ ?IO= Z>O /q5G{?tY{ァO}Qo\ɰa>Os sÇgϞY @.%FӧwI[|&Md^Wƍӱٳg?_׫]ѣOCUiiz}G>}-ZH6lPaajjj[h}աZTTT[o5g}ZrTYY>}hС5jLx+UVV^{5͚5K_~֯_ݻ:5l0y<9R3gX-騪}ݷ}|SMM?^{キ9.sj  ʺ-+v"{^121Ocoy$y[[[6yuPHx76=`?I!I7 <wzLoN?1Om#뼜XD>O=V. d?%JR޽mXYcuy^RRNf ҥK5yduo˝{z3gN1c ?2>w}ݻzj\R}6lenݺ3ϴZnA`X棏>xٲe=[nQnݲQcH2fw33p@=cu]3\\esY+HP8W^yE|VXիWX=zА!CtAi}T.k=5~;"mO+ChV8F`XhV8F`XhV8F`XhV8F`XhV8F`XhV8F`XhV8F`XhV8F`XhV8F`.pP]ZA&yK孬Bbsp[7(~B7SQ.oe@--jycZ?Xm P m:w/vE T/+Ӏ,V 7Զ`/TPt^OQwR`]T|<%%-ڿ]ݭYH$`?l,Vw.#knV%`w@Z|KSͯpCC¯ .Ie?y+ҭwʿ*3J ouu+Wh5>fR/~]Y֏?Q)*9+F4~ԆW /FF`bh~ M>ܒnK?3NUلVeɲ zxD SpSs 75i,5͜_aTxW8Y. ] L/A'5\`YX,Шu\]8ISCTcH>3&h9(Cv&~>MXuoy=2,VS.O{y*孪!֭Sh-R/P]^zKU7^%?jWŝۣ *oMtnKnhƨkUѨ_=gBG/24s}!kDkoRhä ggoEH[[)lu`ݤ?oj՘ߨoWd7dpK:prІ:R0إ/%SO4c~ O,W_WUz=rU?tƱ.-GN΋y^/sP'Q/bHUÓ 'z++Tr16Udy{Lϲ*{O*PyL74jMPQnCOԻn[Uq鴆'g1״TO;[O9+._gU}*}pvDBk֨SO؆#"jh/*=*W-7^ŗ |ꦿSVfKM2BGi j_l.i[֌PcOV[x(ޥ`pKK6oY@XW_w1l}ﰽ.td?~fdh/=zTjyW[澭|ڱ'A{jڋ.5\dJ-ڋ.ժǪ1SqǨ_3m?c s--W(3J-jlyM{q'(?|[1}8LpDCL&uV/1V]y0SiÍuާ 76)t^UX`n⫎[,SPSOVխ7ȿmߌԀhz 19ّ X7{Vsv C_\d:GVFOΑ[UHDqǘyÏ3SN hQ¡tiUU^-'by\8lw >V䅶_s ekzJ>R7>_ۣ>#+Oϧ?Ig.7>|+Ywu>yJKTv9bTrCKJZX2SVSx*p餆Of|߯KO?ٱg%:ܴWd6/~1MھuKT}]bUqLdhoOEbXBuujc)-9BުJC{Wn` TzbUi'a5$pI/OaޤܯmBl8A6+r^YKq%a<*9~=ШWB|,u=gn(9Xy MO|>wΌ5DMnf~7 X`]qtIǙ7>g|OViy]+:nU*:`C{K:SW~1v-Ojzi)*"~Ve/>r $o;hhoy2Φfڼݫ g;U IWCUvṦwNY,EmLj~FW#C:Lm_}ݵ=ַUῲveᰚx\|a ^ OI\-o̕U\~;DMK_}+ou1FdxKAOM7sD`ENk1 _{ gIMTw݆7ZX/Tv0qyT4b^ݥ\"#} 춋br~ۓQ;L[[{3 Y-1=NY盛P{n2)ڸі7#RcO uY|lZX +JR~C m+ԾGKc u_m vN4.3w "g))Vl&=Xg[vӻhem&mͷ 1 &78 QgC5X>1%ni˯׫쾀/I&۬}?VJ]$XZ?|[xE\-˿#fca}0q>ۣnjyIe?φj,ȿݶ PMU'ƀ-/%6aڗnh/=Ty 2wk_MInBI7nlRpJKoܽk[G#PKHdSEX/1m7 }n5}o^m'0G7;֭W %%o**4 qҒ\4>[}\b ^cz2;J|>l0)6z<*= { n[cC5ֈ6֊hna{ԃ+V`p[^˃] nҋpxLImW e?l%79 6LVڹ`D`EN \ehʆJ)(w/C{hڴm$ɷY^*+G&vV}_ pVpC=e6Tc-O$5i/l""̶d6߹jC{lp>wˆkk_AKhͷ*}x\c$ɛSZbh YB~&Bwp@}Zmh/=TW:+rNhyYN 0 >lBr%4zJUr /p +rNɴSb^$Z/q5m^mY\JM3^26TSK:]ʁJ@6XsPo(k80+ m2t D`Eۘ =B(@!%$(t^zqPNVoA ZoHoeE_+zˍʅ%{WgG7^S)p)+r<ꐀh7n^V թqڳ⑇׻ E`EΉ{C̊Bopcl;EBa~5Nf3mp7+r/J ^J7YXMzC!֭K{v6VjoWä)悽Pl(p7+r/oqLfwl(Z mi/DZi/NfKf4͜_ I> mm|gC% UhCݿmߴm$o^ڿ5~H[2FmVѯ~b@`EN2 qZj-p,BC~Imbiy=-^z. r5moֽ,Z~ ֦vVa VH4&s=7ţ0mo13cRIo[UzX!?4IcOσԊ~]ʫQ yO2yqJrUأ f5N{ΆR(ԵSGflţ3t[[3^+4%C{QC qp-jM .]hըc֯\BM/? }={Pym0Ict`POX4|y{tj=ee*:C{hh|~B-9 =VpR? IDAT㺜+z򑚆GڍW(= r9w콧}{W\^r_wǚ7jyx_AOM70L;P em^S!#2ӶK5sv۱?># }qkꛌjxjBu2ndy߱틯‹6T[Yj[sv]Dz &ooU0 O44ZGUz~y ddQ0Ǟ04wPʣ~MY.(vqٷՖ=*Rῒ۾߫dlijgK 7ɟq;o^wk5Ge?Ǎ !"om0? ͆ڿ7~\qťߟB^bInS~^-1֮Ն߾JO4k ύ9= zrPٍW/VWtRä)QΦV= ⣲0,=RC1?f3믹A5k *h*\dhvv͙-Z?Hm}nh/=y d "GţL4Z۫LOW)uwcжƊk/|Gmfdz_R*.D=JeC~ƪVϗԀ1CPdC5@3T*Bkui.IkλXݧ>DZ?h5~z=쨲sV}mNEg/Ժ+dhVUvE2s,8GKL/W<(y_GaEmQ[n0Zw`v/uU7^ӞnKZ]!'BZ+L ._5ZfrU7_/V[f䇆G&/lndy*=4iM3^ڋp[[Vjx)-UnV|vm&U{j}\L' J8EE:_Bkש E#dV䭊?\aCM5ezse X<'Ö7Ҫ#Q˻[= ?2٤0IgzU8|U'׿պumNS1'ޮ6ۮ~.gF#[[TC{`*6T+򚧤D?Whgk4 :Y6?2Y?J~lUר#^W5㤦(W-h|/mmm}}v_3qgS Y-/|^[ZZN%?uާjc'qBK#TkοXb)*RT M[U)OQ )TWPm>_O>SPc.Uy5bEyοy>8c4@U7^'sL*.]AA~B7 o2y|OAUrkêqnYߛ}mm UOaJ}jLKV|h_|+kAA~B7 o2y|O=Urw >|Wd+{CIl:}ɌUWn^W_kxȸ @) 3NeE&ba%23>VEDzzdGܟ("]]~zf+sUfuGXm/Ȝk2(2+Rs]ڳcٴSNyk~.3?Lzqx_eFw j$sw>cykh~2> .39kr(v9.]_U|Ut)ukuow{tO(5PSwwe"7ɮ$;~O|t%I}&e_s{ܱcw~9h̺o[ܺM6u4_:=%`";{ =(3>sL)c[eR߼%R2oaĉKed.inzZ-rQntΑmyy۩mdy ve2QmAeg?#M&557u=w#}`$HZ2g5S]e'DMo,}P]'˔c Ԇ{\[qlYv52n]퐃dkVK{[:Z-~ŕfग़ "ʫ;8b"'|l>vl~2xŎ6d}$Vv~ie?qEГObd`@ elm<رn^iS;[uV״io[ [sulӯj-Wtsv=s_Y3wR)}֩B``g%u[7S)ˏW}1~Doy?e@`PJ7L?c旎7Wf}e) ");L?4tԑ?Ofw-cvٽ}H){~yo`PtL|PJSL^rL^r̺{Y[sKkxXz(^jm/(;{}G?C/ZM7IdW7w?Y~`tʁ7|_vr ͟'SW,Y3oߒtm;)G'= Siv?2ē$(*|p?>8">8Yw2Q[uySe˻&MwL&(6wg_{H!""=͖w"=>,ϟiy.A/([~i8 9͉eJYs#MydxO=gj_c,CyR?OZԟ(5zIk$vʉ2U6o7n,{~qeGQz6-8Tz{u =vG4ou3ϑi:I&5=s4WV܄_i{ [;ILZr!"*ҝcˈ +&X῱jH嶇0Իb-=2 C@`+탶P{vկ8b],>ǖ i| U[@f~"勊V]-̹fjO篲= Wɔd{8*O)3z %=2ȴOi{$y̹hHP_)[~ii4-ݳg˄_)%_V'N\*#t4Go7<ۭ/QܖѶ[--WmΤ}TN|kx{+"ʔ;<@(T%*c%e81J`%Ae]["ڗ/ 8U-i:q_}r}I&LΗGG`u,s#\8XUsr`- **9r`Z?WȣO+}RkڒDQ&A ,sakSB`^k\@l5,gͤ]&@綰'NlcR`-AVz)!s*˘JJ5*uc%n4 ymv[vyL>*HΝ;snk~;'''O\3ҿ历럌q^:GyG5Y\RVk\<b:L0EAHs/ӵV,~yww.*"=Wj+R2e2VwȴwWKcڜR}b}[S^w 59TX: Y."7065zN;Ǎ.2@wNPkL*\KA""VKE=3GUtZ]ORS*оF55`ԞO͚54cy[n оû^T=6d~7ZZnݥ/yt~ j\{YT9m$< X +l6:zB"2("ŋ߼v @^Zk׮`4dվJD}nT'ƲsyX_&jJrř{kHF,]zh@bzѫ괥K#{ I9Md|uU7] yd(EW"*Sm^|{&"dן<,6m ?!+Mm}wxzjN!ڤ'Qa͎vQ_LUU5=`|bHk…7\rE__C@Z}}}_r OXsj@sk{׫nCTA]at}Dʪe:AF˖-~Ww!^?3y޳f͚:,#AJUT5(ȊWWEq;Ϸ GZ  wiZSL^ _rg>_`3fXsPWW~2YP&IDATm-oZ/5۷o_aÆ'ǯ>Oa (X]XSX,U`튫C2K3^oފjP iO֧Q]jgV3u5%XUM ރ۾kV){hvx|$\9@UbT!{ژUUSVUN4*R`uA074SVUtv@Ҧ8 `G!Fڂ^f׽|oVuU٠QDxUL&,U gzVHûݟ( *!*k]V?uAջ>,Fy >Iu5VJkiM 0CԀ_p=%@f(tUc@ҬWUEտNfu] q~#![j`_Eta8aĪ_tݗ7:ҩ:? &֠tr ƦQaFVUְ"hP?v_)}xIE5C՞ +ءۛKaUMU(.W}ՠjz;* !3i(۪Qm5DST_?ªle2?BdXlՠDmC05eUFzz[X7v2XUHe(L -S.llYTW9PUXMԼM/| ڥK[nXTFUc&i4BdPm*хL>LªLak…f*#<j*UӠ[{/{w2(A*- !)j "HUX3M۔NQ@NnA\]Lkj;*hڄRd/N/J۰n}[]X0jn4aJKBpk5*ܥ=5߿njjwo8?8m ̴B.njzwj!4TU~IVGZ` j*}h͉OWUU+ F5_]HUVO;Ʀڟ Ք9 XMcXҘ`VZUS\k\Mי*1 .I#Tuu$qª~StMښn5gYfU>ЪVU COظ-Qp&aL4T@ vAfo~/{U$xj/L"t‚f% I5a"eJ@[Q$m4%@$ _q*QBqaEXUVmVZMڪ=V{ҸJ>N2IP ,jX2<2zLA\ö.>tL2_5vq3nGiªHYeUKszw~tMO-I3dYiznKaմ/hdbh]KY6ǻX*WCTeOA<ΜU䠌V> &ˣO y%@9%0Ũ֢UDTQ]w&lCEa;8Sw*AajDeddҜjm+M&ZѤ/nat3o5ge"VYu풆֠>Ҽ*cO@>*;% YUaM&Qqq^VK(V@Qn4tFyl9hOZK#q=: W!< Qd>N\M "QA(jiU0dZE ۛ(Y/ yqjuw0G>V*ֶ<R<'Y=PW:ƑvHme|atBhK3&Woo&%V"WV8ӞV^Ώ<&a5'ghM:'5pJb}Ye:IJb`(KhOOuEUmZo_ZP\ kQǐEp:8'@dq? BPta jpM}vTU=,D,.JRКF;EU_(yV3TzCk6qk\ :6^OOj8ب yʆU^twUmͣﴷKo{d_EBm.(M:8W5QbJA* {!i~ՖGHr?U \ YM'W4p=X ZOb:iEXࢫl_`G^/gٷA 8n-.,B:W+\mP\U3e,NZnqpY J8Q^EwevXN~l~avXF̹\5.|.E<H4<_ifP.UA] y\zβOGޟVeϸ\1Sn*K.DR\|\XYdxS7.,a\G(tsL"yȂq&=?8\1*Y1Ac,Ki)i#dm (""yl-UW;Pe|L1ԕ192tEXtCreation TimeSaturday, 02 March, 2024 09:12:10 AM*IR IDATxywr7/ T?[>nVRwE֕X[nH?V"qjX _ֻ$?B2I&$s&y=H̙I{993 @p\(vQx&8+r 9A@8nf1XA)B`'B,L qF-rd"Cp)[2-^ `k ~8#A'>kz#'8]=k#0d.~7@";W\ @H_y6) `b 8|yN?9k&W+W!pu{mA Ako+m .0m,1Φ]>' xCSUPgkiL|.4MlS )o&0I3%,ҎC(^t`Bhn4!0ІC@߯)!P^~BX񖟯g:dA?##Z}\S~צS˜v^S^@#HI{|IBk3)fۖ MXExl'SF!i!8$ a^lgJp%Dpτir5}/vV8djP YnRrž.К!$ lr{pl(V~"Ynk@h5zr~|Pۺ?p2lEؿ#\6^fVFR9x2yMm% h+#fRM9^Li)(vd^ >uXGPv>m*v@Yu*6)X P>FWM #U 6e^ &VFYP,Pj:Lo&X2 K27r=UPMw_N~|'#;da1Z 5MJ!2S~}nMgb8 ^]g429*vmt;ښ(k7}t5a5ݠnHMm[vmtʋQTҽTQW7e ABk{t)#(@#jdmt\L Dw ~t 9Xq.ĪT3*Qt櫦c˽ 4rp0at5IXuMysa ؅||}ly&sO[k&Sjdu.r0ut5aU7^%'6 x'[jHjU#L&&m%TVsV«v8=L (~?:u:M#ujM\VFY S(!#H^[MgSXm [+T𩧞[o=~=86,<Do_OW!LKQCxSͲ^ge5I`Mw*e44UX؍Vu]wfvqxx%yGo'G] H:a9$5KDL eFWSU)U[a4FWC+W<[ncl @.E׬Ysg=UCȪC[#[ܗrl(!Mo=)Udjda5֒J~;vx[nWl?^ u;v_Y(5=$9,W>uxuuJn_ @tm̕W^Mb<5*/K:VeY,[@!IUc7܄STJ9@ 5m [ӗ;M9l-E;*?I=ܳm}[H }~d)6MP))x^ݼsv&ÒBmڴq 0Pc5[B'b8c{~q’TRR1}[L%۟R.J {`B:P&YGQI B.i5m!ˏ\ޗϴ.l)v&wAnSzt6M}[얭ۥ[I.B)z_R ,EmtT'b3m˩b~J]:Mw?I~lOսlNJg{;QU@t4mO?Rl\hcFW>=WZP׿$nG@|#OL?-LJPxG yяG@`uǴ.ٻ<|@K?滯^Q#kPuv}e&})xsǏe2'cb :دWT(/SL/ń} Sd _R}쟫3m_A|XMe:Q<ɴEjtv;M}&}adP98W89]f ʧE -ןexE{R.W"b 00 "X`4k1] wg3Xo 5@`^o A *aj/'[(V^ : %{&)AN!\*j9(0> hsN,wk ;^9F`͎ii/'PL-@{k79d#򄾰X?@A V{br 2Fl>#8Ł>?%ATBZ!b (T@_pV@0g9\C@fC X`4+F`a20F#'@`?-cÙX9( fj`$Xxw( g9B`0F#hV X`4+F`0F#hVZB~7+V C`P >C`@X`4+F`0F#hV X`4+Vw࿳@N;M˗/o^ug$[lcǎ:tJK [o)kСM($)w#@-X@&LP$$__ *._\%I۷?J[S .]:+e.]h=PeeÇ"-D2?psXO>DuG*o͞=9JҦM4g3V(adڵ5|M6M#GԜ9sT__wӊ]Y1},O5J~^~eB!{:餓n"A` 5i$ <8lƍz7ᅬ[cX}ҵkWM6fTii~MPHt'S۶m֭\RVeݻOL(_f {P %N˗_;CիWk˖-j߾_:RG}W_}U-?-[SNҥc9Fta[l?Zl֯_ruYx9 2$i.b^zo$ܹs駟Z}ՑG7 Ҽy_z2dN9WŃ>|yCz饗N?~=XmٲEk+Vh֭ݻO?\e˖oիWKczկ~ʸ/AK\]JŋuEŕ͚5+}ÇnP$k_~Y֯_ݻ_~6l8P@@[.[nukkk5}tOB+ ]Voy]իCqeHDw}fϞ,[L˖-3<;w|LѣaUUU:smêU-t&vm:ujBXd{S֍D"KjkpYf%}MrVPzuپhRSSӧwq3yd=IGmm̙U{3sN]| a_̙3(D`fڵ7n>#F֟1c-ZW6p@\͛uw$g˖-kmVǎ5`K-[l~zO=}ل۶m}ݷy[k{?r FpXl^~w#^yygmq; ^|ń >ѣGޟG2j߾YfsSC3F_r4ڵkf͚/ kt'cŊzg.B{qe?n_~Yo>4=Zrevz暸)H68nذA_:v쨛nICmt-č6M9rd~ :T{*++?hWUOeee袋t7Ϲ4n8}ᇮ3S]v:(ChT/ĉ.[VUUe˖[vz_|N;|r~ oZiĈ9r{ohժU\>>沷~9%|H3fH8*m~-7u1Ǩ[n:/*z:׿ZlY\矯38#{>}9昔SN9Egyfr(?+._<.3zz$ R]qeb% F[li;:ݴ. hrA^o&nyvi+--uvGIxzכ#~qTaUR´=3kRuIk׮m.۱cG\ٳgQZj޿{U-0 ;[o3vX:Njkk 'X ԩS'Ӗ-[RmߣGT͈;vLR=СC.&l`O?wB+#FK_VVK38`%%%qѨ{WGmھDeV:!ىLةAR(  4f]xqSNՓO>i{Ua>hԩi?]P\P(]ƅT'Y!kΓl\L IDATjzժUڸqcF( yL 䠃~+V'8n?TյQr!q_~.\h[wڵ7o^\:ˉ C֭78 nN?mH$05H6nܨqӨQ4{/^;O/N|cH$3gjȑ:5y+G`K/Uyyy\̙3&1bDBȻ;/;N555qe}M8[~m?߾}{ _|B[n%[_}⊄+8ɟc9Fڵ+;wf̘7mڔp9&=Í}#Q]]m;9H&L hÆ otw:uUWO>Quu>C3F7n/VZk޼y2eJ. 0%ݻ׿}沝;w;HO>:S4w͛7oٳ5`*))ڵkW_w__WۄB!wӍ7~[v맽KR%K]w\Cѐ!C.ocz뭺;էO_v./Kkfm۶=zM\F5k,=ӧBAηvϏh4'xBߚ/lٲ7 A}vۯ~W5lذ7|3͛hѢO'yVƍɈ>oX:s /}Mo:#^y+?lW_}5.J~3?O?W^SScE%̩?~?mرcAk]SN9E_|W^WWPf#GO[[[սAU__nRʩtGQE"+`jժUW4mڴK?hʔ) ղeKW_dQG;L}hԨQ4hN>L v&LiӦwU֭OSYY)S7|޽{k̘1W8Ӵe͛7O;v*O@Ljrڗrz֑imB6eau!KpLܺFR6@D":#>;vcpII[ohrӭl7(V:uey,&Lx/O0% ܊+pVVVH #<ܪUo2X V\G}4ặR-X |T Po}ݧJԩ֬YJ7o߱cGs9>2C`[hQUVَ6iժnvu1M0%_<eRsY+ƊF裏pB-]TWֺuԲeKuEt>hva~7 .k<]֊ )3a\`eJF`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#h~7SOŕ~z}jV[oٳg +ƍ5i$EQ@`<4i֭[w3 0Gsѿ/B`<ꫯt]w +Ν;u7@X f̘#F+?O=3qe?O4rHZB`Zv&OWֹsgtM B> 9F5amܸ, iܸqС-`!@ 9g/K\> /Ч@pXc۷oرcUWW\֢E M8Qeee> ;bŊJzElV+yŕ}>|O-#G{zqeݺu 7S0XHDǏWuuusY8ծ];[G`̜9S|A\Yg>ا@ @>#=Cqeѣ}j+da֭7nZl'ǖ@ @nv}qe\szSX Cׂ ~EPUViʔ)qeᄏ:Z iرcm۶p8 &M6> ?+;t"(lVH￯{,ySX͛7kD"emڴф r-ܢ5kĕ]{޽O-@`{9qe OX ˗s\YeejZŅ IjرڱcGsYII&NVZ2(VH{W6zh 0@!~[gώ+8p>lZʼn 66nܨ'*6mVǏVg&MҺuʮzn>,̙_qeÇOSZō 1+u]qe={ԕW^SVhTSSoY555e8qZlcXUUUWvEi}E zg 38çXkjqe۷׸q |j @QF0a6nW~7K.>  =zwF#<ҧg}/qe{_Sv5vX5kҤIe++twhŊqe^zSN+yŕ 2DFEd[o5cǎ曹 hD"?^ePHcǎUN|l +1sL}qez SnX>H=P\Y߾}u饗"[Vo֭7n***4i$2Vo׷~WvWw>+6|-X #)S"(XVҔ)Sʺtoѧ2A`P5vXm۶, iܸqС- =(/"lɒ%YwclӾܖճLmYg- ; YXc-6555y@A矯?a޼yڵ򢼼pII[ohrӭl7(V:uezIVǺiy&ܗ' fϞMXF`x֭ "ht F:f/=Qj|,BC`xikӦMB~0S`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV@jժ>า޽{0W8]Nr[nW:2mMf,.dc[H yhKHxm,GcnesG1Ա--֋O:L3< X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#hV X`4+F`0F#h~7Z;/ηQKYN,(L%a;wVُbajq0VqB~7rڗrz֑imB6eau!KpLܺFR6(uU_zƽ ~7Z'".)"iKm6bYnRǺ.,Z/v?X3-τS`mhͰ `Ͻ5NԶsn lx8>Gqr_n @`͞SH+|G`oꪾƛ& @ onq/ # Xዺ9 ds/0 X@ Xዝowi7B`/jXwi7B`/"@ Xn X`4+F`0F#hV X`4+.3ʥ?mnVw m%%jb۶[S'hжnշ>5+@i*۱NTP њc ^#f&*)w#b륒l}9l-w Zt:M)~l,Ru_~ȶ*E{tWT1`m[O-x x{tW+66M-quWhϿrZ~% hѼuZ[ qE hV-W'7/G6nԆIf OW'ǃ.PU|BHѝ;2cZ2Bip͕ju± iv.Zuܠ/LJuWFkj6MG;$Bj{ΙjwoUg]lۦ~[NR݊oyYxVFk1 7/o{Un}Fz KuUkTGOQdǺ]K-[w&*/=տ:S;?0aP˖xj% ϏQ#Ƿoe:$qVhmBǶ@VqЁq˵_~/߸HZ+/C&M#Ԣ:ZNkkjt۶]kjwwkZ\Xz-_|mRop)A+t[&n[}R_}];~W-[Vհ[n^RU 66Uu߬r_t\;k*kZq@@Y~j{ˑjmt/xY+TQl~\ͩŐ7/o6]|wr~.w!I w^ OT"0ZWfZ6;l../i`TtW~1魶Ok^x?wqN\~U4޸[>Om8U-,!@ 0ZdӦn<T]TҩBeqW_wnZͷkYUKU :y棏ª4f?FCE6mn_O 0Z?-W:P[OVl1j}pU :De}؞$)RZn%K{l. IKt-[}26'@Xm;[ ?ANWkWE uNuuߴY%;eQKBOoĜdT_Eۤ~ƴSC`J>`.Ry.km[uZ{5iֹj#Qy}}lWZRIcS7DwmWVNe4ǶIC|+).i~8b,**[9T~M5K>Q_)ZTn*?`?ZЪU*e_w$u<9[z uU9.4Eϝ[x[[mݷ_z6?8S20+@Z}Y=*u׊PHPlkcTh[yxt''v[|=myi9沲}~7!n~UIRdf~+ G9@Ł}-6g6g= oy@.1%@`\X̸orRᒸ lgmuʑzZ[GuZ6Ԩqe_j[$hTW׵m?o8VRv6MӦU1xJuU}{E6lP߫n*m7TmZsh<'jq*뽗"[j0__,UadrU+x]9Y+ys\zoʊDT= m{qZ}06Q߫|E6nJش/WgőC'CUWO۴Qd&խA}5?$lEWK/CUҥj~06";=y.9=iP:5݆օ,u1u–rrI7mo&2DzOnB!jI~R.M?R%"ueLY]*6ʽqbJ;h(0#hV X`+F`05@fCȫ? "G*CwomS< Z;w 4w JZXQ~&n FFn MBD`/Z7&nލe^j9DpUg/Q 6Pm/8`( 7c i^qn)IDAT~7B? j`BC`Z>Jw3]=FNw3P*wm.:i$%auw~$ BaXG8 rĉBY | )wmvJ}kzub6~Ico#)TSS0N]1vjXȺuR}f@a* +ܹ~OSjjyy5-"cGbGo}5֕,j)s*cMznȀO`M] )ʔy0}P,BxBx)K`K&QyG8+D`v4>/}r =b榿5`fCXS3`ȜI} m0Ɂy(FاL/Ŕ}c)b^ JgۺE{P۾05!k3i^ʴoFu;j67 @bTto$fk!$Q}Fks$o Bk8ܾs۶?6 mnGOOV/_&;&d"G$+bHm>i9|dXDd ٿlٲƋc3?Y?\"G.FܷW/I>_mr:ә:a4B~7/hW}[˜۔[Į[nC1cˬZK*ٶm۽mRWWUV!nUôhmOf]ܴ9%N)Z~dIf}7W2H&_Sҝq(6NRtʕ hjӚt8dkL]tX?Hv['Icƌya_IO83cu(ئz!%:gWZϺiSKbJRի/رmذv>5mr t.Gz,K[؍څTWI5rw`5:k%Yԭ?.6eRc&ot!FXaMVu'XYG\c׵Tlٲ_WVV^|0֪Uf)5nWUU}j.Nk_)nN56Ʈ vjڶm=\1$WD jvpeVʣ1R|(Mw:T8W<)~^x;?y<5#LsLm커B¦5&3j6b_VɜQ֠M e o|- c7 |D`͍l>bHV2wjw}#LUUUu\ uj\SYrl봜W<\"'ՐRMNwMzwvI))>hѢ]<]hэa5>$$q2(K՗ڗۃ*/iN[i:Ԩqz!C^Ϯ[s kuuu vMQ>MJ]u.E#(']IuUoWvv'c/T-[vjeeeI+]j]{nz%F,vVvuX٭wfFb5woIU/QV?LW!޽{?}eXn)֭{.Vk7MHϓ˄w(]ow?Y=x(H#h~孜(hȪ jm-Sha͘1={/xn+^__pfUUCPRTHk +%]~>/g1M`Mo&M ,7 M?e?M5zw~{׾۷SRR# uQg9&-_iӦ~x<.ND AVGTSt汚< cx\5XS=F.FY_&4lt~ӈӗx 1 |DFTTS$@:M$]uڏ]TqjR 3Nmi*gD !2`ԳNDh3M$)Hgä3+B]0׮6nª]Xk~6܆UԖXMIJMlhLNAخAtBk>Kc/'Eq m>fwmXuMn(^zn&,S0cS):JC5>FYfYn0 iJѵSt St>ft5a3kZT=fëinFY!ԀCudciJ]/vYt8rTnDպ.:tedS!7U&[4݀ x=h'_{?hZNǮG:StmSU7j+~&h?LhkFFYSM hVkۚ;1bdva#Tv4'UXM\jtY &J!3ۺlk Qe@l>tV>ƶ9*pF,nj+l}&fM(]M64nF[es?Yk[fZi}2emm]_@PGr=c jnZO|J65pn_v_: Ks6]A=&d; 6څd!6bStz 7ai_ɶs3JuMy!p|<([.o7rz눭֦?LHu bbd3J L!),Jɿ*Wa誛}SNjm NP@.ڝltfi5l(ꤒ(6 2KnM˭vqحs΋T BkveM >YhB&L@1&`zjS@t*[nxnChSkVj wderZcZiTr`u@M_jZuXujat#AnM`]7uB]t mpuέ `/Erp&ڍjfV^Np瑩m2A`ٮ6PoN_ƹ@RɵIÅ7(JGβ}^#=}j㬝qU`EoIͺ)a*h̀ g]cveM,q/ 8kjUݳmWo*0B@IklVS |J:%"\EfRmSoB]Ousem-P7u*>9#'-5OS딘 _QfYβ>;7lJ,OK A8fJ~wJ`- rMVc@0,kJVj )VMY׫ҧgjի̮vT+UsiٶJlj۷?RIփX!5lzUNX#沀Pi۝_?{"!AW27x֨3Y?5KRmU.,ToRu>=du^Ұ5Z??Z϶A?הr-yz;pO3WKh`/Ck-ҰUIurf$lk%JAXZ;{Fjs5 04K{8Mk#V, y57zWVXU2s{Ո/j",kJ3)e϶ 9xj<%_2&ӶܰjvBYZ)KrSr\Fz՜zm uK,Vc%s\SڞZ[45L˙܇G mqa/-ϻ^Z}f5KU%kV-`XSvSw* ]P̝i%iRh-iϔF_C7t)Ajv5Ӫ3>\ϚRCm$^JW2֭vr`=Wކֻ6j>Lv@zgoBp:".6G )x=jN%5lV%{zԖZ[ن ogDkEk Qᴴ^3/ۨ|h]1zݞov ,s.1? p~Dluaf:|iߛ-sY)$<}/03CNҌ>N#qjastXxHǪ<@oG'9#,he "c+YUlT'XtzeRb|i,S E= 0.59', ) i18n = import('i18n') gnome = import('gnome') base_id = 'io.github.seadve.Kooha' dependency('glib-2.0', version: '>= 2.80') dependency('gio-2.0', version: '>= 2.80') dependency('gtk4', version: '>= 4.14') dependency('libadwaita-1', version: '>= 1.5') dependency('gstreamer-1.0', version: '>= 1.22') dependency('gstreamer-plugins-base-1.0', version: '>= 1.22') glib_compile_resources = find_program('glib-compile-resources', required: true) glib_compile_schemas = find_program('glib-compile-schemas', required: true) desktop_file_validate = find_program('desktop-file-validate', required: false) appstreamcli = find_program('appstreamcli', required: false) cargo = find_program('cargo', required: true) version = meson.project_version() prefix = get_option('prefix') bindir = prefix / get_option('bindir') localedir = prefix / get_option('localedir') datadir = prefix / get_option('datadir') pkgdatadir = datadir / meson.project_name() iconsdir = datadir / 'icons' podir = meson.project_source_root() / 'po' gettext_package = meson.project_name() if get_option('profile') == 'development' profile = 'Devel' vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip() if vcs_tag == '' version_suffix = '-devel' else version_suffix = '-@0@'.format(vcs_tag) endif application_id = '@0@.@1@'.format(base_id, profile) else profile = '' version_suffix = '' application_id = base_id endif meson.add_dist_script( 'build-aux/dist-vendor.sh', meson.project_build_root() / 'meson-dist' / meson.project_name() + '-' + version, meson.project_source_root() ) subdir('data') subdir('po') subdir('src') gnome.post_install( gtk_update_icon_cache: true, glib_compile_schemas: true, update_desktop_database: true, ) Kooha-2.3.0/meson_options.txt000066400000000000000000000003001457702140700162120ustar00rootroot00000000000000option( 'profile', type: 'combo', choices: [ 'default', 'development' ], value: 'default', description: 'The build profile for Kooha. One of "default" or "development".' ) Kooha-2.3.0/po/000077500000000000000000000000001457702140700132025ustar00rootroot00000000000000Kooha-2.3.0/po/LINGUAS000066400000000000000000000002371457702140700142310ustar00rootroot00000000000000ar cs de es eo eu fa fi fil fr_FR he id it ja ko nb_NO nl pl pt pt_BR ru sk sr sr@latin sv tr uk zh_Hans hi gl oc hr hu da ne zh_Hant et ta bg el ca bqi si ro Kooha-2.3.0/po/POTFILES.in000066400000000000000000000006441457702140700147630ustar00rootroot00000000000000data/io.github.seadve.Kooha.desktop.in.in data/io.github.seadve.Kooha.gschema.xml.in data/io.github.seadve.Kooha.metainfo.xml.in.in data/resources/ui/area_selector.ui data/resources/ui/preferences_dialog.ui data/resources/ui/shortcuts.ui data/resources/ui/window.ui src/about.rs src/application.rs src/device.rs src/format_time.rs src/main.rs src/preferences_dialog.rs src/recording.rs src/settings.rs src/window/mod.rs Kooha-2.3.0/po/ar.po000066400000000000000000000532751457702140700141600ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Ali Galal , 2021. # احمد النهاري , 2021. # Mehdi Essalehi , 2021. # Muhammad Yasser , 2021. # Ali Aljishi , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "كوها" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "سجِّل شاشتك بيُسر" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "تسجيل الشاشة;مسجل;شاشة;فيديو ;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "التقط شاشتك بطريقة سهلة بديهية بلا حيرة." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "كوها هو مسجِّل شاشة يسير له واجهة سهلة، فما عليك إلا نقر زرِّ التسجيل دون أن " "تضبط إعدادات كثيرةً." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "تشمل الميزات الرئيسة لكوها التالي:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ تسجيل الميكروفون وصوت سطح المكتب أو كليهما آنًا" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 دعم نُسُق وِب‌إم وإم‌بي٤ وجِف ومتروسكا" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "🛠️ لك تغيير موضع الحفظ ورؤية المؤشِّر ومعدَّل الإطارات والتأخير" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 ترميز تجريبيٌّ مسرَّع بمساعدة العتاد" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "حدِّد مساحةً" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "ألغِ" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "تمَّ" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "صفِّر التحديد" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "عام" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "التأخير (بالثواني)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "مجلَّد التسجيلات" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "مقطع" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "التنسيق" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "معدَّل الإطارات" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "افتح القائمة" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "أظهر التفضيلات" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "أظهر الاختصارات" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "أنهِ" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "يسجَّل" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "ابدأ\\أوقف التسجيل" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "ألبث\\أكمل" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "ألغِ التسجيل" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "الإعدادات" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "بدِّل صوت سطح المكتب" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "بدِّل الميكروفون" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "بدِّل المؤشِّر" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "القائمة الرئيسة" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "التقط شاشةً أو نافذةً" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "التقط موضعًا من الشاشة" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "مكِّن صوت سطح المكتب" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "عطِّل صوت سطح المكتب" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "بدِّل الميكروفون" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "عطِّل الميكروفون" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "أظهر المؤشِّر" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "أخفِ المؤشِّر" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "ابدأ التسجيل" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "سجِّل" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "انسَ ما حُدِّد من مصادر مقاطع" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "أوقف التسجيل" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "توقَّف" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "ألبث التسجيل" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "يبدأ التسجيل خلال …" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "ألغِ التسجيل" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "يفرَّغ…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "ال_تفضيلات" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "ا_ختصارات لوحة المفاتيح" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_عن كوها" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "Mehdi Essalehi\n" "Muhammad Yasser\n" "علي الجشي https://github.com/Ali-x98" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "تبرَّع (اشترِ لي كوب قهوة)" #: src/about.rs:46 msgid "GitHub" msgstr "جت‌هب" #: src/about.rs:48 msgid "Translate" msgstr "ترجم" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "سُجِّلت الشاشة" #: src/application.rs:144 msgid "Show in Files" msgstr "أظهره في الملفَّات" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "تأكَّد من تثبيتك بُلس‌أوديو في جهازك." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "هذا التنسيق تجريبيٌّ وليس مدعومًا." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "لا شيء" #: src/recording.rs:42 msgid "No active profile" msgstr "لا يوجد ملفٌّ تعريف فعَّال" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "فشل بدء التسجيل" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "طالع {link} تجد المساعدة." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "إحدى إضافات جي‌ستريم قد لا تكون مثبَّتةً." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "تأكَّد من وجود موضع الحفظ وإمكانية الوصول إليه." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "حصل خطأ أثناء التسجيل" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "فشل فتح «{path}» للكتابة فيه" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "اختر مجلَّد حفظ التسجيلات" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "فشل الإيقاف" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "انسخ للحافظة" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "نُسخ للحافظة" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "أظهر تفاصيل الخطأ" #: src/window/mod.rs:286 msgid "Help" msgstr "مساعدة" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "حسنًا" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "أأفتح التفضيلات؟" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "التنسيق المحدَّد قد لا يكون متاحًا. افتح التفضيلات واختر تنسيقًا لتستأنف التسجيل." #: src/window/mod.rs:305 msgid "Later" msgstr "لاحقًا" #: src/window/mod.rs:307 msgid "Open" msgstr "افتح" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "مُلبث" #: src/window/mod.rs:522 msgid "Normal" msgstr "عادي" #: src/window/mod.rs:523 msgid "Selection" msgstr "المحدَّد" #~ msgid "Failed to start device monitor" #~ msgstr "فشل بدء مرقاب الجهاز" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "فشل الاتصال بالبرنامج الخفيِّ لبُلس‌أوديو" #~ msgid "No microphone source found" #~ msgstr "لم يعثر على مصدر ميكروفون" #~ msgid "No desktop speaker source found" #~ msgstr "لم يعثر على مصدر سمَّاعة سطح مكتب" #~ msgid "Ok" #~ msgstr "حسنًا" #~ msgid "This frame rate may cause performance issues." #~ msgstr "قد يسبِّب معدَّل الإطارات هذا مشكلات أداء." #~ msgid "approx." #~ msgstr "تقريبًا" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ اختيار شاشة أو نافذة أو موضع من الشاشة ليسجَّل" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 تحديد أكثر من مصدر" #~ msgid "Dave Patrick Caberto" #~ msgstr "ديف باترك كابرتو" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© ٢٠٢٢ ديف باترك كابرتو" #~ msgid "Click here to view the video." #~ msgstr "انقر هنا لترى المقطع." #~ msgid "Failed to select saving location" #~ msgstr "فشل اختيار موضع الحفظ" #~ msgid "GIF" #~ msgstr "جِف" #~ msgid "WebM" #~ msgstr "وِب‌إم" #~ msgid "MP4" #~ msgstr "إم‌بي‌٤" #~ msgid "Matroska" #~ msgstr "متروسكا" #~ msgid "WebM VP9" #~ msgstr "وِب‌إم في‌بي٩" #~ msgid "WebM AV1" #~ msgstr "وِب‌إم أي‌في١" #~ msgid "WebM VAAPI VP8" #~ msgstr "وِب‌إم فابي في‌بي٨" #~ msgid "WebM VAAPI VP9" #~ msgstr "وِب‌إم فابي في‌بي٩" #~ msgid "WebM VAAPI H264" #~ msgstr "وِب‌إم فابي إتش٢٦٤" #~ msgid "Failed to open file for writing" #~ msgstr "فشل فتح الملفِّ ليُكتب فيه" #~ msgid "Failed to select folder" #~ msgstr "فشل تحديد المجلد" #~ msgid "Donate (Liberapay)" #~ msgstr "تبرَّع (ليبر‌بَي)" #~ msgid "Donate (PayPal)" #~ msgstr "تبرَّع (بي‌بال)" #~ msgid "Check out {} for help." #~ msgstr "طالع {} لتُساعد." #~ msgid "Failed to open “{}” for writing" #~ msgstr "فشل فتح «{}» ليُكتب فيه" #~ msgid "_Cancel" #~ msgstr "_ألغِ" #~ msgid "_Select" #~ msgstr "_حدِّد" #~ msgid "No folder selected" #~ msgstr "لم يحدَّد مجلَّد" #~ msgid "Please choose a folder and try again." #~ msgstr "حدِّد مجلَّدًا فجرِّب ثانيةً." #~ msgid "Cannot access “{}”" #~ msgstr "لا يمكن الوصول ل‍ «{}»" #~ msgid "Please choose an accessible location and try again." #~ msgstr "اختر موضعًا يمكن الوصول إليه فجرِّب ثانيةً." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 التقط شاشتك دون أي متاعب." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "سجل المايكروفون، أصوات الحاسوب، أو كليهما في نفس الوقت." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "الصيغ المدعومة GIF، MP4، WebM، و MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "اختيار عدة مصادر." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 ترميز مسرَّع بالعتاد اختياريًا" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ اختر شاشة أو نافذة لتسجيلها." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ حدد منطقة معيَّنة في شاشتك لتسجيلها." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "ضبط مهلة زمنية قبل بدء التسجيل." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ إخفاء أو إظهار مؤشر الفأرة." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 اختر مكان حفظ التسجيل." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ استخدم اختصارات مفيدة في لوحة المفاتيح." #~ msgid "Toggle Computer Sounds" #~ msgstr "تمكين/تعطيل أصوات الحاسوب" #~ msgid "_Delay" #~ msgstr "_انتظار قبل التسجيل" #~ msgid "5 seconds" #~ msgstr "5 ثوانٍ" #~ msgid "10 seconds" #~ msgstr "10 ثواني" #~ msgid "_Video Format" #~ msgstr "_صيغة الفيديو" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_الحفظ في…" #~ msgid "Record Computer Sounds" #~ msgstr "تسجيل صوت الحاسوب" #~ msgid "Record From Microphone" #~ msgstr "تسجيل من المايكروفون" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "إلغاء المُهلة الزمنية قبل التسجيل" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "الحقوق Dave Patrick 2021" #~ msgid "Screencast Recorded!" #~ msgstr "تم تسجيل الشاشة!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "تم حفظ التسجيل في \"{}\"" #~ msgid "Open File" #~ msgstr "فتح ملف" #~ msgid "Screencast Portal Request Error" #~ msgstr "خطأ عند طلب منْفذ تسجيل الشاشة" #~ msgid "Pipeline Build Error" #~ msgstr "خطأ عند إنشاء خط التوصيل" #~ msgid "Recording Error" #~ msgstr "خطأ عند التسجيل" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "تأكد من التحقق من متطلبات تشغيل البرنامج و صفحة الأعطال." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "قد يكون لم يتم تثبيت ملحق GStreamer. في حال قمت بتثبيته، الرجاء الإبلاغ " #~ "في صفحة مشاكل كووها." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "الرجاء التأكد من أن مسار حفظ التسجيل موجود بالفعل. إذا كان موجودًا بالفعل، " #~ "قم بالإبلاغ في صفحة " #~ "مشاكل كووها." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "التقط صورة لشاشتك بطريقة مباشرة وسهلة دون تشتيت الانتباه." #~ msgid "Please choose an accessible location and retry." #~ msgstr "الرجاء اختيار موقع يمكن الوصول إليه وإعادة المحاولة." #~ msgid "Select a Folder" #~ msgstr "حدد مجلدا" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ حدد منطقة من شاشتك للتسجيل." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 دعم تنسيقات Matroska و WebM المجانية." #~ msgid "Open menu" #~ msgstr "فتح القائمة" #~ msgid "Show keyboard shortcuts" #~ msgstr "إظهار اختصارات لوحة المفاتيح" #~ msgid "Toggle record" #~ msgstr "تبديل التسجيل" #~ msgid "Cancel delay" #~ msgstr "مدة إلغاء التأخير" #~ msgid "Toggle computer sounds" #~ msgstr "تبديل أصوات الكمبيوتر" #~ msgid "Toggle microphone" #~ msgstr "تبديل الميكروفون" #~ msgid "Toggle pointer" #~ msgstr "تبديل المؤشر" #~ msgid "Delay" #~ msgstr "مدة تأخير" #~ msgid "Video Format" #~ msgstr "تنسيق الفيديو" #~ msgid "Save to…" #~ msgstr "حفظ في…" #~ msgid "Keyboard Shortcuts" #~ msgstr "اختصارات لوحة المفاتيح" #~ msgid "About Kooha" #~ msgstr "حول Kooha" #~ msgid "Select" #~ msgstr "إختيار" #~ msgid "Toggle capture mode" #~ msgstr "تبديل وضع الالتقاط" #~ msgid "Full Screen" #~ msgstr "تكبير الشاشة" #~ msgid "Processing" #~ msgstr "معالجة" #~ msgid "Save location not set" #~ msgstr "لم يتم تحديد مجلد الحفظ" #~ msgid "Recording cannot start" #~ msgstr "لايمكن بدء التسجيل" #~ msgid "Record computer sounds" #~ msgstr "تسجيل أصوات الكمبيوتر" #~ msgid "Record from microphone" #~ msgstr "تسجيل من الميكروفون" #~ msgid "Show pointer" #~ msgstr "إظهار المؤشر" Kooha-2.3.0/po/bg.po000066400000000000000000000405711457702140700141410ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Victor Keranov , 2022. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2022-08-29 09:18+0000\n" "Last-Translator: Victor Keranov \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-Generator: Weblate 4.14.1-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Лесно записвай своя екран" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Скрийнкаст;Рекордер;Екран;Видео;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Записвай екрана си по интуитивен и ясен начин, без разсейване." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha е лесен скрийн рекордер с минималистичен интерфейс. Просто натискаш " "бутона за запис, без да са нужни много настройки." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Основните функции на Kooha включват следното:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Откажи" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Основни" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Отвори меню" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Покажи клавишни комбинации" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Изход" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Запис" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Превключване на запис" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Превключване на пауза" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Отказ на запис" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Настройки" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Превключване на микрофона" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Превключване курсора на мишката" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Основно меню" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Запис на целия екран или на прозорец" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Запис на участък от екрана" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Разреши микрофона" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Забрани микрофона" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Покажи курсора" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Скрий курсора" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Започни запис" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Запис" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Забрави предишно избрани източници на запис" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Спри запис" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Спри" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Пауза запис" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Запис след…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Откажи запис" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Изчистване…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Относно Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Victor Keranov" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Преведи" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Клипът е записан" #: src/application.rs:144 msgid "Show in Files" msgstr "Покажи във файлове" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Убеди се, че имаш инсталиран PulseAudio на твоята система." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Без" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Неуспех при старт на записа" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Моля увери се, че локацията за запис съществува и е достъпна." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Възникна грешка по време на запис" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Избери директория за записи" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Неуспех при превключване на пауза" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Копирай в системния буфер" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Копирано в системния буфер" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Покажи подробна грешка" #: src/window/mod.rs:286 msgid "Help" msgstr "Помощ" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "На пауза" #: src/window/mod.rs:522 msgid "Normal" msgstr "Нормален" #: src/window/mod.rs:523 msgid "Selection" msgstr "Участък" #~ msgid "Failed to start device monitor" #~ msgstr "Неуспех при стартиране на монитора" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Неуспех при свързване с PulseAudio демона" #~ msgid "No microphone source found" #~ msgstr "Не бе открит микрофон" #~ msgid "No desktop speaker source found" #~ msgstr "Не бе открит десктоп говорител" #~ msgid "Ok" #~ msgstr "Ок" #~ msgid "Dave Patrick Caberto" #~ msgstr "Дейв Патрик Каберто" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Дейв Патрик Каберто" #~ msgid "Click here to view the video." #~ msgstr "Натисни тук за преглед на видеото." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Failed to open file for writing" #~ msgstr "Неуспех при отваряне на файл за запис" #~ msgid "Donate (Liberapay)" #~ msgstr "Дарение (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Дарение (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Провери {} за помощ." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Неуспех при отваряне на “{}” за запис" #~ msgid "_Cancel" #~ msgstr "_Отказ" #~ msgid "_Select" #~ msgstr "_Избери" #~ msgid "No folder selected" #~ msgstr "Не е избрана директория" #~ msgid "Please choose a folder and try again." #~ msgstr "Моля избери директория и опитай отново." #~ msgid "Cannot access “{}”" #~ msgstr "Няма достъп до “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Моля избери достъпна локация и опитай отново." #~ msgid "Enable Desktop Sounds" #~ msgstr "Разреши десктоп звуците" #~ msgid "Disable Desktop Sounds" #~ msgstr "Забрани десктоп звуците" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Записвай своя екран без никакви усложнения." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Записвай звука от твоя микрофон, компютърните звуци или и двете заедно." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Поддръжка на WebM, MP4, GIF и MKV формати." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Избор от различни източници." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Хардуерно ускорен енкодинг по избор" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Избор на монитор или прозорец за запис." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Възможност за избор на определен участък от твоя екран." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Задаване на закъснение за подготовка преди старт на записа." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Показване или скриване на курсора на мишката." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Избор на локация за запис на твоето видео." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Използване на полезни клавишни комбинации." #~ msgid "Toggle Computer Sounds" #~ msgstr "Превключване звуците на компютъра" #~ msgid "_Delay" #~ msgstr "_Закъснение" #~ msgid "3 seconds" #~ msgstr "3 секунди" #~ msgid "5 seconds" #~ msgstr "5 секунди" #~ msgid "10 seconds" #~ msgstr "10 секунди" #~ msgid "_Video Format" #~ msgstr "_Видео формат" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Запиши в…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Може би няма инсталиран GStreamer плъгин. Ако е инсталиран и все пак не " #~ "работи, моля докладвай на страницата на Kooha." Kooha-2.3.0/po/bqi.po000066400000000000000000000232371457702140700143240ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # hosseinabaspanah , 2023, 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-20 02:02+0000\n" "Last-Translator: hosseinabaspanah \n" "Language-Team: Luri (Bakhtiari) \n" "Language: bqi\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "kohā" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "balge nemāyeš xote be xuvi zaft koň" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "eskerin kast;zaft;balge nemāyeš;film" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "qābeliyatā asli kohā yonowên:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "" #: src/window/mod.rs:522 msgid "Normal" msgstr "" #: src/window/mod.rs:523 msgid "Selection" msgstr "" Kooha-2.3.0/po/ca.po000066400000000000000000000364151457702140700141360ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # cubells , 2022. # Joan Aymà , 2023. # victor dargallo , 2023, 2024. # Adolfo Jayme Barrientos , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-03-05 18:01+0000\n" "Last-Translator: victor dargallo \n" "Language-Team: Catalan \n" "Language: ca\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Enregistreu la pantalla elegantment" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Captura de pantalla;Gravadora;Enregistrar;Pantalla;Vídeo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Captureu la vostra pantalla de manera intuïtiva i senzilla sense " "distraccions." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha és un enregistrador de pantalla simple amb una interfície minimalista. " "Simplement feu clic al botó d'enregistrar sense haver de configurar un munt " "de paràmetres." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Les principals característiques de Kooha inclouen:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" "🎙️ Enregistra el micròfon, l'àudio de l'escriptori o ambdós al mateix temps" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Suport pels formats WebM, MP4, GIF i Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" "🖥️ Seleccioneu un monitor o una porció de la pantalla per enregistrar-la" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Ubicació de guardat, visibilitat del punter, velocitat de fotogrames i " "retard configurables" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Codificació (encoding) experimental accelerada per maquinari" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Selecció d'àrea" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Cancel·la" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Fet" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Reinicia la selecció" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "General" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Retard (en segons)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Interval de temps abans de començar l'enregistrament" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Carpeta d'enregistraments" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Carpeta de destinació de les gravacions" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Vídeo" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Velocitat de fotogrames" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Obre el menú" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Mostra les Preferències" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Mostra les dreceres" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Surt" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "S'està enregistrant" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Commutar enregistrament" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Commutar pausa" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Canceŀla l'enregistrament" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Configuració" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Commuta l'àudio de l'escriptori" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Commuta el micròfon" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Commuta el punter" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menú principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Captura un monitor o finestra" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Captura una porció de la pantalla" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Activa l'àudio de l'escriptori" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Desactiva l'àudio de l'escriptori" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Activa el micròfon" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Desactiva el micròfon" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mostra el punter" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Amaga el punter" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Comença l'enregistrament" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Enregistra" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Oblida els orígens seleccionats prèviament" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Atura l'enregistrament" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Atura" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pausa l'enregistrament" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Inicia l'enregistrament en…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Canceŀla l'enregistrament" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "S'està buidant…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Preferències" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Dreceres de teclat" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Quant a Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Adolfo Jayme Barrientos, Víctor Dargallo" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Feu una donació (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Tradueix" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Pantalla enregistrada" #: src/application.rs:144 msgid "Show in Files" msgstr "Mostra a Fitxers" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "No s'ha pogut trobar el dispositiu d'àudio predeterminat" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Assegureu-vos de tenir PulseAudio instaŀlat al vostre sistema." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} hora" msgstr[1] "{time} hores" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} minut" msgstr[1] "{time} minuts" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} segon" msgstr[1] "{time} segons" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "No s'ha pogut establir la carpeta d'enregistraments" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Aquesta velocitat de fotogrames pot provocar problemes de rendiment al " "format seleccionat." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Aquest format és experimental i no suportat." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Cap" #: src/recording.rs:42 msgid "No active profile" msgstr "No hi ha cap perfil activat" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "No s'ha pogut iniciar l'enregistrament" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Consulteu {link} per obtenir ajuda." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Un plugin de GStreamer no està instaŀlat." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Assegureu-vos que la ubicació de guardat existeix i és accessible." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "S'ha produït un error en l'enregistrament" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "No s'ha pogut obrir \"{path}\" per escriure" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Selecciona la carpeta d'enregistraments" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "No s'ha pogut commutar la pausa" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Actualment hi ha una gravació en curs. Si tanqueu immediatament, la gravació " "no es podrà reproduir. Si us plau, atureu la gravació abans de sortir." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "Si es tanca, es cancel·larà el processament i pot provocar que la gravació " "no es pugui reproduir." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Voleu tancar l'aplicació?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Copia al porta-retalls" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "S'ha copiat al porta-retalls" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Mostra l'error detallat" #: src/window/mod.rs:286 msgid "Help" msgstr "Ajuda" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "D'acord, entès" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Voleu obrir les Preferències?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Pot ser que el format seleccionat prèviament no estigui disponible. Obriu " "les preferències i seleccioneu un format per seguir enregistrant." #: src/window/mod.rs:305 msgid "Later" msgstr "Més endavant" #: src/window/mod.rs:307 msgid "Open" msgstr "Obre" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Hi ha una gravació en curs" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pausat" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Selecció" #~ msgid "Failed to start device monitor" #~ msgstr "No s'ha pogut iniciar el seguiment del dispositiu" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "La connexió a PulseAudio ha fallat" #~ msgid "No microphone source found" #~ msgstr "No s'ha trobat cap font de micròfon" #~ msgid "No desktop speaker source found" #~ msgstr "No s'ha trobat cap altaveu d'escriptori" #~ msgid "Ok" #~ msgstr "D'acord" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Aquesta velocitat de fotogrames pot causar problemes de rendiment." #~ msgid "approx." #~ msgstr "aprox." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Seleccioneu un monitor, una finestra o una porció de la pantalla a " #~ "enregistrar" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Selecció de múltiples entrades" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Feu clic aquí per veure el vídeo." #~ msgid "Failed to select saving location" #~ msgstr "No s'ha pogut seleccionar la ubicació per desar" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "No s'ha pogut obrir el fitxer per escriure" #~ msgid "Donate (Liberapay)" #~ msgstr "Donació (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Donació (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Comprova {} per ajuda." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Ha fallat a l'obrir \"{}\" per escriure-hi" #~ msgid "_Cancel" #~ msgstr "_Cancela" #~ msgid "_Select" #~ msgstr "_Selecciona" #~ msgid "No folder selected" #~ msgstr "No s'ha seleccionat cap carpeta" #~ msgid "Please choose a folder and try again." #~ msgstr "Sisplau selecciona una carpeta i torna a provar." #~ msgid "Cannot access “{}”" #~ msgstr "No es pot accedir a \"{}\"" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Sisplau selecciona una ubicació accesssible i torna a provar." Kooha-2.3.0/po/cs.po000066400000000000000000000551421457702140700141560ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Jan Novák , 2021, 2022. # Vojtěch Perník , 2021, 2022, 2023. # Petr Šimáček , 2021. # multiflexi , 2022. # Fjuro , 2023, 2024. # Fjuro , 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-03-11 22:01+0000\n" "Last-Translator: Fjuro \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Elegantně zaznamenejte svou obrazovku" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Záznam obrazovky;Rekordér;Zaznamenávač;Obrazovka;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Zachytit obrazovku intuitivním a jasným způsobem bez rušivých vlivů." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha je jednoduchý záznam obrazovky s minimalistickým rozhraním. Můžete " "pouze kliknout na tlačítko nahrávat bez nutnosti cokoliv nastavovat." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Hlavní funkce Kooha jsou:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Zaznamenávejte mikrofon, zvuk plochy, nebo klidně obojí najednou" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Podpora pro formáty WebM, MP4, GIF a Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Zvolte monitor nebo část obrazovky k nahrávání" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Konfigurovatelné umístění pro ukládání, viditelnost kurzoru, počet snímků " "za sekundu a pozdržení" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Experimentální hardwarově akcelerované kódování" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Vyberte oblast" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Zrušit" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Hotovo" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Resetovat výběr" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Obecné" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Pozdržení (sekundy)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Časový interval před začátkem nahrávání" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Složka nahrávek" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Cílová složka pro nahrávky" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formát" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Počet snímků za sekundu" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Otevřít menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Zobrazit předvolby" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Zobrazit zkratky" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Ukončit" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Nahrávání" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Zapnout/vypnout nahrávání" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Pozastavit/pokračovat" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Zrušit nahrávání" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Nastavení" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Zapnout/vypnout zvuk plochy" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Zapnout/vypnout mikrofon" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Zapnout/vypnout kurzor" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Hlavní Menu" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Zachytávat monitor nebo okno" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Zachytávat výběr obrazovky" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Zapnout zvuk plochy" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Vypnout zvuk plochy" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Zapnout mikrofon" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Vypnout mikrofon" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Zobrazit kurzor" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Skrýt ukazatel myši" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Začít nahrávat" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Nahrát" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Zapomenout předchozí zdroje videa" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Zastavit nahrávání" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Zastavit" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pozastavit nahrávání" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Nahrávání za…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Zrušit nahrávání" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Čištění…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Předvolby" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_O aplikaci Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "Jan Novák\n" "Vojtěch Perník\n" "Jaroslav Svoboda\n" "Jonáš Loskot" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Přispět (kupte mi kávu)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Překlad" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Záznam obrazovky ukončen" #: src/application.rs:144 msgid "Show in Files" msgstr "Zobrazit v Souborech" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Nepodařilo se nalézt výchozí zvukové zařízení" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Ujistěte se, že máte nainstalováno PulseAudio." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} hodina" msgstr[1] "{time} hodiny" msgstr[2] "{time} hodin" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} minuta" msgstr[1] "{time} minuty" msgstr[2] "{time} minut" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} sekunda" msgstr[1] "{time} sekundy" msgstr[2] "{time} sekund" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Nepodařilo se nastavit složku pro nahrávky" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Tato snímková frekvence může u vybraného formátu způsobit problémy s výkonem." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Tento formát je experimentální a není podporovaný." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Žádný" #: src/recording.rs:42 msgid "No active profile" msgstr "Žádný aktivní profil" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Nahrávání selhalo" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Podívejte se na {link} pro nápovědu." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Plugin GStreameru nemusí být nainstalován." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Ujistěte se, že místo pro uložení existuje a je dostupné." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Během nahrávání se vyskytla chyba" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Neppodařilo se otevřít „{path}“ pro zápis" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Vybrat adresář pro nahrávky" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Pozastavení se nezdařilo" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Momentálně probíhá nahrávání. Okamžité ukončení aplikace může způsobit, že " "nahrávka bude poškozená. Před ukončením prosím nejprve zastavte nahrávání." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "Ukončením přerušíte zpracování a nahrávku nemusí být možné přehrát." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Ukončit aplikaci?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopírovat do schránky" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Zkopírováno do schránky" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Zobrazit podrobnosti chyby" #: src/window/mod.rs:286 msgid "Help" msgstr "Nápověda" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Jasně, chápu" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Otevřít předvolby?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Dříve zvolený formát mohl být nedostupný. Otevřete předvolby a vyberte " "formát pro pokračování v nahrávání." #: src/window/mod.rs:305 msgid "Later" msgstr "Později" #: src/window/mod.rs:307 msgid "Open" msgstr "Otevřít" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Probíhá nahrávání" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pozastaveno" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normální" #: src/window/mod.rs:523 msgid "Selection" msgstr "Výběr" #~ msgid "Failed to start device monitor" #~ msgstr "Odposlouchávání zařízení selhalo" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Připojení k PulseAudio daemonu selhalo" #~ msgid "No microphone source found" #~ msgstr "Nenalezen žádný mikrofonní zdroj" #~ msgid "No desktop speaker source found" #~ msgstr "Nenalezen žádný zdroj s reproduktory" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Tento počet snímků za sekundu může způsobit problémy s výkonem." #~ msgid "approx." #~ msgstr "cca." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Nahrávat můžete monitor, okno nebo výřez obrazovky" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Výběr více zdrojů" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Klikněte zde pro zobrazení videa." #~ msgid "Failed to select saving location" #~ msgstr "Nepodařilo se vybrat uložení lokace" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Nezdařilo se otevřít soubor pro zápis" #~ msgid "Failed to select folder" #~ msgstr "Nepodařilo se vybrat složku" #~ msgid "Donate (Liberapay)" #~ msgstr "Podpořit (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Podpořit (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Pro pomoc navštivte {}." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Nezdařilo se otevření “{}” pro zápis" #~ msgid "_Cancel" #~ msgstr "_Zrušit" #~ msgid "_Select" #~ msgstr "_Vybrat" #~ msgid "No folder selected" #~ msgstr "Nebyla vybrána žádná složka" #~ msgid "Please choose a folder and try again." #~ msgstr "Prosím, vyberte složku a zkuste to znovu." #~ msgid "Cannot access “{}”" #~ msgstr "Nelze získat přístup k \"{}\"" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Prosím, vyberte přístupné místo a zkuste to znovu." #~ msgid "Enable Desktop Sounds" #~ msgstr "Zapnout systémové zvuky" #~ msgid "Disable Desktop Sounds" #~ msgstr "Vypnout systémové zvuky" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Zaznamenejte svou obrazovku bez problémů." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Nahrávejte zvuk z mikrofonu, z pořítače nebo z obojího zároveň." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Podpora formátů WebM, MP4, GIF a MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "Výběr více zdrojů." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Volitelné hardwarově akcelerované kódování" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Vyberte k nahrávání monitor nebo okno." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Vytvořte výběr, který zachytí určitou oblast z vaší obrazovky." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Nastavte zpoždění, aby jste se připravili před nahráváním." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Zobrazte nebo skryjte ukazatele myši." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Zvolte místo uložení svých nahrávek." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Využijte užitečné klávesové zkratky." #~ msgid "Toggle Computer Sounds" #~ msgstr "Zapnout/vypnout zvuky z plochy" #~ msgid "_Delay" #~ msgstr "Z_poždění" #~ msgid "3 seconds" #~ msgstr "3 sekundy" #~ msgid "5 seconds" #~ msgstr "5 sekund" #~ msgid "10 seconds" #~ msgstr "10 sekund" #~ msgid "_Video Format" #~ msgstr "_Formát videa" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Uložit do…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer plugin možná není nainstalován. Pokud je nainstalovaný ale " #~ "nefunguje, prosím pošli report na stránce s chybami Kooha ." #~ msgid "Record Computer Sounds" #~ msgstr "Nahrávat zvuky z plochy" #~ msgid "Record From Microphone" #~ msgstr "Nahrávat zvuk z mikrofonu" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Zrušit zpoždění" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Nahrávač obrazovky!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Nahrávka byla uložena do \"{}\"" #~ msgid "Open File" #~ msgstr "Otevřít soubor" #~ msgid "Screencast Portal Request Error" #~ msgstr "Chyba požadavku portálu Screencast" #~ msgid "Pipeline Build Error" #~ msgstr "Chyba při sestavování v pipeline" #~ msgid "Recording Error" #~ msgstr "Chyba při nahrávání" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Zkontroluj závislosti běhového prostředí a Stránku \"It doesn't work\"." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Zajisti aby místo pro ukládání existovalo a bylo dostupné. Pokud místo " #~ "existuje a je skutečně dostupné, něco se pokazilo. Porsím zašli report s " #~ "chybou na stránku s " #~ "chybami kooha." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Plugin GStreamer nejspíše nebude nainstalovaný, pokud není prosíme o " #~ "vyplnění reportu na Kooha's issue page." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Ujisti se že existuje umístění kam chceš ukládat, pokud ne něco se " #~ "pokazilo, můžeš vyplnit report na Kooha's issue page." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Zaznamenej svou obrazovku jednoduše a bez zbytečných starostí a " #~ "rozptylování." #~ msgid "Sorry! An error has occurred." #~ msgstr "Omlouváme se! Nastala chyba." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Prosím vyberte místo, kam máte přístup a zkuste znovu." #~ msgid "Select a Folder" #~ msgstr "Vyberte složku" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Vyber oblast obrazovky pro nahrávání." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Podpora pro volné formáty Matroska a WebM." #~ msgid "Open menu" #~ msgstr "Otevřít nabídku" #~ msgid "Show keyboard shortcuts" #~ msgstr "Zobrazit klávesové zkratky" #~ msgid "Toggle record" #~ msgstr "Zapnout nahrávání" #~ msgid "Cancel delay" #~ msgstr "Zrušit zpoždění" #~ msgid "Toggle computer sounds" #~ msgstr "Zapnout nahrávání zvuku počítače" #~ msgid "Toggle microphone" #~ msgstr "Zapnout mikrofón" #~ msgid "Toggle pointer" #~ msgstr "Zapnout ukazatel" #~ msgid "Delay" #~ msgstr "Zpoždění" #~ msgid "Video Format" #~ msgstr "Formát videa" #~ msgid "Save to…" #~ msgstr "Uložit do…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Klávesové zkratky" #~ msgid "About Kooha" #~ msgstr "O Kooha" #~ msgid "Select" #~ msgstr "Vybrat" #~ msgid "Toggle capture mode" #~ msgstr "Vybrat režim nahrávání" #~ msgid "Full Screen" #~ msgstr "Celá obrazovka" #~ msgid "Processing" #~ msgstr "Zpracovávání" #~ msgid "Save location not set" #~ msgstr "Místo pro ukládání nevybráno" #~ msgid "Recording cannot start" #~ msgstr "Nelze zapnout nahrávání" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Místo vybrané pro ukládání mohlo být smazáno." #~ msgid "The recording has been saved in" #~ msgstr "Nahrávka byla uložena" #~ msgid "Record computer sounds" #~ msgstr "Nahrávat zvůk z počítače" #~ msgid "Record from microphone" #~ msgstr "Nahrávat zvuk z mikrofonu" #~ msgid "Show pointer" #~ msgstr "Zobrazit ukazatel" #~ msgid "Elegantly record your screen " #~ msgstr "Elegantně nahraj svou obrazovku. " #~ msgid "Simple screen recorder" #~ msgstr "Jednoduchý program pro nahrávání obrazovky" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha je jednoduchý program na nahrávání obrazovky postavený na GTK. " #~ "Dokáže nahrávat obrazovku společně se zvukem z mikrofonu nebo počítače." Kooha-2.3.0/po/da.po000066400000000000000000000414671457702140700141420ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Rantyrant , 2022. # Johan Fagerberg , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-12-21 17:09+0000\n" "Last-Translator: Johan Fagerberg \n" "Language-Team: Danish \n" "Language: da\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.4-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Optag din skærm på en elegant måde" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Optag;Skærm;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Optag din skærm på en intuitiv og ligetil måde uden distraktioner." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha er en simpel skærmoptager med en minimalistisk brugerflade. Du kan " "bare klikke på optageknappen uden at skulle konfigurere en masse " "indstillinger." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "De vigtigste funktioner i Kooha omfatter følgende:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Optag mikrofon, skrivebordslyd, eller begge på samme tid" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Understøttelse af WebM, MP4, GIF og Matroska formater" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Konfigurerbar lagringssted, markør synlighed, billedhastighed, og " "forsinkelse" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Eksperimentel hardwarebaseret indkodning" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Vælg område" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Annuller" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Færdig" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Nulstil valg" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Generelt" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Forsinkelse (sekunder)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Optagelsesmappe" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Billedhastighed" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Åbn menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Vis indstillinger" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Vis genveje" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Afslut" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Optagelse" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Start/stop optagelse" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Slå pause til/fra" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Annuller optagelse" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Instillinger" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Slå skrivebordslyd til/fra" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Slå mikrofon til/fra" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Slå musemarkør til/fra" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Hovedmenu" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Optage en skærm eller et vindue" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Optag et udvalg af skærmen" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Slå skrivebordslyd til" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Slå skrivebordslyd fra" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Slå mikrofon til" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Slå mikrofon fra" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Vis markør" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Skjul markør" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Start optagelse" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Optag" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Glem tidligere valgte videokilder" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Stop optagelse" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Stop" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pause optagelse" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Optager om…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Annuller optagelse" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Renser…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Indstillinger" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Tastaturgenveje" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Om Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Marc Eckert" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Donere (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Oversæt" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Optagelse færdig" #: src/application.rs:144 msgid "Show in Files" msgstr "Vis i Filer" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Sørg for, at du har PulseAudio installeret på dit system." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Dette format er eksperimentelt og usupporteret." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Ingen" #: src/recording.rs:42 msgid "No active profile" msgstr "Ingen aktiv profil" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Kunne ikke starte optagelse" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Se {link} for hjælp." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Et GStreamer plugin er muligvis ikke installeret." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Tjek at lagrinsstedet eksisterer og er tilgængeligt." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Der opstod en fejl under optagelsen" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Kunne ikke åbne “{path}” til skrivning" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Vælg Optagelsesmappe" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Kunne ikke slå pause til/fra" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopier til udklipsholder" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Kopieret til udklipsholder" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Vis detaljeret fejl" #: src/window/mod.rs:286 msgid "Help" msgstr "Hjælp" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Åben Indstillinger?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Det tidligere valgte format kan have været utilgængeligt. Åben indstillinger " "og vælg et format for at fortsætte optagelse." #: src/window/mod.rs:305 msgid "Later" msgstr "Senere" #: src/window/mod.rs:307 msgid "Open" msgstr "Åben" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "På pause" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Udvælgelse" #~ msgid "Failed to start device monitor" #~ msgstr "Kunne ikke starte enhedsmonitor" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Kunne ikke forbinde til PulseAudio daemon" #~ msgid "No microphone source found" #~ msgstr "Ingen mikrofonkilde fundet" #~ msgid "No desktop speaker source found" #~ msgstr "Ingen skrivebords højtalerkilde fundet" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Denne billedhastighed kan forårsage problemer med ydeevnen." #~ msgid "approx." #~ msgstr "ca." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Vælg en skærm, et vindue, eller en del af skærmen til at optage" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Valg af flere kilder" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Klik her for at se video." #~ msgid "Failed to select saving location" #~ msgstr "Kunne ikke vælge lagringslokation" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Kunne ikke åbne fil til skrivning" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Optag din skærm uden besvær." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Optag din mikrofon, computerlyde eller begge dele på samme tid." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Understøttelse af WebM-, MP4-, GIF- og MKV-formater." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Valg af flere kilder." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Valgfri hardwareaccelereret kodning" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Vælg en skærm eller et vindue til at optage." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Opret en markering for at optage bestemte områder fra skærmen." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "" #~ "⏲️ Indstil forsinkelsen for at forberede dig, før du begynder at optage." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Skjul eller vis musemarkøren." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Vælg et sted at gemme din optagelse." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Brug nyttige tastaturgenveje." #~ msgid "Toggle Computer Sounds" #~ msgstr "Slå computerlyde til/fra" #~ msgid "_Delay" #~ msgstr "_Forsinkelse" #~ msgid "5 seconds" #~ msgstr "5 sekunder" #~ msgid "10 seconds" #~ msgstr "10 sekunder" #~ msgid "_Video Format" #~ msgstr "_Videoformat" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Gem til…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Der er muligvis ikke installeret et GStreamer-plugin. Hvis det er " #~ "installeret, men stadig ikke fungerer korrekt, skal du rapportere det til " #~ "Kooha's problem-side." #~ msgid "Record Computer Sounds" #~ msgstr "Optag computerlyde" #~ msgid "Record From Microphone" #~ msgstr "Optag fra mikrofon" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Annuller forsinkelse" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Ophavsret 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Screencast optaget!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Optagelsen er blevet gemt i \"{}\"" #~ msgid "Open File" #~ msgstr "Åben fil" #~ msgid "Screencast Portal Request Error" #~ msgstr "Fejl i screencast-portalanmodning" #~ msgid "Pipeline Build Error" #~ msgstr "Pipeline Build-fejl" #~ msgid "Recording Error" #~ msgstr "Der opstod en fejl under optagelse" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Sørg for at tjekke for runtime-afhængigheder og Det virker ikke." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Sørg for, at gemmerstedet findes eller er tilgængeligt. Hvis den faktisk " #~ "eksisterer eller er tilgængelig, er der gået noget galt, og du bedes " #~ "rapportere det til Kooha's problem-side." Kooha-2.3.0/po/de.po000066400000000000000000000562651457702140700141500ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Jonathan Haas , 2021. # J. Lavoie , 2021. # Heinrich Heinzer , 2021. # Nico , 2021, 2022. # Milo Ivir , 2021. # sal0max , 2022, 2023. # Schlömi , 2022. # Nils Martel , 2022. # Justin Nogossek , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Nehme deinen Bildschirm elegant auf" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Rekorder;Aufnahme;Bildschirm;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Nehme deinen Bildschirm auf intuitive und unkomplizierte Weise ohne " "Ablenkungen auf." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha ist ein einfacher Bildschirmrekorder mit einer minimalistischen " "Oberfläche. Du kannst einfach auf die Aufnahmetaste klicken, ohne einen " "Haufen von Einstellungen konfigurieren zu müssen." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Zu den Hauptmerkmalen von Kooha gehören:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "Nehme das Mikrofon, den Computer, oder beides gleichzeitig auf" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "Unterstützung für WebM, MP4, GIF und das Matroska Format" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "Konfigurieren Sie den Speicherort, die Sichtbarkeit des Zeigers, die " "Bildrate und die Verzögerung" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "Experimentelles, hardwarebeschleunigtes Kodieren" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Bereich auswählen" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Abbrechen" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Fertig" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Auswahl zurücksetzen" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Allgemeines" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Verzögerung (Sekunden)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Aufnahmen Speicherort" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Bildrate" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Menü öffnen" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Zeige Einstellungen" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Tastaturkürzel anzeigen" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Schließen" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Aufnahme" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Aufnahme umschalten" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Pause umschalten" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Aufzeichnung abbrechen" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Einstellungen" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Desktop Audio umschalten" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Mikrofon umschalten" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Cursor umschalten" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Hauptmenü" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Bildschirm oder Fenster aufnehmen" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Auswahl des Bildschirms aufnehmen" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Desktop Audio aktivieren" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Desktop Audio deaktivieren" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Mikrofon aktivieren" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Mikrofon deaktivieren" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mauszeiger anzeigen" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Mauszeiger ausblenden" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Aufnahme starten" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Aufnehmen" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Zuvor ausgewählte Videoquellen vergessen" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Aufnahme stoppen" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Stopp" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Aufnahme pausieren" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Aufnahme in …" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Aufnahme abbrechen" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Abschließen…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Einstellungen" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Tastaturkürzel" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Über Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "J. Lavoie, Andy Pillip, Heinrich Heinzer, Nico, Milo Ivir, sal0max, Marlon, " "Jörn Weigend, Florian Schaupp, Justin Nogossek" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Spenden (Kauf mir einen Kaffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Übersetzen" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Screencast aufgezeichnet" #: src/application.rs:144 msgid "Show in Files" msgstr "In Dateien anzeigen" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Stelle sicher, dass PulseAudio auf deinem System installiert ist." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Dieses Format ist experimentell und nicht unterstützt." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Kein" #: src/recording.rs:42 msgid "No active profile" msgstr "Kein aktives Profil" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Aufnahme konnte nicht gestartet werden" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Eine GStreamer Erweiterung ist womöglich nicht installiert." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Stelle sicher, dass der Speicherort existiert und zugänglich ist." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Bei der Aufzeichnung ist ein Fehler aufgetreten" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Aufnahmeordner auswählen" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Pause konnte nicht umgeschaltet werden" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "In die Zwischenablage kopiert" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Detaillierten Fehler anzeigen" #: src/window/mod.rs:286 msgid "Help" msgstr "Hilfe" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "OK, verstanden" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Einstellungen öffnen?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Das vorher ausgewählte Format ist eventuelle nicht verfügbar. Öffne die " "Einstellungen und wähle ein Format um weiter aufzunehmen." #: src/window/mod.rs:305 msgid "Later" msgstr "Später" #: src/window/mod.rs:307 msgid "Open" msgstr "Öffnen" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pausiert" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Auswahl" #~ msgid "Failed to start device monitor" #~ msgstr "Gerätemonitor konnte nicht gestartet werden" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Verbindung zum PulseAudio-Daemon fehlgeschlagen" #~ msgid "No microphone source found" #~ msgstr "Keine Mikrofonquelle gefunden" #~ msgid "No desktop speaker source found" #~ msgstr "Keine Desktop-Lautsprecherquelle gefunden" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Diese Bildrate könnte Leistungsprobleme verursachen." #~ msgid "approx." #~ msgstr "geschätzt" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "Wähle einen Bildschirm, ein Fenster oder eine Ausschnitt zum Aufnehmen aus" #~ msgid "🗔 Multiple sources selection" #~ msgstr "Auswahl aus mehreren Quellen" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Klicke hier, um das Video anzusehen." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Datei konnte nicht zum Schreiben geöffnet werden" #~ msgid "Donate (Liberapay)" #~ msgstr "Spenden (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Spenden (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Siehe {} für Hilfe." #~ msgid "Failed to open “{}” for writing" #~ msgstr "„{}“ konnte nicht zum Schreiben geöffnet werden" #~ msgid "_Cancel" #~ msgstr "_Abbrechen" #~ msgid "_Select" #~ msgstr "_Auswählen" #~ msgid "No folder selected" #~ msgstr "Kein Ordner ausgewählt" #~ msgid "Please choose a folder and try again." #~ msgstr "Bitte wähle einen Ordner und versuche es erneut." #~ msgid "Cannot access “{}”" #~ msgstr "Kein Zugriff auf „{}“" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Bitte wähle einen zugänglichen Pfad und versuche es erneut." #~ msgid "Enable Desktop Sounds" #~ msgstr "Desktop-Sounds aktivieren" #~ msgid "Disable Desktop Sounds" #~ msgstr "Desktop-Sounds deaktivieren" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Erfasse deinen Ihren Bildschirm mühelos." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Nehme dein Mikrofon, Computertöne oder beides gleichzeitig auf." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Unterstützung für die Formate WebM, MP4, GIF und MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Auswahl mehrerer Quellen." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Optionale hardwarebeschleunigte Kodierung" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Wähle einen Monitor oder ein Fenster zum Aufzeichnen." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Erstelle eine Auswahl, um einen bestimmten Bereich auf Ihrem Bildschirm " #~ "aufzuzeichnen." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Stelle eine Verzögerung ein, um die Aufnahme vorzubereiten." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Mauszeiger ein- oder ausblenden." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Wähle einen Speicherort für deine Aufnahme." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Nutze hilfreiche Tastaturkürzel." #~ msgid "Toggle Computer Sounds" #~ msgstr "Computersounds umschalten" #~ msgid "_Delay" #~ msgstr "_Verzögerung" #~ msgid "3 seconds" #~ msgstr "3 Sekunden" #~ msgid "5 seconds" #~ msgstr "5 Sekunden" #~ msgid "10 seconds" #~ msgstr "10 Sekunden" #~ msgid "_Video Format" #~ msgstr "_Videoformat" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Speichern unter…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Unter Umständen ist kein GStreamer-Plugin installiert. Falls es " #~ "installiert ist, aber nicht funktioniert, das Problem bitte auf der Kooha Issue Seite " #~ "melden." #~ msgid "Record Computer Sounds" #~ msgstr "Computertöne aufnehmen" #~ msgid "Record From Microphone" #~ msgstr "Mikrophon aufnehmen" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Verzögerung abbrechen" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Video-Aufzeichnung aufgenommen!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Die Aufnahme wurde in „{}“ gespeichert" #~ msgid "Open File" #~ msgstr "Datei öffnen" #~ msgid "Screencast Portal Request Error" #~ msgstr "Screencast-Portal-Anforderung fehlgeschlagen" #~ msgid "Pipeline Build Error" #~ msgstr "Pipeline-Build-Fehler" #~ msgid "Recording Error" #~ msgstr "Aufnahmefehler" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Stellen Sie sicher, dass Sie die Laufzeitabhängigkeiten und die It Doesn't Work-" #~ "Seite überprüfen." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Bitte sicherstellen, dass der Speicherort existiert und zugreifbar ist. " #~ "Falls er existiert und zugreifbar ist, ist etwas schief gegangen. Das " #~ "Problem bitte auf der Kooha Issue Seite melden." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Ein GStreamer-Plugin scheint nicht installiert zu sein. Falls dies nicht " #~ "der Fall ist, melden Sie es bitte auf der Kooha Issue-Seite." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Stellen Sie sicher, dass der Speicherort existiert. Falls dies nicht das " #~ "Problem war, ist etwas anderes schiefgelaufen. Bitte melden Sie dies auf " #~ "der Kooha Issue-Seite." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Erfassen Sie Ihren Bildschirm auf einfache und schmerzlose Weise ohne " #~ "Ablenkung." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Achte auf die \"It Doesn't Work\" Seite auf der Readme-Seite und die dort " #~ "angegebenen Abhängigkeiten. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Ein GStreamer-Plugin ist möglicherweise nicht installiert. Falls dies " #~ "nicht der Fall ist, melde dies bitte der Issue-Seite von Kooha. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Screencast-Portal-Anforderung fehlgeschlagen" #~ msgid "Recording Failed" #~ msgstr "Aufnahme fehlgeschlagen" #~ msgid "Pipeline Build Failed" #~ msgstr "Pipeline-Build fehlgeschlagen" #~ msgid "Please choose an accessible location and retry." #~ msgstr "" #~ "Bitte wählen Sie einen erreichbaren Ort und versuchen Sie es erneut." #~ msgid "Select a Folder" #~ msgstr "Ordner wählen" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Wählen Sie einen Bereich Ihres Bildschirms für die Aufnahme aus." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Unterstützt die freien Formate Matroska und WebM." #~ msgid "Open menu" #~ msgstr "Menü öffnen" #~ msgid "Show keyboard shortcuts" #~ msgstr "Tastaturkürzel anzeigen" #~ msgid "Toggle record" #~ msgstr "Aufnahme umschalten" #~ msgid "Toggle record pause" #~ msgstr "Aufnahmepause umschalten" #~ msgid "Cancel delay" #~ msgstr "Verzögerung abbrechen" #~ msgid "Toggle computer sounds" #~ msgstr "Computertöne umschalten" #~ msgid "Toggle microphone" #~ msgstr "Mikrofon umschalten" #~ msgid "Toggle pointer" #~ msgstr "Mauszeiger umschalten" #~ msgid "Delay" #~ msgstr "Verzögerung" #~ msgid "Video Format" #~ msgstr "Videoformat" #~ msgid "Save to…" #~ msgstr "Speichern unter…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tastatürkürzel" #~ msgid "About Kooha" #~ msgstr "Über Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "Entschuldigung! Es ist ein Fehler aufgetreten." #~ msgid "Videos" #~ msgstr "Videos" #~ msgid "Select" #~ msgstr "Auswählen" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "Die Aufnahme wurde in {saving_location} gespeichert" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Unzugänglicher Speicherort „{directory}“" #~ msgid "Toggle capture mode" #~ msgstr "Aufnahmemodus umschalten" #~ msgid "Full Screen" #~ msgstr "Vollbild" #~ msgid "Processing" #~ msgstr "Verarbeitung" #~ msgid "Save location not set" #~ msgstr "Speicherort nicht festgelegt" #~ msgid "Recording cannot start" #~ msgstr "Aufnahme kann nicht gestartet werden" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Der von Ihnen gewählte Speicherort wurde möglicherweise gelöscht." #~ msgid "The recording has been saved in" #~ msgstr "Die Aufnahme ist gespeichert worden in" #~ msgid "Record computer sounds" #~ msgstr "Computertöne aufnehmen" #~ msgid "Record from microphone" #~ msgstr "Mikrofon aufnehmen" #~ msgid "Show pointer" #~ msgstr "Mauszeiger anzeigen" #~ msgid "Elegantly record your screen " #~ msgstr "Elegant Ihren Bildschirm aufzeichnen " #~ msgid "Simple screen recorder" #~ msgstr "Einfache Bildschirmaufnahme" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha ist eine einfache GTK-basierte Anwendung zur Bildschirmaufnahme. Es " #~ "ermöglicht Ihnen, Ihren Bildschirminhalt und auch Audio von Ihrem " #~ "Mikrofon oder Desktop aufzunehmen." Kooha-2.3.0/po/el.po000066400000000000000000000403231457702140700141440ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Nikos , 2022. # Nikolaos Georgiou , 2022. # greek anon , 2023, 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Greek \n" "Language: el\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Κομψή καταγραφή οθόνης" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Μετάδοση;Εγγραφή;Οθόνη;Βίντεο;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Καταγράψτε την οθόνη σας εύκολα και απλά χωρίς περισπασμούς." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Το Kooha είναι ένα απλό καταγραφικό οθόνης με μινιμαλιστική διεπαφή. Απλώς " "κάνετε κλικ στο κουμπί εγγραφής χωρίς να χρειάζεται να διαμορφώσετε ένα σωρό " "ρυθμίσεις." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Τα κύρια χαρακτηριστικά του Kooha περιλαμβάνουν τα ακόλουθα:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" "🎙️ Εγγραφή μικροφώνου, ήχου επιφάνειας εργασίας ή και των δύο ταυτόχρονα" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Υποστήριξη για WebM, MP4, GIF και Matroska μορφές" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Ρυθμιζόμενη τοποθεσία αποθήκευσης, ορατότητα δείκτη, ρυθμός καρέ και " "καθυστέρηση" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Πειραματική κωδικοποίηση μέσω επιτάχυνσης υλικού" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Επιλέξτε Περιοχή" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Ακύρωση" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Ολοκληρώθηκε" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Επαναφορά Επιλογής" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Γενικά" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Καθυστέρηση (Δευτερόλεπτα)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Φάκελος Εγγραφών" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Βίντεο" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Μορφή" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Ρυθμός Καρέ" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Άνοιγμα Μενού" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Εμφάνιση Προτιμήσεων" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Εμφάνιση Συντομεύσεων" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Έξοδος" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Εγγραφή" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Μεταβολή εγγραφής" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Μεταβολή Παύσης" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Ακύρωση Εγγραφής" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Ρυθμίσεις" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Μεταβολή Ήχου Επιφάνειας Εργασίας" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Μεταβολή Μικροφώνου" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Μεταβολή Δείκτη" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Κυρίως Μενού" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Καταγράψτε μια Οθόνη ή ένα Παράθυρο" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Καταγράψτε μια Περιοχή της Οθόνης" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Ενεργοποίηση Ήχου Επιφάνειας Εργασίας" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Απενεργοποίηση Ήχου Επιφάνειας Εργασίας" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Ενεργοποίηση Μικροφώνου" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Απενεργοποίηση Μικροφώνου" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Εμφάνιση Δείκτη" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Απόκρυψη Δείκτη" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Έναρξη Εγγραφής" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Εγγραφή" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Ξέχνα Προηγουμένως Επιλεγμένες Πηγές Βίντεο" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Τέλος Εγγραφής" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Τέλος" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Παύση Εγγραφής" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Εγγραφή σε…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Ακύρωση Εγγραφής" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Εκκαθάριση…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Προτιμήσεις" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Συντομεύσεις Πληκτρολογίου" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Σχετικά με το Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "συντελεστές-μετάφρασης" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Δωρεά (Αγόρασέ μου έναν καφέ)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Μετάφραση" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Μετάδοση Οθόνης καταγράφηκε" #: src/application.rs:144 msgid "Show in Files" msgstr "Εμφάνιση σε Αρχεία" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Βεβαιωθείτε ότι έχετε εγκαταστήσει το PulseAudio στο σύστημά σας." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Αυτή η μορφή είναι πειραματική και δεν υποστηρίζεται." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Κανένας" #: src/recording.rs:42 msgid "No active profile" msgstr "Κανένα ενεργό προφίλ" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Αποτυχία έναρξης εγγραφής" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Η επέκταση GStreamer ίσως δεν έχει εγκατασταθεί." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Βεβαιωθείτε ότι η τοποθεσία αποθήκευσης υπάρχει και είναι προσβάσιμη." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Παρουσιάστηκε σφάλμα κατά την εγγραφή" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Επιλέξτε Φάκελο Εγγραφών" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Απέτυχε η μεταβολή παύσης" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Αντιγράφηκε στο πρόχειρο" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Εμφάνιση λεπτομερειών σφάλματος" #: src/window/mod.rs:286 msgid "Help" msgstr "Βοήθεια" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "Εντάξει, Κατάλαβα" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Άνοιγμα Προτιμήσεων;" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Η προηγουμένως επιλεγμένη μορφή ίσως δεν είναι διαθέσιμη. Ανοίξτε τις " "προτιμήσεις και επιλέξτε μια μορφή για συνέχιση εγγραφής." #: src/window/mod.rs:305 msgid "Later" msgstr "Αργότερα" #: src/window/mod.rs:307 msgid "Open" msgstr "Άνοιγμα" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Σε παύση" #: src/window/mod.rs:522 msgid "Normal" msgstr "Κανονικό" #: src/window/mod.rs:523 msgid "Selection" msgstr "Επιλογή" #~ msgid "Failed to start device monitor" #~ msgstr "Αποτυχία εκκίνησης οθόνης συσκευής" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Αποτυχία σύνδεσης με διεργασία του PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Δεν βρέθηκε πηγή μικροφώνου" #~ msgid "No desktop speaker source found" #~ msgstr "Δεν βρέθηκε πηγή ηχείων" #~ msgid "Ok" #~ msgstr "Εντάξει" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Αυτός ο ρυθμός καρέ ίσως προκαλέσει προβλήματα απόδοσης." #~ msgid "approx." #~ msgstr "περίπου" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Επιλέξτε μια οθόνη, ένα παράθυρο ή ένα τμήμα της οθόνης για εγγραφή" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Επιλογή πολλαπλών πηγών" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Πατήστε εδώ για να δείτε το βίντεο." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Αποτυχία ανοίγματος αρχείου για γράψιμο" #~ msgid "Donate (Liberapay)" #~ msgstr "Δωρεά (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Δωρεά (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Δείτε στο {} για βοήθεια." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Αποτυχία ανοίγματος \"{}\" για γράψιμο" #~ msgid "_Cancel" #~ msgstr "_Ακύρωση" #~ msgid "_Select" #~ msgstr "_Επιλογή" #~ msgid "No folder selected" #~ msgstr "Δεν έχει επιλεγεί φάκελος" #~ msgid "Please choose a folder and try again." #~ msgstr "Παρακαλώ επιλέξτε φάκελο και δοκιμάστε ξανά." #~ msgid "Cannot access “{}”" #~ msgstr "Αδύνατη πρόσβαση στο “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Παρακαλώ επιλέξτε προσβάσιμη τοποθεσία και δοκιμάστε ξανά." Kooha-2.3.0/po/eo.po000066400000000000000000000261461457702140700141560ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # telmo bruno silva seabra , 2021. # Dave Patrick , 2021. # Unai Hernández Minaberry , 2021. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2021-07-31 09:03+0000\n" "Last-Translator: telmo bruno silva seabra \n" "Language-Team: Esperanto \n" "Language: eo\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 4.7.2-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Elegante registri vian ekranon" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Ekranelsendi;Registrilo;Ekrano;Bildbendo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha estas simpla ekranregistrilo kun minimumista interfaco. Vi povas nur " "alklaki la registran butonon sen devi agordi multajn reguligojn." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "La precipaj ebloj de Kooha inkludas la sekvantan:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Ĝenerala" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Lasi" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Registranti" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "" #: src/window/mod.rs:522 msgid "Normal" msgstr "" #: src/window/mod.rs:523 msgid "Selection" msgstr "" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Enkaptu vian ekranon sen iu malfacilaĵo." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Registru vian mikrofonon, komputerajn sonojn, aŭ ambaŭ sinkrone." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Agordu prokraston por pretigi antaŭ vi ekregistrus." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Kaŝi aŭ elmontri musan montrilon." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Elektu surdiskigan lokon por via registro." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Uzu helpa klavara kurtvojo." #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Elektu areon de vian ekranon por registri." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Subteno por la liberaj Matroska and WebM formatoj." #~ msgid "Open menu" #~ msgstr "Aperti menuon" #~ msgid "Show keyboard shortcuts" #~ msgstr "Elmontri klavarajn kurtvojojn" Kooha-2.3.0/po/es.po000066400000000000000000000620541457702140700141600ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Óscar Fernández Díaz , 2021, 2022. # Roberto Bautista , 2021. # Juan David Sanchez Lean , 2021. # robert schneider , 2021. # Dave Patrick , 2021. # Pointify Starrcat , 2021. # Chardinson De la cruz Ventura , 2021. # Sergio Varela , 2022, 2024. # gallegonovato , 2023, 2024. # Adolfo Jayme Barrientos , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-26 09:02+0000\n" "Last-Translator: gallegonovato \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Grabe su pantalla elegantemente" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Capturar pantalla;Grabador;Pantalla;Vídeo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Capture su pantalla de forma intuitiva y directa, sin distracciones." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha es un grabador de pantalla simple con una interfaz minimalista. Pulse " "en el botón grabar sin tener que configurar un centenar de ajustes." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Las características principales de Kooha incluyen lo siguiente:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Graba el micrófono, el audio del escritorio, o ambos a la vez" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Compatibilidad con los formatos WebM, MP4, GIF y Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Seleccione un monitor o una parte de la pantalla para grabar" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Ubicación de guardado, visibilidad del puntero, tasa de fotogramas y " "retardo configurables" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Codificación experimental acelerada por hardware" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Seleccionar área" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Cancelar" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Hecho" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Reiniciar selección" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "General" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Retardo (segundos)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Intervalo de tiempo antes de que comience la grabación" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Carpeta de grabaciones" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Carpeta de destino de las grabaciones" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Vídeo" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formato" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Tasa de fotogramas" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Abrir menú" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Mostrar preferencias" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Mostrar atajos" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Salir" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Grabando" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Conmutar grabación" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Conmutar pausa" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Cancelar el registro" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Ajustes" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Cambiar el audio del escritorio" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Conmutar micrófono" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Conmutar puntero" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menú principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Capturar un monitor o una ventana" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Capturar una selección de la pantalla" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Activar el audio de escritorio" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Desactivar el audio del escritorio" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Activar micrófono" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Desactivar micrófono" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mostrar puntero" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Ocultar puntero" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Iniciar grabación" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Grabar" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Olvidar las fuentes de vídeo previamente seleccionadas" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Detener grabación" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Detener" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pausar grabación" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Grabando en…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Cancelar la grabación" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Purgando…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Preferencias" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Atajos del teclado" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Acerca de Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "Óscar Fernández Díaz (oscfdezdz@tuta.io), Adolfo Jayme Barrientos " "(fitojb@ubuntu.com)" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Donar (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Traducir" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Grabación de pantalla finalizada" #: src/application.rs:144 msgid "Show in Files" msgstr "Mostrar en archivos" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "No se ha encontrado el dispositivo de audio predeterminado" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Asegúrese de que tiene instalado PulseAudio en su sistema." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} hora" msgstr[1] "{time} horas" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} minuto" msgstr[1] "{time} minutos" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} segundo" msgstr[1] "{time} segundos" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Error al configurar la carpeta de grabaciones" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Esta velocidad de fotogramas puede causar problemas de rendimiento en el " "formato seleccionado." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Este formato es experimental y no está soportado." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Ninguno" #: src/recording.rs:42 msgid "No active profile" msgstr "Ningún perfil activo" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "No se ha podido iniciar la grabación" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Consulta {link} para obtener ayuda." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Es posible que no esté instalado un plugin de GStreamer." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Asegúrese de que la ubicación de guardado existe y es accesible." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Se ha producido un error al grabar" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Error al abrir \"{path}\" para modificarlo" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Elegir carpeta de grabaciones" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Fallo al conmutar la pausa" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Hay una grabación en curso. Salir inmediatamente puede hacer que la " "grabación no se pueda reproducir. Por favor, detenga la grabación antes de " "salir." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "Al salir se cancelará el procesamiento y puede que la grabación no se pueda " "reproducir." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "¿Salir de la aplicación?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Copiado al portapapeles" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Mostrar error detallado" #: src/window/mod.rs:286 msgid "Help" msgstr "Ayuda" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Vale, lo tengo" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "¿Abrir preferencias?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Es posible que el formato seleccionado anteriormente no esté disponible. " "Abra las preferencias y seleccione un formato para seguir grabando." #: src/window/mod.rs:305 msgid "Later" msgstr "Después" #: src/window/mod.rs:307 msgid "Open" msgstr "Abrir" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Grabación en curso" #: src/window/mod.rs:485 msgid "Paused" msgstr "En pausa" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Selección" #~ msgid "Failed to start device monitor" #~ msgstr "No se ha podido iniciar el seguimiento del dispositivo" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Fallo en la conexión con el demonio PulseAudio" #~ msgid "No microphone source found" #~ msgstr "No se ha encontrado la fuente del micrófono" #~ msgid "No desktop speaker source found" #~ msgstr "No se ha encontrado ninguna fuente de altavoces de sobremesa" #~ msgid "Ok" #~ msgstr "Vale" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Esta tasa de fotogramas puede causar problemas de rendimiento." #~ msgid "approx." #~ msgstr "aprox." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Selecciona un monitor, una ventana o una parte de la pantalla para " #~ "grabar" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Selección de múltiples fuentes" #~ msgid "No Profile" #~ msgstr "Sin perfil" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Haga clic aquí para ver el vídeo." #~ msgid "Failed to select saving location" #~ msgstr "No se ha podido seleccionar la ubicación para el almacenamiento" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "No se ha podido abrir el archivo para escribir" #~ msgid "Failed to select folder" #~ msgstr "Error al seleccionar la carpeta" #~ msgid "Donate (Liberapay)" #~ msgstr "Donar (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Donar (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Consulte {} para obtener ayuda." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Fallo al abrir \"{}\" para escribir" #~ msgid "_Cancel" #~ msgstr "_Cancelar" #~ msgid "_Select" #~ msgstr "_Seleccionar" #~ msgid "No folder selected" #~ msgstr "No se ha seleccionado ninguna carpeta" #~ msgid "Please choose a folder and try again." #~ msgstr "Por favor, elija una carpeta e inténtelo de nuevo." #~ msgid "Cannot access “{}”" #~ msgstr "No se puede acceder a “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Por favor, elija un lugar accesible e inténtelo de nuevo." #~ msgid "Enable Desktop Sounds" #~ msgstr "Activar sonidos del escritorio" #~ msgid "Disable Desktop Sounds" #~ msgstr "Desactivar sonidos del escritorio" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Grabar su pantalla sin ninguna molestia." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Grabar su micrófono, los sonidos del sistema, o ambos al mismo tiempo." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Soporte para formatos WebM, MP4, GIF, y MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Selección de múltiples fuentes." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Codificación acelerada por hardware opcional" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Seleccionar un monitor o ventana para grabar." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Crear una selección para capturar una área específica de su pantalla." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Seleccionar un retardo antes de empezar a grabar." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Ocultar o mostrar el puntero." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Seleccionar una ubicación para su grabación." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Usar los útiles atajos del teclado." #~ msgid "Toggle Computer Sounds" #~ msgstr "Conmutar sonidos del ordenador" #~ msgid "_Delay" #~ msgstr "_Retardo" #~ msgid "3 seconds" #~ msgstr "3 segundos" #~ msgid "5 seconds" #~ msgstr "5 segundos" #~ msgid "10 seconds" #~ msgstr "10 segundos" #~ msgid "_Video Format" #~ msgstr "_Formato de vídeo" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Guardar en…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Es posible que un plugin de GStreamer no esté instalado. Si está " #~ "instalado pero sigue sin funcionar correctamente, por favor informe a la " #~ "página de incidencias " #~ "de Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Grabar sonidos del ordenador" #~ msgid "Record From Microphone" #~ msgstr "Grabar desde el micrófono" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Cancelar retardo" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "¡Captura de pantalla grabada!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "La grabación se ha guardado en “{}”" #~ msgid "Open File" #~ msgstr "Abrir archivo" #~ msgid "Screencast Portal Request Error" #~ msgstr "Error de solicitud del portal de transmisión de pantalla" #~ msgid "Pipeline Build Error" #~ msgstr "Error de construcción de la tubería" #~ msgid "Recording Error" #~ msgstr "Error de grabación" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Asegúrese de comprobar las dependencias de tiempo de ejecución y la página No " #~ "funciona." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Asegúrese de que la ubicación de guardado existe o es accesible. Si " #~ "existe o es accesible, algo ha ido mal y, por favor, informe en la página de incidencias de " #~ "Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Asegúrese de que la ubicación de guardado existe. Si realmente existe, " #~ "algo ha ido mal y por favor informe a la página de incidencias de Kooha." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Es posible que un plugin de GStreamer no esté instalado. Si no es así, " #~ "por favor informe en la página de problemas de Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Asegúrese de que la ubicación de guardado existe. Si no es así, algo ha " #~ "ido mal y por favor informe en la página de problemas de Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Capture su pantalla de forma sencilla, indolora y sin distracciones." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Asegúrese de comprobar las dependencias de ejecución y la página \"No " #~ "funciona\" en la página readme de Kooha. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Es posible que el plugin de GStreamer no esté instalado. Si no es así, " #~ "por favor informe en la página de problemas de Kooha. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Fallo en la solicitud del portal de transmisión de pantalla" #~ msgid "Recording Failed" #~ msgstr "Fallo en la grabación" #~ msgid "Pipeline Build Failed" #~ msgstr "La construcción de la pipeline ha fallado" #~ msgid "Sorry! An error has occurred." #~ msgstr "¡Ups! Ha ocurrido un error." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Elige una ubicación accesible e intenta de nuevo." #~ msgid "Select a Folder" #~ msgstr "Elige una carpeta" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Selecciona un área de la pantalla para grabarla." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Soporte para los formatos libres Matroska y WebM." #~ msgid "Open menu" #~ msgstr "Abrir menú" #~ msgid "Show keyboard shortcuts" #~ msgstr "Mostrar atajos de teclado" #~ msgid "Toggle record" #~ msgstr "Alternar grabación" #~ msgid "Toggle record pause" #~ msgstr "Alternar la pausa de grabación" #~ msgid "Cancel delay" #~ msgstr "Cancelar retraso" #~ msgid "Toggle computer sounds" #~ msgstr "Activar o desactivar audio del dispositivo" #~ msgid "Toggle microphone" #~ msgstr "Activar o desactivar micrófono" #~ msgid "Toggle pointer" #~ msgstr "Activar o desactivar puntero" #~ msgid "Delay" #~ msgstr "Retraso" #~ msgid "Video Format" #~ msgstr "Formato de vídeo" #~ msgid "Save to…" #~ msgstr "Guardar en…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Atajos de teclado" #~ msgid "About Kooha" #~ msgstr "Acerca de Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "¡Lo siento! Se ha producido un error." #~ msgid "Videos" #~ msgstr "Vídeos" #~ msgid "Failed to create session." #~ msgstr "Error al crear la sesión." #~ msgid "Failed to select sources." #~ msgstr "Error al seleccionar las fuentes." #~ msgid "Select" #~ msgstr "Seleccionar" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Ruta inaccesible “{directory}”" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "La grabación se ha guardado en {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Ruta inaccesible '{directory}'" #~ msgid "Toggle capture mode" #~ msgstr "Cambiar modo de captura" #~ msgid "Full Screen" #~ msgstr "Pantalla completa" #~ msgid "Processing" #~ msgstr "Procesando" #~ msgid "Save location not set" #~ msgstr "No se estableció la ubicación de guardado" #~ msgid "Recording cannot start" #~ msgstr "No se puede iniciar la grabación" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "" #~ "Es posible que la ubicación de guardado seleccionada haya sido eliminada." #~ msgid "The recording has been saved in" #~ msgstr "La grabación se ha guardado en" #~ msgid "Record computer sounds" #~ msgstr "Grabar audio del dispositivo" #~ msgid "Record from microphone" #~ msgstr "Grabar audio del micrófono" #~ msgid "Show pointer" #~ msgstr "Mostrar puntero" #~ msgid "Elegantly record your screen " #~ msgstr "Graba tu pantalla elegantemente. " #~ msgid "Simple screen recorder" #~ msgstr "Grabador de pantalla simple" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha es un simple grabador de pantalla hecho con GTK. Permite grabar la " #~ "pantalla y también grabar audio del micrófono o dispositivo." Kooha-2.3.0/po/et.po000066400000000000000000000300501457702140700141500ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Henri , 2022. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2022-08-21 11:17+0000\n" "Last-Translator: Henri \n" "Language-Team: Estonian \n" "Language: et\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 4.14-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Elegantselt salvesta ekraani" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;ekraanisalvestus;salvestaja;ekraan;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Salvesta ekraani lihtsalt ja intuitiivselt ilma segajateta." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha on lihtne minimalistlik ekraanisalvestaja. Pole vaja seadistada, " "lihtsalt vajutad salvesta nupule." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Kooha põhifunktsioonid:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Tühista" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Üldine" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Ava valikud" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Näita kiirklahve" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Lahku" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Salvestamine" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Sätted" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Valikud" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Salvesta" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Peata" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Salvestus algab…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Kiirklahvid" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Teave" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Henri " #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Pole" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Vali salvestusasukoha kaust" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Peatatud" #: src/window/mod.rs:522 msgid "Normal" msgstr "" #: src/window/mod.rs:523 msgid "Selection" msgstr "" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Salvesta ekraani ilma vaevata." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Lindista mikrofonist, arvutist või mõlemad samal ajal." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM, MP4, GIF ja MKV tugi." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Vali mitmetest allikatest." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Valikuline riistvara kiirendatud kodeerimine" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Vali monitor või aken, mida salvestada." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Vali ala, mida salvestada ekraanilt." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Seadista viivitus, enne kui hakkad salvestama." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Peida või näita kursorit." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Vali salvestuse salvestamisasukoht." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Kasuta kasulikke kiirklahve." #~ msgid "_Delay" #~ msgstr "_Viivitus" #~ msgid "5 seconds" #~ msgstr "5 sekundit" #~ msgid "10 seconds" #~ msgstr "10 sekundit" #~ msgid "_Video Format" #~ msgstr "_Video formaat" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Salvesta asukohta…" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Tühista viivitus" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Autoriõigus 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Salvestus lindistatud!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Salvestati \"{}\" kausta" #~ msgid "Open File" #~ msgstr "Ava fail" #~ msgid "Screencast Portal Request Error" #~ msgstr "Salvestuse portaali viga" Kooha-2.3.0/po/eu.po000066400000000000000000000542271457702140700141650ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Sergio Varela , 2021, 2022. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2022-10-26 20:07+0000\n" "Last-Translator: Sergio Varela \n" "Language-Team: Basque \n" "Language: eu\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 4.14.2-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Grabatu zure pantaila dotoretasunez" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Grabatzailea;Pantaila;Bideoa;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Grabatu zure pantaila modu intuitiboan eta zuzenean distrakziorik gabe." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha interfaze minimalista duen pantaila-grabagailu sinple bat da. Nahikoa " "da grabatzeko botoian klik egitea, doikuntza pila bat konfiguratu behar izan " "gabe." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Kooharen ezaugarri nagusiak hauek dira:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Grabatu mikrofonoa, mahaigaineko audioa edo biak batera" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Bateragarritasuna WebM, MP4, GIF eta Matroska formatuekin" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Gordetzearen konfiguragarrien kokapena, punteroaren ikuspena, fotogramen " "tasa eta atzerapenak" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Hardware bidezko kodetze esperimental azeleratua" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Aukeratu arloa" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Ezeztatu" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Eginda" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Berrabiarazi hautaketa" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Orokorra" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Atzerapena (segundoak)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Grabazioen karpeta" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Bideoa" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formatua" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Fotogramen tasa" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Ireki menua" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Erakutsi ezarpenak" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Erakutsi sarbide zuzenak" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Utzi" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Grabatzen" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Txandakatu grabazioa" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Txandakatu etenaldia" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Bertan behera utzi grabazioa" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Doikuntzak" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Mahaigaineko audioa aldatu" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Mikrofonoa txandakatu" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Txandakatu punteroa" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menu nagusia" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Monitore bat edo leiho bat harrapatu" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Pantaila-aukera bat atzeman" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Mahaigaineko audioa aktibatu" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Desaktibatu mahaigaineko audioa" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Aktibatu mikrofonoa" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Desaktibatu mikrofonoa" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Erakutsi punteroa" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Ezkutatu sagua" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Hasi grabatzen" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Grabatu" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Aurretik hautatutako bideo-iturriak ahaztu" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Gelditu grabazioa" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Gelditu" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Gelditu grabazioa" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Grabatzen…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Bertan behera utzi grabazioa" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Purgatzen…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Ezarpenak" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Teklatu-lasterbideak" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Koohari buruz" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Sergio Varela" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Itzuli" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Pantailaren grabazioa amaituta" #: src/application.rs:144 msgid "Show in Files" msgstr "Artxiboetan erakutsi" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Ziurtatu PulseAudio instalatuta duzula zure sisteman." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Formatu hau esperimentala da eta ezin da jasan." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Bat ere ez" #: src/recording.rs:42 msgid "No active profile" msgstr "Ez dago profil aktiborik" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Ezin izan da grabazioa hasi" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Baliteke GStreamer plugin bat instalatuta ez egotea." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Ziurtatu gordelekua existitzen dela eta irisgarria dela." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Errorea gertatu da grabatzean" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Aukeratu grabazioen karpeta" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Akatsa etenaldia kommutatzean" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopiatu paper-zorroan" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Paper-zorroan kopiatuta" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Errore zehatza erakutsi" #: src/window/mod.rs:286 msgid "Help" msgstr "Laguntza" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Ezarpenak ireki?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Baliteke aurretik hautatutako formatua eskuragarri ez egotea. Ireki " "ezarpenak eta aukeratu formatu bat grabatzen jarraitzeko." #: src/window/mod.rs:305 msgid "Later" msgstr "Geroago" #: src/window/mod.rs:307 msgid "Open" msgstr "Ireki" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pausatua" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normala" #: src/window/mod.rs:523 msgid "Selection" msgstr "Selekzio-eremua" #~ msgid "Failed to start device monitor" #~ msgstr "Ezin izan da sistemaren monitorea hasi" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Akatsa PulseAudio deabruarekiko konexioan" #~ msgid "No microphone source found" #~ msgstr "Mikrofonoaren iturria ez da aurkitu" #~ msgid "No desktop speaker source found" #~ msgstr "Ez da mahaigaineko bozgorailu-iturririk aurkitu" #~ msgid "Ok" #~ msgstr "Ados" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Fotogramen tasa horrek errendimendu-arazoak eragin ditzake." #~ msgid "approx." #~ msgstr "gutxi gorabehera" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Aukeratu monitore bat, leiho bat edo pantailaren zati bat grabatzeko" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Hainbat iturri hautatu" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Egin klik hemen bideoa ikusteko." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Ezin izan da artxiboa ireki idazteko" #~ msgid "Donate (Liberapay)" #~ msgstr "Dohaintza (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Dohaintza (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Kontsultatu {} laguntza lortzeko." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Errorea idazteko \"{}\" irekitzean" #~ msgid "_Cancel" #~ msgstr "_Ezeztatu" #~ msgid "_Select" #~ msgstr "_Aukeratu" #~ msgid "No folder selected" #~ msgstr "Ez da karpetarik hautatu" #~ msgid "Please choose a folder and try again." #~ msgstr "Mesedez, aukeratu karpeta bat eta saiatu berriro." #~ msgid "Cannot access “{}”" #~ msgstr "Ezin da “{}”-ra sartu" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Mesedez, aukeratu leku irisgarri bat eta saiatu berriro." #~ msgid "Enable Desktop Sounds" #~ msgstr "Mahaigaineko soinuak aktibatu" #~ msgid "Disable Desktop Sounds" #~ msgstr "Mahaigaineko soinuak desaktibatu" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Kapturatu pantaila arazorik gabe." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Grabatu zure mikrofonoa, ordenagailuko soinuak edo biak batera." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM, MP4, GIF eta MKV formatuetarako euskarria." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Hainbat iturrien hautaketa." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Hardware bidezko kodetze azeleratua, aukerakoa" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Grabatzeko monitore edo leiho bat hautatu." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Jarri aukera bat zure pantailako eremu jakin bat hartzeko." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Grabatzen hasi aurretik prestatzeko atzerapena ezarri." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Saguaren erakuslea ezkutatu edo erakutsi." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Aukeratu grabazioa gordetzeko kokaleku bat." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Teklatu-lasterbideak erabili." #~ msgid "Toggle Computer Sounds" #~ msgstr "Ordenagailuko soinuak txandakatu" #~ msgid "_Delay" #~ msgstr "_Atzerapena" #~ msgid "3 seconds" #~ msgstr "3 segundo" #~ msgid "5 seconds" #~ msgstr "5 segundo" #~ msgid "10 seconds" #~ msgstr "10 segundo" #~ msgid "_Video Format" #~ msgstr "_Bideo-formatua" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Gorde hemen…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Baliteke GStreamer-en plugin bat instalatuta ez egotea. Instalatuta " #~ "badago baina behar bezala funtzionatzen ez badu, jakinarazi, mesedez, Kooha intzidentzia-" #~ "orrian." #~ msgid "Record Computer Sounds" #~ msgstr "Ordenagailu-soinuak grabatu" #~ msgid "Record From Microphone" #~ msgstr "Mikrofonotik grabatu" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Atzerapena bertan behera utzi" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright © 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Pantaila grabatua atzematea!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Grabazioa “{}” -n gorde da" #~ msgid "Open File" #~ msgstr "Ireki artxiboa" #~ msgid "Screencast Portal Request Error" #~ msgstr "Errorea screencast atariko eskaeran" #~ msgid "Pipeline Build Error" #~ msgstr "Errorea pipelina eraikitzean" #~ msgid "Recording Error" #~ msgstr "Grabazio-errorea" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Egiaztatu exekuzio-denbora eta orrialdea ez dabil ." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Ziurtatu gordelekua badagoela edo irisgarria dela. Eskuragarri badago edo " #~ "zerbait gaizki joan bada, mesedez, jakinarazi hemen: Kooharen gorabeheren orrialdea." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Ziurtatu gordetzearen kokalekua existitzen dela. Benetan existitzen bada, " #~ "zerbait gaizki joan da eta, mesedez, jakinarazi helbide honetara: Kooha intzidentzien " #~ "orria." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Baliteke GStreamer-en plugin bat instalatuta ez egotea. Hala ez bada, " #~ "jakinarazi, mesedez, " #~ "Kooha problemen orria ." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Ziurtatu gordetzearen kokalekua existitzen dela. Hala ez bada, zerbait " #~ "gaizki joan da, eta, mesedez, jakinarazi honi: Kooharen arazoen orria." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Hartu pantaila zuzenean eta alperrik, distrakziorik gabe." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Egiaztatu exekuzio-gelak eta \"ez dabil\" orrialdea Kooharen readme " #~ "orrian. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Baliteke GStreamer-en plugina instalatuta ez egotea. Hala ez bada, " #~ "jakinarazi, mesedez, Kooharen arazoen orrialdean. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Akatsa screencast atariaren eskaeran" #~ msgid "Recording Failed" #~ msgstr "Grabazioak huts egin du" #~ msgid "Pipeline Build Failed" #~ msgstr "Oliobidearen eraikuntzak porrot egin du" #~ msgid "Please choose an accessible location and retry." #~ msgstr "Mesedez, aukeratu leku irisgarri bat eta saiatu berriro." #~ msgid "Select a Folder" #~ msgstr "Aukeratu karpeta bat" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Aukeratu zure pantailako eremu bat, grabatzeko." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Matroska eta WebM formatu libreetarako euskarria." #~ msgid "Open menu" #~ msgstr "Ireki menua" #~ msgid "Show keyboard shortcuts" #~ msgstr "Erakutsi teklatu-lasterbideak" #~ msgid "Toggle record" #~ msgstr "Txandakatu grabazioa" #~ msgid "Toggle record pause" #~ msgstr "Aktibatu grabazio-etenaldia" #~ msgid "Cancel delay" #~ msgstr "Atzerapena bertan behera utzi" #~ msgid "Toggle computer sounds" #~ msgstr "Ordenagailuko soinuak txandakatu" #~ msgid "Toggle microphone" #~ msgstr "Mikrofonoa txandakatu" #~ msgid "Toggle pointer" #~ msgstr "Punteroa aktibatu edo desaktibatu" #~ msgid "Delay" #~ msgstr "Atzerapena" #~ msgid "Video Format" #~ msgstr "Bideo formatua" #~ msgid "Save to…" #~ msgstr "Gorde hemen…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Teklatu-lasterbideak" #~ msgid "About Kooha" #~ msgstr "Koohari buruz" #~ msgid "Sorry! An error has occured." #~ msgstr "Barkatu! Errore bat gertatu da." #~ msgid "Videos" #~ msgstr "Bideoak" #~ msgid "Failed to create session." #~ msgstr "Saioa sortzean huts egin da." #~ msgid "Failed to select sources." #~ msgstr "Akatsak iturriak hautatzean." #~ msgid "Select" #~ msgstr "Hautatu" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Kokapen irisgaitza: “{directory}”" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "Grabazioa hemen gorde da: {saving_location}" #~ msgid "Toggle capture mode" #~ msgstr "Txandakatu kapturatzeko modua" #~ msgid "Full Screen" #~ msgstr "Pantaila osoa" #~ msgid "Processing" #~ msgstr "Prozesatzen" #~ msgid "Save location not set" #~ msgstr "Ez da konfiguratu gordetzearen kokapena" #~ msgid "Recording cannot start" #~ msgstr "Ezin da grabatzen hasi" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Baliteke aukeratutako gordetze-kokapena ezabatu izana." #~ msgid "The recording has been saved in" #~ msgstr "Grabazioa hemen gorde da" Kooha-2.3.0/po/fa.po000066400000000000000000000472271457702140700141440ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # سهیل خانعلی‌پور , 2021. # Soheil Khanalipur , 2021. # عبدالرئوف عابدی , 2021. # MSKF , 2021, 2022. # MohammadSaleh Kamyab , 2022. # MohammadSaleh Kamyab , 2023. # qqqq1 , 2023. # Sadjad Abedi , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Persian \n" "Language: fa\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "کوها" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "صفحه‌نمایش خود را با ظرافت ضبط کنید" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "اسکرین‌کست;ضبط;صفحه‌نمایش;ویدیو;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "صفحه‌نمایش خود را به صورت شهودی و سرراست و بدون حواس‌پرتی ضبط کنید." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "کوها یک ضبط کنندهٔ صفحه‌نمایش با رابطی کمینه‌گراست. فقط لازم است روی دکمهٔ ضبط " "کلیک کنید؛ بدون نیاز به پیکربندی هیچ تنظیماتی." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "قابلیت‌های اصلی کوها عبارتند از:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ ضبط میکروفن، صدای سیستم، یا هر دو در یک زمان" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 پشتیبانی از قالب‌های WebM، ‏MP4، ‏GIF و Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "🛠️ قابلیت پیکربندی مکان ذخیره، پدیداری اشاره‌گر، نرخ قاب، و تأخیر" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 کدبندی شتاب‌یافتهٔ سخت‌افزاری آزمایشی" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "انتخاب ناحیه" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "لغو" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "انجام شد" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "بازنشانی انتخاب" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "اصلی" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "تأخیر (ثانیه)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "پوشهٔ ضبط‌ها" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "ویدیو" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "قالب" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "نرخ فریم" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "باز کردن منو" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "نمایش تنظیمات" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "نمایش میان‌برها" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "خروج" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "در حال ضبط" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "تغییر حالت ضبط" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "تغییر حالت مکث" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "لغو ضبط" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "تنظیمات" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "تغییر حالت صدای میزکار" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "تغییر حالت میکروفن" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "تغییر حالت ماوس" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "منوی اصلی" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "ضبط یک نمایشگر یا پنجره" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "ضبط یک ناحیه از صفحه‌نمایش" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "فعال بودن صدای سیستم" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "غیرفعال کردن صدای سیستم" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "فعال کردن میکروفن" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "غیرفعال کردن میکروفن" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "نمایش ماوس" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "مخفی بودن ماوس" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "شروع ضبط" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "ضبط" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "فراموشی منابع ویدیوی قبلا انتخاب شده" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "توقف ضبط" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "توقف" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "مکث ضبط" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "ضبط در…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "لغو ضبط کردن" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "تراز کردن…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_ تنظیمات" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_ میان‌برهای کیبورد" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_دربارهٔ کوها" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "محمدصالح کامیاب" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "گیت‌هاب" #: src/about.rs:48 msgid "Translate" msgstr "ترجمه" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "صفحه ضبط شد" #: src/application.rs:144 msgid "Show in Files" msgstr "نمایش در فایل‌ها" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "مطمئن شوید PulseAudio روی سیستم شما نصب شده است." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "این فرمت آزمایشی است و پشتیبانی نمیشود." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "هیچ‌کدام" #: src/recording.rs:42 msgid "No active profile" msgstr "بدون نمایهٔ فعال" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "شروع ضبط ناموفق بود" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "احتمالا افزونه GStreamer نصب نشده است." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "مطمئن شوید مکان ذخیره وجود دارد و دستری‌پذیر است." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "هنگام ضبط خطایی رخ داد" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "انتخاب پوشهٔ ضبط" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "خطا در تغییر حالت مکث" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "کپی به کلیپ‌بورد" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "در حافظه کپی شد" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "نمایش خطای باجزئیات" #: src/window/mod.rs:286 msgid "Help" msgstr "راهنما" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "اوکی، بریم سراغش" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "بازکردن تنظیمات؟" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "قالب قبلاً گزیده شده شاید موجود نباشد. برای ادامه، ترجیحات را باز کنید و یک " "قالب برگزینید." #: src/window/mod.rs:305 msgid "Later" msgstr "بعدا" #: src/window/mod.rs:307 msgid "Open" msgstr "بازکردن" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "مکث شده" #: src/window/mod.rs:522 msgid "Normal" msgstr "معمولی" #: src/window/mod.rs:523 msgid "Selection" msgstr "انتخاب" #~ msgid "Failed to start device monitor" #~ msgstr "شروع ضبط مانیتور ناموفق بود" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "اتصال به PulseAudio ناموفق بود" #~ msgid "No microphone source found" #~ msgstr "هیچ میکروفنی پیدا نشد" #~ msgid "No desktop speaker source found" #~ msgstr "هیچ منبع بلندگوی میزکاری پیدا نشد" #~ msgid "Ok" #~ msgstr "تایید" #~ msgid "This frame rate may cause performance issues." #~ msgstr "این نرخ فریم ممکن است باعث مشکل پردازش شود." #~ msgid "approx." #~ msgstr "تقریباً." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ گزینش یک نمایشگر، پنجره یا بخشی از صفحه‌نمایش برای ضبط" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 گزینش چندین منبع" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "برای دیدن ویدیو اینجا بزنید." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "شکست در گشودن پرونده برای نوشتن" #~ msgid "Donate (Liberapay)" #~ msgstr "حمایت (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "حمایت (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "برای راهنمایی {} را بررسی کنید." #~ msgid "Failed to open “{}” for writing" #~ msgstr "در پوشه «{}» امکان ذخیره وجود ندارد" #~ msgid "_Cancel" #~ msgstr "_لغو" #~ msgid "_Select" #~ msgstr "_ انتخاب" #~ msgid "No folder selected" #~ msgstr "پوشه‌ای انتخاب نشده" #~ msgid "Please choose a folder and try again." #~ msgstr "لطفاً پوشه‌ای انتخاب، و دوباره تلاش کنید." #~ msgid "Cannot access “{}”" #~ msgstr "دسترسی به «{}» ممکن نیست" #~ msgid "Please choose an accessible location and try again." #~ msgstr "لطفاً مکانی دسترسی‌پذیر انتخاب، و دوباره تلاش کنید." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 ضبط صفحه‌نمایش‌تان بدون هیچ عذابی." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ ضبط میکروفون‌تان، صداهای رایانه، یا هر دو در یک زمان." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 پشتیبانی از قالب‌های WebM، ‏MP4، ‏GIF، و MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 گزینش چندین منبع." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 کدبندی شتاب‌یافتهٔ سخت‌افزاری اختیاری" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ گزینش یک صفحه‌نمایش یا پنجره برای ضبط." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ ایجاد یک گزینش برای ضبط ناحیهٔ معیّن از صفحه‌نمایش‌تان." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ تنظیم تأخیر برای آمادگی قبل از شروع ضبط." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ پنهان یا نمایان کردن نشانگر موشی." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 انتخاب یک مکان برای ذخیرهٔ ضبط‌هایتان." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ استفاده از میان‌برهای صفحه‌کلید کارآمد." #~ msgid "Toggle Computer Sounds" #~ msgstr "تغییر حالت دکمهٔ صداهای رایانه" #~ msgid "_Delay" #~ msgstr "_تأخیر" #~ msgid "5 seconds" #~ msgstr "۵ ثانیه" #~ msgid "10 seconds" #~ msgstr "۱۰ ثانیه" #~ msgid "_Video Format" #~ msgstr "_قالب ویدیو" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_ذخیره در…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "شاید افزایهٔ جی‌استریمری نصب نشده باشد. اگر نصب شده ولی همچنان درست کار " #~ "نمی‌کند، لطفاً به صفحهٔ " #~ "اشکالات کوها گزارش کنید." #~ msgid "Record Computer Sounds" #~ msgstr "ضبط صداهای رایانه" #~ msgid "Record From Microphone" #~ msgstr "ضبط از میکروفن" #~ msgid "Dave Patrick" #~ msgstr "دِیو پاتریک" #~ msgid "Cancel Delay" #~ msgstr "لغو تأخیر" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "حق رونوشت ۲۰۲۱ دِیو پاتریک" #~ msgid "Screencast Recorded!" #~ msgstr "ضبط انجام شد!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "ضبط در «{}» ذخیره شده است" #~ msgid "Open File" #~ msgstr "گشودن پرونده" #~ msgid "Screencast Portal Request Error" #~ msgstr "خطای درخواست درگاه ضبط صفحه‌نمایش" #~ msgid "Pipeline Build Error" #~ msgstr "خطای لوله‌کشی" #~ msgid "Recording Error" #~ msgstr "خطای ضبط" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "حتماً وابستگی‌های اجرا و صفحهٔ این کار نمی‌کند را بررسی کنید." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "مطمئن شوید که مکان ذخیره‌سازی وجود دارد یا در دسترس است. اگر وجود دارد یا " #~ "در دسترس است، چیزی اشتباه شده و لطفاً به صفحهٔ اشکالات کوها گزارش کنید." #~ msgid "Full Screen" #~ msgstr "سَرتاسَر" Kooha-2.3.0/po/fi.po000066400000000000000000000466531457702140700141560ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Jiri Grönroos , 2021, 2022, 2023. # Jan Kuparinen , 2021. # Ricky Tigg , 2022. # Jiri Nakola , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Tallenna näyttösi tapahtumat" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;tallennin;nauhoitus;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Kaappaa näyttösi sisältö intuitiivisella ja suoraviivaisella tavalla ilman " "häiriötekijöitä." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha on yksinkertainen sovellus, jonka avulla voit nauhoittaa näytölläsi " "tapahtuvat asiat. Napsauta vain nauhoituspainiketta ja vältä lukuisten " "asetusten kanssa säätäminen." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Koohan keskeisimmät ominaisuudet:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" "🎙️ Tallenna ääntä mikrofonista, työpöydän äänilähteestä tai molemmista " "samanaikaisesti" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Tiedostomuototuki WebM, MP4, GIF ja Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Mukautettava tallennussijainti, osoittimen näkyvyys, kuvanopeus ja viive" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Kokeellinen laitteistokiihdytetty enkoodaus" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Valitse alue" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Peruuta" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Valmis" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Nollaa valinta" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Yleiset" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Viive (sekuntia)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Tallenteet-kansio" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Muoto" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Kuvataajuus" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Avaa valikko" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Näytä asetukset" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Näytä pikanäppäimet" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Lopeta" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Nauhoitetaan" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Nauhoitus päälle/pois" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Keskeytys päälle/pois" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Peru nauhoitus" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Asetukset" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Työpöydän ääni päälle/pois" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Mikrofoni päälle/pois" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Osoitin päälle/pois" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Päävalikko" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Kaappaa näyttö tai ikkuna" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Kaappaa valittu alue näytöltä" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Käytä työpöydän ääntä" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Poista käytöstä työpöydän ääni" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Käytä mikrofonia" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Poista käytöstä mikrofoni" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Näytä osoitin" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Piilota osoitin" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Aloita nauhoitus" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Nauhoita" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Unohda aiemmin valitut videolähteet" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Lopeta nauhoitus" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Pysäytä" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Keskeytä nauhoitus" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Nauhoitus alkaa…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Peru nauhoitus" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Tyhjennetään…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Asetukset" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Tietoja - Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Jiri Grönroos" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Lahjoita (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Käännä" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Näyttötallenne nauhoitettu" #: src/application.rs:144 msgid "Show in Files" msgstr "Näytä tiedostonhallinnassa" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Varmista, että PulseAudio on asennettu järjestelmään." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Tämä muoto on kokeellinen eikä sille tarjota tukea." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Ei mitään" #: src/recording.rs:42 msgid "No active profile" msgstr "Ei aktiivista profiilia" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Nauhoituksen aloitus epäonnistui" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Lue {link} saadaksesi tukea." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "GStreamer-liitännäistä ei välttämättä ole asennettu." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" "Varmista, että tallennuksen sijainti on olemassa ja se on käytettävissä." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Virhe nauhoituksen aikana" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Polun “{path}” avaaminen kirjoitusta varten epäonnistui" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Valitse nauhoitusten kansio" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Keskeytys epäonnistui" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopioi leikepöydälle" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Kopioitu leikepöydälle" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Näytä yksityiskohtainen virhe" #: src/window/mod.rs:286 msgid "Help" msgstr "Ohje" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "Selvä" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Avataanko asetukset?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Aiemmin valittu muoto ei mahdollisesti ole käytettävissä. Avaa asetukset ja " "valitse muoto jatkaaksesi tallennusta." #: src/window/mod.rs:305 msgid "Later" msgstr "Myöhemmin" #: src/window/mod.rs:307 msgid "Open" msgstr "Avaa" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Keskeytetty" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normaali" #: src/window/mod.rs:523 msgid "Selection" msgstr "Valinta" #~ msgid "Failed to start device monitor" #~ msgstr "Laitemonitorin käynnistäminen epäonnistui" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "PulseAudio-taustaosaan yhdistäminen epäonnistui" #~ msgid "No microphone source found" #~ msgstr "Mikrofonilähdettä ei löydy" #~ msgid "No desktop speaker source found" #~ msgstr "Työpöydän kaiutinlähdettä ei löydy" #~ msgid "Ok" #~ msgstr "OK" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Tämä kuvataajuus voi aiheuttaa suorituskykyongelmia." #~ msgid "approx." #~ msgstr "noin." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Valitse tallennettavaksi koko näytön sisältö, ikkuna tai alue näytöltä" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Useiden lähteiden valinta" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Napsauta nähdäksesi videon." #~ msgid "Failed to select saving location" #~ msgstr "Tallennuskohteen valitseminen epäonnistui" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Tiedoston avaus kirjoitusta varten epäonnistui" #~ msgid "Failed to select folder" #~ msgstr "Kansion valitseminen epäonnistui" #~ msgid "Donate (Liberapay)" #~ msgstr "Lahjoita (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Lahjoita (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Katso ohjeita {}." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Ei voitu avata “{}” kirjoitusta varten" #~ msgid "_Cancel" #~ msgstr "_Peru" #~ msgid "_Select" #~ msgstr "_Valitse" #~ msgid "No folder selected" #~ msgstr "Kansiota ei ole valittu" #~ msgid "Please choose a folder and try again." #~ msgstr "Valitse toinen kansio ja yritä uudelleen." #~ msgid "Cannot access “{}”" #~ msgstr "Ei pääsyä kohteeseen “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "" #~ "Valitse sijainti, johon käyttöoikeudet riittävät, ja yritä uudelleen." #~ msgid "Enable Desktop Sounds" #~ msgstr "Käytä työpöydän ääniä" #~ msgid "Disable Desktop Sounds" #~ msgstr "Poista käytöstä työpöydän äänet" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Nauhoita näyttösi sisältö vaivatta." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Nauhoita tietokoneen äänet, mikrofonin äänet tai molemmat " #~ "samanaikaisesti." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Tuki WebM-, MP4-, GIF- ja MKV-tiedostomuodoille." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Usein lähteiden valinta." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Valinnainen laitteistokiihdytys videon koodausta varten" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Valitse näyttö tai ikkuna nauhoitettavaksi." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Valitse haluamasi alue näytöltä nauhoitettavaksi." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Aseta viive ennen nauhoituksen alkua." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Piilota tai näytä hiiren osoitin." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Valitse tallennussijainti nauhoitukselle." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Hyödynnä käteviä pikanäppäimiä." #~ msgid "Toggle Computer Sounds" #~ msgstr "Tietokoneen äänet päälle/pois" #~ msgid "_Delay" #~ msgstr "_Viive" #~ msgid "3 seconds" #~ msgstr "3 sekuntia" #~ msgid "5 seconds" #~ msgstr "5 sekuntia" #~ msgid "10 seconds" #~ msgstr "10 sekuntia" #~ msgid "_Video Format" #~ msgstr "_Videon muoto" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Tallenna nimellä…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer-lisäosaa ei ehkä ole asennettu. Jos se on asennettu, mutta ei " #~ "vieläkään toimi kunnolla, ilmoita siitä Koohan vikailmoitusjärjestelmään." #~ msgid "Record Computer Sounds" #~ msgstr "Nauhoita tietokoneen äänet" #~ msgid "Record From Microphone" #~ msgstr "Nauhoita mikrofonista" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Perumisen viive" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Tekijänoikeus 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Näyttötallenne nauhoitettu!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Nauhoitus on tallennettu kohteeseen “{}”" #~ msgid "Open File" #~ msgstr "Avaa tiedosto" #~ msgid "Screencast Portal Request Error" #~ msgstr "Näyttötallenneportaalin pyyntövirhe" #~ msgid "Pipeline Build Error" #~ msgstr "Liukuhihnan käännösvirhe" #~ msgid "Recording Error" #~ msgstr "Nauhoitusvirhe" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Varmista, että tarkistat ajonaikaiset riippuvuudet ja Se ei toimi -sivun." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Varmista, että tallennuspaikka on olemassa tai että se on käytettävissä. " #~ "Jos se todella on olemassa tai on käytettävissä, jokin meni pieleen. " #~ "Ilmoita Koohan " #~ "ongelmasivulle." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Varmista, että tallennuspaikka on olemassa. Jos se todella on olemassa, " #~ "jotain meni pieleen. Ilmoita siitä Koohan vikailmoitusjärjestelmään." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer-liitännäistä ei välttämättä ole asennettu. Jos ei, ilmoita " #~ "ongelmasta Koohan " #~ "vikailmoitusjärjestelmään." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Kaappaa näyttösi tapahtumat suoraviivaisella ja tuskattomalla tavalla " #~ "ilman häiriötekijöitä." #~ msgid "Recording Failed" #~ msgstr "Nauhoitus epäonnistui" Kooha-2.3.0/po/fil.po000066400000000000000000000521161457702140700143210ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Dave Patrick , 2021, 2022. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2022-08-23 12:15+0000\n" "Last-Translator: Dave Patrick \n" "Language-Team: Filipino \n" "Language: fil\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==2 || n==3 || (n%10!=4 && n%10!" "=6 && n%10!=9));\n" "X-Generator: Weblate 4.14-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Eleganteng i-record ang iyong screen" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;Pangrekord;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "I-rekord ang iyong screen nang walang paggambala." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Ang Kooha ay isang simpleng pangrekord ng screen na may minimalist na " "interface. Pindutin lamang ang record button nang hindi gumagalaw ng mga " "settings." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Ang mga pangunahing tampok ng Kooha ay ang mga sumusunod:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Ikansela" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Pangkalahatan" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Buksan ang Menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Ipakita ang mga Shortcuts" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Isara" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Nagrerekord" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "I-toggle ang Record" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "I-toggle ang Pause" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Kanselahin ang Pagrekord" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Mga Opsyon" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "I-toggle ang Mikropono" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "I-toggle ang Pointer" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Pangunahing Menu" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Mag-capture ng Monitor o Window" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Magcapture ng Seleksyon ng Screen" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "I-enable ang Mikropono" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "I-disable ang Mikropono" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Ipakita ang Pointer" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Itago ang Pointer" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Mag-start Magrekord" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Magrekord" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Kalimutan ang Sinelektang Source ng Video" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Ihinto ang Pagrekord" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Huminto" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "I-pause Pagrekord" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Magrerekord sa…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Ikansela ang Pagrekord" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Nagflu-flush…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Mga Shortcut sa Keyboard" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Tungkol sa Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Dave Patrick" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Mag-translate" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Tapos na magrekord" #: src/application.rs:144 msgid "Show in Files" msgstr "Ipakita sa Files" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Siguraduhin na may PulseAudio sa iyong kompyuter." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Wala" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Hindi masimulan ang pagrekord" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Siguraduhin na ang paglalagyan ng rekording ay naa-access." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Nagkaroon ng problema habang nagrerekord" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Pumili ng Paglalagyan ng mga Recordings" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Hindi ma-toggle ang pag-pause" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "I-copy sa clipboard" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Na-copy na sa clipboard" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Ipakita ang detalyadong error" #: src/window/mod.rs:286 msgid "Help" msgstr "Tulong" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Naka-pause" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Seleksyon" #~ msgid "Failed to start device monitor" #~ msgstr "Hindi masimulan ang device monitor" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Hindi maka-connect sa PulseAudio daemon" #~ msgid "No microphone source found" #~ msgstr "Walang makitang mikropono" #~ msgid "No desktop speaker source found" #~ msgstr "Walang mapagkunan ng tunog mula sa desktop" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Pindutin ito upang makita ang video." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Failed to open file for writing" #~ msgstr "Hindi mai-open ang file" #~ msgid "Donate (Liberapay)" #~ msgstr "Mag-donate (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Mag-donate (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Tignan ang {} para sa tulong." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Hindi mai-open ang “{}”" #~ msgid "_Cancel" #~ msgstr "_Ikansela" #~ msgid "_Select" #~ msgstr "_Piliin" #~ msgid "No folder selected" #~ msgstr "Walang piniling folder" #~ msgid "Please choose a folder and try again." #~ msgstr "Pumili ng folder at uliting muli." #~ msgid "Cannot access “{}”" #~ msgstr "Hindi ma-access ang “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Pumili ng kayang i-access na lokasyon at ulitin." #~ msgid "Enable Desktop Sounds" #~ msgstr "I-enable ang Tunog Mula Sa Desktop" #~ msgid "Disable Desktop Sounds" #~ msgstr "I-disable ang Tunog Mula Sa Desktop" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 I-record ang iyong screen nang walang sagabal." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ I-rekord ang iyong mikropono, tunog ng kompyuter, o kaya naman pareho." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Mayroong support para sa mga format na WebM, MP4, GIF at MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Maraiming selection ng mga source." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Puwedeng buksan ang hardware accelerated na pag-encode" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Pumili ng monitor o window na maaaring i-record." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Maaaring gumawa ng selection upang maka-capture ng area sa iyong screen." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Maglagay ng delay bago magsumali ang pag-record." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Ipakita o itago ang pointer." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Pumili ng paglalagyan ng mga recording." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Gamitin ang mga malaking-tulong na mga keyboard shortcuts." #~ msgid "Toggle Computer Sounds" #~ msgstr "I-toggle ang Tunog Mula sa Ispiker" #~ msgid "_Delay" #~ msgstr "_Antala" #~ msgid "3 seconds" #~ msgstr "3 segundo" #~ msgid "5 seconds" #~ msgstr "5 segundo" #~ msgid "10 seconds" #~ msgstr "10 segundo" #~ msgid "_Video Format" #~ msgstr "_Pormat ng Video" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_I-save sa…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Maaaring may GStreamer plugin na hindi naka-install. Kung nakainstall " #~ "naman, paki-report sa issue page." #~ msgid "Record Computer Sounds" #~ msgstr "Irekord ang Tunog Sa Kompyuter" #~ msgid "Record From Microphone" #~ msgstr "Irekord ang Tunog ng Mikropono" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Ikansela ang Antala" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Kopirayt 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Ang rekording ay natapos na!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Ang recording ay naka-save sa “{}”" #~ msgid "Open File" #~ msgstr "Buksan ang File" #~ msgid "Screencast Portal Request Error" #~ msgstr "Error sa Pag-request ng Screencast Portal" #~ msgid "Pipeline Build Error" #~ msgstr "Error sa Pagbuo ng Pipeline" #~ msgid "Recording Error" #~ msgstr "Error sa Pag-record" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Paki-check kung kumpleto ang iyong mga runtime depencies at paki-check " #~ "rin ang It " #~ "Doesn't Work na pahina." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Maaaring may GStreamer plugin na hindi naka-install. Kung hindi naman, " #~ "paki-report sa issue " #~ "page ng Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Paki-check kung nag-eexist ang iyong saving location. Kung hindi, " #~ "nagkaroon ng error at paki-report sa issue page ng Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "I-record ang iyong screen sa madaling paraan nang walang mga distraksyon." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Paki-check ang iyong mga runtime dependencies at ang \"It Doesn't Work\" " #~ "na pahina sa readme page ng Kooha. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Maaaring may GStreamer plugin na hindi naka-install. Kung hindi, paki-" #~ "report sa issue page ng Kooha. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Screencast Portal Request Nag-fail" #~ msgid "Recording Failed" #~ msgstr "Ang Pag-record ay Nag-fail" #~ msgid "Pipeline Build Failed" #~ msgstr "Nag-fail ang Pagbuo ng Pipeline" #~ msgid "Sorry! An error has occurred." #~ msgstr "Paumanhin! Nagkaroon ng error." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Pumili ng kayang i-access na lokasyon at ulitin." #~ msgid "The recording has been saved in {}" #~ msgstr "Ang recording ay nakasave sa {}" #~ msgid "Select a Folder" #~ msgstr "Pumili ng folder" #~ msgid "Inaccessible location '{}'" #~ msgstr "Hindi maaccess ang lokasyon na '{}'" #~ msgid "Toggle Record Pause" #~ msgstr "I-toggle ang Record Pause" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Mag-select ng area ng iyong screen upang i-record." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Suporta para sa mga libreng Matroska at WebM na mga format." #~ msgid "Open menu" #~ msgstr "Buksan ang menu" #~ msgid "Show keyboard shortcuts" #~ msgstr "Ipakita ang mga keyboard shortcut" #~ msgid "Toggle record" #~ msgstr "I-toggle ang pagrekord" #~ msgid "Toggle record pause" #~ msgstr "I-toggle ang pause" #~ msgid "Cancel delay" #~ msgstr "Ikansela ang antala" #~ msgid "Toggle computer sounds" #~ msgstr "I-toggle ang tunog sa ispiker" #~ msgid "Toggle microphone" #~ msgstr "I-toggle ang tunog sa mikropono" #~ msgid "Toggle pointer" #~ msgstr "I-toggle ang pointer" #~ msgid "Delay" #~ msgstr "Antala" #~ msgid "Video Format" #~ msgstr "Pormat ng video" #~ msgid "Save to…" #~ msgstr "I-save sa…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Mga keyboard shortcut" #~ msgid "About Kooha" #~ msgstr "Tungkol sa Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "Sorry! Nagkaroon ng error." #~ msgid "Videos" #~ msgstr "Mga Video" #~ msgid "Failed to create session." #~ msgstr "Nabigong gumawa ng sesyon." #~ msgid "Failed to select sources." #~ msgstr "Nabigong sumelekta ng mga source." #~ msgid "Select" #~ msgstr "Piliin" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Hindi maacess ang “{directory}”" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "Ang narekord ay naka-save sa {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Hindi ma-access ang '{directory}'" #~ msgid "Toggle capture mode" #~ msgstr "I-toggle ang paraan ng pagrekord" #~ msgid "Full Screen" #~ msgstr "Buong screen" #~ msgid "Processing" #~ msgstr "Nagproproseso" #~ msgid "Save location not set" #~ msgstr "Hindi na-set ang lokasyon" #~ msgid "Recording cannot start" #~ msgstr "Hindi maaaring magstart ang pagrekord" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Ang lokasyon ng paglalagyan ay maaaring nabura na." #~ msgid "The recording has been saved in" #~ msgstr "Ang rekording ay nasave sa" #~ msgid "Record computer sounds" #~ msgstr "Irekord ang tunog sa kompyuter" #~ msgid "Record from microphone" #~ msgstr "Irekord ang tunog ng mikropono" #~ msgid "Show pointer" #~ msgstr "Ipakita ang pointer" #~ msgid "Elegantly record your screen " #~ msgstr "Eleganteng I-record ang iyong screen " #~ msgid "🎥 Capture your screen without any hustle." #~ msgstr "🎥 I-rekord ang iyong screen sa madaling paraan." #~ msgid "Simple screen recorder" #~ msgstr "Simpleng pangrekord ng screen" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Ang Kooha ay isang simpleng pangrekord ng screen na binuo gamit ang GTK. " #~ "Maaari kang magrekord ng iyong screen at pati na rin ang tunog mula sa " #~ "mikropono o ispiker." Kooha-2.3.0/po/fr_FR.po000066400000000000000000000561131457702140700145460ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # J. Lavoie , 2021. # Thomas Citharel , 2021. # Rémi de Chazelles , 2021. # Maxime Leroy , 2021, 2022. # Magik Leo , 2022. # matb , 2022. # rene-coty , 2022, 2023. # "Mathieu B." , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: French \n" "Language: fr_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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Enregistrez élégamment votre écran" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Capture d’écran;Enregistrement;Écran;Vidéo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Capturez votre écran de manière intuitive et simple sans distractions." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha est un enregistreur d’écran simple avec une interface minimaliste. " "Vous n’avez qu’à cliquer sur le bouton d’enregistrement, sans avoir à " "configurer un tas de paramètres." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Les principales caractéristiques de Kooha sont les suivantes :" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" "🎙️ Enregistrez votre micro, l’audio de votre ordinateur ou les deux en même " "temps" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Prise en charge des formats WebM, MP4, GIF, et Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Configurez l’emplacement de sauvegarde, la visibilité du pointeur, la " "fréquence d’images et le délai" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Encodage expérimental avec accélération matérielle" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Sélectionnez une zone" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Annuler" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Fait" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Réinitialiser la sélection" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Général" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Délai (en secondes)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Dossier des enregistrements" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Vidéo" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Fréquence d’images" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Ouvrir le menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Afficher les préférences" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Afficher les raccourcis" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Quitter" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Enregistrement" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Activer / Désactiver l’enregistrement" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Activer / Désactiver la pause" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Annuler l’enregistrement" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Réglages" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Activer / Couper l’audio de l’ordinateur" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Activer / Couper le microphone" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Activer / Désactiver le curseur" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menu principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Capturer un écran ou une fenêtre" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Capturer une sélection de l’écran" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Activer l’audio de l’ordinateur" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Désactiver l’audio de l’ordinateur" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Activer le microphone" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Désactiver le microphone" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Afficher le curseur" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Masquer le pointeur" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Commencer l’enregistrement" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Enregistrer" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Oublier les sources vidéo précédemment sélectionnées" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Arrêter l’enregistrement" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Arrêter" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Mettre l’enregistrement en pause" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Enregistrer dans…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Annuler l’enregistrement" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Vidage…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Préférences" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Raccourcis clavier" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "À _propos de Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "J. Lavoie, M. Bousquet, Irénée Thirion" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Faire un don (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Traduire" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Écran enregistré" #: src/application.rs:144 msgid "Show in Files" msgstr "Montrer dans Fichiers" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Assurez-vous que PulseAudio est installé sur votre système." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Ce format est expérimental et n’est pas pris en charge." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Aucun" #: src/recording.rs:42 msgid "No active profile" msgstr "Aucun profil actif" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Échec du démarrage de l’enregistrement" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Visitez {link} pour obtenir de l’aide." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Un greffon GStreamer n’est peut-être pas installé." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" "Assurez-vous que l’emplacement d’enregistrement existe et est accessible." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Une erreur s’est produite pendant l’enregistrement" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Échec de l’ouverture de « {path} » pour écrire" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Sélectionner le dossier des enregistrements" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Échec du basculement en pause" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Copier dans le presse-papiers" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Copié dans le presse-papiers" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Afficher l’erreur détaillée" #: src/window/mod.rs:286 msgid "Help" msgstr "Aide" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "D’accord" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Ouvrir les préférences ?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Le format sélectionné précédemment est peut-être indisponible. Ouvrez les " "préférences et sélectionnez un format pour continuer à enregistrer." #: src/window/mod.rs:305 msgid "Later" msgstr "Plus tard" #: src/window/mod.rs:307 msgid "Open" msgstr "Ouvrir" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "En pause" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Sélection" #~ msgid "Failed to start device monitor" #~ msgstr "Échec du démarrage du moniteur de périphérique" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Échec de la connexion au daemon PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Aucune source microphone trouvée" #~ msgid "No desktop speaker source found" #~ msgstr "Aucune source de haut-parleur trouvée" #~ msgid "Ok" #~ msgstr "OK" #~ msgid "This frame rate may cause performance issues." #~ msgstr "" #~ "Cette fréquence d’images peut entraîner des problèmes de performance." #~ msgid "approx." #~ msgstr "approx." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Sélectionnez un écran, une fenêtre, ou une portion de l’écran à " #~ "enregistrer" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Sélection de plusieurs sources" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Cliquez ici pour voir la vidéo." #~ msgid "Failed to select saving location" #~ msgstr "La sélection de l’emplacement de sauvegarde a échoué" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Impossible d’ouvrir le fichier pour l’écriture" #~ msgid "Donate (Liberapay)" #~ msgstr "Faire un don (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Faire un don (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Consultez {} pour de l’aide." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Échec de l’ouverture de « {} » pour l’écriture" #~ msgid "_Cancel" #~ msgstr "_Annuler" #~ msgid "_Select" #~ msgstr "_Sélectionner" #~ msgid "No folder selected" #~ msgstr "Aucun dossier sélectionné" #~ msgid "Please choose a folder and try again." #~ msgstr "Veuillez choisir un dossier et réessayer." #~ msgid "Cannot access “{}”" #~ msgstr "Ne peut accéder à « {} »" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Veuillez choisir une localisation accessible puis réessayez." #~ msgid "Enable Desktop Sounds" #~ msgstr "Activer les sons de bureau" #~ msgid "Disable Desktop Sounds" #~ msgstr "Désactiver les sons de bureau" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Capturez votre écran en toute simplicité." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Enregistrez votre micro, les sons de l'ordinateur ou les deux en même " #~ "temps." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Prise en charge des formats WebM, MP4, GIF et MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Sélection de plusieurs sources." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 L'encodage peut bénéficier de l'accélération matérielle" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "Choisissez un écran ou une fenêtre à enregistrer." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Créer une zone de sélection pour capturer cette partie de l'écran." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "" #~ "⏲️ Définissez le délai de préparation avant de commencer l'enregistrement." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Masquer ou afficher le pointeur de la souris." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "" #~ "💾 Choisissez un emplacement de sauvegarde pour votre enregistrement." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Utilisez des raccourcis clavier utiles." #~ msgid "Toggle Computer Sounds" #~ msgstr "Activer les sons de l'ordinateur" #~ msgid "_Delay" #~ msgstr "_Délai" #~ msgid "3 seconds" #~ msgstr "3 secondes" #~ msgid "5 seconds" #~ msgstr "5 secondes" #~ msgid "10 seconds" #~ msgstr "10 secondes" #~ msgid "_Video Format" #~ msgstr "Format _Vidéo" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Sauvegarder sous…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Le greffon GStreamer peut ne pas être installé. S'il est installé mais " #~ "que ça ne fonctionne toujours pas correctement, merci de le signaler sur " #~ "la page des problèmes " #~ "de Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Enregistrer les sons de l'ordinateur" #~ msgid "Record From Microphone" #~ msgstr "Enregistrer le son du micro" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Annuler le retard" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Droits d'auteur 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Vidéographie enregistrée !" #~ msgid "The recording has been saved in “{}”" #~ msgstr "L'enregistrement à été enregistré dans « {} »" #~ msgid "Open File" #~ msgstr "Ouvrir un fichier" #~ msgid "Screencast Portal Request Error" #~ msgstr "Échec de la requête vers le portail Screencast" #~ msgid "Pipeline Build Error" #~ msgstr "Échec de la construction de la pipeline" #~ msgid "Recording Error" #~ msgstr "Erreur d'enregistrement" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Veuillez vérifier les dépendances d'exécution et la page Ça ne marche " #~ "pas." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Veillez à ce que la localisation enregistrée existe et est accessible. Si " #~ "c'est bien le cas, merci de reporter ce problème sur la page des problèmes de Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Veuillez vérifier que l'emplacement de destination des enregistrements " #~ "existe. Si c'est déjà le cas, une erreur s'est produite, merci de la " #~ "signaler sur la page " #~ "des problèmes de Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Capturez votre écran de manière simple et indolore, sans distractions." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Veuillez choisir un emplacement accessible et réessayer." #~ msgid "Select a Folder" #~ msgstr "Choisir un dossier" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Sélectionnez une zone de votre écran à enregistrer." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Prise en charge des formats gratuits Matroska et WebM." #~ msgid "Open menu" #~ msgstr "Ouvrir le menu" #~ msgid "Show keyboard shortcuts" #~ msgstr "Afficher les raccourcis clavier" #~ msgid "Toggle record" #~ msgstr "Activer l’enregistrement" #~ msgid "Toggle record pause" #~ msgstr "Activer la pause de l’enregistrement" #~ msgid "Cancel delay" #~ msgstr "Annuler le retard" #~ msgid "Toggle computer sounds" #~ msgstr "Activer le son de l’ordinateur" #~ msgid "Toggle microphone" #~ msgstr "Activer le micro" #~ msgid "Toggle pointer" #~ msgstr "Activer le pointeur" #~ msgid "Delay" #~ msgstr "Retarder" #~ msgid "Video Format" #~ msgstr "Format de la vidéo" #~ msgid "Save to…" #~ msgstr "Enregistrer dans…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Raccourcis clavier" #~ msgid "About Kooha" #~ msgstr "A propos" #~ msgid "Sorry! An error has occured." #~ msgstr "Désolé ! Une erreur s’est produite." #~ msgid "Videos" #~ msgstr "Vidéos" #~ msgid "Failed to create session." #~ msgstr "La création d'une session a échoué." #~ msgid "Failed to select sources." #~ msgstr "Échec de la sélection des sources." #~ msgid "Select" #~ msgstr "Choisir" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Emplacement “{directory}” inaccessible" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "L’enregistrement a été sauvegardé dans {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Emplacement inaccessible « {directory} »" #~ msgid "Toggle capture mode" #~ msgstr "Activer le mode capture" #~ msgid "Full Screen" #~ msgstr "Plein écran" #~ msgid "Processing" #~ msgstr "Traitement en cours" #~ msgid "Save location not set" #~ msgstr "L’emplacement de sauvegarde n’est pas défini" #~ msgid "Recording cannot start" #~ msgstr "L’enregistrement n’a pas pu débuter" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "" #~ "L’emplacement d’enregistrement que vous avez sélectionné a peut-être été " #~ "supprimé." #~ msgid "The recording has been saved in" #~ msgstr "L’enregistrement a été enregistré dans" #~ msgid "Record computer sounds" #~ msgstr "Enregistrer les sons de l’ordinateur" #~ msgid "Record from microphone" #~ msgstr "Enregistrer à partir du microphone" #~ msgid "Show pointer" #~ msgstr "Afficher le pointeur" #~ msgid "Elegantly record your screen " #~ msgstr "Enregistrez élégamment votre écran " #~ msgid "Simple screen recorder" #~ msgstr "Un simple enregistreur d’écran" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha est un enregistreur d’écran simple conçu avec GTK. Il vous permet " #~ "d’enregistrer votre écran ainsi que l’audio de votre micro ou de votre " #~ "ordinateur." Kooha-2.3.0/po/gl.po000066400000000000000000000376321457702140700141570ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Fran Diéguez , 2021, 2022. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2022-08-15 02:48+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Galician \n" "Language: gl\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 4.14-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Grave a súa pantalla elegantemente" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Capturar pantalla;Gravador;Pantalla;Vídeo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Capture a súa pantalla de forma intuitiva e directa, sen distraccións." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha é un gravador de pantalla simple con unha interface minimalista. Só " "faga clic no botón gravar sen ter que configurar un centar de axustes." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "As características principais de Kooha inclúen o seguinte:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Cancelar" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Xeral" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Abrir menú" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Mostrar atallos" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Saír" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Gravando" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Activar/Desactivar gravación" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Activar/Desactivar pausa" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Axustes" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Trocar micrófono" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Trocar punteiro" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menú principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Capturar un monitor ou unha xanela" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Capturar unha selección da pantalla" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mostrar punteiro" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Gravar" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Deter" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Gravando en…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Purgando…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Atallos de teclado" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Sobre Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Fran Diéguez <fran.dieguez@gnome.org>, 2021" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Ningún" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Elexir cartafol de gravacións" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "En pausa" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Área" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "_Cancel" #~ msgstr "_Cancelar" #~ msgid "_Select" #~ msgstr "_Seleccionar" #~ msgid "Cannot access “{}”" #~ msgstr "Non se pode acceder a “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Por favor, elixa un lugar accesíbel e ténteo de novo." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Grava a súa pantalla sen ningunha molestia." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Grava o seu micrófono, os sons do sistema, ou ambos ao mesmo tempo." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Compatibilidade para formatos WebM, MP4, GIF, e MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Selección de múltiples fontes." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Codificación acelerada por hardware opcional" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Selecciona un monitor ou xanela para gravar." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Crea unha selección para capturar un área específica da súa pantalla." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Selecciona un atraso antes de empezar a gravar." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Oculta ou mostra o cursor." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Selecciona unha localización para a súa gravación." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Usa os útiles atallos de teclado." #~ msgid "Toggle Computer Sounds" #~ msgstr "Trocar sons do computador" #~ msgid "_Delay" #~ msgstr "_Atraso" #~ msgid "5 seconds" #~ msgstr "5 segundos" #~ msgid "10 seconds" #~ msgstr "10 segundos" #~ msgid "_Video Format" #~ msgstr "_Formato do vídeo" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Gardar en…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "É posíbel que un engadido de GStreamer non esté instalado. Se está " #~ "instalado pero segue sen funcionar correctamente, por favor informe na páxina de incidencias de " #~ "Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Gravar sons do computador" #~ msgid "Record From Microphone" #~ msgstr "Gravar desde o micrófono" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Cancelar retraso" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Captura de pantalla gravada!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "A gravación gardouse en “{}”" #~ msgid "Open File" #~ msgstr "Abrir ficheiro" #~ msgid "Screencast Portal Request Error" #~ msgstr "Produciuse un erro ao solicitar o portal de transmisión de pantalla" #~ msgid "Pipeline Build Error" #~ msgstr "Produciuse un erro ao construír a pipeline" #~ msgid "Recording Error" #~ msgstr "Erro de gravación" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Asegúrese comprobar as dependencias de tempo de execución e a página non " #~ "funciona." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Asegúrese de que a localización de gardado existe ou é accesíbel. Se " #~ "existe ou é accesíbel, algo foi mal e, por favor, informe na páxina de incidencias de " #~ "Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Asegúrese de que a localización de gardado existe. Se realmente existe, " #~ "algo foi mal e por favor informe á páxina de incidencias de Kooha." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "É posíbel que un engadido de GStreamer non esté instalado. Se non é así, " #~ "por favor informe na " #~ "página de problemas de Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Asegúrese que a localización de gardado existe. Se non é así, algo foi " #~ "mal e por favor informe na página de problemas de Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Capture a súa pantalla de forma doada, indolora e sen distracións." Kooha-2.3.0/po/he.po000066400000000000000000000310561457702140700141430ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # kodchofshi , 2021. # Omer I.S. , 2021. # guymii , 2023. # Araxeus , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-01-14 19:48+0000\n" "Last-Translator: Araxeus \n" "Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" "X-Generator: Weblate 4.15.1-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "הקלט את המסך באלגנטיות" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "צילום מסך;הקלטה;מסך;וידאו;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "הקלט את המסך בדרך פשוטה ואינטואיטיבית ללא הסחות דעת." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha הוא מקליט מסך פשוט עם ממשק מינימליסטי. ניתן פשוט ללחוץ על כפתור ההקלטה " "מבלי שצריך להגדיר הגדרות מסובכות." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "היכולות העיקריות של Kooha הן:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ הקלטת קול מהמיקרופון, מהשמע, או משניהם בו זמנית" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 תמיכה בפורמטי הוידאו: WebM, MP4, GIF, ו-Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ ניתן להגדיר את מקום שמירת הקבצים, האם יופיע הסמן בזמן ההקלטה, מספר " "הפריימים לשניה, והשהייה לפני תחילת ההקלטה" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 קידוד באמצעות חומרה (ניסיוני)" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "בחר אזור" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "בטל" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "אשר" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "איפוס בחירה" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "כללי" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "השהייה (בשניות)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "תיקיית ההקלטות" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "וידאו" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "פורמט" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "קצב פריימים" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "פתיחת התפריט" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "הראה העדפות" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "הראה קיצורים" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "יציאה" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "מקליט" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "הפעל הקלטה" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "הפעל השהיה" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "בטל הקלטה" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "הגדרות" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "הפעל את צליל המחשב" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "הפעל את המיקרופון" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "הפעל את הסמן" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "התפריט הראשי" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "תפוס מסך או חלון" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "תפוס אזור מהמסך" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "הפעל שמע מהמחשב" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "בטל שמע מהמחשב" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "הפעל מיקרופון" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "בטל מיקרופון" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "הראה את הסמן" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "הסתר את הסמן" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "הפעל הקלטה" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "הקלט" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "שכח את מקור הוידאו שנבחר בפעם הקודמת" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "הפסק להקליט" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "הפסק" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "השהה הקלטה" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "מקליט בעוד…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "בטל הקלטה" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "מעבד…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_העדפות" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_קיצורי מקלדת" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_אודות Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "עומר א״ש " #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "תרגם" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "הקלטה הסתיימה" #: src/application.rs:144 msgid "Show in Files" msgstr "הראה בקבצים" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "וודאו שPulseAudio מותקן על המחשב שלכם." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "" #: src/window/mod.rs:522 msgid "Normal" msgstr "" #: src/window/mod.rs:523 msgid "Selection" msgstr "" #~ msgid "This frame rate may cause performance issues." #~ msgstr "קצב הפריימים הנ\"ל יכול לגרום לבעיות בביצוע." #~ msgid "approx." #~ msgstr "בקירוב" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ בחר האם להקליט מסך, חלון או חלק מוגדר של המסך" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 בחר מבין מספר מקורות" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "לחץ כאן לצפיה בוידאו." #~ msgid "Donate (Liberapay)" #~ msgstr "לתרומה (Libreapay)" #~ msgid "Donate (PayPal)" #~ msgstr "לתרומה (PayPal)" #~ msgid "Dave Patrick" #~ msgstr "דייב פטריק" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "כל הזכויות שמורות מ־2021 לדייב פטריק (Dave Patrick)" Kooha-2.3.0/po/hi.po000066400000000000000000000411241457702140700141440ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Hemish , 2021, 2022. # Th3 A6add0n , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-07-12 10:51+0000\n" "Last-Translator: Th3 A6add0n \n" "Language-Team: Hindi \n" "Language: hi\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.0-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "कूहा" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "अपनी स्क्रीन को अच्छे ढंग से रिकॉर्ड करें" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;रिकार्ड;स्क्रीन;वीडीयो;वीडीओ;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "बिना विचलित हुए सहज और सीधे तरीके से अपनी स्क्रीन को कैप्चर करें।" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "'कूहा' एक साधारण स्क्रीन रिकॉर्डर है जिसमें न्यूनतम इंटरफ़ेस है। आप सेटिंग्स के एक समूह को " "कॉन्फ़िगर किए बिना रिकॉर्ड बटन पर क्लिक कर सकते हैं।" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "'कूहा' की मुख्य विशेषताओं निम्नलिखित हैं:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "क्षेत्र का चयन करें" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "रद्द" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "हो गया" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "चयन रीसेट करें" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "आम (General)" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "ठहराव (सेकेंडों में)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "रिकॉर्डिंग फ़ोल्डर" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "मेन्यू खोलें" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "सेटिंग्स (वरीयताएँ) दिखाएँ" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "शॉर्टकट दिखाएँ" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "बंद करें" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "रिकार्डिंग" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "रिकार्डिंग को बंद-शुरू करें" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "रिकार्डिंग पाज़-शुरू करें" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "रिकार्डिंग रद्द करें" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "सेटिंग्स" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "माइक्रोफ़ोन को रिकार्ड करने या ना करने को बदलें" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "माऊस पाइंटर को रिकार्ड करने या ना करने को बदलें" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "मुख्य मेन्यू" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "मॉनिटर या विंडो कैप्चर करें" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "स्क्रीन का एक चयन कैप्चर करें" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "माइक्रोफ़ोन से रिकार्ड न करें" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "माउस पॉइंटर दिखाएँ" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "रिकार्ड करें" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "रोकें" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "इतने क्षणों में रिकार्डिंग शुरू…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_वरीयता" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_कीबोर्ड शॉर्टकट्स" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "'कूहा' का परिचय (_A)" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Hemish " #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "गिटहब" #: src/about.rs:48 msgid "Translate" msgstr "अनुवादन" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "यह प्रारूप प्रयोगात्मक और असमर्थित है।" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "" #: src/window/mod.rs:522 msgid "Normal" msgstr "साधारण" #: src/window/mod.rs:523 msgid "Selection" msgstr "चयन" #~ msgid "approx." #~ msgstr "लगभग" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #, fuzzy #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #, fuzzy #~ msgid "Matroska" #~ msgstr "Matroska" #, fuzzy #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #, fuzzy #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #, fuzzy #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #, fuzzy #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #, fuzzy #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Donate (Liberapay)" #~ msgstr "दान करें (लिबरेपे के द्वारा)" #~ msgid "Donate (PayPal)" #~ msgstr "दान करें (पेपाल के द्वारा)" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 बिना किसी परेशानी के अपनी स्क्रीन कैप्चर करें।" #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "️ 🎙️अपने माइक्रोफ़ोन, कंप्यूटर की आवाज़ या दोनों को एक ही समय पर रिकॉर्ड करें।" #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "WebM, MP4, GIF और MKV प्रारूपों में रिकार्ड करने में समर्थ।" #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 एकाधिक स्रोत चयन।" #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 वैकल्पिक हार्डवेयर त्वरित एन्कोडिंग" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ ️रिकॉर्ड करने के लिए मॉनिटर या विंडो चुनें।" #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ अपनी स्क्रीन से निश्चित क्षेत्र को कैप्चर करने के लिए एक चयन बनाएँ।" #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "️ ⏲️रिकॉर्डिंग शुरू करने से पहले तैयारी के लिए विलंब समय सेट करें।" #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ ️माउस पॉइंटर छुपाएँ या दिखाएँ।" #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "अपनी रिकॉर्डिंग को सहेजने का स्थान चुनें।" #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ उपयोगी कीबोर्ड शॉर्टकट का उपयोग करें।" #~ msgid "Toggle Computer Sounds" #~ msgstr "कंप्यूटर की ध्वनियों को रिकार्ड करने या ना करने को बदलें" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "Record Computer Sounds" #~ msgstr "कंप्यूटर की ध्वनियाँ रिकार्ड करें" #~ msgid "Record From Microphone" #~ msgstr "माइक्रोफ़ोन से रिकॉर्ड करें" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "विलंब समय रद्द करें" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "स्क्रीन रिकार्डिंग पूर्ण हुई!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "रिकार्डिंग को {} में सहेज दिया गया है।" #~ msgid "Open File" #~ msgstr "फाइल खोलें" #~ msgid "Screencast Portal Request Error" #~ msgstr "स्क्रीनकास्ट पोर्टल से अनुरोध में त्रुटि (Error)" #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "बिना किसी विकर्षण के अपनी स्क्रीन को सीधे और दर्द रहित तरीके से कैप्चर करें।" Kooha-2.3.0/po/hr.po000066400000000000000000000463561457702140700141710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Milo Ivir , 2021, 2022, 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Snimi ekran na elegantan način" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Videosnimka ekrana;rekorder;ekran;video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Snimi ekran na intuitivan i jednostavan način." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha je jednostavan program za snimanje ekrana s minimalističkim sučeljem. " "Jednostavno pritisni gumb za snimanje bez potrebe za konfiguriranjem hrpe " "postavki." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Glavne Kooha funkcije uključuju:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Snimanje mikrofona, zvukova računala ili oboje istovremeno" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Podrška za WebM, MP4, GIF i Matroska formate" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Konfigurabilno mjesto spremanja, vidljivost pokazivača, broj sličica u " "sekundi i kašnjenje" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Eksperimentalno hardverski ubrzano kodiranje" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Odaberi područje" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Odustani" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Gotovo" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Resetiraj odabir" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Opće" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Kašnjenje (sekunde)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Mapa sa snimkama" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Brzina kadrova" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Otvori izbornik" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Pokaži postavke" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Pokaži prečace" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Zatvori" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Snimanje" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Uključi/isključi snimanje" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Uključi/isključi pauzu" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Prekini snimanje" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Postavke" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Uključi/isključi zvukove računala" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Uključi/isključi mikrofon" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Uključi/isključi pokazivač" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Glavni izbornik" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Snimi monitor ili prozor" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Snimi odabrano područje ekrana" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Uključi zvukove računala" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Isključi zvukove računala" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Uključi mikrofon" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Isključi mikrofon" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Pokaži pokazivač" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Sakrij pokazivač" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Počni snimati" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Snimi" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Zaboravi prethodno odabrane izvore videa" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Prekini snimanje" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Prekini" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Zaustavi snimanje" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Snimanje za …" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Otkaži snimanje" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Završavanje …" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Postavke" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Tipkovni prečaci" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Kooha informacije" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Milo Ivir <mail@milotype.de>" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Doniraj (kupi mi kavu)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Prevedi" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Videosnimka ekrana snimljena" #: src/application.rs:144 msgid "Show in Files" msgstr "Pokaži u „Datoteke”" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Osiguraj da je PulseAudio instaliran u tvom sustavu." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Ovo je eksperimentalan i nepodržan format." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Bez" #: src/recording.rs:42 msgid "No active profile" msgstr "Nema aktivnog profila" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Pokretanje snimanja nije uspjelo" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Pogledaj {link} za pomoć." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Jedan GStreamer dodatak možda nije instaliran." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Osiguraj da mjesto za spremanje postoji i da je dostupno." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Dogodila se greška tijekom snimanja" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Otvaranje putanje „{path}” za zapisivanje nije uspjelo" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Odaberi mapu za snimke" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Uključivanje/Isključivanje pauze nije uspjelo" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopiraj u međuspremnik" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Kopirano u međuspremnik" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Pokaži detaljnu grešku" #: src/window/mod.rs:286 msgid "Help" msgstr "Pomoć" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "U redu, razumijem" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Otvoriti postavke?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Prethodno odabrani format možda nije bio dostupan. Otvori postavke i odaberi " "format za nastavljanje snimanja." #: src/window/mod.rs:305 msgid "Later" msgstr "Kasnije" #: src/window/mod.rs:307 msgid "Open" msgstr "Otvori" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Zaustavljeno" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normalo" #: src/window/mod.rs:523 msgid "Selection" msgstr "Odabir" #~ msgid "Failed to start device monitor" #~ msgstr "Pokretanje monitora uređaja nije uspjelo" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Povezivanje na PulseAudio daemon nije uspjelo" #~ msgid "No microphone source found" #~ msgstr "Nije pronađen nijedan izvor mikrofona" #~ msgid "No desktop speaker source found" #~ msgstr "Nije pronađen nijedan izvor zvučnika" #~ msgid "Ok" #~ msgstr "U redu" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Ova brzina kadrova može prouzročiti prebleme." #~ msgid "approx." #~ msgstr "približno" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Biranje monitora, prozora ili dio ekrana za snimanje" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Biranje višestrukih izvora" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022. Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Pritisni ovdje za gledanje videa." #~ msgid "Failed to select saving location" #~ msgstr "Biranje mjesta za spremanje nije uspjelo" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Otvaranje datoteke za zapisivanje nije uspjelo" #~ msgid "Donate (Liberapay)" #~ msgstr "Doniraj (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Doniraj (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Pogledaj {} za pomoć." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Neuspjelo otvaranje mape „{}” za pisanje" #~ msgid "_Cancel" #~ msgstr "_Odustani" #~ msgid "_Select" #~ msgstr "Oda_beri" #~ msgid "No folder selected" #~ msgstr "Nije odabrana nijedna mapa" #~ msgid "Please choose a folder and try again." #~ msgstr "Odaberi mapu i pokušaj ponovo." #~ msgid "Cannot access “{}”" #~ msgstr "Nemoguć pristup na „{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Odaberi pristupačno mjesto i pokušaj ponovo." #~ msgid "Enable Desktop Sounds" #~ msgstr "Aktiviraj desktop zvukove" #~ msgid "Disable Desktop Sounds" #~ msgstr "Deaktiviraj desktop zvukove" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Snimi ekran bez poteškoća." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Snimi mikrofon, zvukove računala ili oboje istovremeno." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Podrška za formate WebM, MP4, GIF i MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Biranje više izvora." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Opcionalno hardverski ubrzano kodiranje" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Odaberi monitor ili prozor za snimanje." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Stvori odabir za snimanje određenog područja na ekranu." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Postavi odgađanje početka snimanja." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Sakrij ili pokaži pokazivač miša." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Odaberi mjesto za spremanje snimke." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Koristi korisne tipkovne prečace." #~ msgid "Toggle Computer Sounds" #~ msgstr "Uključi/isključi zvukove računala" #~ msgid "_Delay" #~ msgstr "_Odgoda" #~ msgid "3 seconds" #~ msgstr "3 s" #~ msgid "5 seconds" #~ msgstr "5 s" #~ msgid "10 seconds" #~ msgstr "10 s" #~ msgid "_Video Format" #~ msgstr "_Videoformat" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Spremi u …" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Dodatak GStreamer možda nije instaliran. Ako je instaliran, ali i dalje " #~ "ne radi ispravno, prijavi problem na Kooha stranici za prijavu problema." #~ msgid "Record Computer Sounds" #~ msgstr "Snimi zvukove računala" #~ msgid "Record From Microphone" #~ msgstr "Snimi s mikrofona" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Prekini odgodu" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Autorska prava 2021. Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Videosnimka ekrana snimljena!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Snimka je spremljena u „{}”" #~ msgid "Open File" #~ msgstr "Otvori datoteku" #~ msgid "Screencast Portal Request Error" #~ msgstr "Greška u zahtjevu portala videosnimaka ekrana" #~ msgid "Pipeline Build Error" #~ msgstr "Greška u procesu izgradnje" #~ msgid "Recording Error" #~ msgstr "Greška u snimanju" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Provjeri ovisnosti i stranicu It Doesn't Work (Ne radi)." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Provjeri postoji li mjesto spremanja ili je li dostupno. Ako stvarno " #~ "postoji ili je dostupno, dogodilo se nešto krivo. Prijavi problem na Kooha stranici za " #~ "prijavu problema." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Provjeri postoji li mjesto za spremanje. Ako postoji, nešto ne radi " #~ "ispravno te prijavi problem na Kooha stranici za prijavu problema." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer priključak možda nije instaliran. Ako nije, prijavi na Koohinu stranicu za " #~ "prijavu problema." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Provjeri postoji li mjesto za spremanje. Ako ne, dogodilo se nešto krivo. " #~ "Prijavi ovaj problem na Koohinu stranicu za prijavu problema." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Snimi ekran na jednostavan i bezbolan način bez ometanja." Kooha-2.3.0/po/hu.po000066400000000000000000000353541457702140700141700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Balázs Úr , 2021. # Cimbora , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-05-27 20:50+0000\n" "Last-Translator: Cimbora \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 4.18-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Vegye fel a képernyőjét elegánsan" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Képernyőfelvétel;Felvevő;Rögzítő;Képernyő;Videó;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Vegye fel a képernyőjét intuitív és egyszerű módon, zavaró tényezők nélkül." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "A Kooha egy egyszerű képernyőfelvevő minimalista felülettel. Csak a felvétel " "gombra kell kattintania, anélkül hogy egy csomó beállítást be kellene " "állítania." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "A Kooha fő funkciói a következők:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Mégse" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Általános" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Menü megnyitása" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Gyorsbillentyűk megjelenítése" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Kilépés" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Felvétel" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Felvétel ki- és bekapcsolása" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Szünet ki- és bekapcsolása" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Beállítások" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Mikrofon ki- és bekapcsolása" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Mutató ki- és bekapcsolása" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Főmenü" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Egy monitor vagy ablak felvétele" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "A képernyő kijelölésének felvétele" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mutató megjelenítése" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Felvétel" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Leállítás" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Felvétel ekkor…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Kiürítés…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Beállítások" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "A Kooha _névjegye" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Úr Balázs <balazs@urbalazs.hu>" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Nincs" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Felvételek mappájának kiválasztása" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Szüneteltetve" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normál" #: src/window/mod.rs:523 msgid "Selection" msgstr "Kijelölés" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "_Cancel" #~ msgstr "_Mégse" #~ msgid "_Select" #~ msgstr "_Kiválasztás" #~ msgid "Cannot access “{}”" #~ msgstr "A(z) „{}” nem érhető el" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Válasszon egy elérhető helyet, és próbálja újra." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 A képernyő felvétele mindenféle gond nélkül." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ A mikrofon, a számítógép hangjai vagy mindkettő egyidejű felvétele." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM, MP4, GIF és MKV formátumok támogatása." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Több forrás kiválasztása." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Választható hardveresen gyorsított kódolás." #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Egy monitor vagy egy ablak kiválasztása a felvételhez." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Kijelölés létrehozása a képernyő egy bizonyos területének felvételéhez." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "" #~ "⏲️ Késleltetés beállítása az előkészítéshez, mielőtt elindítja a felvételt." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Az egérmutató elrejtése vagy megjelenítése." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 A felvétel mentési helyének kiválasztása." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Hasznos gyorsbillentyűk használata." #~ msgid "Toggle Computer Sounds" #~ msgstr "Számítógép hangjainak ki- és bekapcsolása" #~ msgid "_Delay" #~ msgstr "_Késleltetés" #~ msgid "5 seconds" #~ msgstr "5 másodperc" #~ msgid "10 seconds" #~ msgstr "10 másodperc" #~ msgid "_Video Format" #~ msgstr "_Videoformátum" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Mentés ide…" #~ msgid "Record Computer Sounds" #~ msgstr "Számítógép hangjainak felvétele" #~ msgid "Record From Microphone" #~ msgstr "Felvétel a mikrofonból" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Késleltetés megszakítása" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Képernyőfelvétel rögzítve!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "A felvétel ide lett elmentve: „{}”" #~ msgid "Open File" #~ msgstr "Fájl megnyitása" #~ msgid "Screencast Portal Request Error" #~ msgstr "Képernyőfelvétel portálkérési hiba" #~ msgid "Pipeline Build Error" #~ msgstr "Csővezeték-összeállítási hiba" #~ msgid "Recording Error" #~ msgstr "Felvételi hiba" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Győződjön meg arról, hogy ellenőrizte-e a futásidejű függőségeket, " #~ "illetve elolvasta-e az It Doesn't Work angol nyelvű oldalt." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Egy GStreamer-bővítmény esetleg nincs telepítve. Ellenkező esetben " #~ "jelentse a Kooha " #~ "hibakövető oldalán." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Győződjön meg arról, hogy a mentési hely létezik-e. Ellenkező esetben " #~ "valami elromlott, és jelentse a Kooha hibakövető oldalán." Kooha-2.3.0/po/id.po000066400000000000000000000554571457702140700141560ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # liimee , 2021, 2022, 2023. # Reza Almanda , 2021. # Sucipto , 2021. # Sucipto , 2021. # Hervy Qurrotul Ainur Rozi , 2022. # Muhammad Akbar Yanuar Mantari , 2023. # Nur Ihsan , 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-03-05 18:01+0000\n" "Last-Translator: Nur Ihsan \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Rekam layar Anda dengan elegan" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Perekam;Layar;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Rekam layar Anda dengan cara yang intuitif dan mudah tanpa gangguan." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha adalah perekam layar yang sederhana dengan antarmuka yang minimalis. " "Anda hanya perlu menekan tombol rekam tanpa harus mengkonfigurasi beberapa " "pengaturan." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Fitur-fitur utama Kooha termasuk yang berikut ini:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Rekam mikrofon, audio desktop, atau keduanya secara bersamaan" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Dukungan untuk format WebM, MP4, GIF, dan Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Pilih monitor atau bagian dari layar untuk direkam" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Lokasi penyimpanan, apakah kursor ditampilkan, laju bingkai, dan penundaan " "dapat diatur" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Uji coba pengodean menggunakan akselarasi perangkat keras" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Pilih Area" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Batal" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Selesai" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Atur Ulang Pilihan" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Umum" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Penundaan (Detik)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Interval waktu sebelum memulai perekaman" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Folder Rekaman" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Folder tujuan untuk hasil perekaman" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Laju Bingkai" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Buka Menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Tampilkan Preferensi" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Tampilkan Pintasan" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Keluar" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Merekam" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Tombol Perekaman" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Tombol Jeda" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Batal Merekam" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Pengaturan" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Tombol Audio Desktop" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Tombol Mikrofon" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Tombol Penunjuk" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menu Utama" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Rekam Monitor atau Jendela" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Rekam Potongan dari Layar" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Aktifkan Audio Desktop" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Nonaktifkan Audio Desktop" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Aktifkan Mikrofon" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Nonaktifkan Mikrofon" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Tampilkan Kursor" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Sembunyikan Kursor" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Mulai Merekam" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Rekam" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Lupakan Sumber Video yang Dipilih Sebelumnya" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Berhenti Merekam" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Berhenti" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Jeda Perekaman" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Merekam dalam…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Batal Merekam" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Membersihkan…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "Pre_ferensi" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Pintasan Papan Ketik" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Tentang Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 #, fuzzy msgid "translator-credits" msgstr "@liimee,Hervy Qurrotul Ainur Rozi,Reza Almanda,@mantarimay,@nurihsan_m" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Donasi (Traktir Saya Kopi)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Terjemahkan" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Rekaman layar selesai" #: src/application.rs:144 msgid "Show in Files" msgstr "Tampilkan di Berkas" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Gagal menemukan perangkat audio default" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Pastikan Anda telah memasang PulseAudio pada sistem Anda." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} jam" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "menit" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "detik" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Gagal mengatur folder hasil perekaman" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Frame rate ini mungkin akan menyebabkan isu terhadap performa pada format " "yang dipilih." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Format ini eksperimental dan tidak didukung." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Tidak ada" #: src/recording.rs:42 msgid "No active profile" msgstr "Tidak ada profil yang aktif" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Gagal memulai perekaman" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Rujukan {link} untuk bantuan." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Plugin GStreamer mungkin tidak terpasang." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Pastikan lokasi penyimpanan ada dan dapat diakses." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Kesalahan terjadi ketika merekam" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Gagal membuka “{path}” untuk bekerja" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Pilih Folder Rekaman" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Galat menekan tombol jeda" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Sebuah perekaman sedang berlangsung. Keluar sekarang dapat menyebabkan hasil " "perekaman tidak dapat diputar. Silahkan hentikan perekaman sebelum keluar." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "Keluar akan menghentikan proses berjalan dan dapat menyebabkan hasil " "perekaman tidak dapat diputar." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Keluar dari Aplikasi?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Salin ke papan klip" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Disalin ke papan klip" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Tampilkan kesalahan secara menyeluruh" #: src/window/mod.rs:286 msgid "Help" msgstr "Bantuan" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Ya, Mengerti" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Buka Preferensi?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Format yang sebelumnya dipilih mungkin tidak tersedia. Buka preferensi dan " "pilih format lain untuk terus merekam." #: src/window/mod.rs:305 msgid "Later" msgstr "Nanti" #: src/window/mod.rs:307 msgid "Open" msgstr "Buka" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Perekaman sedang berlangsung" #: src/window/mod.rs:485 msgid "Paused" msgstr "Dijeda" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Potongan" #~ msgid "Failed to start device monitor" #~ msgstr "Gagal memulai perangkat monitor" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Gagal terhubung dengan daemon PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Tak ditemukan sumber mikrofon" #~ msgid "No desktop speaker source found" #~ msgstr "Sumber pengeras suara desktop tidak ditemukan" #~ msgid "Ok" #~ msgstr "OK" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Frame rate ini mungkin dapat menyebabkan masalah performa." #~ msgid "approx." #~ msgstr "perkiraan" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Pilih monitor, jendela, atau sebagian dari layar yang ingin direkam" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Pilih beberapa sumber" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Klik di sini untuk membuka video." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Gagal membuka berkas untuk bekerja" #~ msgid "Failed to select folder" #~ msgstr "Gagal memilih folder" #~ msgid "Donate (Liberapay)" #~ msgstr "Berdonasi (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Berdonasi (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Lihat {} untuk bantuan." #~ msgid "_Cancel" #~ msgstr "_Batal" #~ msgid "_Select" #~ msgstr "Pi_lih" #~ msgid "No folder selected" #~ msgstr "Tak ada folder yang dipilih" #~ msgid "Please choose a folder and try again." #~ msgstr "Harap pilih folder dan coba lagi." #~ msgid "Cannot access “{}”" #~ msgstr "Tidak dapat mengakses “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Harap pilih lokasi yang dapat diakses dan coba lagi." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Rekam layar Anda tanpa repot-repot." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Rekam mikrofon Anda, suara komputer, atau keduanya di waktu yang sama." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Mendukung format WebM, MP4, GIF, dan MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Pilihan berbagai sumber." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Opsi pengkodean dengan percepatan perangkat keras" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Pilih monitor atau jendela yang ingin direkam." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Buat seleksi untuk menangkap area tertentu dari layar anda." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Pasang penundaan untuk bersiap-siap sebelum mulai merekam." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Sembunyikan atau tampilkan penunjuk tetikus." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Pilih lokasi penyimpanan untuk rekaman Anda." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Manfaatkan pintasan keyboard yang berguna." #~ msgid "Toggle Computer Sounds" #~ msgstr "Toggle Suara Komputer" #~ msgid "_Delay" #~ msgstr "_Penundaan" #~ msgid "5 seconds" #~ msgstr "5 detik" #~ msgid "10 seconds" #~ msgstr "10 detik" #~ msgid "_Video Format" #~ msgstr "Format _Video" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Simpan di…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Sebuah plugin GStreamer mungkin tidak terpasang. Jika itu sudah terpasang " #~ "namun masih belum bekerja, harap laporkan ke halaman masalah Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Rekam Suara Komputer" #~ msgid "Record From Microphone" #~ msgstr "Rekam Dari Mikrofon" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Batalkan penundaan" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Hak Cipta 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Screencast Direkam!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Rekaman telah disimpan di \"{}\"" #~ msgid "Open File" #~ msgstr "Buka Berkas" #~ msgid "Screencast Portal Request Error" #~ msgstr "Kesalahan Permintaan Screencast Portal" #~ msgid "Pipeline Build Error" #~ msgstr "Kesalahan Pipeline Build" #~ msgid "Recording Error" #~ msgstr "Kesalahan Perekaman" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Pastikan untuk memeriksa ketergantungan runtime dan laman Ini Tidak Berfungsi." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Pastikan lokasi penyimpanan ada dan dapat diakses. Jika lokasi tersebut " #~ "benar-benar ada dan dapat diakses, ada masalah dan harap melaporkannya ke " #~ "halaman masalah Kooha." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Sebuah plugin GStreamer mungkin belum terpasang. Jika tidak, harap " #~ "laporkan ke halaman " #~ "masalah Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Pastikan lokasi penyimpanan tersedia. Jika tidak, ada yang tidak beres " #~ "dan lapor ke laman " #~ "masalah Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Tangkap layar Anda dengan secara langsung dan mudah tanpa gangguan." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Jangan lupa untuk memeriksa dependensi runtime dan halaman \"It Doesn't " #~ "Work\" di halaman readme Konoha. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Sebuah plugin GStreamer mungkin tidak terpasang. Jika tidak, harap " #~ "laporkan ke halaman masalah Kooha. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Screencast Portal Request Gagal" #~ msgid "Recording Failed" #~ msgstr "Perekaman Gagal" #~ msgid "Pipeline Build Failed" #~ msgstr "Pipeline Build Gagal" #~ msgid "Sorry! An error has occurred." #~ msgstr "Maaf! Sebuah kesalahan terjadi." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Mohon pilih tempat yang dapat diakses dan coba lagi." #~ msgid "Select a Folder" #~ msgstr "Pilih folder" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Pilih area layar Anda yang ingin direkam." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Dukungan bebas untuk format Matroska dan WebM." #~ msgid "Open menu" #~ msgstr "Buka menu" #~ msgid "Show keyboard shortcuts" #~ msgstr "Tampilkan pintasan keyboard" #~ msgid "Toggle record" #~ msgstr "Toggle perekaman" #~ msgid "Cancel delay" #~ msgstr "Batalkan penundaan" #~ msgid "Toggle computer sounds" #~ msgstr "Toggle suara komputer" #~ msgid "Toggle microphone" #~ msgstr "Toggle mikrofon" #~ msgid "Toggle pointer" #~ msgstr "Toggle penunjuk" #~ msgid "Delay" #~ msgstr "Penundaan" #~ msgid "Video Format" #~ msgstr "Format Video" #~ msgid "Save to…" #~ msgstr "Simpan di…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Pintasan Keyboard" #~ msgid "About Kooha" #~ msgstr "Tentang Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "Maaf! Sebuah kesalahan telah terjadi." #~ msgid "Videos" #~ msgstr "Video-video" #, fuzzy #~ msgid "Failed to create session." #~ msgstr "Gagal membuat session." #~ msgid "Select" #~ msgstr "Pilih" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Lokasi tidak dapat diakses “{directory}”" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "Rekaman telah disimpan di {saving_location}" #, fuzzy #~ msgid "Toggle capture mode" #~ msgstr "Toggle mode capture" #~ msgid "Full Screen" #~ msgstr "Layar Penuh" #~ msgid "Processing" #~ msgstr "Memproses" #~ msgid "Save location not set" #~ msgstr "Lokasi penyimpanan belum diatur" #~ msgid "Recording cannot start" #~ msgstr "Tidak dapat memulai perekaman" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Lokasi penyimpanan yang telah Anda pilih mungkin sudah dihapus." #~ msgid "The recording has been saved in" #~ msgstr "Rekaman telah disimpan di" #~ msgid "Record computer sounds" #~ msgstr "Toggle suara komputer" #~ msgid "Record from microphone" #~ msgstr "Rekam dari mikrofon" #~ msgid "Show pointer" #~ msgstr "Tampilkan penunjuk" #~ msgid "Elegantly record your screen " #~ msgstr "Rekam layar Anda dengan elegan " #~ msgid "Simple screen recorder" #~ msgstr "Perekam layar sederhana" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha adalah perekam layar sederhana yang dibangun menggunakan GTK. Kooha " #~ "memungkinkan Anda untuk merekam layar Anda serta suara dari mikrofon atau " #~ "desktop Anda." Kooha-2.3.0/po/it.po000066400000000000000000000615541457702140700141710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Nicolas Mariniello , 2021. # J. Lavoie , 2021. # Dave Patrick , 2021. # albanobattistella , 2021, 2022, 2023, 2024. # Ruggero Turra , 2021. # Michael Moroni , 2021, 2023. # Andrea Brandi , 2022, 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-27 18:50+0000\n" "Last-Translator: albanobattistella \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Registra il tuo schermo elegantemente" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Registratore;Schermo;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Cattura il tuo schermo in modo intuitivo e diretto senza distrazioni." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha è un registratore di schermo semplice con un'interfaccia minimalista. " "Si può semplicemente fare clic sul pulsante di registrazione senza dover " "configurare un sacco di impostazioni." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Le caratteristiche principali di Kooha sono le seguenti:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Registra microfono, audio desktop o entrambi contemporaneamente" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Supporto per i formati WebM, MP4, GIF e Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Seleziona un monitor o una porzione dello schermo da registrare" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Posizione di salvataggio, visibilità del puntatore, frame rate e ritardo " "configurabili" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Codifica sperimentale con accelerazione hardware" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Seleziona Area" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Annulla" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Fatto" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Ripristina selezione" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Generale" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Ritardo (secondi)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Intervallo di tempo prima dell'inizio della registrazione" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Cartella registrazioni" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Cartella di destinazione per le registrazioni" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formato" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Frame Rate" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Apri Menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Mostra preferenze" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Mostra Scorciatoie" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Esci" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "In registrazione" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Interruttore Registrazione" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Attiva/disattiva pausa" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Cancella registrazione" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Impostazioni" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Attiva/disattiva l'audio del desktop" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Attiva/disattiva microfono" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Attiva/disattiva puntatore" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menu principale" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Cattura uno schermo o una finestra" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Cattura una selezione di schermo" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Abilita audio desktop" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Disabilita l'audio del desktop" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Abilita microfono" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Disabilita microfono" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mostra il puntatore" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Nascondi puntatore" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Inizia a registrare" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Registra" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Dimentica le sorgenti video selezionate in precedenza" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Interrompi registrazione" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Ferma" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Metti in pausa la registrazione" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "In registrazione tra…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Cancella registrazione" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Pulizia…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "Im_postazioni" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Scorciatoie da tastiera" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Informazioni su Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Albano Battistella, Andrea Brandi, Michael Moroni, Nicolas Mariniello" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Fai una donazione (offrimi un caffè)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Traduci" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Screencast registrato" #: src/application.rs:144 msgid "Show in Files" msgstr "Mostra in File" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Impossibile trovare il dispositivo audio predefinito" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Assicurati di avere PulseAudio installato nel tuo sistema." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} ora" msgstr[1] "{time} ore" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} minuto" msgstr[1] "{time} minuti" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} secondo" msgstr[1] "{time} secondi" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Impossibile impostare la cartella delle registrazioni" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Questa frequenza fotogrammi potrebbe causare problemi di prestazioni nel " "formato selezionato." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Questo formato è sperimentale e non supportato." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Nessuno" #: src/recording.rs:42 msgid "No active profile" msgstr "Nessun profilo attivo" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Impossibile avviare la registrazione" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Dai un'occhiata a {link} per ricevere aiuto." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Un plug-in GStreamer potrebbe non essere installato." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Assicurati che la posizione di salvataggio esista e sia accessibile." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Si è verificato un errore durante la registrazione" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Impossibile aprire \"{percorso}\" per la scrittura" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Seleziona la cartella di registrazione" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Impossibile attivare/disattivare la pausa" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Una registrazione è attualmente in corso. L'uscita immediata potrebbe " "rendere la registrazione non riproducibile. Si prega di interrompere la " "registrazione prima di uscire." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "L'uscita annullerà l'elaborazione e potrebbe rendere la registrazione non " "riproducibile." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Uscire dall'applicazione?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Copia negli appunti" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Copiato negli appunti" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Visualizza errore dettagliato" #: src/window/mod.rs:286 msgid "Help" msgstr "Aiuto" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Ok, ho capito" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Aprire le preferenze?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Il formato selezionato in precedenza potrebbe non essere disponibile. Apri " "le preferenze e seleziona un formato per continuare la registrazione." #: src/window/mod.rs:305 msgid "Later" msgstr "Dopo" #: src/window/mod.rs:307 msgid "Open" msgstr "Apri" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "È in corso una registrazione" #: src/window/mod.rs:485 msgid "Paused" msgstr "In pausa" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normale" #: src/window/mod.rs:523 msgid "Selection" msgstr "Sezione" #~ msgid "Failed to start device monitor" #~ msgstr "Impossibile avviare il monitoraggio del dispositivo" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Impossibile connettersi al demone PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Nessuna sorgente microfono trovata" #~ msgid "No desktop speaker source found" #~ msgstr "Nessuna fonte di altoparlanti desktop trovata" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Questo frame rate può causare problemi di prestazioni." #~ msgid "approx." #~ msgstr "circa" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Seleziona un monitor, una finestra o una parte dello schermo da " #~ "registrare" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Selezione di più fonti" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Clicca qui per vedere il video." #~ msgid "Failed to select saving location" #~ msgstr "Impossibile selezionare la posizione di salvataggio" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Impossibile aprire il file per la scrittura" #~ msgid "Failed to select folder" #~ msgstr "Impossibile selezionare la cartella" #~ msgid "Donate (Liberapay)" #~ msgstr "Dona (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Dona (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Dai un'occhiata a {} per assistenza." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Impossibile aprire \"{}\" per la scrittura" #~ msgid "_Cancel" #~ msgstr "_Annulla" #~ msgid "_Select" #~ msgstr "_Seleziona" #~ msgid "No folder selected" #~ msgstr "Nessuna cartella selezionata" #~ msgid "Please choose a folder and try again." #~ msgstr "Scegli una cartella e riprova." #~ msgid "Cannot access “{}”" #~ msgstr "Impossibile accedere a \"{}\"" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Per favore scegli una posizione accessibile e prova di nuovo." #~ msgid "Enable Desktop Sounds" #~ msgstr "Abilita i suoni del desktop" #~ msgid "Disable Desktop Sounds" #~ msgstr "Disabilita i suoni del desktop" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Cattura il tuo schermo senza problemi." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Registra il tuo microfono, i suoni del computer o entrambi allo stesso " #~ "tempo." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Supporta i formati WebM, MP4, GIF, e MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Selezione di più fonti." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Codifica con accelerazione hardware opzionale" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Seleziona il monitor o la finestra da registrare." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Crea una selezione per catturare un'area specifica dal tuo schermo." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "" #~ "⏲️ Imposta il ritardo da preparare prima di iniziare la registrazione." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Nascondi o mostra il puntatore del mouse." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Scegli una posizione di salvataggio per la tua registrazione." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Utilizza utili scorciatoie da tastiera." #~ msgid "Toggle Computer Sounds" #~ msgstr "Attiva/disattiva suoni del computer" #~ msgid "_Delay" #~ msgstr "_Ritardo" #~ msgid "3 seconds" #~ msgstr "3 secondi" #~ msgid "5 seconds" #~ msgstr "5 secondi" #~ msgid "10 seconds" #~ msgstr "10 secondi" #~ msgid "_Video Format" #~ msgstr "_Formato video" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Salva in…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Un plugin GStreamer potrebbe non essere installato. Se è installato ma " #~ "continua a non funzionare correttamente, segnalarlo alla pagina dei problemi di " #~ "Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Registra i suoni del computer" #~ msgid "Record From Microphone" #~ msgstr "Registra dal microfono" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Annulla ritardo" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Video dello schermo registrato!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "La registrazione è stata salvata in \"{}\"" #~ msgid "Open File" #~ msgstr "Apri file" #~ msgid "Screencast Portal Request Error" #~ msgstr "Errore di richiesta portale dello screencast" #~ msgid "Pipeline Build Error" #~ msgstr "Errore di creazione della pipeline" #~ msgid "Recording Error" #~ msgstr "Errore di registrazione" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Controllare le dipendenze di runtime e la pagina se non funziona." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Assicurarsi che la posizione di salvataggio esista o sia accessibile. Se " #~ "esiste effettivamente o è accessibile, qualcosa è andato storto. " #~ "Segnalare il problema alla pagina dei problemi di Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Assicurati che la posizione di salvataggio esista. Se esiste " #~ "effettivamente, qualcosa è andato storto e segnalalo a pagina dei problemi di Kohoha." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Un plugin GStreamer potrebbe non essere installato. In caso contrario, si " #~ "prega di segnalare a pagina dei problemi di Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Assicurati che la posizione di salvataggio esista. In caso contrario, se " #~ "qualcosa è andato storto segnalalo a pagine dei problemi di Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Cattura il tuo schermo in modo diretto e indolore senza distrazioni." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Assicurati di controllare le dipendenze a runtime e la pagina \"It " #~ "Doesn't Work\" nel file readme di Kooha. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Un plugin GStreamer potrebbe non essere installato. Se così, per favore " #~ "riporta nella pagina dei problemi di Kooha. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Richiesta del portale per la condivisione dello schermo fallita" #~ msgid "Recording Failed" #~ msgstr "Registrazione Fallita" #~ msgid "Pipeline Build Failed" #~ msgstr "Costruzione condotto fallita" #~ msgid "Please choose an accessible location and retry." #~ msgstr "Per favore scegli un percorso accessibile e riprova." #~ msgid "Select a Folder" #~ msgstr "Seleziona una Cartella" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Seleziona un'area del tuo schermo da registrare." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Supporto per i formati gratuiti Matroska e WebM." #~ msgid "Open menu" #~ msgstr "Apri il menù" #~ msgid "Show keyboard shortcuts" #~ msgstr "Mostra scorciatoie da tastiera" #~ msgid "Toggle record" #~ msgstr "Registra" #~ msgid "Toggle record pause" #~ msgstr "Attiva/disattiva la pausa" #~ msgid "Cancel delay" #~ msgstr "Cancella il ritardo" #~ msgid "Toggle computer sounds" #~ msgstr "Attiva i suoni del computer" #~ msgid "Toggle microphone" #~ msgstr "Attiva il microfono" #~ msgid "Toggle pointer" #~ msgstr "Attiva il puntatore" #~ msgid "Delay" #~ msgstr "Ritardo" #~ msgid "Video Format" #~ msgstr "Formato video" #~ msgid "Save to…" #~ msgstr "Salva in…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Scorciatoie da tastiera" #~ msgid "About Kooha" #~ msgstr "A proposito di Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "Spiacente! Si è verificato un errore." #~ msgid "Videos" #~ msgstr "Video" #~ msgid "Failed to create session." #~ msgstr "Impossibile creare la sessione." #~ msgid "Failed to select sources." #~ msgstr "Impossibile selezionare le sorgenti." #~ msgid "Select" #~ msgstr "Seleziona" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Posizione inaccessibile “{directory}”" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "La registrazione è stata salvata in {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Posizione inaccessibile «{directory}»" #~ msgid "Toggle capture mode" #~ msgstr "Cambia modalità di cattura" #~ msgid "Full Screen" #~ msgstr "Schermo Intero" #~ msgid "Processing" #~ msgstr "Elaborazione" #~ msgid "Save location not set" #~ msgstr "Percorso di salvataggio non impostato" #~ msgid "Recording cannot start" #~ msgstr "La registrazione non può iniziare" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "" #~ "Il percorso di salvataggio che hai selezionato potrebbe essere stato " #~ "eliminato." #~ msgid "The recording has been saved in" #~ msgstr "La registrazione è stata salvata in formato" #~ msgid "Record computer sounds" #~ msgstr "Registra i suoni del computer" #~ msgid "Record from microphone" #~ msgstr "Registra dal microfono" #~ msgid "Show pointer" #~ msgstr "Mostra il puntatore" #~ msgid "Elegantly record your screen " #~ msgstr "Registra elegantemente il tuo schermo " #~ msgid "Simple screen recorder" #~ msgstr "Registratore di schermo semplice" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha è un registratore di schermo semplice scritto in GTK. Ti permette " #~ "ti registrare il tuo schermo e anche l'audio proveniente dal tuo " #~ "microfono o dal desktop." Kooha-2.3.0/po/ja.po000066400000000000000000000544521457702140700141460ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # tinaxd , 2021. # tinaxd , 2021. # 小山田純 , 2021. # Ryo Nakano , 2021, 2022, 2023, 2024. # Kaz Sibuya , 2021, 2022. # Kisaragi Hiu , 2022. # kj7kt , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-03-03 02:01+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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "エレガントに画面を記録" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "" "Screencast;Recorder;Screen;Video;画面録画;画面キャプチャ;録画;キャプチャ;画" "面;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "直感的かつ分かりやすい方法で気を散らすことなく画面をキャプチャします。" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Koohaはシンプルでミニマルなインターフェイスを備えたスクリーンレコーダーです。" "複雑な設定をせず、ボタン一つで録画することができます。" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Koohaの主な機能は以下の通りです:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙マイクやデスクトップオーディオ、またはその両方を同時に記録" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 WebM、MP4、GIF、Matroshka形式をサポート" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ モニター、あるいは画面の一部を選択して録画" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "🛠 設定可能な保存先、カーソルの可視性、フレームレート、遅延" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 実験的なハードウェアアクセラレーションによるエンコーディング" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "範囲選択" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "キャンセル" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "完了" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "選択をリセット" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "一般" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "遅延 (秒)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "録画を開始するまでの時間" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "録画フォルダ" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "録画の保存先フォルダー" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "動画" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "フォーマット" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "フレームレート" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "メニューを開く" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "設定を表示" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "ショートカット一覧を表示" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "終了" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "録画中" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "録画の開始/終了" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "録画の一時停止/再開" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "録画をキャンセル" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "設定" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "デスクトップ音声の有効化/無効化" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "マイクの有効化/無効化" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "ポインターの表示/非表示" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "メニュー" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "モニタまたはウィンドウをキャプチャする" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "スクリーンの選択範囲をキャプチャする" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "デスクトップ音声を有効化" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "デスクトップ音声を無効化" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "マイクを有効化" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "マイクを無効化" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "ポインターを表示する" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "ポインターを隠す" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "録画を開始" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "録画" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "以前に選択した録画元の記録を消去" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "録画を停止" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "停止" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "録画を一時停止" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "録画開始まで…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "録画をキャンセル" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "書き込んでいます…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "設定(_P)" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "キーボードショートカット(_K)" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "Koohaについて(_A)" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "小山田 純\n" "Ryo Nakano\n" "Kaz Sibuya\n" "Kisaragi Hiu\n" "kj7kt" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "寄付 (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "翻訳" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "スクリーンキャストを保存しました" #: src/application.rs:144 msgid "Show in Files" msgstr "ファイル で表示" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "デフォルトの音声デバイスを検出できませんでした" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "PulseAudioがシステムにインストールされていることを確認してください。" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} 時間" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} 分" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} 秒" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "録画フォルダーを設定できませんでした" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "選択したフォーマットの場合、このフレームレートではパフォーマンス上の問題が発" "生する可能性があります。" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "このフォーマットは実験的でありサポートされていません。" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "なし" #: src/recording.rs:42 msgid "No active profile" msgstr "有効なプロファイルなし" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "録画の開始に失敗しました" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "ヘルプは {link} をご確認ください。" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "GStreamerプラグインがインストールされていない可能性があります。" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "保存場所が存在し、アクセス可能であることを確認してください。" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "録画中にエラーが発生しました" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "“{path}” を書き込み用に開けませんでした" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "動画の保存先のフォルダを選択" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "一時停止または再開に失敗しました" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "現在録画中です。直ちに終了すると、録画が再生不能になる可能性があります。終了" "前に録画を停止してください。" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "終了すると処理がキャンセルされ、録画が再生不能になる可能性があります。" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "アプリケーションを終了しますか?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "クリップボードにコピー" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "クリップボードにコピーしました" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "エラーの詳細を表示" #: src/window/mod.rs:286 msgid "Help" msgstr "ヘルプ" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "了解しました" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "設定を開きますか?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "前回選択したフォーマットが利用できません。設定を開いてフォーマットを選択し録" "画を継続してください。" #: src/window/mod.rs:305 msgid "Later" msgstr "後で" #: src/window/mod.rs:307 msgid "Open" msgstr "開く" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "録画中" #: src/window/mod.rs:485 msgid "Paused" msgstr "一時停止" #: src/window/mod.rs:522 msgid "Normal" msgstr "通常" #: src/window/mod.rs:523 msgid "Selection" msgstr "選択範囲" #~ msgid "Failed to start device monitor" #~ msgstr "デバイスモニタの開始に失敗しました" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "PulseAudioデーモンへの接続に失敗しました" #~ msgid "No microphone source found" #~ msgstr "マイクソースが見つかりません" #~ msgid "No desktop speaker source found" #~ msgstr "デスクトップスピーカーのソースが見つかりません" #~ msgid "Ok" #~ msgstr "OK" #~ msgid "This frame rate may cause performance issues." #~ msgstr "このフレームレートはパフォーマンスに問題を起こす可能性があります。" #~ msgid "approx." #~ msgstr "約" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥 モニター、ウィンドウ、または画面の一部選択して録画" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 複数のソースから選択" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "ここをクリックして動画を確認できます。" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "ファイルを書き込み用に開けませんでした" #~ msgid "Failed to select folder" #~ msgstr "フォルダーを選択できませんでした" #~ msgid "Donate (Liberapay)" #~ msgstr "寄付 (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "寄付 (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "{} でヘルプを確認できます。" #~ msgid "Failed to open “{}” for writing" #~ msgstr "書き込みのために\"{}\"を開けませんでした" #~ msgid "_Cancel" #~ msgstr "キャンセル(_C)" #~ msgid "_Select" #~ msgstr "選択(_S)" #~ msgid "No folder selected" #~ msgstr "フォルダが選択されていません" #~ msgid "Please choose a folder and try again." #~ msgstr "フォルダを選択してやり直しください。" #~ msgid "Cannot access “{}”" #~ msgstr "“{}”にアクセスできません" #~ msgid "Please choose an accessible location and try again." #~ msgstr "アクセス可能な場所を選んで、もう一度お試しください。" #~ msgid "Enable Desktop Sounds" #~ msgstr "デスクトップでの音を有効" #~ msgid "Disable Desktop Sounds" #~ msgstr "デスクトップでの音を無効" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 手間をかけずに画面を記録。" #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ マイクの音声、コンピュータのサウンド、およびその両方を録音できます。" #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM、MP4、GIF、MKV形式に対応。" #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 複数のソースを選択。" #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 ハードウェアアクセラレーションを使ったエンコードにも対応" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ モニターまたはウィンドウを選択して録画できます。" #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ 選択した範囲を録画できます。" #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ 録画開始前にタイマーをセットすることもできます。" #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ カーソルを非表示にしての録画もできます。" #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 保存先を選択できます。" #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ 便利なキーボードショートカットもあります。" #~ msgid "Toggle Computer Sounds" #~ msgstr "コンピューター内部音の録音を有効化/無効化" #~ msgid "_Delay" #~ msgstr "タイマー(_D)" #~ msgid "3 seconds" #~ msgstr "3秒" #~ msgid "5 seconds" #~ msgstr "5秒" #~ msgid "10 seconds" #~ msgstr "10秒" #~ msgid "_Video Format" #~ msgstr "動画の形式(_F)" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "保存先(_S)…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer プラグインがインストールされていない可能性があります。インストー" #~ "ル済みなのに動かない場合は、Koohaのバグトラッカーで報告してください。" #~ msgid "Record Computer Sounds" #~ msgstr "コンピュータの音声を録音する" #~ msgid "Record From Microphone" #~ msgstr "マイクの音声を録音する" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "録画開始をキャンセル" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "スクリーンキャストを保存しました!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "録画は“{}”に保存されました" #~ msgid "Open File" #~ msgstr "ファイルを開く" #~ msgid "Screencast Portal Request Error" #~ msgstr "スクリーンキャストポータルの要求エラー" #~ msgid "Pipeline Build Error" #~ msgstr "パイプラインの組み立てエラー" #~ msgid "Recording Error" #~ msgstr "録画エラー" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "ランタイムがインストール済みか確認してください。動作しない場合も参照してください。" #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "保存先が存在していてアクセス可能か確認してください。存在していてアクセス可" #~ "能なのに動かない場合、何らかの不具合が発生しているのでKoohaのバグトラッカーで報告してくださ" #~ "い。" #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "保存先が存在するか確認してください。存在しているのに動かない場合、何らかの" #~ "不具合が発生しているのでKoohaのバグトラッカーで報告してください。" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer プラグインがインストールされていない可能性があります。インストー" #~ "ル済みなのにこのエラーが表示されている場合は、Koohaのバグトラッカーで報告してください。" #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "保存先の場所が存在するか確認してください。保存先が存在している場合、何らか" #~ "の不具合が発生しているのでKoohaのバグトラッカーで報告してください。" #~ msgid "Open menu" #~ msgstr "メニューを開く" #~ msgid "Show keyboard shortcuts" #~ msgstr "ショートカット一覧を表示する" #~ msgid "Delay" #~ msgstr "遅延" #~ msgid "Video Format" #~ msgstr "動画フォーマット" #~ msgid "Save to…" #~ msgstr "保存先…" #~ msgid "Keyboard Shortcuts" #~ msgstr "キーボードショートカット" #~ msgid "About Kooha" #~ msgstr "Kooha について" Kooha-2.3.0/po/ko.po000066400000000000000000000357121457702140700141630ustar00rootroot00000000000000# Korean translation of Kooha in the GNOME circle. # Copyright (C) Kooha authors and many contributors. # This file is distributed under the same license as the kooha package. # Seong-ho Cho , 2021. # 정지우 , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Korean \n" "Language: ko\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "쿠하" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "화면을 우아하게 녹화해보세요" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "" "Screencast;스크린캐스트;생방송;방송;Recorder;레코더;Screen;화면;스크린;Video;" "비디오;동영상;영상;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "쿠하는 최소주의를 지향하는 인터페이스를 갖춘 간단한 화면 녹화기입니다. 번거로" "운 설정을 하지 않고 그냥 녹화 단추만 눌러 녹화할 수 있습니다." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "쿠하의 주요 기능은 다음과 같습니다:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "취소" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "일반적인" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "메뉴 열기" #: data/resources/ui/shortcuts.ui:20 #, fuzzy msgid "Show Preferences" msgstr "환경설정 보기" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "바로 가기 키 표시" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "끝내기" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "녹화중" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "녹화 전환" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "일시정지 전환" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "설정" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "마이크로폰 전환" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "포인터 상태 전환" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "메인 메뉴" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "모니터 또는 창 캡쳐" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "화면 선택 영역 캡쳐" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "포인터 표시" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "녹화" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 #, fuzzy msgid "Stop" msgstr "정지" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "녹화 중…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "지우는 중…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_환경설정" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_키보드 단축키" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "쿠하 정보(_A)" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "번역자-크레딧" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 #, fuzzy msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "번역" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "없음" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "녹화 폴더 선택" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "클립보드에 복사되었습니다" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "네, 알았어요" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "나중에" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "일시정지함" #: src/window/mod.rs:522 msgid "Normal" msgstr "일반" #: src/window/mod.rs:523 msgid "Selection" msgstr "선택" #, fuzzy #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Donate (Liberapay)" #~ msgstr "기부하기(Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "기부하기(PayPal)" #~ msgid "_Cancel" #~ msgstr "취소(_C)" #~ msgid "_Select" #~ msgstr "선택(_S)" #~ msgid "Cannot access “{}”" #~ msgstr "“{}”에 접근할 수 없습니다" #~ msgid "Please choose an accessible location and try again." #~ msgstr "열 수 있는 위치를 선택하고 다시 시도하십시오." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 어떤 번거로움 없이 화면을 찍습니다." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ 마이크로폰, 컴퓨터 소리 또는 둘 다 동시에 녹음합니다." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM, MP4, GIF, MKV 형식을 지원합니다." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 여러 원본을 선택합니다." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 추가 하드웨어 가속 인코딩" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ 녹화할 모니터 또는 창을 선택합니다." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ 화면에서 녹화할 영역을 선택합니다." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ 녹화 시작 전 준비 지연 시간을 설정합니다." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ 마우스 포인터를 숨기거나 나타낼 수 있습니다." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 녹화 저장 위치를 선택합니다." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ 쓸만한 키보드 바로 가기 키를 활용합니다." #~ msgid "Toggle Computer Sounds" #~ msgstr "컴퓨터 소리 전환" #~ msgid "_Delay" #~ msgstr "지연(_D)" #~ msgid "5 seconds" #~ msgstr "5초" #~ msgid "10 seconds" #~ msgstr "10초" #~ msgid "_Video Format" #~ msgstr "동영상 형식(_V)" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "다음 위치에 저장(_S)…" #~ msgid "Record Computer Sounds" #~ msgstr "컴퓨터 소리 녹음" #~ msgid "Record From Microphone" #~ msgstr "마이크로폰 소리 녹음" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "지연 취소" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "스크린 캐스트를 녹화했습니다!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "녹화분을 “{}”에 저장했습니다" #~ msgid "Open File" #~ msgstr "파일 열기" #~ msgid "Screencast Portal Request Error" #~ msgstr "스크린캐스트 포털 요청 오류" #~ msgid "Pipeline Build Error" #~ msgstr "파이프라인 빌드 오류" #~ msgid "Recording Error" #~ msgstr "녹화 오류" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "런타임 의존 요소와 It Doesn't Work 페이지(영문)를 확인하십시오." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "지스트리머 플러그인을 설치하지 않은 것 같습니다. 이미 설치했다면 쿠하 문제 보고 페이지" #~ "에 보고하십시오." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "저장 위치가 있는지 확인하십시오. 저장 위치가 있다면, 뭔가 잘못되었을 수 있" #~ "으므로 쿠하 문제 보고 " #~ "페이지에 보고하십시오." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "어떤 방해요소 없이 간단하고 번거로움 없게 화면을 찍으세요." Kooha-2.3.0/po/kooha.pot000066400000000000000000000226741457702140700150420ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\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" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "" #: src/window/mod.rs:522 msgid "Normal" msgstr "" #: src/window/mod.rs:523 msgid "Selection" msgstr "" Kooha-2.3.0/po/meson.build000066400000000000000000000002041457702140700153400ustar00rootroot00000000000000i18n.gettext(gettext_package, args: ['--keyword=gettext_f', '--keyword=ngettext_f:1,2',], preset: 'glib') Kooha-2.3.0/po/nb_NO.po000066400000000000000000000477431457702140700145540ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Allan Nordhøy , 2021, 2022, 2023. # Syver Stensholt , 2021. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-04-13 07:50+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" "Language: nb_NO\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 4.17-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Ta opp skjermen din på elegant vis" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Skjermopptak;Opptaker;Skjerm;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Ta opp skjermen din på en enkel og lettbeint måte uten forstyrrelser." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha er en enkel skjermopptaker med et minimalistisk grensesnitt. Du kan " "bare klikke opptaksknappen uten å måtte sette opp en masse innstillinger." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Kooha har blandt annet disse hovedfunksjonene:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Spill inn mikrofonlyd, skrivebordslyder, eller begge samtidig" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 #, fuzzy msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Støtte for WebM, MP4, GIT, og Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "🛠️ Sett opp lagringssted, pekersynlighet, rammetakt, og forsinkelse" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Eksperimentell maskinvarebasert koding" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Velg område" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Avbryt" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Ferdig" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Tilbakestill utvalg" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Generelt" #: data/resources/ui/preferences_dialog.ui:13 #, fuzzy msgid "Delay (Seconds)" msgstr "Forsinkelse (sekunder)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 #, fuzzy msgid "Recordings Folder" msgstr "Opptaksmappe" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 #, fuzzy msgid "Frame Rate" msgstr "Rammetakt" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Åpne menyen" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Vis innstillinger" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Vis snarveier" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Avslutt" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Tar opp …" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Veksle opptak" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Veksle pausemodus" #: data/resources/ui/shortcuts.ui:56 #, fuzzy msgid "Cancel Record" msgstr "Avbryt opptak" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Innstillinger" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Skrivebordslyd av/på" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Veksle mikrofon" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Veksle peker" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Hovedmeny" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Ta opp en skjerm eller et vindu" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Ta opp et opptak eller en skjerm" #: data/resources/ui/window.ui:86 #, fuzzy msgid "Enable Desktop Audio" msgstr "Skru på skrivebordslyd" #: data/resources/ui/window.ui:87 #, fuzzy msgid "Disable Desktop Audio" msgstr "Skru av skrivebordslyd" #: data/resources/ui/window.ui:95 #, fuzzy msgid "Enable Microphone" msgstr "Skru på mikrofonlyd" #: data/resources/ui/window.ui:96 #, fuzzy msgid "Disable Microphone" msgstr "Skru av mikrofonlyd" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Vis peker" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Skjul peker" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Start opptak" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Ta opp" #: data/resources/ui/window.ui:129 #, fuzzy msgid "Forget Previously Selected Video Sources" msgstr "Glem tidligere valgte videokilder" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Stopp opptak" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Stopp" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Ta pause i opptak" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Tar opp om…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Avbryt opptak" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Renser …" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Innstillinger" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Tastatursnarveier" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Om Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Allan Nordhøy" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Oversett" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Skjermdeling innspilt" #: src/application.rs:144 #, fuzzy msgid "Show in Files" msgstr "Vis i filbehandler" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 #, fuzzy msgid "Make sure that you have PulseAudio installed in your system." msgstr "Forsikre deg om at du har PulseAudio installert på systemet ditt." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Dette formatet er eksperimentelt og ustøttet." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Ingen" #: src/recording.rs:42 msgid "No active profile" msgstr "Ingen aktiv profil" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 #, fuzzy msgid "Failed to start recording" msgstr "Klarte ikke å starte opptak" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Kanskje et GStreamer-programtillegg ikke er installert?" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Forsikre deg om at lagringsstedet finnes og kan brukes." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "En feil oppstod under opptak" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 #, fuzzy msgid "Select Recordings Folder" msgstr "Velg opptaksmappe" #: src/window/mod.rs:79 #, fuzzy msgid "Failed to toggle pause" msgstr "Klarte ikke å skru av/på pause" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopier til utklippstavlen" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Kopiert til utklippstavlen" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Vis detaljert feilmelding" #: src/window/mod.rs:286 msgid "Help" msgstr "Hjelp" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Åpne innstillingene?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Tidligere valgt format kan ha vært utilgjengelig. Åpne innstillingene og " "velg et format for å fortsette opptak." #: src/window/mod.rs:305 msgid "Later" msgstr "Senere" #: src/window/mod.rs:307 msgid "Open" msgstr "Åpne" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "På pause" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Utvalg" #, fuzzy #~ msgid "Failed to start device monitor" #~ msgstr "Klarte ikke å starte enhetsmonitor" #, fuzzy #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Klarte ikke å koble til PulseAudio-nisse" #, fuzzy #~ msgid "No microphone source found" #~ msgstr "Fant ingen mikrofonkilde" #~ msgid "No desktop speaker source found" #~ msgstr "Fant ingen skrivebordshøyttalerkilde" #, fuzzy #~ msgid "Ok" #~ msgstr "OK" #, fuzzy #~ msgid "This frame rate may cause performance issues." #~ msgstr "Denne rammetakten kan føre til ytelsesproblemer." #~ msgid "approx." #~ msgstr "ca." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Velg en skjerm, et vindu, eller et skjermområde å ta opp" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Valg av flere kilder" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Klikk her for å vise videoen." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #, fuzzy #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VA-API VP8" #, fuzzy #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VA-API VP9" #, fuzzy #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VA-API H264" #, fuzzy #~ msgid "Failed to open file for writing" #~ msgstr "Klarte ikke å åpne fil for skriving" #~ msgid "Donate (Liberapay)" #~ msgstr "Doner (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Doner (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Sjekk ut {} for hjelp." #, fuzzy #~ msgid "Failed to open “{}” for writing" #~ msgstr "Klarte ikke å åpne «{}» for skriving" #~ msgid "_Cancel" #~ msgstr "_Avbryt" #~ msgid "_Select" #~ msgstr "_Velg" #~ msgid "No folder selected" #~ msgstr "Ingen mappe valgt" #~ msgid "Please choose a folder and try again." #~ msgstr "Velg en mappe og prøv igjen." #~ msgid "Cannot access “{}”" #~ msgstr "Får ikke tilgang til «{}»" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Velg en tilgjengelig mappe og prøv igjen." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Ta opp skjermen uten stress." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Spill inn mikrofon, skrivebordslyd, eller begge på en gang." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Støtte for WebM-, MP4-, GIF-, og MKV-formater." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Flere lydkilder kan velges." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Valgfri maskinvareakselerert koding" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Velg en skjerm eller et vindu å ta opp." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Opprett et utvalg for å fange et gitt område på skjermen din." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Angi en forsinkelse for å forberede deg før opptaket." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Skjul eller vis musepekeren." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Velg et sted der opptakene skal lagres." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Ta i bruk nyttige tastatursnarveier." #~ msgid "Toggle Computer Sounds" #~ msgstr "Veksle datamaskinslyder" #~ msgid "_Delay" #~ msgstr "_Forsinkelse" #~ msgid "5 seconds" #~ msgstr "5 sekunder" #~ msgid "10 seconds" #~ msgstr "10 sekunder" #~ msgid "_Video Format" #~ msgstr "_Videoformat" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Lagre i …" #~ msgid "Record Computer Sounds" #~ msgstr "Ta opp datalyd" #~ msgid "Record From Microphone" #~ msgstr "Ta opp fra mikrofon" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Avbryt forsinkelse" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Opphavsrett © 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Skjermopptak innspilt." #~ msgid "The recording has been saved in “{}”" #~ msgstr "Opptaket har blitt lagret i «{}»" #~ msgid "Open File" #~ msgstr "Åpne fil" #~ msgid "Recording Error" #~ msgstr "Opptaksfeil" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Forsikre deg om at du sjekker kjøretidsavhengighetene og Det virker ikke-siden." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Et GStreamer-programtillegg er kanskje ikke installert. Hvis dette ikke " #~ "er tilfelle kan du rapportere det på Kooha sin feilsporer." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Forsikre deg om at lagringsstedet finnes. Hvis det ikke gjør det og noe " #~ "gikk galt kan du rapportere det på Kooha sin feilsporer." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Ta opp skjermen din på en enkel og grei måte uten forstyrrelser." #, fuzzy #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Husk å sjekke kjøretidsavhengigheter og «Det virker ikke»-siden i Koohas " #~ "LESMEG-side. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Et GStreamer-programtillegg kan ikke installeres. Hvis ikke kan du " #~ "rapportere feilen til Koohas feilsporer. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Kunne ikke sende forespørsel til skjermdelingsportal" #~ msgid "Recording Failed" #~ msgstr "Opptak mislyktes" #, fuzzy #~ msgid "Pipeline Build Failed" #~ msgstr "Rørlagt bygg mislyktes" #~ msgid "Please choose an accessible location and retry." #~ msgstr "Velg en tilgjengelig plassering og prøv på nytt." #~ msgid "Select a Folder" #~ msgstr "Velg en mappe" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Velg et område på skjermen som skal tas opp." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Støtte for de frie formatene Matroska og WebM." #~ msgid "Open menu" #~ msgstr "Åpne meny" #~ msgid "Show keyboard shortcuts" #~ msgstr "Vis tastatursnarveier" #~ msgid "Toggle record" #~ msgstr "Start eller stopp opptak" #~ msgid "Cancel delay" #~ msgstr "Avbryt forsinkelse" #~ msgid "Toggle computer sounds" #~ msgstr "Slå av/på opptak av skrivebordslyd" #~ msgid "Toggle microphone" #~ msgstr "Slå av/på opptak av mikrofonen" #~ msgid "Toggle pointer" #~ msgstr "Slå av/på opptak av musepekeren" #~ msgid "Delay" #~ msgstr "Forsinkelse" #~ msgid "Video Format" #~ msgstr "Videoformat" #~ msgid "Save to…" #~ msgstr "Lagre til…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tastatursnarveier" #~ msgid "About Kooha" #~ msgstr "Om Kooha" #~ msgid "Select" #~ msgstr "Velg" #~ msgid "Toggle capture mode" #~ msgstr "Endre opptaksmodus" #~ msgid "Full Screen" #~ msgstr "Fullskjerm" #~ msgid "Processing" #~ msgstr "Behandler" #~ msgid "Save location not set" #~ msgstr "Lagringsplass er ikke valgt" #~ msgid "Recording cannot start" #~ msgstr "Kunne ikke starte opptak" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Lagringsplassen du valgte kan ha blitt slettet." #~ msgid "The recording has been saved in" #~ msgstr "Opptaket ble lagret i" #~ msgid "Record computer sounds" #~ msgstr "Ta opp skrivebordslyder" #~ msgid "Record from microphone" #~ msgstr "Ta opp fra mikrofonen" #~ msgid "Show pointer" #~ msgstr "Vis musepeker" #~ msgid "Elegantly record your screen " #~ msgstr "Ta opp skjermen din på elegant vis " Kooha-2.3.0/po/ne.po000066400000000000000000000372451457702140700141570ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Diggaj Upadhyay , 2022. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2022-05-17 03:17+0000\n" "Last-Translator: Diggaj Upadhyay \n" "Language-Team: Nepali \n" "Language: ne\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 4.13-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 #, fuzzy msgid "Kooha" msgstr "कोहा" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "सुन्दर रूपमा आफ्नो स्क्रिन रेकर्ड गर्नुहोस्" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "स्क्रिनकास्ट; रेकर्डर; स्क्रिन; भिडियो;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 #, fuzzy msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "आफ्नो स्क्रिनलाई सहज र सीधा तरिकाले विचलित नगरी खिच्नुहोस्।" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "कोहा को मुख्य विशेषताहरु निम्न समावेश छन्:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "सामान्य" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "मेनु खोल्नुहोस्" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "सर्टकटहरू देखाउनुहोस्" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "बाहिर निस्कनुहोस्" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "रेकर्डिङ" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "रेकर्ड टगल गर्नुहोस्" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "पज टगल गर्नुहोस्" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "सेटिङहरू" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "माइक्रोफोन टगल गर्नुहोस्" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "सूचक टगल गर्नुहोस्" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "मुख्य मेनु" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "मनिटर वा विन्डो क्याप्चर गर्नुहोस्" #: data/resources/ui/window.ui:66 #, fuzzy msgid "Capture a Selection of Screen" msgstr "स्क्रिनको चयन क्याप्चर गर्नुहोस्" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "सूचक देखाउनुहोस्" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "रेकर्ड" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "रोक्नुहोस्" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "रेकर्डिङ प्रक्रियामा…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "फ्लस गर्दै…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_कीबोर्ड सर्टकटहरू" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_कोहा को बारेमा" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "अनुवादक-क्रेडिट" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "केहि छैन" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 #, fuzzy msgid "Select Recordings Folder" msgstr "रेकर्डिङ फोल्डर चयन गर्नुहोस्" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "रोकियो" #: src/window/mod.rs:522 msgid "Normal" msgstr "सामान्य" #: src/window/mod.rs:523 msgid "Selection" msgstr "चयन" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 कुनै झन्झट बिना आफ्नो स्क्रिन क्याप्चर गर्नुहोस्।" #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ आफ्नो माइक्रोफोन, कम्प्युटर ध्वनि, वा दुबै एकै समयमा रेकर्ड गर्नुहोस्।" #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM, MP4, GIF, र MKV ढाँचाहरूको लागि समर्थन।" #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 बहु स्रोत चयन।" #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 वैकल्पिक हार्डवेयर एक्सेलेरेटेड एन्कोडिङ" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ रेकर्ड गर्न मनिटर वा विन्डो चयन गर्नुहोस्।" #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ आफ्नो स्क्रिनबाट निश्चित क्षेत्र क्याप्चर गर्न चयन सिर्जना गर्नुहोस्।" #, fuzzy #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ तपाईंले रेकर्डिङ सुरु गर्नु अघि तयारी गर्न ढिलाइ सेट गर्नुहोस्।" #, fuzzy #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️माउस सूचक लुकाउनुहोस् वा देखाउनुहोस्।" #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 आफ्नो रेकर्डिङको लागि बचत स्थान छान्नुहोस्।" #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ उपयोगी किबोर्ड सर्टकटहरू प्रयोग गर्नुहोस्।" #~ msgid "Toggle Computer Sounds" #~ msgstr "कम्प्युटर ध्वनि टगल गर्नुहोस्" #~ msgid "_Delay" #~ msgstr "_ढिला" #~ msgid "5 seconds" #~ msgstr "५ सेकेन्ड" #~ msgid "10 seconds" #~ msgstr "१० सेकेन्ड" #, fuzzy #~ msgid "_Video Format" #~ msgstr "_भिडियो ढाँचा" #~ msgid "MKV" #~ msgstr "MKV" #, fuzzy #~ msgid "_Save to…" #~ msgstr "_कहाँ बचत गर्न चयन गर्नुहोस्…" #~ msgid "Record Computer Sounds" #~ msgstr "कम्प्युटर ध्वनि रेकर्ड गर्नुहोस्" #~ msgid "Record From Microphone" #~ msgstr "माइक्रोफोनबाट रेकर्ड गर्नुहोस्" #~ msgid "Dave Patrick" #~ msgstr "डेभ प्याट्रिक" #, fuzzy #~ msgid "Cancel Delay" #~ msgstr "अन्तराल रद्द गर्नुहोस्" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "प्रतिलिपि अधिकार २०२१ डेभ प्याट्रिक" #~ msgid "Screencast Recorded!" #~ msgstr "स्क्रिनकास्ट रेकर्ड गरियो!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "रेकर्डिङ \"{}\" मा सुरक्षित गरिएको छ" #~ msgid "Open File" #~ msgstr "फाइल खोल्नुहोस्" #~ msgid "Screencast Portal Request Error" #~ msgstr "स्क्रिनकास्ट पोर्टल अनुरोध त्रुटि" #~ msgid "Pipeline Build Error" #~ msgstr "पाइपलाइन निर्माण त्रुटि" #~ msgid "Recording Error" #~ msgstr "रेकर्डिङ त्रुटि" #, fuzzy #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "रनटाइम निर्भरता र को लागि जाँच गर्न निश्चित गर्नुहोस्" Kooha-2.3.0/po/nl.po000066400000000000000000000601761457702140700141650ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Heimen Stoffels , 2021. # Heimen Stoffels , 2021, 2022. # Philip Goto , 2023, 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-25 07:01+0000\n" "Last-Translator: Philip Goto \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Maak elegante schermopnames" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;Opname;Scherm;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Maak op eenvoudige wijze opnames van je scherm, zonder enige vorm van " "afleiding." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha is een eenvoudige schermopname-app met een minimalistische vormgeving. " "Klik gewoon op de opnameknop zonder allerlei instellingen te moeten " "doorlopen." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Belangrijkste kenmerken van Kooha:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Neem op van je microfoon, computergeluiden of beide tegelijk" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Ondersteuning voor webm-, mp4-, gif- en mkv-formaten" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Selecteer een monitor of een deel van het scherm om op te nemen" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Stel de opslaglocatie, cursorzichtbaarheid, framesnelheid en vertraging in" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Hardware-versnelde encodering (experimenteel)" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Selecteer een gebied" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Annuleren" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Afronden" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Selectie herstellen" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Algemeen" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Wachttijd (in seconden)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Tijds­interval voordat de opname begint" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Opnamemap" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Bestemmings­map voor de opnamen" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formaat" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Framesnelheid" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Menu openen" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Voorkeuren openen" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Sneltoetsen tonen" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Afsluiten" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Opname" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Opname aan/uit" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Onderbreken/Hervatten" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Opname stoppen" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Instellingen" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Computergeluid aan/uit" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Microfoon aan/uit" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Aanwijzer tonen/verbergen" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Hoofdmenu" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Beeldscherm of venster vastleggen" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Schermselectie vastleggen" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Computergeluid inschakelen" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Computergeluid uitschakelen" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Microfoon inschakelen" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Microfoon uitschakelen" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Cursor tonen" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Cursor verbergen" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Opname starten" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Opnemen" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Eerder gekozen videobronnen vergeten" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Opname stoppen" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Stoppen" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Opname onderbreken" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "De opname wordt gestart over…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Opname stoppen" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Bezig met opruimen…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Voorkeuren" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Snel­toetsen" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "Over Kooh_a" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Philip Goto https://flipflop97.github.io/" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Doneren (trakteer me op een kopje koffie)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Meehelpen vertalen" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "De opname is afgerond" #: src/application.rs:144 msgid "Show in Files" msgstr "Tonen in bestanden" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Kan het standaard­audioapparaat niet vinden" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Zorg er voor dat PulseAudio geïnstalleerd is." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} uur" msgstr[1] "{time} uur" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} minuut" msgstr[1] "{time} minuten" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} seconde" msgstr[1] "{time} seconden" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Opname­map instellen mislukt" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Deze beeld­snelheid kan prestatie­problemen veroorzaken bij het geselecteerde " "formaat." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" "Let op: dit formaat is experimenteel en wordt niet officieel ondersteund." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Geen" #: src/recording.rs:42 msgid "No active profile" msgstr "Er is geen actief profiel" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "De opname kan niet worden gestart" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Bekijk {link} voor hulp." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Er ontbreekt mogelijk een GStreamer-plug-in." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Zorg er voor dat de opslaglocatie bestaat en toegankelijk is." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Er is een fout opgetreden tijdens de opname" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Kan niet schrijven naar ‘{path}’" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Kies de opnamemap" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Het onderbreken/hervatten is mislukt" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Er is momenteel een opname bezig. Als u onmiddellijk stopt, kan de opname " "mogelijk niet meer worden afgespeeld. Stop de opname voordat u stopt." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "Als u stopt, wordt de verwerking geannuleerd en kan de opname mogelijk niet " "meer worden afgespeeld." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "App afsluiten?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopiëren naar klembord" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Gekopieerd naar klembord" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Uitgebreide foutmelding tonen" #: src/window/mod.rs:286 msgid "Help" msgstr "Hulp" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Oké, begrepen" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Voorkeuren openen?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Het eerder gekozen formaat is mogelijk niet beschikbaar. Open de voorkeuren " "en kies een ander formaat." #: src/window/mod.rs:305 msgid "Later" msgstr "Later" #: src/window/mod.rs:307 msgid "Open" msgstr "Openen" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Er is een opname bezig" #: src/window/mod.rs:485 msgid "Paused" msgstr "Onderbroken" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normaal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Selectie" #~ msgid "Failed to start device monitor" #~ msgstr "De apparaatzoekdienst kan niet worden gestart" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "" #~ "Er kan geen verbinding worden gemaakt met de PulseAudio-achtergronddienst" #~ msgid "No microphone source found" #~ msgstr "Er is geen microfoon aangetroffen" #~ msgid "No desktop speaker source found" #~ msgstr "Er is geen luidspreker aangetroffen" #~ msgid "Ok" #~ msgstr "OK" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Let op: deze snelheid kan voor prestatieproblemen zorgen." #~ msgid "approx." #~ msgstr "ong." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Kies het beeldscherm, venster of schermgebied dat je wilt vastleggen" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Keuze uit meerdere bronnen" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Klik hier om de video te bekijken." #~ msgid "Failed to select saving location" #~ msgstr "Opslag­locatie selecteren mislukt" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Het bestand kan niet worden weggeschreven" #~ msgid "Failed to select folder" #~ msgstr "Map selecteren mislukt" #~ msgid "Donate (Liberapay)" #~ msgstr "Doneren (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Doneren (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Ga naar {} om de documentatie te bekijken." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Er kan niet worden weggeschreven naar “{}”" #~ msgid "_Cancel" #~ msgstr "_Annuleren" #~ msgid "_Select" #~ msgstr "_Selecteren" #~ msgid "No folder selected" #~ msgstr "Geen map gekozen" #~ msgid "Please choose a folder and try again." #~ msgstr "Kies een map en probeer het opnieuw." #~ msgid "Cannot access “{}”" #~ msgstr "Geen toegang tot ‘{}’" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Kies een toegankelijke locatie en probeer het opnieuw." #~ msgid "Enable Desktop Sounds" #~ msgstr "Computergeluiden afspelen" #~ msgid "Disable Desktop Sounds" #~ msgstr "Geen computergeluiden afspelen" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Maak eenvoudig opnames van je scherm." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Neem op van je microfoon, computergeluiden of beide tegelijk." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Ondersteuning voor webm-, mp4-, gif- en mkv-formaten." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Keuze uit meerdere bronnen." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Hardware-versnelde encodering (optioneel)" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Kies het beeldscherm dat je wilt vastleggen." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Selecteer een gebied op je scherm dat je wilt vastleggen." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Stel een wachttijd in zodat de opname iets later start." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Toon of verberg de cursor." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Kies zelf waar de opname moet worden opgeslagen." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Maak gebruik van handige sneltoetsen." #~ msgid "Toggle Computer Sounds" #~ msgstr "Computergeluiden aan/uit" #~ msgid "_Delay" #~ msgstr "Wachttij_d" #~ msgid "3 seconds" #~ msgstr "3 seconden" #~ msgid "5 seconds" #~ msgstr "5 seconden" #~ msgid "10 seconds" #~ msgstr "10 seconden" #~ msgid "_Video Format" #~ msgstr "_Videoformaat" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "Op_slaan in…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Er ontbreekt mogelijk een GStreamer-plug-in. Als deze geïnstalleerd is en " #~ "Kooha werkt niet goed, meld dit probleem dan op Kooha's issuepagina." #~ msgid "Record Computer Sounds" #~ msgstr "Computergeluiden opnemen" #~ msgid "Record From Microphone" #~ msgstr "Opnemen van microfoon" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Wachten afbreken" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021, Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "De screencast is opgenomen!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "De opname is opgeslagen in ‘{}’" #~ msgid "Open File" #~ msgstr "Bestand openen" #~ msgid "Screencast Portal Request Error" #~ msgstr "Foutmelding bij verzoek aan screencastportaal" #~ msgid "Pipeline Build Error" #~ msgstr "Pijplijn-bouwfout" #~ msgid "Recording Error" #~ msgstr "Opnamefout" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Controleer de afhankelijkheden en de It Doesn't Work-pagina." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Controleer of de opslaglocatie bestaat. Als dat zo is en de locatie ook " #~ "toegankelijk is, meld dit probleem dan op Kooha's issuepagina." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Zorg er voor dat de opslaglocatie bestaat. Als deze bestaat en Kooha " #~ "werkt niet goed, meld dit probleem dan op Kooha's issuepagina." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Mogelijk ontbreekt er een GStreamer-plug-in. Als dat niet zo is, meld dit " #~ "voorval dan op Kooha's " #~ "issuepagina." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Zorg er voor dat de opslaglocatie bestaat. Als dat zo is en het lukt nóg " #~ "niet, meld dit voorval dan op Kooha's issuepagina." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Maak een opname van je scherm op een makkelijke, duidelijke manier." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Controleer de software-afhankelijkheden en de pagina ‘Kooha werkt niet’ " #~ "in het leesmijbestand. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Er ontbreekt mogelijk een GStreamer-plug-in. Als dat niet het geval in, " #~ "meld dit probleem dan op Kooha's issuepagina. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Het screencastverzoek is mislukt" #~ msgid "Recording Failed" #~ msgstr "De opname is mislukt" #~ msgid "Pipeline Build Failed" #~ msgstr "Het bouwen van de pijplijn is mislukt" #~ msgid "Sorry! An error has occurred." #~ msgstr "Er is een fout opgetreden." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Kies een toegankelijke locatie en probeer het opnieuw." #~ msgid "The recording has been saved in {}" #~ msgstr "De opname is opgeslagen in ‘{}’" #~ msgid "Select a Folder" #~ msgstr "Kies een map" #~ msgid "Inaccessible location '{}'" #~ msgstr "Ontoegankelijke locatie: ‘{}’" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Selecteer een op te nemen gebied." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Ondersteuning voor de vrije Matroska- en WebM-formaten." #~ msgid "Open menu" #~ msgstr "Menu openen" #~ msgid "Show keyboard shortcuts" #~ msgstr "Sneltoetsen tonen" #~ msgid "Toggle record" #~ msgstr "Opname aan/uit" #~ msgid "Toggle record pause" #~ msgstr "Onderbreken aan/uit" #~ msgid "Cancel delay" #~ msgstr "Wachten afbreken" #~ msgid "Toggle computer sounds" #~ msgstr "Computergeluiden aan/uit" #~ msgid "Toggle microphone" #~ msgstr "Microfoon aan/uit" #~ msgid "Toggle pointer" #~ msgstr "Cursor aan/uit" #~ msgid "Delay" #~ msgstr "Wachttijd" #~ msgid "Video Format" #~ msgstr "Videoformaat" #~ msgid "Save to…" #~ msgstr "Opslaan in…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Sneltoetsen" #~ msgid "About Kooha" #~ msgstr "Over Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "Er is een fout opgetreden." #~ msgid "Videos" #~ msgstr "Video's" #~ msgid "Failed to create session." #~ msgstr "De sessie kan niet worden aangemaakt." #~ msgid "Failed to select sources." #~ msgstr "De bronnen kunnen niet worden geselecteerd." #~ msgid "Select" #~ msgstr "Kiezen" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Ontoegankelijke locatie: {directory}" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "De opname is opgeslagen in {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Ontoegankelijke locatie: {directory}" #~ msgid "Toggle capture mode" #~ msgstr "Opnamemodus wijzigen" #~ msgid "Full Screen" #~ msgstr "Beeldvullende modus" #~ msgid "Processing" #~ msgstr "Bezig met verwerken…" #~ msgid "Save location not set" #~ msgstr "Geen opslaglocatie ingesteld" #~ msgid "Recording cannot start" #~ msgstr "De opname kan niet worden gestart" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "De gekozen opslaglocatie is mogelijk verwijderd." #~ msgid "The recording has been saved in" #~ msgstr "De opname is opgeslagen in" #~ msgid "Record computer sounds" #~ msgstr "Computergeluiden opnemen" #~ msgid "Record from microphone" #~ msgstr "Microfoonopname" #~ msgid "Show pointer" #~ msgstr "Cursor tonen" #~ msgid "Elegantly record your screen " #~ msgstr "Elegenante schermopnamentoepassing " #~ msgid "🎥 Capture your screen without any hustle." #~ msgstr "🎥 Maak zonder gedoe een opname van je scherm." #~ msgid "Simple screen recorder" #~ msgstr "Eenvoudige schermopnametoepassing" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha is een eenvoudige schermopnametoepassing, geschreven in GTK. " #~ "Hiermee kun je je scherm opnemen, evenals audio van je microfoon of " #~ "werkomgeving." Kooha-2.3.0/po/oc.po000066400000000000000000000375221457702140700141540ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Quentin PAGÈS , 2021, 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-12-02 16:09+0000\n" "Last-Translator: Quentin PAGÈS \n" "Language-Team: Occitan \n" "Language: oc\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.3-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Enregistrar elegantament vòstre ecran" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "videografia;ecran;captura;enregistrar;vidèo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Capturatz l’ecran d’un biais intuitiu e dirèct sens cap de distraccion." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha es un enregistrador d’ecran simple amb una interfàcia minimalista. " "Podètz simplament clicar lo boton d’enregistrament sens aver de configurar " "un fum de paramètres." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Las caracteristicas principalas de Kooha son las seguentas :" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Enregistratz lo microfòn, l’àudio del burèu o los dos a l’encòp" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Compatibilitat amb los formats WebM, MP4, GIF, eMatroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Configuratz l’emplaçament d’enregistrament, la visibilitat del puntador, " "la frequéncia d’imatge e lo relambi" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Encodatge (experimental) amb acceleracion materiala" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Seleccionar la zòna" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Anullar" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Acabat" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Desfar la seleccion" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "General" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Relambi (en segondas)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Dossièr d'enregistrament" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Vidèo" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Frequéncia d'imatge" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Dobrir lo menú" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Afichar las preferéncias" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Afichar los acorchis" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Sortir" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Enregistrament" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Alternar enregistrament" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Alternar pausa" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Anullar l'enregistrament" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Paramètres" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Alternar l’àudio del burèu" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Alternar microfòn" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Alternar puntaire" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menú principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Capturar un monitor o una fenèstra" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Capturar una seleccion de l’ecran" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Activar l’àudio del burèu" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Desactivar l’àudio del burèu" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Activar lo microfòn" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Desactivar lo microfòn" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mostrar lo puntaire" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Rescondre lo puntador" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Aviar l'enregistrament" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Enregistrar" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Oblidar las fonts d’entradas de las vidèos precedentas" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Arrestar l'enregistrament" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Arrestar" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Metre en pausa l'enregistrament" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Enregistrament d’aquí…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Anullar l'enregistrament" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Purga…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Preferéncias" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Acorchis de clavièr" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_A prepaus de Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Quentin PAGÈS" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Far un don (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Traduire" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Captura vidèo salvada" #: src/application.rs:144 msgid "Show in Files" msgstr "Mostrar dins los fichièrs" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Asseguratz-vos que PulseAudio es installat sul sistèma." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Aqueste format es experimental e pas pres en carga." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Cap" #: src/recording.rs:42 msgid "No active profile" msgstr "Cap de perfil pas activat" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Fracàs de l’aviada de l’enregistrament" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Consultatz {link} per obténer d’ajuda." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Un empeuton GStreamer es benlèu pas installat." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Asseguratz-vos que l’emplaçament existís e es accessible." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Una error se’s producha pendent l’enregistrament" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Fracàs de la dubertura de « {path} » per escritura" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Seleccionar dossièr pels enregistraments" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Fracàs de la bascula en pausa" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Copiar al quichapapièrs" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Copiat al quichapapièrs" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Mostrar las errors detalhadas" #: src/window/mod.rs:286 msgid "Help" msgstr "Ajuda" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Dobrir las preferéncias ?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Lo format precedentament seleccionat es benlèu indisponible. Dorbissètz las " "preferéncias e seleccionatz un format per contunhar d’enregistrar." #: src/window/mod.rs:305 msgid "Later" msgstr "Mai tard" #: src/window/mod.rs:307 msgid "Open" msgstr "Dobrir" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "En pausa" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Seleccion" #~ msgid "Failed to start device monitor" #~ msgstr "Fracàs de l’aviada del monitor de periferic" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Fracàs de la connexion al demòni PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Cap de font pel microfòn pas trobada" #~ msgid "No desktop speaker source found" #~ msgstr "Cap de font pel nautparlaire del burèu pas trobada" #~ msgid "Ok" #~ msgstr "D'acòrdi" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Aquesta velocitat d’imatge pòt causar problèmas de performança." #~ msgid "approx." #~ msgstr "aprox." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Seleccionatz un ecran, una fenèstra o una part de l'ecran d’enregistrar" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Seleccion multipla d’entradas" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Clicatz aicí per veire la vidèo." #~ msgid "Failed to select saving location" #~ msgstr "Fracàs de la seleccion de l’emplaçament d’enregistrament" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Dubertura impossibla del fichièr per escriure" #~ msgid "_Cancel" #~ msgstr "_Anullar" #~ msgid "_Select" #~ msgstr "_Seleccionar" #~ msgid "Cannot access “{}”" #~ msgstr "Accès impossibla a « {} »" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Causissètz un emplaçament accessible e tornatz ensajar." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Capturatz l’ecran sens cap de dificultat." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Enregistratz lo microfòn, los sons de l’ordenador, o los dos al meteis " #~ "temps." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Compatibilitat amb los formats WebM, MP4, GIF, e MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Seleccion de multipla sorgas." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Encodatge materiala accelerat en opcion" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Seleccionar un monitor o una fenèstra d’enregistrar." #~ msgid "Toggle Computer Sounds" #~ msgstr "Alternar sons de l’ordenador" #~ msgid "_Delay" #~ msgstr "_Retard" #~ msgid "5 seconds" #~ msgstr "5 segondas" #~ msgid "10 seconds" #~ msgstr "10 segondas" #~ msgid "_Video Format" #~ msgstr "_Format vidèo" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Salvar en…" #~ msgid "Record Computer Sounds" #~ msgstr "Enregistrar los sons de l’ordenador" #~ msgid "Record From Microphone" #~ msgstr "Enregistrar lo son del microfòn" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Anullar lo retard" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Captura d’ecran enregistrada !" #~ msgid "The recording has been saved in “{}”" #~ msgstr "L’enregistrament es estat gardat dins « {} »" #~ msgid "Open File" #~ msgstr "Dobrir un fichièr" #~ msgid "Screencast Portal Request Error" #~ msgstr "Error de requèsta al portal de transmission de l’ecran" #~ msgid "Recording Error" #~ msgstr "Error d’enregistrament" Kooha-2.3.0/po/pl.po000066400000000000000000000455711457702140700141710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Radek Raczkowski , 2021. # Adam Hulewicz , 2021. # Radosław Korotkiewicz , 2022. # Carlod , 2022. # gnu-ewm , 2022. # David , 2023. # Eryk Michalak , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-07-24 09:06+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.0-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Elegancko nagrywaj swój ekran" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Nagrywanie ekranu;Nagrywarka;Ekran;Wideo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Przechwytuj swój ekran w intuicyjny i prosty sposób bez rozpraszania uwagi." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha jest prostą nagrywarką ekranu z minimalistycznym interfejsem. Możesz " "po prostu wcisnąć przycisk nagrywania bez konieczności konfigurowania " "mnóstwa ustawień." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Główne funkcjonalności Kooha to:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Nagrywaj dźwięk z mikrofonu, urządzenia, albo obu na raz" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Obsługuje WebM, MP4, GIF i formaty Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Edytowalne lokalizacje zapisu, widoczności kursora, częstotliwości, oraz " "opóźnienia" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Eksperymentalne kodowanie z akceleracją sprzętową" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Wybierz powierzchnię" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Anuluj" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Gotowe" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Anuluj Wybór" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Ogólne" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Opóźnienie (w sekundach)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Folder Nagrań" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Nagranie" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Częstotliwość Wyświetlania Klatek" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Otwórz menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Pokaż Preferencje" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Pokaż skróty klawiszowe" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Zakończ" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Nagrywanie" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Przełącz nagrywanie" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Przełącz pauzę" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Anuluj nagrywanie" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Ustawienia" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Przełącz Wyjście Audio" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Przełącz mikrofon" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Przełącz wskaźnik" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menu główne" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Przechwytuj ekran lub okno" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Przechwytuj zaznaczenie ekranu" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Włącz Dźwięk Urządzenia" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Wyłącz Dźwięk Urządzenia" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Włącz mikrofon" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Wyłącz mikrofon" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Pokaż wskaźnik" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Ukryj myszkę" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Rozpocznij nagrywanie" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Nagrywaj" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Zapomnij o wcześniej wybranych źródłach wideo" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Zatrzymaj nagrywanie" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Zatrzymaj" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Wstrzymaj nagrywanie" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Nagrywanie za…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Anuluj Nagrywanie" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Czyszczenie…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Preferencje" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_O Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "Radek Raczkowski, Adam Hulewicz, Radosław Korotkiewicz, David Troianovskyi" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Przetłumacz" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Nagranie ekranu zostało nagrane pomyślnie" #: src/application.rs:144 msgid "Show in Files" msgstr "Pokaż w plikach" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Upewnij się, że w systemie jest zainstalowane PulseAudio." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Ten format jest eksperymentalny i nie jest wspierany." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Brak" #: src/recording.rs:42 msgid "No active profile" msgstr "Brak aktywnego profilu" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Nie udało się rozpocząć nagrywania" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Plugin GStreamer może nie być zainstalowany." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Upewnij się, że lokalizacja zapisu istnieje i jest dostępna." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Wystąpił błąd podczas nagrywania" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Wybierz Katalog Nagrań" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Nie udało się włączyć pauzy" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Skopiuj do schowka" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Skopiowano do schowka" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Pokaż szczegóły błędu" #: src/window/mod.rs:286 msgid "Help" msgstr "Pomoc" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Otworzyć Preferencje?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Poprzednio wybrany format może być niedostępny. Otwórz ustawienia " "preferencji i wybierz format przed kontynuowaniem." #: src/window/mod.rs:305 msgid "Later" msgstr "Później" #: src/window/mod.rs:307 msgid "Open" msgstr "Otwarto" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pauza" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normalny" #: src/window/mod.rs:523 msgid "Selection" msgstr "Zaznaczenie" #~ msgid "Failed to start device monitor" #~ msgstr "Nie udało się uruchomić monitorowania urządzenia" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Nie udało się połączyć z usługą PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Nie znaleziono źródła mikrofonu" #~ msgid "No desktop speaker source found" #~ msgstr "Nie znaleziono żadnych źródeł wyjścia audio" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "" #~ "Wybór tej częstotliwości nagrywania może powodować problemy z wydajnością." #~ msgid "approx." #~ msgstr "przewidywane." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Wybierz monitor, okno, albo część ekranu, który będzie nagrywany" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Możliwość wyboru wielu źródeł" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Kliknij tutaj, aby obejrzeć film." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Nie udało się otworzyć pliku do zapisania" #~ msgid "Donate (Liberapay)" #~ msgstr "Przekaż darowiznę (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Przekaż darowiznę (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Sprawdź {}, aby uzyskać pomoc." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Nie udało się otworzyć \"{}\" do zapisu" #~ msgid "_Cancel" #~ msgstr "_Anuluj" #~ msgid "_Select" #~ msgstr "_Wybierz" #~ msgid "No folder selected" #~ msgstr "Nie wybrano żadnego folderu" #~ msgid "Please choose a folder and try again." #~ msgstr "Proszę wybrać folder i spróbować ponownie." #~ msgid "Cannot access “{}”" #~ msgstr "Brak dostępu do “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Proszę wybrać dostępną lokalizację i spróbować ponownie." #~ msgid "Enable Desktop Sounds" #~ msgstr "Nagrywaj dźwięki pulpitu" #~ msgid "Disable Desktop Sounds" #~ msgstr "Nie nagrywaj dźwięków pulpitu" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Przechwytywanie twojego ekranu bez żadnych zmartwień." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Nagrywanie dźwięku z mikrofonu, dźwięków z komputera lub obu " #~ "jednocześnie." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Wsparcie dla formatów WebM, MP4 , GIF i MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Wybór wielu źródeł." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Opcjonalne wykorzystanie akceleracji sprzętowej" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Możliwość wyboru monitora lub okna do nagrania." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Możliwość nagrywania wybranej zaznaczeniem części ekranu." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "" #~ "⏲️ Możliwość ustawienia opóźnienia, aby przygotować się przed rozpoczęciem " #~ "nagrywania." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Pokazuje lub ukrywa wskaźnik myszy." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Wybór miejsca docelowego dla nagrania." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Wykorzystuj pomocne skróty klawiszowe." #~ msgid "Toggle Computer Sounds" #~ msgstr "Przełącz dźwięki komputera" #~ msgid "_Delay" #~ msgstr "_Opóźnienie" #~ msgid "3 seconds" #~ msgstr "3 sekundy" #~ msgid "5 seconds" #~ msgstr "5 sekund" #~ msgid "10 seconds" #~ msgstr "10 sekund" #~ msgid "_Video Format" #~ msgstr "_Format Wideo" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Zapisz do…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Dodatek GStreamer może nie być zainstalowany. Jeżeli jest on " #~ "zainstalowany, a nadal nie działa poprawnie, proszę zgłosić to na stronie problemów Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Nagrywaj dźwięk z komputera" #~ msgid "Record From Microphone" #~ msgstr "Nagrywaj dźwięk z mikrofonu" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Anuluj opóźnienie" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Prawa autorskie 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Ukończono nagranie!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Nagranie zostało zapisane w “{}”" #~ msgid "Open File" #~ msgstr "Otwórz plik" #~ msgid "Screencast Portal Request Error" #~ msgstr "Błąd żądania Screencast Portal" #~ msgid "Pipeline Build Error" #~ msgstr "Błąd w budowie Pipeline" #~ msgid "Recording Error" #~ msgstr "Błąd nagrywania" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Upewnij się, aby sprawdzić zależności uruchomieniowe oraz stronę To nie " #~ "działa." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Upewnij się, że lokalizacja zapisu istnieje lub jest dostępna. Jeśli " #~ "rzeczywiście istnieje lub jest dostępna, coś poszło nie tak, proszę " #~ "zgłosić to na stronie " #~ "problemów Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Upewnij się, że lokalizacja zapisu istnieje. Jeżeli istnieje, to coś " #~ "poszło nie tak, proszę zgłosić to na stronie problemów Kooha." Kooha-2.3.0/po/pt.po000066400000000000000000000521521457702140700141720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # telmo bruno silva seabra , 2021. # ssantos , 2021, 2022, 2023. # Boud Knight , 2021. # Juliano de Souza Camargo , 2021. # Laura Vasconcelos Pereira Felippe , 2022. # Danilo Alfredo Vieira , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Grave o seu ecrã com estilo" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Captura de Tela;Gravador;Tela;Vídeo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Capture sua tela de forma intuitiva e direta, sem distrações." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha é um gravador de tela simples com uma interface minimalista. Basta " "clicar no botão de gravação sem ter de configurar um monte de definições." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "As principais características da Kooha incluem as seguintes:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Grave microfone, áudio da área de trabalho, ou ambos ao mesmo tempo" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Suporte para WebM, MP4, GIF e formatos Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Possibilidade de configurar local de salvamento, visibilidade do rato, " "taxa de quadros e atraso" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Codificação de aceleração de hardware experimental" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Selecionar área" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Cancelar" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Concluído" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Reiniciar seleção" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Geral" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Atraso (Segundos)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Pasta de Gravações" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Vídeo" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formato" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Taxa de quadros" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Abrir Menu Principal" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Mostrar preferências" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Mostrar atalhos" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Desistir" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Gravando" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Alternar o botão de gravação" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Alternar o botão de pausar" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Cancelar a gravação" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Configurações" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Alternar áudio da área de trabalho" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Alternar microfone" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Alternar ponteiro" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menu Principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Capturar um Monitor ou Janela" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Capturar uma Seleção da ecrã" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Ativar áudio da área de trabalho" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Desativar áudio da área de trabalho" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Ativar microfone" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Desativar microfone" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mostrar ponteiro" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Ocultar ponteiro" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Iniciar gravação" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Gravar" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Esquecer fontes de vídeo selecionadas anteriormente" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Parar a gravação" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Parar" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pausar a gravação" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Gravando em…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Cancelar gravação" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Em andamento…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "Preferências" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "Atalhos do teclado" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "Acerca do Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "créditos do Tradutor" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Doe (compre um café para mim)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Traduzir" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Gravação concluída" #: src/application.rs:144 msgid "Show in Files" msgstr "Mostrar nos Ficheiros" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Certifique-se de que tem o PulseAudio instalado no seu sistema." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Esse formato é experimental e não suportado." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Nenhum" #: src/recording.rs:42 msgid "No active profile" msgstr "Sem perfil ativo" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Falha ao iniciar gravação" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Confira {link} para obter ajuda." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Um plugin GStreamer pode não estar instalado." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Certifique-se de que o local de salvamento existe e é acessível." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Um erro ocorreu durante a gravação" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Falha ao abrir “{path}” para escrita" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Selecione pasta de gravações" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Falha ao alternar pausa" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Copiado para a área de transferência" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Mostrar relatório de erro" #: src/window/mod.rs:286 msgid "Help" msgstr "Ajuda" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "OK, entendi" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Abrir Preferências?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "O formato selecionado anteriormente pode estar indisponível. Abra o menu de " "preferências e selecione um formato para continuar a gravação." #: src/window/mod.rs:305 msgid "Later" msgstr "Mais tarde" #: src/window/mod.rs:307 msgid "Open" msgstr "Abrir" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pausado" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Seleção" #~ msgid "Failed to start device monitor" #~ msgstr "Falha ao iniciar o monitor do aparelho" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Falha ao conectar-se com o daemon do PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Nenhum microfone foi encontrado" #~ msgid "No desktop speaker source found" #~ msgstr "Nenhuma fonte de alto-falante da área de trabalho encontrada" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Essa taxa de quadros pode causar problemas de performance." #~ msgid "approx." #~ msgstr "aproxim." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Selecione um monitor, uma janela ou uma porção do ecrã para gravar" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Seleção de múltiplas fontes" #~ msgid "Dave Patrick Caberto" #~ msgstr "Danilo Alfredo Vieira" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2023 Danilo Alfredo Vieira" #~ msgid "Click here to view the video." #~ msgstr "Clique aqui para ver o vídeo." #~ msgid "Failed to select saving location" #~ msgstr "Falha ao selecionar o local para salvar" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Falha ao abrir ficheiro para escrita" #~ msgid "Donate (Liberapay)" #~ msgstr "Doar (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Doar (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Verifique {} para receber ajuda." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Falha ao abrir “{}” para escrita" #~ msgid "_Cancel" #~ msgstr "_Cancelar" #~ msgid "_Select" #~ msgstr "_Selecionar" #~ msgid "No folder selected" #~ msgstr "Nenhuma pasta selecionada" #~ msgid "Please choose a folder and try again." #~ msgstr "Por favor, escolha uma pasta e tente novamente." #~ msgid "Cannot access “{}”" #~ msgstr "Não foi possível acessar “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Por favor, escolha um local acessível e tente novamente." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Capture o seu ecrã sem qualquer problema." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Grave o seu microfone, sons do computador ou ambos ao mesmo tempo." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Suporte dos formatos de WebM, MP4, GIF e MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "Seleção de múltiplas fontes." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Codificação acelerada opcional via hardware" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Seleção de monitor ou janela para gravar." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Escolha uma secção para capturar determinada área do seu ecrã." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Defina o atraso para se preparar antes de iniciar a gravação." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Oculte ou exiba o ponteiro do mouse." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Escolha um local para gravar a gravação." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Utilize atalhos de teclado úteis." #~ msgid "Toggle Computer Sounds" #~ msgstr "Alternar sons do computador" #~ msgid "_Delay" #~ msgstr "A_traso" #~ msgid "5 seconds" #~ msgstr "5 segundos" #~ msgid "10 seconds" #~ msgstr "10 segundos" #~ msgid "_Video Format" #~ msgstr "Formato de _vídeo" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Gravar em…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Provavelmente o plugin do GStreamer não está instalado. Se estiver " #~ "instalado, mas não funcionar corretamente, por favor informe no site do Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Gravar Sons do Computador" #~ msgid "Record From Microphone" #~ msgstr "Gravar do Microfone" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Cancelar Atraso" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Gravação de ecrã gravada!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "A gravação foi salva em “{}”" #~ msgid "Open File" #~ msgstr "Abrir ficheiro" #~ msgid "Screencast Portal Request Error" #~ msgstr "Erro ao solicitar portal de gravação" #~ msgid "Pipeline Build Error" #~ msgstr "Falha durante a construção do Pipeline" #~ msgid "Recording Error" #~ msgstr "Falha ao gravar" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Certifique-se de verificar as dependências de tempo de execução e visite " #~ "o site Não " #~ "está funcionando." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Certifique-se de que o local em que você que salvar existe ou está " #~ "acessível. Se ele realmente existe ou é acessível, algo deu errado, por " #~ "favor, informe o erro na página de problemas do Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Certifique-se de que o local para gravar está válido. Se ele de fato " #~ "existir, alguma coisa está errada, por favor informe no site do Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Grave o seu ecrã de forma simples e, fácil e sem distrações." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Por favor escolha um local acessível e tente novamente." #~ msgid "Select a Folder" #~ msgstr "Selecione uma Pasta" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Selecione uma área da ecrã para gravar." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Suporte para os formatos gratuitos Matroska e WebM." #~ msgid "Open menu" #~ msgstr "Abrir menu" #~ msgid "Show keyboard shortcuts" #~ msgstr "Mostrar atalhos de teclado" #~ msgid "Toggle record" #~ msgstr "Mudar gravação" #~ msgid "Cancel delay" #~ msgstr "Cancelar Atraso" #~ msgid "Toggle computer sounds" #~ msgstr "Alterar sons de computador" #~ msgid "Toggle microphone" #~ msgstr "Alterar microfone" #~ msgid "Toggle pointer" #~ msgstr "Alterar ponteiro" #~ msgid "Delay" #~ msgstr "Atraso" #~ msgid "Video Format" #~ msgstr "Formato de Vídeo" #~ msgid "Save to…" #~ msgstr "Salvar para …" #~ msgid "Keyboard Shortcuts" #~ msgstr "Atalhos de teclado" #~ msgid "About Kooha" #~ msgstr "Sobre o Kooha" #~ msgid "Select" #~ msgstr "Selecione" #~ msgid "Toggle capture mode" #~ msgstr "Alterar modo de captura" #~ msgid "Full Screen" #~ msgstr "Ecrã cheio" #~ msgid "Processing" #~ msgstr "Em processamento" #~ msgid "Save location not set" #~ msgstr "Local de salvamento não definido" #~ msgid "Recording cannot start" #~ msgstr "Gravação não pode iniciar" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "O local que selecionou pode ter sido deletado." #~ msgid "The recording has been saved in" #~ msgstr "A gravação foi gravada em" #~ msgid "Record computer sounds" #~ msgstr "Gravar sons do computador" #~ msgid "Record from microphone" #~ msgstr "Gravar som do microfone" #~ msgid "Show pointer" #~ msgstr "Mostrar ponteiro" #~ msgid "Simple screen recorder" #~ msgstr "Gravador de ecrã simples" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha é um simples gravador de ecrã construído em GTK. Ele permite gravar " #~ "o seu ecrã e também o seu áudio do microfone ou da área de trabalho." Kooha-2.3.0/po/pt_BR.po000066400000000000000000000545121457702140700145570ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Vitor Sabino Cardoso da SIlva , 2021, 2022. # J. Lavoie , 2021. # Dave Patrick , 2021. # inkhorn , 2021. # André L. Alvares , 2022. # Império Linux , 2023. # Tiago Lucas Flach , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Portuguese (Brazil) \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Grave sua tela com elegância" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;Gravação da Tela;Gravador;Tela;Vídeo;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Capture sua tela de forma intuitiva e direta, sem distrações." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha é um gravador de tela simples e com interface minimalista. Apenas " "clique no botão de gravação e você não precisa fazer mais nada." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Os principais recursos do Kooha incluem:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Grave microfone, áudio da área de trabalho, ou ambos ao mesmo tempo" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Suporte para WebM, MP4, GIF e formatos Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Possibilidade de configurar local de salvamento, visibilidade do mouse, " "taxa de quadros e atraso" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Codificação de aceleração de hardware experimental" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Selecionar Área" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Cancelar" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Concluído" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Reiniciar seleção" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Geral" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Atraso (Segundos)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Pasta de Gravações" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Vídeo" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formato" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Taxa de quadros" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Abrir menu" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Mostrar preferências" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Mostrar atalhos" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Sair" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Gravando" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Alternar o botão de gravação" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Alternar o botão de pausar" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Cancelar Gravação" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Configurações" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Alternar áudio da área de trabalho" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Alternar microfone" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Alternar ponteiro" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Menu principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Capturar um monitor ou janela" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Capturar uma área da tela" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Ativar áudio da área de trabalho" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Desativar áudio da área de trabalho" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Ativar microfone" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Desativar microfone" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Mostrar ponteiro" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Ocultar ponteiro" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Iniciar gravação" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Gravar" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Esquecer fontes de vídeo selecionadas anteriormente" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Parar gravação" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Parar" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pausar gravação" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Gravando em…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Cancelar Gravação" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Em andamento…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Preferências" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de teclado" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Sobre o Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Vitor Cardoso, Tiago Lucas Flach, inkhorn" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Doe (Me Compre Um Café)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Traduzir" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Gravação concluída" #: src/application.rs:144 msgid "Show in Files" msgstr "Mostrar nos Arquivos" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Certifique-se de que você tem o PulseAudio instalado no seu sistema." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Esse formato é experimental e não suportado." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Nenhum" #: src/recording.rs:42 msgid "No active profile" msgstr "Sem perfil ativo" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Falha ao iniciar gravação" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Confira {link} para obter ajuda." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Um plugin GStreamer pode não estar instalado." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Certifique-se de que o local de salvamento existe e é acessível." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Um erro ocorreu durante a gravação" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Falha ao abrir “{path}” para escrita" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Selecione a pasta de gravações" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Falha ao alternar pausa" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Copiado para a área de transferência" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Mostrar relatório de erro" #: src/window/mod.rs:286 msgid "Help" msgstr "Ajuda" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "OK, entendi" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Abrir Preferências?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "O formato selecionado anteriormente pode estar indisponível. Abra o menu de " "preferências e selecione um formato para continuar a gravação." #: src/window/mod.rs:305 msgid "Later" msgstr "Mais tarde" #: src/window/mod.rs:307 msgid "Open" msgstr "Abrir" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pausado" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Seleção" #~ msgid "Failed to start device monitor" #~ msgstr "Falha ao iniciar o monitor do dispositivo" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Falha ao conectar-se com o daemon do PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Nenhum microfone foi encontrado" #~ msgid "No desktop speaker source found" #~ msgstr "Nenhum alto-falante de desktop encontrado." #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Essa taxa de quadros pode causar problemas de performance." #~ msgid "approx." #~ msgstr "aproxim." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ Selecione um monitor, uma janela ou uma porção da tela para gravar" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Seleção de múltiplas fontes" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Clique aqui para ver o vídeo." #~ msgid "Failed to select saving location" #~ msgstr "Falha ao selecionar o local para salvar" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Falha ao abrir arquivo para escrita" #~ msgid "Donate (Liberapay)" #~ msgstr "Doar (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Doar (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Verifique {} para receber ajuda." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Falha ao abrir “{}” para escrita" #~ msgid "_Cancel" #~ msgstr "_Cancelar" #~ msgid "_Select" #~ msgstr "_Selecionar" #~ msgid "No folder selected" #~ msgstr "Nenhuma pasta selecionada" #~ msgid "Please choose a folder and try again." #~ msgstr "Por favor, escolha uma pasta e tente novamente." #~ msgid "Cannot access “{}”" #~ msgstr "Não foi possível acessar “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Por favor, escolha um local acessível e tente novamente." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Captura da sua tela sem complicações." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Gravação via microfone, sons do computador ou ambos ao mesmo tempo." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Suporte aos formatos de WebM, MP4, GIF e MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Seleção de fontes múltiplas." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Codificação acelerada via hardware opcional" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Selecione um monitor ou janela para gravar." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Escolha uma seção para capturar determinada área da sua tela." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Configure o delay para preparar-se antes de iniciar a gravação." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️Ocultar ou mostrar o ponteiro do mouse." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Escolha um local para salvar sua gravação." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Utilize atalhos de teclado úteis." #~ msgid "Toggle Computer Sounds" #~ msgstr "Alternar sons do computador" #~ msgid "_Delay" #~ msgstr "Adiamento" #~ msgid "5 seconds" #~ msgstr "5 segundos" #~ msgid "10 seconds" #~ msgstr "10 segundos" #~ msgid "_Video Format" #~ msgstr "_Formato de Vídeo" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Salvar em…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Provavelmente o plugin do GStreamer não está instalado. Se estiver " #~ "instalado, mas não funcionar corretamente, por favor informe no site do Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Gravar sons do computador" #~ msgid "Record From Microphone" #~ msgstr "Gravar via microfone" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Cancelar delay" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Direitos autorais 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Captura da tela concluída!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "A gravação foi salva em “{}”" #~ msgid "Open File" #~ msgstr "Abrir arquivo" #~ msgid "Screencast Portal Request Error" #~ msgstr "Erro ao solicitar portal de gravação" #~ msgid "Pipeline Build Error" #~ msgstr "Falha durante a construção do Pipeline" #~ msgid "Recording Error" #~ msgstr "Falha ao gravar" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Certifique-se de verificar as dependências de tempo de execução e visite " #~ "o site Não " #~ "está funcionando." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Verifique se o caminho especificado para salvamento existe ou está " #~ "acessível. Se estiver, algo não ocorreu como esperado, por favor reporte " #~ "à Página de Erros do " #~ "Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Certifique-se de que o local para salvar está válido. Se ele de fato " #~ "existir, alguma coisa está errada, por favor informe no site do Kooha." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "O plugin do GStreamer pode não estar instalado. Caso contrário, favor " #~ "relate o problema no Githubdo Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Certifique-se de que o caminho para salvar exista. Caso contrário, por " #~ "favor relate o problema no Github do Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Capture sua tela de maneira direta e fácil, sem distrações." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Por favor escolha um local acessível e tente novamente." #~ msgid "Select a Folder" #~ msgstr "Selecione uma Pasta" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Selecione uma área da tela para gravar." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Suporte para os formatos gratuitos Matroska e WebM." #~ msgid "Open menu" #~ msgstr "Abrir menu" #~ msgid "Show keyboard shortcuts" #~ msgstr "Mostrar atalhos do teclado" #~ msgid "Toggle record" #~ msgstr "Alternar gravação" #~ msgid "Toggle record pause" #~ msgstr "Alternar pausa de gravação" #~ msgid "Cancel delay" #~ msgstr "Cancelar atraso" #~ msgid "Toggle computer sounds" #~ msgstr "Alternar sons do computador" #~ msgid "Toggle microphone" #~ msgstr "Alternar microfone" #~ msgid "Toggle pointer" #~ msgstr "Alternar mouse" #~ msgid "Delay" #~ msgstr "Atraso" #~ msgid "Video Format" #~ msgstr "Formato de Vídeo" #~ msgid "Save to…" #~ msgstr "Salvar em…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Atalhos do Teclado" #~ msgid "About Kooha" #~ msgstr "Sobre o Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "Desculpe! Ocorreu um erro." #~ msgid "Videos" #~ msgstr "Vídeos" #~ msgid "Select" #~ msgstr "Selecione" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "A gravação foi salva em {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Local inacessível '{directory}'" #~ msgid "Toggle capture mode" #~ msgstr "Alternar modo de captura" #~ msgid "Full Screen" #~ msgstr "Tela Cheia" #~ msgid "Processing" #~ msgstr "Processando" #~ msgid "Save location not set" #~ msgstr "Local de salvamento não definido" #~ msgid "Recording cannot start" #~ msgstr "Gravação não pode iniciar" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "O local que você selecionou pode ter sido deletado." #~ msgid "The recording has been saved in" #~ msgstr "A gravação foi gravada em" #~ msgid "Record computer sounds" #~ msgstr "Gravar sons do computador" #~ msgid "Record from microphone" #~ msgstr "Gravar som do microfone" #~ msgid "Show pointer" #~ msgstr "Mostrar ponteiro" #~ msgid "Elegantly record your screen " #~ msgstr "Grave sua tela elegantemente " #~ msgid "Simple screen recorder" #~ msgstr "Gravador de Tela Simples" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha é um simples gravador de tela feito com GTK. Ele permite que você " #~ "grave sua tela e também o aúdio do seu microfone ou desktop." Kooha-2.3.0/po/ro.po000066400000000000000000000233641457702140700141720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # C0sM1n , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-10-22 18:03+0000\n" "Last-Translator: C0sM1n \n" "Language-Team: Romanian \n" "Language: ro\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==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" "X-Generator: Weblate 5.1\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Renunță" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Închide programul" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Meniul principal" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Preferințe" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "Scurtături _tastatură" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 #, fuzzy msgid "translator-credits" msgstr "Danny3" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "" #: src/window/mod.rs:522 msgid "Normal" msgstr "" #: src/window/mod.rs:523 msgid "Selection" msgstr "" #~ msgid "Dave Patrick Caberto" #~ msgstr "David Patrick Caberto" Kooha-2.3.0/po/ru.po000066400000000000000000000644761457702140700142110ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Artem , 2021. # Dzmitry Neviadomski , 2021. # Artem , 2021. # Noel Fritz , 2021. # MrWooltrest , 2022. # Alex , 2022. # Cherro59 , 2022. # Feodor Rusanov , 2022. # VBB , 2022. # Daudix UFO , 2022. # Vik , 2022. # Vik , 2022. # Сергей , 2023, 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-26 09:02+0000\n" "Last-Translator: Сергей \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Записывайте экран элегантно" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Скринкаст;Запись;Экран;Видео;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Захватывайте свой экран интуитивным и простым способом без отвлечения." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha — это простая программа для записи экрана с минималистичным " "интерфейсом. Вы можете просто нажать кнопку записи без необходимости " "настраивать кучу параметров." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Основные функции Kooha включают:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Запись с микрофона, компьютера или все сразу" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Поддержка форматов WebM, MP4, GIF и Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Выбор для записи всего экрана или только его части" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Настройка места сохранения, видимости курсора, частоты кадров и задержки" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Экспериментальное кодирование с аппаратным ускорением" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Выберите область" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Отменить" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Готово" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Сбросить выбор" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Основное" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Задержка (сек.)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Промежуток времени до начала записи" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Папка с записями" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Папка назначения для сохранения записей" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Видео" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Формат" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Частота кадров" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Открыть меню" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Показать параметры" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Показать комбинации клавиш" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Выход" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Запись" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Вкл./Выкл. запись" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Вкл./Выкл. паузу" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Отменить запись" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Настройки" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Вкл./Выкл. звук компьютера" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Вкл./Выкл. микрофон" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Вкл./Выкл. курсор" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Главное меню" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Запись монитора или окна" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Запись области экрана" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Включить звук компьютера" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Выключить звук компьютера" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Включить микрофон" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Выключить микрофон" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Показать курсор" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Скрыть курсор" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Начать запись" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Запись" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Забыть ранее выбранные источники видео" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Остановить запись" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Остановить" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Приостановить запись" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Запись через…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Отменить запись" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Очистка…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Параметры" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_О Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "Ковалев Артем, Давид Лапшин, ViktorOn <https://github.com/viktoron>" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Пожертвовать (Купите мне кофе)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Перевести" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Скринкаст записан" #: src/application.rs:144 msgid "Show in Files" msgstr "Показать в файлах" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Не удалось найти аудиоустройство, установленное по умолчанию" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Убедитесь, что в вашей системе установлен PulseAudio." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} час" msgstr[1] "{time} часа" msgstr[2] "{time} часов" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} минута" msgstr[1] "{time} минуты" msgstr[2] "{time} минут" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} секунда" msgstr[1] "{time} секунды" msgstr[2] "{time} секунд" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Не удалось установить папку для записей" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Такая частота кадров может вызвать проблемы с производительностью для " "выбранного формата." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Этот формат является экспериментальным и не поддерживается." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Нет" #: src/recording.rs:42 msgid "No active profile" msgstr "Нет активного профиля" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Не удалось начать запись" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Для получения помощи посетите {link}." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Плагин GStreamer, возможно, не установлен." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Убедитесь, что место сохранения существует и доступно." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Во время записи произошла ошибка" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Не удалось открыть «{path}» для записи" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Выберите папку для записей" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Не удалось переключить паузу" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "В настоящее время идет запись. Немедленный выход может привести к тому, что " "запись окажется недоступной для воспроизведения. Пожалуйста, прежде чем " "выйти, остановите запись." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "При выходе обработка будет отменена, и запись может оказаться недоступной " "для воспроизведения." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Выйти из приложения?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Скопировать в буфер обмена" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Скопировано в буфер обмена" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Показать подробности ошибки" #: src/window/mod.rs:286 msgid "Help" msgstr "Справка" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Хорошо, всё понятно" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Открыть настройки?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Выбранный ранее формат, возможно, недоступен. Откройте настройки и выберите " "формат для продолжения записи." #: src/window/mod.rs:305 msgid "Later" msgstr "Позже" #: src/window/mod.rs:307 msgid "Open" msgstr "Открыть" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Идет запись" #: src/window/mod.rs:485 msgid "Paused" msgstr "Приостановлено" #: src/window/mod.rs:522 msgid "Normal" msgstr "Обычный" #: src/window/mod.rs:523 msgid "Selection" msgstr "Область" #~ msgid "Failed to start device monitor" #~ msgstr "Не удалось запустить монитор устройства" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Не удалось подключиться к демону PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Микрофон не найден" #~ msgid "No desktop speaker source found" #~ msgstr "Динамик компьютера не найден" #~ msgid "Ok" #~ msgstr "Ок" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Такая частота кадров может вызвать проблемы с производительностью." #~ msgid "approx." #~ msgstr "около." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Выбор монитора, окна или части экрана для записи" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Выбор нескольких источников" #~ msgid "No Profile" #~ msgstr "Нет профиля" #~ msgid "Dave Patrick Caberto" #~ msgstr "Дэйв Патрик Каберто" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Дэйв Патрик Каберто" #~ msgid "Click here to view the video." #~ msgstr "Нажмите здесь, чтобы посмотреть видео." #~ msgid "Failed to select saving location" #~ msgstr "Не удалось выбрать место сохранения" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Не удалось открыть файл для записи" #~ msgid "Failed to select folder" #~ msgstr "Не удалось выбрать папку" #~ msgid "Donate (Liberapay)" #~ msgstr "Пожертвовать (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Пожертвовать (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Обратитесь к {} за помощью." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Не удалось открыть \"{}\" для записи" #~ msgid "_Cancel" #~ msgstr "_Отмена" #~ msgid "_Select" #~ msgstr "_Выбрать" #~ msgid "No folder selected" #~ msgstr "Папка не выбрана" #~ msgid "Please choose a folder and try again." #~ msgstr "Пожалуйста, выберите папку и попробуйте снова." #~ msgid "Cannot access “{}”" #~ msgstr "Не удается получить доступ к \"{}\"" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Пожалуйста, выберите доступное место и повторите попытку." #~ msgid "Enable Desktop Sounds" #~ msgstr "Включить звуки рабочего стола" #~ msgid "Disable Desktop Sounds" #~ msgstr "Выключить звуки рабочего стола" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Захват экран без каких-либо хлопот." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Запись звука вашего микрофона, звуков компьютера или и того, и другого " #~ "одновременно." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Поддержка форматов WebM, MP4, GIF и MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Выбор нескольких источников." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Дополнительное кодирование с аппаратным ускорением." #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Выбор монитора или окна для записи." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Создание выделения для записи определённой области вашего экрана." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Установка задержки для подготовки перед началом записи." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Скрывать или показывать курсор мыши." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Выбор места сохранения вашей записи." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Используйте полезные комбинации клавиш." #~ msgid "Toggle Computer Sounds" #~ msgstr "Переключить звуки компьютера" #~ msgid "_Delay" #~ msgstr "_Задержка" #~ msgid "3 seconds" #~ msgstr "3 секунды" #~ msgid "5 seconds" #~ msgstr "5 секунд" #~ msgid "10 seconds" #~ msgstr "10 секунд" #~ msgid "_Video Format" #~ msgstr "_Формат видео" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Сохранить в…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Плагин GStreamer, возможно, не установлен. Если он установлен, но не " #~ "работает, пожалуйста сообщите об этом на странице \"Issues Kooha\"." #~ msgid "Record Computer Sounds" #~ msgstr "Запись звуков компьютера" #~ msgid "Record From Microphone" #~ msgstr "Запись с микрофона" #~ msgid "Dave Patrick" #~ msgstr "Дэйв Патрик" #~ msgid "Cancel Delay" #~ msgstr "Отменить Задержку" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Авторское право 2021 Дейв Патрик" #~ msgid "Screencast Recorded!" #~ msgstr "Скринкаст записан!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Запись была сохранена в \"{}\"" #~ msgid "Open File" #~ msgstr "Открыть файл" #~ msgid "Screencast Portal Request Error" #~ msgstr "Ошибка запроса портала скринкаста" #~ msgid "Pipeline Build Error" #~ msgstr "Ошибка построения Pipeline" #~ msgid "Recording Error" #~ msgstr "Ошибка записи" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Не забудьте проверить зависимости и страницу \"Оно не работает!\"." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Убедитесь что этот путь для сохранения существует и доступен для записи. " #~ "Если он существует и доступен для записи, что-то пошло не так. Пожалуйста " #~ "сообщите это на странице \"Неполадки Kooha\" ." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Будьте уверены, что путь сохранения существует. Если он существует, то " #~ "что то пошло не так. Пожалуйста, уведомите нас об этом на странице \"Проблемы " #~ "Kooha\"." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Записывайте экран понятным и простым способом без отвлечений." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Пожалуйста, выберите доступное для записи место и повторите." #~ msgid "Select a Folder" #~ msgstr "Выберите папку" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Выбор области экрана для записи." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Поддержка свободных форматов Matroska и WebM." #~ msgid "Open menu" #~ msgstr "Открыть меню" #~ msgid "Show keyboard shortcuts" #~ msgstr "Показать сочетания клавиш" #~ msgid "Toggle record" #~ msgstr "Начать/остановить запись" #~ msgid "Cancel delay" #~ msgstr "Отменить задержку" #~ msgid "Toggle computer sounds" #~ msgstr "Включить/выключить запись звуков компьютера" #~ msgid "Toggle microphone" #~ msgstr "Включить/выключить запись микрофона" #~ msgid "Toggle pointer" #~ msgstr "Показать/спрятать курсор" #~ msgid "Delay" #~ msgstr "Задержка" #~ msgid "Video Format" #~ msgstr "Формат видео" #~ msgid "Save to…" #~ msgstr "Сохранить в…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Сочетания клавиш" #~ msgid "About Kooha" #~ msgstr "О Kooha" #~ msgid "Select" #~ msgstr "Выбрать" #~ msgid "Toggle capture mode" #~ msgstr "Переключить режим записи" #~ msgid "Full Screen" #~ msgstr "Полный экран" #~ msgid "Processing" #~ msgstr "Обработка" #~ msgid "Save location not set" #~ msgstr "Место сохранения не установлено" #~ msgid "Recording cannot start" #~ msgstr "Запись не может быть начата" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Выбранное для записи место, вероятно, было удалено." #~ msgid "The recording has been saved in" #~ msgstr "Запись была сохранена в" #~ msgid "Record computer sounds" #~ msgstr "Записывать звуки компьютера" #~ msgid "Record from microphone" #~ msgstr "Записывать микрофон" #~ msgid "Show pointer" #~ msgstr "Показывать указатель" #~ msgid "Elegantly record your screen " #~ msgstr "Записывайте экран элегантно " Kooha-2.3.0/po/si.po000066400000000000000000000424541457702140700141660ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # "HelaBasa Group (හෙළබස සමූහය)" , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Sinhala \n" "Language: si\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "හොඳින් තිරය පටිගත කරන්න" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;පටිගත;දෘශ්‍යක;තිරය;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "වික්ෂිප්ත නොවී ඔබගේ තිරය පහසුවෙන් සහ සරලව පටිගත කර ගන්න." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha යනු ඉතාමත් සරල අතුරු මුහුණතක් සහිත තිර පටිගතයකි. ඔබට සැකසුම් බොහොමයක් සීරු මාරුවකින් තොරව " "තනි එබීමකින් පටිගත කිරීමට හැකිය." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Kooha යෙදුමේ පහත විශේෂාංග ඇතුළත්ය:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ ශබ්දවාහිනිය, වැඩතලයේ හඬ හෝ දෙකම එකවර පටිගත කරන්න" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 WebM, MP4, GIF සහ මාට්‍රොස්කා ආකෘති සඳහා සහාය දක්වයි" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "🛠️ සුරැකෙන ස්ථානය, ඊතලයේ දෘශ්‍යතාව, රාමු අනුපාතය සහ ප්‍රමාදය සැකසීමට හැකිය" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 පරීක්‍ෂාත්මක දෘඩාංග ත්වරණිත ආකේතනය ඇත" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "පෙදෙසක් තෝරන්න" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "අවලංගු" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "අහවරයි" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "තේරීම යළි සකසන්න" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "ප්‍රධාන" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "ප්‍රමාදය (තත්පර)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "පටිගත බහාලුම" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "දෘශ්‍යකය" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "ආකෘතිය" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "රාමු අනුපාතය" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "වට්ටෝරුව අරින්න" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "අභිප්‍රේත පෙන්වන්න" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "කෙටිමං පෙන්වන්න" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "ඉවත් වන්න" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "පටිගත වෙමින්" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "පටිගත කරන්න" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "විරාමයක් තබන්න" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "අවලංගු කරන්න" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "සැකසුම්" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "වැඩතලයේ හඬ සක්‍රිය කරන්න" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "ශබ්දවාහිනිය සක්‍රිය කරන්න" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "ඊතලය සබල කරන්න" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "ප්‍රධාන වට්ටෝරුව" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "තිරයක් හෝ කවුළුවක් ග්‍රහණය" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "තිරයේ කොටසක් ග්‍රහණය" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "වැඩතලයේ හඬ සබල කරන්න" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "වැඩතලයේ හඬ අබල කරන්න" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "ශබ්දවාහිනිය සබල කරන්න" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "ශබ්දවාහිනිය අබල කරන්න" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "ඊතලය පෙන්වන්න" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "ඊතලය සඟවන්න" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "පටිගතය අරඹන්න" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "පටිගත කරන්න" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "කලින් තේරූ දෘශ්‍ය මූලාශ්‍රය අමතක කරන්න" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "පටිගතය නවතන්න" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "නවතන්න" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "විරාමයක්" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "මෙහි පටිගත වේ…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "අවලංගු කරන්න" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "ද්‍යෝර හැරෙමින්…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "අභිප්‍රේත (_P)" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "යතුරුපුවරුවේ කෙටිමං (_K)" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "Kooha ගැන (_A)" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "පරිවර්තනයට ස්තූතිය" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "ගිට්හබ්" #: src/about.rs:48 msgid "Translate" msgstr "පරිවර්තනය" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "තිරය විකාශනය පටිගත විය" #: src/application.rs:144 msgid "Show in Files" msgstr "ගොනුවල පෙන්වන්න" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "ඔබගේ පද්ධතියේ පල්ස්ඕඩියෝ ස්ථාපනය කර තිබෙන බවට වග බලා ගන්න." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "මෙම ආකෘතිය පරීක්‍ෂාත්මකයි හා සහාය නොදක්වයි." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "කිසිවක් නැත" #: src/recording.rs:42 msgid "No active profile" msgstr "සක්‍රිය පැතිකඩක් නැත" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "පටිගතය ඇරඹීමට අසමත් විය" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "GStreamer පේනුවක් ස්ථාපනය කර නැති බව පෙනෙයි." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "සුරැකෙන ස්ථානය තිබෙන හා ප්‍රවේශ විය හැකි බවට වග බලා ගන්න." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "පටිගතය අතරතුර දෝෂයක් සිදු විය" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "පටිගත බහාලුම තෝරන්න" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "විරාමයක් තැබීමට නොහැකි විය" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "පසුරුපුවරුවට පිටපතක්" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "පසුරුපුවරුවට පිටපත් විය" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "දෝෂය පැහැදිලිව පෙන්වන්න" #: src/window/mod.rs:286 msgid "Help" msgstr "උදව්" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "හරි, තේරුණා" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "අභිප්‍රේත අරින්නද?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "කලින් තේරූ ආකෘතිය නොතිබිය හැකිය. දිගටම පටිගත කිරීමට අභිප්‍රේත විවෘත කර ආකෘතියක් තෝරන්න." #: src/window/mod.rs:305 msgid "Later" msgstr "පසුව" #: src/window/mod.rs:307 msgid "Open" msgstr "අරින්න" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "විරාමයකි" #: src/window/mod.rs:522 msgid "Normal" msgstr "සාමාන්‍ය" #: src/window/mod.rs:523 msgid "Selection" msgstr "තේරීම" #~ msgid "Failed to start device monitor" #~ msgstr "උපාංග නිරීක්‍ෂකය ඇරඹීමට අසමත් විය" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "පල්ස්ඕඩියෝ වැඩසටහනට සැබැඳීමට අසමත් විය" #~ msgid "No microphone source found" #~ msgstr "ශබ්දවාහිනියක් හමු නොවිණි" #~ msgid "No desktop speaker source found" #~ msgstr "වැඩතල විකාශකයක් හමු නොවිණි" #~ msgid "Ok" #~ msgstr "හරි" #~ msgid "This frame rate may cause performance issues." #~ msgstr "මෙම රාමු අනුපාතය කාර්ය සාධනයට බලපෑ හැකිය." #~ msgid "approx." #~ msgstr "දළ." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ පටිගත කිරීමට තිරයක්, කවුළුවක් හෝ තිරයේ කොටසක් තෝරන්න" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 මූලාශ්‍ර කිහිපයක් තෝරාගන්න" #~ msgid "Dave Patrick Caberto" #~ msgstr "ඩේව් පැට්‍රික් කැබර්ටෝ" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2023 ඩේව් පැට්‍රික් කැබර්ටෝ" #~ msgid "Click here to view the video." #~ msgstr "දෘශ්‍යකය බැලීමට මෙතැන ඔබන්න." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "මැට්‍රොස්කා" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "ලිවීම සඳහා ගොනුව ඇරීමට අසමත් විය" #~ msgid "Donate (Liberapay)" #~ msgstr "පරිත්‍යාග (ලිබෙරාපේ)" #~ msgid "Donate (PayPal)" #~ msgstr "පරිත්‍යාග (පේපෑල්)" #~ msgid "Check out {} for help." #~ msgstr "උදව් සඳහා {} බලන්න." #~ msgid "Failed to open “{}” for writing" #~ msgstr "ලිවීම සඳහා “{}” ඇරීමට අසමත් විය" #~ msgid "_Cancel" #~ msgstr "අවලංගු (_C)" #~ msgid "_Select" #~ msgstr "තෝරන්න (_S)" #~ msgid "No folder selected" #~ msgstr "බහාලුමක් තෝරා නැත" #~ msgid "Please choose a folder and try again." #~ msgstr "බහාලුමක් තෝරා නැවත උත්සාහ කරන්න." #~ msgid "Cannot access “{}”" #~ msgstr "“{}” වෙත ප්‍රවේශයට නොහැකිය" #~ msgid "Please choose an accessible location and try again." #~ msgstr "ප්‍රවේශ විය හැකි ස්ථානයක් තෝරා නැවත උත්සාහ කරන්න." Kooha-2.3.0/po/sk.po000066400000000000000000000463051457702140700141670ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # MartinIIOT , 2021. # Dušan Kazik , 2021. # Marek Ľach , 2022. # Jozef Číž , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-03-09 18:36+0000\n" "Last-Translator: Jozef Číž \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) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 4.16.2-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Elegantne zaznamenáva vašu obrazovku" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "záznam;záznamník;rekordér;obrazovka;video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Zachytávajte vašu obrazovku intuitívnym a zreteľným spôsobom bez " "rozptyľovania." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Aplikácia Kooha je jednoduchým záznamníkom obrazovky s minimalistickým " "rozhraním. Stačí len kliknúť na zaznamenávacie tlačidlo bez zložitého " "nastavovania." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Hlavnými funkciami aplikácie Kooha sú:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Nahrávaj mikrofón, zvuk z počítača, alebo oboje naraz" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Podpora pre WebM, MP4, GIF, a Matroska formáty" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Konfigurovateľné miesto uloženia, viditeľnosť kurzoru, obnovovacia " "frekvencia, a oneskorenie" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Experimentálne hardvérovo akcelerované kódovanie" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Zvoľ oblasť" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Zrušiť" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Hotovo" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Resetovať oblasť" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Všeobecné" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Oneskorenie (Sekundy)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Priečinok nahrávok" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Formát" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Snímková frekvencia" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Otvorenie ponuky" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Zobraziť Nastavenia" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Zobrazenie klávesových skratiek" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Ukončenie" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Zaznamenávanie" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Prepnutie zaznamenávania" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Prepnutie pozastavenia" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Zrušiť nahrávanie" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Nastavenia" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Prepnutie zvuku počítača" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Prepnutie mikrofónu" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Prepnutie ukazovateľa" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Hlavná ponuka" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Zachytí monitor alebo okno" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Zachytí výber obrazovky" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Povoliť zvuk počítača" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Zakázať zvuk počítača" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Povoliť mikrofón" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Zakázať mikrofón" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Zobrazovať kurzor" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Skryť kurzor" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Začať nahrávanie" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Zaznamenať" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Zabudnúť na predošle vybrané zdroje pre video" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Zastaviť nahrávanie" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Zastaviť" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pozastaviť nahrávanie" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Zaznamenáva sa…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Zrušiť nahrávanie" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Čistí sa…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Nastavenia" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Klávesové skratky" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_O aplikácii Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "MartinIIOT \n" "Dušan Kazik " #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Prekladať" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Nahrávanie obrazovky dokončené" #: src/application.rs:144 msgid "Show in Files" msgstr "Ukázať v Súboroch" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Uistite sa, že máte na vašom systéme nainštalované PulseAudio." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Žiadne" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Začatie nahrávania zlyhalo" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Overte si, že miesto na ukladanie existuje a je dostupné." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Počas nahrávania nastala chýba" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Výber priečinka pre záznamy" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Ukázať podrobnosti chyby" #: src/window/mod.rs:286 msgid "Help" msgstr "Pomoc" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pozastavené" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normálne" #: src/window/mod.rs:523 msgid "Selection" msgstr "Výber" #~ msgid "No microphone source found" #~ msgstr "Zdroj mikrofónu nenájdený" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Táto snímková frekvencia môže spôsobiť problémy s výkonom." #~ msgid "approx." #~ msgstr "približne" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Zvoľ monitor, okno, alebo časť obrazovky na nahávanie" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Výber viacerých zdrojov" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Kliknite sem pre zhliadnutie videá." #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Failed to open file for writing" #~ msgstr "Nepodarilo sa otvoriť súbor na zápis" #~ msgid "Donate (Liberapay)" #~ msgstr "Prispieť (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Prispieť (PayPal)" #~ msgid "Failed to open “{}” for writing" #~ msgstr "Nepodarilo sa otvoriť “{}” k zápisu" #~ msgid "_Cancel" #~ msgstr "_Zrušiť" #~ msgid "_Select" #~ msgstr "V_ybrať" #~ msgid "No folder selected" #~ msgstr "Žiadna zložka nevybraná" #~ msgid "Please choose a folder and try again." #~ msgstr "Prosím vyberte zložku a skúste to znova." #~ msgid "Cannot access “{}”" #~ msgstr "Nedá sa získať prístup k priečinku „{}“" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Prosím, zvoľte prístupné umiestnenie a skúste to znovu." #~ msgid "Enable Desktop Sounds" #~ msgstr "Povoliť zvuky plochy" #~ msgid "Disable Desktop Sounds" #~ msgstr "Zakázať zvuky plochy" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Zachytenie vašej obrazovky bez problémov." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Záznam vášho mikrofónu, počítačových zvukov alebo oboch súčasne." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Podpora formátov WebM, MP4, GIF a MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Výber viacerých zdrojov." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Voliteľné dekódovanie akcelerované pomocou hardvéru." #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Výber monitora alebo okna na zaznamenanie." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Vytvorenie výberu na zachytenie určitej oblasti vašej obrazovky." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Nastavenie oneskorenia na prípravu pred zahájením zaznamenávania." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Skrytie alebo zobrazenie ukazovateľa myši." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Voľba miesta pre uloženie vášho záznamu." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Využitie užitočných klávesových skratiek." #~ msgid "Toggle Computer Sounds" #~ msgstr "Prepnutie počítačových zvukov" #~ msgid "_Delay" #~ msgstr "Onesko_renie" #~ msgid "3 seconds" #~ msgstr "3 sekundy" #~ msgid "5 seconds" #~ msgstr "5 sekúnd" #~ msgid "10 seconds" #~ msgstr "10 sekúnd" #~ msgid "_Video Format" #~ msgstr "Formát _videa" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "Uložiť do…" #~ msgid "Record Computer Sounds" #~ msgstr "Zaznamená počítačové zvuky" #~ msgid "Record From Microphone" #~ msgstr "Zaznamená z mikrofónu" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Zrušiť oneskorenie" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Autorské práva 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Záznam obrazovky bol vytvorený!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Záznam bol uložený do „{}“" #~ msgid "Open File" #~ msgstr "Otvoriť súbor" #~ msgid "Screencast Portal Request Error" #~ msgstr "Chyba požiadavky portálu záznamu obrazovky" #~ msgid "Pipeline Build Error" #~ msgstr "Chyba zostavenia zreťazenia" #~ msgid "Recording Error" #~ msgstr "Chyba záznamu" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Skontrolujte závislosti prostredia a stránku Nefunguje to." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Zásuvný modul platformy GStreamer možno nie je nainštalovaný. Ak nie je, " #~ "nahláste to, prosím na stránke Problémy s aplikáciou Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Uistite sa, že umiestnenie pre uloženie existuje. Ak nie, niekde sa stala " #~ "chyba, ktorú nahláste, prosím na stránke Problémy s aplikáciou Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Zachyťte obrazovku priamym a bezbolestným spôsobom bez rušenia." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Vyberte prístupné umiestnenie a skúste to znova." #~ msgid "Select a Folder" #~ msgstr "Vyberte priečinok" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Vyberte oblasť obrazovky, ktorú chcete zaznamenať." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Podpora bezplatných formátov Matroska a WebM." #~ msgid "Open menu" #~ msgstr "Otvoriť menu" #~ msgid "Show keyboard shortcuts" #~ msgstr "Zobraziť klávesové skratky" #~ msgid "Toggle record" #~ msgstr "Prepnúť záznam" #~ msgid "Cancel delay" #~ msgstr "Zrušiť oneskorenie" #~ msgid "Toggle computer sounds" #~ msgstr "Prepnúť zvuky počítača" #~ msgid "Toggle microphone" #~ msgstr "Prepnúť mikrofón" #~ msgid "Toggle pointer" #~ msgstr "Prepnúť kurzor" #~ msgid "Delay" #~ msgstr "Oneskorenie" #~ msgid "Video Format" #~ msgstr "Formát videa" #~ msgid "Save to…" #~ msgstr "Uložiť do…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Klávesové skratky" #~ msgid "About Kooha" #~ msgstr "O Kooha" #~ msgid "Select" #~ msgstr "Vybrať" #~ msgid "Toggle capture mode" #~ msgstr "Prepnúť režim snímania" #~ msgid "Full Screen" #~ msgstr "Celá obrazovka" #~ msgid "Processing" #~ msgstr "Spracovanie" #~ msgid "Save location not set" #~ msgstr "Umiestnenie uloženia nie je nastavené" #~ msgid "Recording cannot start" #~ msgstr "Nahrávanie sa nedá spustiť" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Miesto uloženia, ktoré ste vybrali, mohlo byť odstránené." #~ msgid "The recording has been saved in" #~ msgstr "Záznam bol uložený v" #~ msgid "Record computer sounds" #~ msgstr "Zaznamenať zvuky počítača" #~ msgid "Record from microphone" #~ msgstr "Zaznamenať zvuk z mikrofónu" #~ msgid "Show pointer" #~ msgstr "Zobraziť kurzor" #~ msgid "Elegantly record your screen " #~ msgstr "Elegantne zaznamenajte svoju obrazovku " Kooha-2.3.0/po/sr.po000066400000000000000000000373101457702140700141720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Dušan Simić , 2021. # Душан Симић , 2021. # Luka Momčilović , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2023-12-16 01:06+0000\n" "Last-Translator: Luka Momčilović \n" "Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : " "n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 5.3\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Сними екран на елегантан начин" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Видеоснимак екрана;рекордер;екран;видео;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Сними екран на интуитиван и једноставан начин беж сметњи." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha је једноставан сниматељ екрана са минималним интерфејсом. Можеш само " "притиснути дугме за снимање без постављања икаквих подешавања." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Главне функционалности у Kooha су:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Опште" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Отвори изборник" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Приказ пречица" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Изађи" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Снимање" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Покрени/заустави снимање" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Паузирај/настави снимање" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Подешавања" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Укључи/искључи микрофон" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Прикажи/сакриј курсор" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Главни изборник" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Сними монитор или прозор" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Сними подручје екрана" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Прикажи курсор" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Сними" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Заустави" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Паузирај снимање" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Снимам у…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Испирам…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Пречице на тастатури" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_О Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr " Душан Симић " #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Нема" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Изабери фасциклу за снимке" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Паузирано" #: src/window/mod.rs:522 msgid "Normal" msgstr "Нормално" #: src/window/mod.rs:523 msgid "Selection" msgstr "Избор" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "_Cancel" #~ msgstr "_Откажи" #~ msgid "_Select" #~ msgstr "_Изабери" #~ msgid "Cannot access “{}”" #~ msgstr "Не могу да да пирступим “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Молим те одабери приступачну локацију и покушај поново." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Сними екран без муке." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Сними микрофон, звук са рачунара или оба у исто време." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Подршка за WebM, MP4, GIF, и MKV формате." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Избор више извора." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Опционо хардверски убрзано кодирање" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Одабери монитор или прозор који би да снимаш." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Изаберите простор за снимање одређеног подручја екрана." #, fuzzy #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Постави кашњење да бисте се припремили пре почетка снимања." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Прикажи или сакриј курсор." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Одабери место за чување снимка." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Користите пречице на тастатури." #~ msgid "Toggle Computer Sounds" #~ msgstr "Укључи/искључи звуке са рачунара" #~ msgid "_Delay" #~ msgstr "_Кашњење" #~ msgid "5 seconds" #~ msgstr "5 секунди" #~ msgid "10 seconds" #~ msgstr "10 секунди" #~ msgid "_Video Format" #~ msgstr "_Формат видеа" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Сачувај у…" #~ msgid "Record Computer Sounds" #~ msgstr "Сними звуке рачунара" #~ msgid "Record From Microphone" #~ msgstr "Сними микрофон" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Откажи кашњење" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Екран је снимљен!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Снимак је сачуван у “{}”" #~ msgid "Open File" #~ msgstr "Отвори датотеку" #~ msgid "Screencast Portal Request Error" #~ msgstr "Грешка код портала за снимање екрана" #~ msgid "Pipeline Build Error" #~ msgstr "Грешка код цевовода за изградњу" #~ msgid "Recording Error" #~ msgstr "Грешка приликом снимања" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Проверите све зависности за време извршавања It Doesn't Work страница." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Додатак GStreamer можда није инсталиран. Уколико јесте, пријави на Kooha-иној страници за " #~ "проблеме." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Побрини се да локација за чување постоји. Уколико постоји, нешто је пошло " #~ "наопако и молим те пријави на Kooha-иној страници за проблеме." Kooha-2.3.0/po/sr@latin.po000066400000000000000000000344001457702140700153170ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # FIRST AUTHOR , YEAR. # Dušan Simić , 2021. # msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2021-10-15 15:44+0200\n" "Last-Translator: Dušan Simić \n" "Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : " "n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "X-Generator: Gtranslator 40.0\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Snimi ekran na elegantan način" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Videosnimak ekrana;rekorder;ekran;video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "Snimi ekran na intuitivan i jednostavan način bež smetnji." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha je jednostavan snimatelj ekrana sa minimalnim interfejsom. Možeš samo " "pritisnuti dugme za snimanje bez postavljanja ikakvih podešavanja." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Glavne funkcionalnosti u Kooha su:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Opšte" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Otvori izbornik" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Prikaz prečica" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Izađi" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Snimanje" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Pokreni/zaustavi snimanje" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Pauziraj/nastavi snimanje" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Podešavanja" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Uključi/isključi mikrofon" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Prikaži/sakrij kursor" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Glavni izbornik" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Snimi monitor ili prozor" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Snimi područje ekrana" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Prikaži kursor" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Snimi" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Zaustavi" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Snimam u…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Ispiram…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Prečice na tastaturi" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_O Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr " Dušan Simić " #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Nema" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Izaberi fasciklu za snimke" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pauzirano" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normalno" #: src/window/mod.rs:523 msgid "Selection" msgstr "Izbor" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "_Cancel" #~ msgstr "_Otkaži" #~ msgid "_Select" #~ msgstr "_Izaberi" #~ msgid "Cannot access “{}”" #~ msgstr "Ne mogu da da pirstupim “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Molim te odaberi pristupačnu lokaciju i pokušaj ponovo." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Snimi ekran bez muke." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Snimi mikrofon, zvuk sa računara ili oba u isto vreme." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Podrška za WebM, MP4, GIF, i MKV formate." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Izbor više izvora." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Opciono hardverski ubrzano kodiranje" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Odaberi monitor ili prozor koji bi da snimaš." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Izaberite prostor za snimanje određenog područja ekrana." #, fuzzy #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Postavi kašnjenje da biste se pripremili pre početka snimanja." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Prikaži ili sakrij kursor." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Odaberi mesto za čuvanje snimka." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Koristite prečice na tastaturi." #~ msgid "Toggle Computer Sounds" #~ msgstr "Uključi/isključi zvuke sa računara" #~ msgid "_Delay" #~ msgstr "_Kašnjenje" #~ msgid "5 seconds" #~ msgstr "5 sekundi" #~ msgid "10 seconds" #~ msgstr "10 sekundi" #~ msgid "_Video Format" #~ msgstr "_Format videa" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Sačuvaj u…" #~ msgid "Record Computer Sounds" #~ msgstr "Snimi zvuke računara" #~ msgid "Record From Microphone" #~ msgstr "Snimi mikrofon" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Otkaži kašnjenje" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Ekran je snimljen!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Snimak je sačuvan u “{}”" #~ msgid "Open File" #~ msgstr "Otvori datoteku" #~ msgid "Screencast Portal Request Error" #~ msgstr "Greška kod portala za snimanje ekrana" #~ msgid "Pipeline Build Error" #~ msgstr "Greška kod cevovoda za izgradnju" #~ msgid "Recording Error" #~ msgstr "Greška prilikom snimanja" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Proverite sve zavisnosti za vreme izvršavanja It Doesn't Work stranica." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Dodatak GStreamer možda nije instaliran. Ukoliko jeste, prijavi na Kooha-inoj stranici za " #~ "probleme." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Pobrini se da lokacija za čuvanje postoji. Ukoliko postoji, nešto je " #~ "pošlo naopako i molim te prijavi na Kooha-inoj stranici za probleme." Kooha-2.3.0/po/sv.po000066400000000000000000000520711457702140700141770ustar00rootroot00000000000000# Swedish translations for Kooha. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Åke Engelbrektson , 2021. # Luna Jernberg , 2021, 2022, 2023. # Kristoffer Grundström , 2021, 2024. # bittin1ddc447d824349b2 , 2023, 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-03-14 13:01+0000\n" "Last-Translator: Kristoffer Grundström \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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Spela in din skärm på ett elegant sätt" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Skärmutsändning;Inspelare;Skärm;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Fånga din skärm på ett intuitivt och o-komplicerat sätt utan distraktioner." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha är en enkel skärminspelare med ett minimalistiskt gränssnitt. Du kan " "klicka på inspelningsknappen utan att behöva konfigurera en massa " "inställningar." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "De huvudsakliga funktionerna i Kooha inkluderar följande:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️Spela in mikrofon, skrivbordsljud eller båda samtidigt" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Stöd för WebM, MP4, GIF och Matroska format" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Välj en bildskärm eller en del av skärmen att spela in" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Konfigurerbar sparplats, pekarens synlighet, bildfrekvens och fördröjning" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Experimentell hårdvaruaccelererad avkodning" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Välj område" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Avbryt" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Klart" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Återställ val" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Allmänt" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Fördröjning (sekunder)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Tidsintervall innan inspelningen börjar" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Inspelningsmapp" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Destinationsmapp för inspelningarna" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Format" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Bildhastighet" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Öppna meny" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Visa inställningar" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Visa genvägar" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Avsluta" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Spelar in" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Inspelning på/av" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Paus på/av" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Avbryt inspelningen" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Inställningar" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Växla skrivbordsljud" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Mikrofon på/av" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Muspekare på/av" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Huvudmeny" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Spela in en bildskärm eller ett fönster" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Spela in en del av skärmen" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Aktivera skrivbordsljud" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Inaktivera skrivbordsljud" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Aktivera mikrofon" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Inaktivera mikrofon" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Visa muspekare" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Dölj pekare" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Börja inspelning" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Spela in" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Glöm tidigare valda videokällor" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Sluta spela in" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Stopp" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Pausa inspelning" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Spelar in om…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Avbryt inspelning" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Rensar…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Inställningar" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Om Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Luna Jernberg" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Donera (köp mig en kaffe)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Översätt" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Screencast inspelad" #: src/application.rs:144 msgid "Show in Files" msgstr "Visa i Filer" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Misslyckades att hitta standardljudenheten" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Se till att du har PulseAudio installerat i ditt system." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time}timme" msgstr[1] "{time} timmar" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} minut" msgstr[1] "{time} minuter" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} sekund" msgstr[1] "{time} sekunder" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Misslyckades att ställa in inspelningsmapp" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "Denna bildhastighet kan orsaka prestandaproblem i det valda formatet." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Det här formatet är experimentellt och stöds inte." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Ingen" #: src/recording.rs:42 msgid "No active profile" msgstr "Ingen aktiv profil" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Misslyckades att starta inspelningen" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Kolla in {link} för hjälp." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "En GStreamer-plugin kanske inte är installerad." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Se till att sparplatsen finns och är tillgänglig." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Ett fel uppstod under inspelningen" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Misslyckades att öppna \"{path}\" för skrivning" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Välj inspelningsmapp" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Misslyckades att växla paus" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "En inspelning pågår för närvarande. Att avsluta omedelbart kan göra att " "inspelningen inte går att spela upp. Stoppa inspelningen innan du avslutar." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "Om du avslutar avbryts behandlingen och kan göra att inspelningen inte kan " "spelas upp." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Avsluta programmet?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Kopiera till urklipp" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Kopierad till urklipp" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Visa detaljerat fel" #: src/window/mod.rs:286 msgid "Help" msgstr "Hjälp" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Ok, jag förstår" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Öppna inställningar?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Det tidigare valda formatet kan ha varit otillgängligt. Öppna " "inställningarna och välj ett format för att fortsätta inspelningen." #: src/window/mod.rs:305 msgid "Later" msgstr "Senare" #: src/window/mod.rs:307 msgid "Open" msgstr "Öppna" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "En inspelning pågår" #: src/window/mod.rs:485 msgid "Paused" msgstr "Pausad" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Markering" #~ msgid "Failed to start device monitor" #~ msgstr "Misslyckades att starta enhetsövervakning" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Misslyckades att ansluta till PulseAudio-demonen" #~ msgid "No microphone source found" #~ msgstr "Ingen mikrofonkälla hittades" #~ msgid "No desktop speaker source found" #~ msgstr "Ingen skrivbords högtalarkälla hittades" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Denna bildhastighet kan orsaka prestandaproblem." #~ msgid "approx." #~ msgstr "cirka." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Välj en skärm, fönster eller en del av skärmen för inspelning" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Val av flera källor" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Klicka här för att se videon." #~ msgid "Failed to select saving location" #~ msgstr "Misslyckades att välja plats för att spara" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Misslyckades att öppna fil för skrivning" #~ msgid "Donate (Liberapay)" #~ msgstr "Donera (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Donera (Paypal)" #~ msgid "Check out {} for help." #~ msgstr "Kolla in {} för hjälp." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Misslyckades att öppna \"{}\" för skrivning" #~ msgid "_Cancel" #~ msgstr "_Avbryt" #~ msgid "_Select" #~ msgstr "_Markera" #~ msgid "No folder selected" #~ msgstr "Ingen mapp vald" #~ msgid "Please choose a folder and try again." #~ msgstr "Välj en mapp och försök igen." #~ msgid "Cannot access “{}”" #~ msgstr "Kommer inte åt “{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Välj en tillgänglig plats och försök igen." #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Spela in skärmen utan krångel." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ Spela in din mikrofon, datorljud eller båda samtidigt." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Stöd för formaten WebM, MP4, GIF och MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Val av flera källor." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "Hårdvaruaccelererad kodning som tillval" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "Välj en skärm eller ett fönster att spela in." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "Skapa en markering för att spela in ett bestämt område på skärmen." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "" #~ "⏲️ Ställ in en fördröjning för att förbereda dig innan du börjar spela in." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Dölj eller visa muspekaren." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Välj en lagringsplats för inspelningen." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Använd användbara tangentbordsgenvägar." #~ msgid "Toggle Computer Sounds" #~ msgstr "Datorljud på/av" #~ msgid "_Delay" #~ msgstr "_Fördröjning" #~ msgid "5 seconds" #~ msgstr "5 sekunder" #~ msgid "10 seconds" #~ msgstr "10 sekunder" #~ msgid "_Video Format" #~ msgstr "_Videoformat" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Spara till…" #~ msgid "Record Computer Sounds" #~ msgstr "Spela in datorljud" #~ msgid "Record From Microphone" #~ msgstr "Spela in från mikrofon" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Avbryt fördröjning" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Skärmvisning inspelad!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Inspelningen har sparats i “{}”" #~ msgid "Open File" #~ msgstr "Öppna fil" #~ msgid "Pipeline Build Error" #~ msgstr "Pipeline byggfel" #~ msgid "Recording Error" #~ msgstr "Inspelningsfel" #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Spela in skärmen på ett enkelt och smärtfritt sätt utan distraktion." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Kolla körtidsberoenden och sidan \"It Doesn't Work\" på Koohas ReadMe-" #~ "sida. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Ett GStreamer-instick kanske inte är installerat. Om inte, rapportera på " #~ "Koohas ärendesida. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Begäran om skärmsändningsportal misslyckades" #~ msgid "Recording Failed" #~ msgstr "Inspelning misslyckades" #~ msgid "Pipeline Build Failed" #~ msgstr "Pipeline-bygget misslyckades" #~ msgid "Sorry! An error has occurred." #~ msgstr "Tyvärr! Ett fel har inträffat." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Välj en åtkomlig plats och försök igen." #~ msgid "The recording has been saved in {}" #~ msgstr "Inspelningen har sparats i {}" #~ msgid "Select a Folder" #~ msgstr "Välj en mapp" #~ msgid "Inaccessible location '{}'" #~ msgstr "Platsen ej åtkomlig \"{}\"" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Välj ett område på skärmen för inspelning." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Stöd för de fria formaten Matroska och WebM." #~ msgid "Open menu" #~ msgstr "Öppna menyn" #~ msgid "Show keyboard shortcuts" #~ msgstr "Visa tangentbordsgenvägar" #~ msgid "Toggle record" #~ msgstr "Inspelning på/av" #~ msgid "Toggle record pause" #~ msgstr "Inspelningspaus på/av" #~ msgid "Cancel delay" #~ msgstr "Avbryt fördröjning" #~ msgid "Toggle computer sounds" #~ msgstr "Datorljud på/av" #~ msgid "Toggle microphone" #~ msgstr "Mikrofonljud på/av" #~ msgid "Toggle pointer" #~ msgstr "Visa/Dölj muspekare" #~ msgid "Delay" #~ msgstr "Fördröjning" #~ msgid "Video Format" #~ msgstr "Videoformat" #~ msgid "Save to…" #~ msgstr "Spara till…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tangenbordsgenvägar" #~ msgid "About Kooha" #~ msgstr "Om Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "Ett fel har uppstått." #~ msgid "Videos" #~ msgstr "Videor" #~ msgid "Failed to create session." #~ msgstr "Kunde inte skapa session." #~ msgid "Failed to select sources." #~ msgstr "Kunde inte välja källor." #~ msgid "Select" #~ msgstr "Välj" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Oåtkomlig plats “{directory}”" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "Inspelningen har sparats i {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "Oåtkomlig plats \"{directory}\"" #~ msgid "Toggle capture mode" #~ msgstr "Växla inhämtningsläge" #~ msgid "Full Screen" #~ msgstr "Helskärm" #~ msgid "Processing" #~ msgstr "Bearbetar" #~ msgid "Save location not set" #~ msgstr "Lagringsplats ej angiven" #~ msgid "Recording cannot start" #~ msgstr "Inspelning kan inte starta" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Lagringsplatsen du har valt kanske har tagits bort." #~ msgid "The recording has been saved in" #~ msgstr "Inspelningen har sparats i" #~ msgid "Record computer sounds" #~ msgstr "Spela in datorljud" #~ msgid "Record from microphone" #~ msgstr "Spela in från mikrofon" #~ msgid "Show pointer" #~ msgstr "Visa muspekare" #~ msgid "Simple screen recorder" #~ msgstr "Enkel skärminspelare" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha är en enkel skärminspelare byggd med GTK. Den låter dig spela in " #~ "vad som sker på din skärm och även ljudet från din mikrofon eller " #~ "skrivbordet." Kooha-2.3.0/po/ta.po000066400000000000000000000577461457702140700141710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # K.B.Dharun Krishna , 2022. # "K.B.Dharun Krishna" , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Tamil \n" "Language: ta\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "கூஹா" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "உங்கள் திரையை நேர்த்தியாக பதிவு செய்யவும்" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "ஸ்கிரீன்காஸ்ட்;ரெக்கார்டர்;திரை;வீடியோ;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "கவனச்சிதறல்கள் இல்லாமல் உங்கள் திரையை உள்ளுணர்வு மற்றும் நேரடியான வழியில் படம்பிடிக்கவும்." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "கூஹா என்பது குறைந்தபட்ச இடைமுகத்துடன் கூடிய எளிய ஸ்கிரீன் ரெக்கார்டர் ஆகும். நீங்கள் பல " "அமைப்புகளை உள்ளமைக்காமல் பதிவு பொத்தானைக் கிளிக் செய்யலாம்." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "கூஹாவின் முக்கிய அம்சங்கள் பின்வருவனவற்றை உள்ளடக்குகின்றன:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ மைக்ரோஃபோன், டெஸ்க்டாப் ஆடியோ அல்லது இரண்டையும் ஒரே நேரத்தில் பதிவு செய்யவும்" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 WebM, MP4, GIF மற்றும் Matroska வடிவங்களுக்கான ஆதரவு" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "🛠️ உள்ளமைக்கக்கூடிய சேமிப்பு இடம், சுட்டித் தெரிவுநிலை, பிரேம் வீதம் மற்றும் தாமதம்" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 பரிசோதனை வன்பொருள் முடுக்கப்பட்ட குறியாக்கம்" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "பகுதியைத் தேர்ந்தெடுக்கவும்" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "ரத்துசெய்" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "முடிந்தது" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "தேர்வை மீட்டமைக்கவும்" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "பொது" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "தாமதம் (வினாடிகள்)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "பதிவுகள் கோப்புறை" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "காணொளி" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "வடிவம்" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "பிரேம் வீதம்" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "மெனுவை திறக்கவும்" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "விருப்பங்களைக் காட்டு" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "குறுக்குவழிகளைக் காட்டு" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "வெளியேறு" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "ஒலியை பதிவு செய்கிறது" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "பதிவை நிலைமாற்றவும்" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "இடைநிறுத்தத்தை நிலைமாற்று" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "பதிவை ரத்துசெய்" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "செட்டிங்ஸ்" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "டெஸ்க்டாப் ஆடியோவை நிலைமாற்று" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "ஒலிவாங்கியை நிலைமாற்று" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "சுட்டியை நிலைமாற்றவும்" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "முதன்மை பட்டியல்" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "ஒரு மானிட்டர் அல்லது விண்டோவைப் பிடிக்கவும்" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "திரையின் தேர்வைப் பிடிக்கவும்" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "டெஸ்க்டாப் ஆடியோவை இயக்கு" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "டெஸ்க்டாப் ஆடியோவை முடக்கு" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "ஒலிவாங்கியை இயக்கு" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "ஒலிவாங்கியை முடக்கு" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "சுட்டியைக் காட்டு" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "சுட்டியை மறை" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "பதிவைத் தொடங்கவும்" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "ஒலிப்பதிவு" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "முன்பு தேர்ந்தெடுத்த வீடியோ ஆதாரங்களை மறந்து விடுங்கள்" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "பதிவு செய்வதை நிறுத்து" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "நிறுத்து" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "பதிவு செய்வதை இடைநிறுத்தவும்" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "இதில் பதிவு செய்கிறது…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "ரெக்கார்டிங்கை ரத்து செய்" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "ஃப்ளஷிங்…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_விருப்பங்கள்" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_விசைப்பலகை குறுக்குவழிகள்" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_கூஹா பற்றி" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "தருண் கிருஷ்ணா.க.பா" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "நன்கொடை (எனக்கு ஒரு காபி வாங்கிக் கொடு)" #: src/about.rs:46 msgid "GitHub" msgstr "கிட்ஹப்" #: src/about.rs:48 msgid "Translate" msgstr "மொழிபெயர்" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "ஸ்கிரீன்காஸ்ட் பதிவு செய்யப்பட்டது" #: src/application.rs:144 msgid "Show in Files" msgstr "கோப்புகளில் காட்டு" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "பல்ஸ்ஆடியோ உங்கள் கணினியில் நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" msgstr[1] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" msgstr[1] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "இந்த வடிவம் சோதனைக்குரியது மற்றும் ஆதரிக்கப்படாது." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "எதுவும் இல்லை" #: src/recording.rs:42 msgid "No active profile" msgstr "செயலில் சுயவிவரம் இல்லை" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "பதிவைத் தொடங்குவதில் தோல்வி" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "உதவிக்கு {link} ஐப் பார்க்கவும்." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "GStreamer செருகுநிரல் நிறுவப்படாமல் இருக்கலாம்." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "சேமிக்கும் இடம் உள்ளதா மற்றும் அணுகக்கூடியதா என்பதை உறுதிப்படுத்தவும்." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "பதிவு செய்யும் போது பிழை ஏற்பட்டது" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "எழுதுவதற்கு “{path}” திறக்க முடியவில்லை" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "பதிவுகள் கோப்புறையைத் தேர்ந்தெடுக்கவும்" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "இடைநிறுத்தத்தை மாற்றுவதில் தோல்வி" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "கிளிப்போர்டுக்கு நகலெடுக்கவும்" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "விரிவான பிழையைக் காட்டு" #: src/window/mod.rs:286 msgid "Help" msgstr "உதவி" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "சரி, புரிந்தது" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "விருப்பத்தேர்வுகளை திறக்கவா?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "முன்பு தேர்ந்தெடுக்கப்பட்ட வடிவம் கிடைக்காமல் இருக்கலாம். பதிவுகளைத் தொடர " "விருப்பத்தேர்வுகளைத் திறந்து வடிவமைப்பைத் தேர்ந்தெடுக்கவும்." #: src/window/mod.rs:305 msgid "Later" msgstr "பின்னர்" #: src/window/mod.rs:307 msgid "Open" msgstr "திறக்கவும்" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "இடைநிறுத்தப்பட்டது" #: src/window/mod.rs:522 msgid "Normal" msgstr "இயல்பானது" #: src/window/mod.rs:523 msgid "Selection" msgstr "தேர்வு" #~ msgid "Failed to start device monitor" #~ msgstr "சாதன மானிட்டரைத் தொடங்குவதில் தோல்வி" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "பல்ஸ்ஆடியோ டீமானுடன் இணைக்க முடியவில்லை" #~ msgid "No microphone source found" #~ msgstr "மைக்ரோஃபோன் ஆதாரம் எதுவும் கிடைக்கவில்லை" #~ msgid "No desktop speaker source found" #~ msgstr "டெஸ்க்டாப் ஸ்பீக்கர் ஆதாரம் இல்லை" #~ msgid "Ok" #~ msgstr "சரி" #~ msgid "This frame rate may cause performance issues." #~ msgstr "இந்த பிரேம் வீதம் செயல்திறன் சிக்கல்களை ஏற்படுத்தலாம்." #~ msgid "approx." #~ msgstr "தோராயமாக." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "" #~ "🖥️ பதிவு செய்ய மானிட்டர், சாளரம் அல்லது திரையின் ஒரு பகுதியைத் தேர்ந்தெடுக்கவும்" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 பல மூலங்களின் தேர்வு" #~ msgid "Dave Patrick Caberto" #~ msgstr "டேவ் பேட்ரிக் கேபர்டோ" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 டேவ் பேட்ரிக் கேபர்டோ" #~ msgid "Click here to view the video." #~ msgstr "வீடியோவைப் பார்க்க இங்கே கிளிக் செய்யவும்." #~ msgid "Failed to select saving location" #~ msgstr "சேமிக்கும் இடத்தைத் தேர்ந்தெடுக்க முடியவில்லை" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "வெப்எம்" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "மெட்ரோஸ்கா" #~ msgid "WebM VP9" #~ msgstr "வெப்எம் விபி9" #~ msgid "WebM AV1" #~ msgstr "வெப்எம் ஏவி 1" #~ msgid "WebM VAAPI VP8" #~ msgstr "வெப்எம் VAAPI விபி8" #~ msgid "WebM VAAPI VP9" #~ msgstr "வெப்எம் VAAPI விபி9" #~ msgid "WebM VAAPI H264" #~ msgstr "வெப்எம் VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "எழுதுவதற்கான கோப்பைத் திறக்க முடியவில்லை" #~ msgid "Donate (Liberapay)" #~ msgstr "நன்கொடை (லிபராபே)" #~ msgid "Donate (PayPal)" #~ msgstr "நன்கொடை (பேபால்)" #~ msgid "Check out {} for help." #~ msgstr "உதவிக்கு {}ஐப் பார்க்கவும்." #~ msgid "Failed to open “{}” for writing" #~ msgstr "எழுதுவதற்கு “{}” திறக்க முடியவில்லை" #~ msgid "_Cancel" #~ msgstr "_ரத்துசெய்" #~ msgid "_Select" #~ msgstr "_தேர்ந்தெடு" #~ msgid "No folder selected" #~ msgstr "கோப்புறை எதுவும் தேர்ந்தெடுக்கப்படவில்லை" #~ msgid "Please choose a folder and try again." #~ msgstr "கோப்புறையைத் தேர்ந்தெடுத்து மீண்டும் முயற்சிக்கவும்." #~ msgid "Cannot access “{}”" #~ msgstr "“{}” ஐ அணுக முடியவில்லை" #~ msgid "Please choose an accessible location and try again." #~ msgstr "அணுகக்கூடிய இடத்தைத் தேர்ந்தெடுத்து மீண்டும் முயற்சிக்கவும்." #~ msgid "Enable Desktop Sounds" #~ msgstr "டெஸ்க்டாப் ஒலிகளை இயக்கு" #~ msgid "Disable Desktop Sounds" #~ msgstr "டெஸ்க்டாப் ஒலிகளை முடக்கு" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 எந்த தொந்தரவும் இல்லாமல் உங்கள் திரையைப் பிடிக்கவும்." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ உங்கள் ஒலிவாங்கி, கணினி ஒலிகள் அல்லது இரண்டையும் ஒரே நேரத்தில் பதிவு செய்யவும்." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM, MP4, GIF மற்றும் MKV வடிவங்களுக்கான ஆதரவு." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 பல ஆதாரங்களின் தேர்வு." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 விருப்ப வன்பொருள் முடுக்கப்பட்ட குறியாக்கம்" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ பதிவு செய்ய மானிட்டர் அல்லது சாளரத்தைத் தேர்ந்தெடுக்கவும்." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ உங்கள் திரையில் இருந்து குறிப்பிட்ட பகுதியைப் பிடிக்க ஒரு தேர்வை உருவாக்கவும்." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ ரெக்கார்டிங்கைத் தொடங்கும் முன் தயார் செய்ய தாமதத்தை அமைக்கவும்." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ மவுஸ் பாயிண்டரை மறைக்கவும் அல்லது காட்டவும்." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 உங்கள் பதிவுக்காக சேமிக்கும் இடத்தை தேர்வு செய்யவும்." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ உதவிகரமான விசைப்பலகை குறுக்குவழிகளைப் பயன்படுத்தவும்." #~ msgid "Toggle Computer Sounds" #~ msgstr "கணினி ஒலிகளை நிலைமாற்று" #~ msgid "_Delay" #~ msgstr "_தாமதம்" #~ msgid "3 seconds" #~ msgstr "3 வினாடிகள்" #~ msgid "5 seconds" #~ msgstr "5 வினாடிகள்" #~ msgid "10 seconds" #~ msgstr "10 வினாடிகள்" #~ msgid "_Video Format" #~ msgstr "_வீடியோ வடிவம்" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_இதில் சேமிக்கவும்…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer செருகுநிரல் நிறுவப்படாமல் இருக்கலாம். அது நிறுவப்பட்டும், இன்னும் சரியாக " #~ "வேலை செய்யவில்லை என்றால், தயவுசெய்து Kooha இன் வெளியீட்டுப் பக்கத்திற்கு புகாரளிக்கவும்." Kooha-2.3.0/po/tr.po000066400000000000000000000571261457702140700142020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Oğuz Ersen , 2021, 2022. # ToldYouThat , 2021. # Sabri Ünal , 2022, 2023, 2024. # Oğuz Ersen , 2022, 2024. # Sabri Ünal , 2024. msgid "" msgstr "" "Project-Id-Version: Kooha Ekran Kayıt\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-03-11 22:01+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.5-dev\n" "X-Poedit-SourceCharset: UTF-8\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Ekranınızı zarif bir şekilde kaydedin" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;Ekran kaydı;Kaydedici;Ekran;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Dikkatiniz dağılmadan ekranınızı sezgisel ve basit bir şekilde kaydedin." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha, sade bir arayüze sahip basit bir ekran kaydedicidir. Bir dizi ayarı " "yapılandırmanıza gerek kalmadan sadece kayıt düğmesine tıklayabilirsiniz." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Kooha'nın temel özellikleri şunlardır:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Mikrofon, masaüstü sesi veya her ikisini aynı anda kaydedin" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 WebM, MP4, GIF ve Matroska biçimleri desteği" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Kaydetmek için bir ekran veya ekranın bir bölümünü seçin" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Yapılandırılabilir kaydetme konumu, işaretçi görünürlüğü, kare hızı ve " "gecikme" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Deneysel donanım hızlandırmalı kodlama" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Alan Seç" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "İptal" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Bitti" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Seçimi Sıfırla" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Genel" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Gecikme (Saniye)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Kayıt başlamadan önceki zaman aralığı" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Kayıtlar Klasörü" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Kayıtlar için hedef klasör" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Video" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Biçim" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Kare Hızı" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Menüyü Aç" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Tercihleri Göster" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Kısayolları Göster" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Çıkış" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Kaydediliyor" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Kaydı Aç/Kapat" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Duraklatmayı Aç/Kapat" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Kaydı İptal Et" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Ayarlar" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Masaüstü Sesini Aç/Kapat" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Mikrofonu Aç/Kapat" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "İşaretçiyi Aç/Kapat" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Ana Menü" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Ekran ya da Pencere Yakala" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Bir Ekranın Seçilmiş Kısmını Yakala" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Masaüstü Sesini Etkinleştir" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Masaüstü Sesini Devre Dışı Bırak" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Mikrofonu Etkinleştir" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Mikrofonu Devre Dışı Bırak" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "İşaretçiyi Göster" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "İşaretçiyi Gizle" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Kayıt Başlat" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Kayıt" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Önceden Seçilen Video Kaynaklarını Unut" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Kaydı Durdur" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Durdur" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Kaydı Duraklat" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Kaydediliyor…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Kaydı İptal Et" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Temizleniyor…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Tercihler" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "Kooha _Hakkında" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Sabri Ünal (yakushabb@gmail.com), Oğuz Ersen" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Bağış Yap (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Çevir" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Ekran kaydı kaydedildi" #: src/application.rs:144 msgid "Show in Files" msgstr "Dosyalarʼda Göster" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Öntanımlı ses aygıtı bulunamadı" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Sisteminizde PulseAudio'nun kurulu olduğundan emin olun." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} saat" msgstr[1] "{time} saat" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} dakika" msgstr[1] "{time} dakika" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} saniye" msgstr[1] "{time} saniye" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Kayıt klasörü ayarlanamadı" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "Bu kare hızı, seçilen biçimde performans sorunlarına neden olabilir." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Bu biçim deneysel ve desteklenmemektedir." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Yok" #: src/recording.rs:42 msgid "No active profile" msgstr "Etkin profil yok" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Kayıt başlatılamadı" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Yardım için {link} bağlantısına bakınız." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Bir GStreamer eklentisi kurulmamış olabilir." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Kaydetme konumunun var ve erişilebilir olduğundan emin olun." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Kayıt sırasında bir hata oluştu" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "“{path}” yolu yazma için açılamadı" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Kayıtlar Klasörünü Seç" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Duraklatma değiştirilemedi" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Şu anda bir kayıt devam ediyor. Hemen çıkmak kaydın oynatılamamasına neden " "olabilir. Lütfen çıkmadan önce kaydı durdurun." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "Çıkmak işlemi iptal edecek ve kaydın oynatılamaz hale gelmesine neden " "olabilecektir." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Uygulamadan çıkılsın mı?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Panoya kopyala" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Panoya kopyalandı" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Ayrıntılı hata göster" #: src/window/mod.rs:286 msgid "Help" msgstr "Yardım" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Anladım" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Tercihler Açılsın Mı?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Önceki seçilen biçim kullanılamıyor olabilir. Kayda devam etmek için " "tercihleri açın ve bir biçim seçin." #: src/window/mod.rs:305 msgid "Later" msgstr "Daha sonra" #: src/window/mod.rs:307 msgid "Open" msgstr "Aç" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Bir kayıt devam ediyor" #: src/window/mod.rs:485 msgid "Paused" msgstr "Duraklatıldı" #: src/window/mod.rs:522 msgid "Normal" msgstr "Normal" #: src/window/mod.rs:523 msgid "Selection" msgstr "Seçim" #~ msgid "Failed to start device monitor" #~ msgstr "Aygıt monitörü başlatılamadı" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "PulseAudio programına bağlanılamadı" #~ msgid "No microphone source found" #~ msgstr "Mikrofon kaynağı bulunamadı" #~ msgid "No desktop speaker source found" #~ msgstr "Masaüstü hoparlör kaynağı bulunamadı" #~ msgid "Ok" #~ msgstr "Tamam" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Bu kare hızı performans sorunlarına neden olabilir." #~ msgid "approx." #~ msgstr "yaklaşık" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Kaydetmek için bir ekran, pencere veya ekranın bir bölümünü seçin" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Çoklu kaynak seçimi" #~ msgid "No Profile" #~ msgstr "Profil Yok" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Videoyu görüntülemek için tıklayınız." #~ msgid "Failed to select saving location" #~ msgstr "Kaydetme konumu seçilemedi" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Dosya yazma için açılamadı" #~ msgid "Failed to select folder" #~ msgstr "Klasör seçilemedi" #~ msgid "Donate (Liberapay)" #~ msgstr "Bağış Yap (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Bağış Yap (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Yardım için {} adresine göz atın." #~ msgid "Failed to open “{}” for writing" #~ msgstr "\"{}\" yazma için açılamadı" #~ msgid "_Cancel" #~ msgstr "_İptal" #~ msgid "_Select" #~ msgstr "_Seç" #~ msgid "No folder selected" #~ msgstr "Klasör seçilmedi" #~ msgid "Please choose a folder and try again." #~ msgstr "Lütfen bir klasör seçin ve tekrar deneyin." #~ msgid "Cannot access “{}”" #~ msgstr "“{}” dizinine erişilemiyor" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Lütfen erişilebilir bir konum seçin ve tekrar deneyin." #~ msgid "Enable Desktop Sounds" #~ msgstr "Masaüstü Seslerini Etkinleştir" #~ msgid "Disable Desktop Sounds" #~ msgstr "Masaüstü Seslerini Devre Dışı Bırak" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Herhangi bir güçlük çekmeden ekranınızı kaydedin." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Mikrofonunuzu, bilgisayar seslerini veya her ikisini aynı anda kaydedin." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 WebM, MP4, GIF ve MKV biçimleri desteği." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Çoklu kaynak seçimi." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 İsteğe bağlı donanım hızlandırmalı kodlama" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Kaydetmek için bir ekran veya pencere seçin." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "" #~ "🖼️ Ekranınızdan belirli bir alanı yakalamak için bir seçim oluşturun." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Kayda başlamadan önce hazırlanmak için bir gecikme ayarlayın." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Fare işaretçisini gizleyin veya gösterin." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Kaydınız için bir kaydetme konumu seçin." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Kullanışlı klavye kısayollarını kullanın." #~ msgid "Toggle Computer Sounds" #~ msgstr "Bilgisayar Seslerini Aç/Kapat" #~ msgid "_Delay" #~ msgstr "_Gecikme" #~ msgid "3 seconds" #~ msgstr "3 saniye" #~ msgid "5 seconds" #~ msgstr "5 saniye" #~ msgid "10 seconds" #~ msgstr "10 saniye" #~ msgid "_Video Format" #~ msgstr "_Video Biçimi" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "Şuraya _kaydet…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Bir GStreamer eklentisi kurulmamış olabilir. Kuruluysa ancak yine de " #~ "düzgün çalışmıyorsa lütfen Kooha'nın sorun sayfasına bildirin." #~ msgid "Record Computer Sounds" #~ msgstr "Bilgisayar Seslerini Kaydet" #~ msgid "Record From Microphone" #~ msgstr "Mikrofondan Kaydet" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "Gecikmeyi İptal Et" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Telif hakkı 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "Ekran Kaydı Kaydedildi!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Kayıt “{}” konumuna kaydedildi" #~ msgid "Open File" #~ msgstr "Dosyayı Aç" #~ msgid "Screencast Portal Request Error" #~ msgstr "Ekran Kaydı Portal İstek Hatası" #~ msgid "Pipeline Build Error" #~ msgstr "İş Hattı Oluşturma Hatası" #~ msgid "Recording Error" #~ msgstr "Kaydetme Hatası" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Çalışma zamanı bağımlılıklarını ve Çalışmıyor sayfasını gözden geçirdiğinizden " #~ "emin olun." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Kaydetme konumunun var olduğundan veya erişilebilir olduğundan emin olun. " #~ "Gerçekten varsa veya erişilebilir durumdaysa, bir şeyler ters gitmiştir " #~ "ve lütfen bunu Kooha'nın sorun sayfasında bildirin." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Kaydetme konumunun var olduğundan emin olun. Gerçekten varsa, bir şeyler " #~ "ters gitmiştir ve lütfen bunu Kooha'nın sorun sayfasına bildirin." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Bir GStreamer eklentisi kurulmamış olabilir. Değilse, lütfen Kooha'nın sorun " #~ "sayfasına bildirin." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Kaydetme konumunun var olduğundan emin olun. Değilse, bir şeyler ters " #~ "gitmiştir ve lütfen bunu Kooha'nın sorun sayfasına bildirin." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "" #~ "Dikkatiniz dağılmadan ekranınızı basit ve acısız bir şekilde kaydedin." #~ msgid "Sorry! An error has occurred." #~ msgstr "Üzgünüm! Bir hata oluştu." #~ msgid "Please choose an accessible location and retry." #~ msgstr "Lütfen erişilebilir bir yer seçin ve tekrar deneyin." #~ msgid "Select a Folder" #~ msgstr "Klasör Seç" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Kaydetmek için ekranınızın bir alanını seçin." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Özgür Matroska ve WebM biçimleri için destek." #~ msgid "Open menu" #~ msgstr "Menüyü aç" #~ msgid "Show keyboard shortcuts" #~ msgstr "Klavye kısayollarını göster" #~ msgid "Toggle record" #~ msgstr "Kaydı aç/kapat" #~ msgid "Toggle record pause" #~ msgstr "Kayıt duraklatmayı aç/kapat" #~ msgid "Cancel delay" #~ msgstr "Gecikmeyi iptal et" #~ msgid "Toggle computer sounds" #~ msgstr "Bilgisayar seslerini değiştir" #~ msgid "Toggle microphone" #~ msgstr "Mikrofonu değiştir" #~ msgid "Toggle pointer" #~ msgstr "İşaretçiyi değiştir" #~ msgid "Delay" #~ msgstr "Gecikme" #~ msgid "Video Format" #~ msgstr "Video Biçimi" #~ msgid "Save to…" #~ msgstr "Kaydetme yeri…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Klavye Kısayolları" #~ msgid "About Kooha" #~ msgstr "Kooha Hakkında" #~ msgid "Sorry! An error has occured." #~ msgstr "Afedersiniz! Bir hata oluştu." #~ msgid "Videos" #~ msgstr "Videolar" #~ msgid "Failed to create session." #~ msgstr "Oturum oluşturulamadı." #~ msgid "Failed to select sources." #~ msgstr "Kaynaklar seçilemedi." #~ msgid "Select" #~ msgstr "Seç" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "Erişilemeyen konum \"{directory}\"" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "Kayıt {saving_location} yerinin içine kaydedildi" #~ msgid "Toggle capture mode" #~ msgstr "Yakalama modunu değiştir" #~ msgid "Full Screen" #~ msgstr "Tam Ekran" #~ msgid "Processing" #~ msgstr "İşleniyor" #~ msgid "Save location not set" #~ msgstr "Kaydetme konumu ayarlanmadı" #~ msgid "Recording cannot start" #~ msgstr "Kayıt başlayamıyor" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Seçtiğiniz kaydetme yeri silinmiş olabilir." #~ msgid "The recording has been saved in" #~ msgstr "Kayıt kaydedildi" #~ msgid "Record computer sounds" #~ msgstr "Bilgisayar seslerini kaydet" #~ msgid "Record from microphone" #~ msgstr "Mikrofondan kaydet" #~ msgid "Show pointer" #~ msgstr "İşaretçiyi göster" #~ msgid "Elegantly record your screen " #~ msgstr "Ekranınızı zarif bir şekilde kaydedin " #~ msgid "🎥 Capture your screen without any hustle." #~ msgstr "🎥 Herhangi bir uğraştırma olmadan ekranınızı yakalayın." #~ msgid "Simple screen recorder" #~ msgstr "Basit bir ekran kaydedici" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha, GTK ile oluşturulmuş basit bir ekran kaydedicidir. Ekranınızı ve " #~ "ayrıca mikrofonunuzdan veya masaüstünüzden ses kaydetmenize olanak tanır." Kooha-2.3.0/po/uk.po000066400000000000000000000660361457702140700141740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Mykola , 2021. # Ihor Hordiichuk , 2021, 2022, 2023, 2024. # Сергій , 2024. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-03-01 05:00+0000\n" "Last-Translator: Ihor Hordiichuk \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-Generator: Weblate 5.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "Елегантно записуйте ваш екран" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Записувач;Екран;Відео;Screencast;Recorder;Screen;Video;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "" "Вибирайте ділянку інтуїтивно зрозумілим і простим способом без зайвих " "чинників." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha — це простий записувач екрана з мінімалістичним інтерфейсом. Ви можете " "просто натиснути кнопку запису без витрачання часу на налаштування." #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Основні можливості Kooha:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ Запис з мікрофона, звуків комп'ютера або з обох одночасно" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 Підтримка форматів WebM, MP4, GIF і Matroska" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "🖥️ Виберіть монітор або ділянку екрана для запису" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" "🛠️ Налаштовуване розташування для збереження, видимість вказівника, частота " "кадрів і затримка" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 Експериментальне кодування з апаратним прискоренням" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "Вибрати ділянку" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "Скасувати" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "Готово" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "Скинути вибір" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "Загальні" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "Затримка (секунди)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "Інтервал часу перед початком запису" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "Тека записів" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "Тека для зберігання записів" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "Відео" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "Формат" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "Частота кадрів" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "Відкрити меню" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "Показати налаштування" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "Показати комбінації клавіш" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "Вийти" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "Запис" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "Почати/зупинити запис" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "Зупинити/продовжити" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "Скасувати запис" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "Налаштування" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "Перемкнути звук комп'ютера" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "Увімкнути/вимкнути мікрофон" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "Показати/сховати вказівник" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "Головне меню" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "Захоплення монітора або вікна" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "Захоплення ділянки екрана" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "Увімкнути звук з комп'ютера" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "Вимкнути звук з комп'ютера" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "Увімкнути мікрофон" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "Вимкнути мікрофон" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "Показати вказівник" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "Сховати вказівник" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "Розпочати запис" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "Записати" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "Забути раніше вибрані джерела відео" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "Зупинити запис" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "Зупинити" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "Призупинити запис" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "Запис через…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "Скасувати запис" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "Очищення…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "_Налаштування" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "_Сполучення клавіш" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "_Про Kooha" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Ihor Hordiichuk, Serhii Honcharuk" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "Підтримати (Buy Me a Coffee)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "Перекласти" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "Скрінкаст записаний" #: src/application.rs:144 msgid "Show in Files" msgstr "Показати у Файлах" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "Не вдалося знайти усталений аудіопристрій" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "Переконайтеся, що у вашій системі встановлено PulseAudio." #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "{time} година" msgstr[1] "{time} години" msgstr[2] "{time} годин" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "{time} хвилина" msgstr[1] "{time} хвилини" msgstr[2] "{time} хвилин" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "{time} секунда" msgstr[1] "{time} секунди" msgstr[2] "{time} секунд" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "Не вдалося встановити теку для записів" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" "Така частота кадрів може спричинити проблеми зі швидкодією у вибраному " "форматі." #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "Цей формат експериментальний і не підтримується." #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "Немає" #: src/recording.rs:42 msgid "No active profile" msgstr "Немає активного профілю" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "Не вдалося розпочати запис" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "Довідка: {link}." #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "Плагін GStreamer може бути не встановлений." #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "Переконайтеся, що місце збереження існує та доступне." #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "Сталася помилка під час запису" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "Не вдалося відкрити “{path}” для запису" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "Вибрати теку для записів" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "Не вдалося перемкнути паузу" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" "Наразі триває запис. Негайний вихід може призвести до неможливості " "відтворення запису. Зупиніть запис перед виходом." #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" "Вихід скасує обробку і може призвести до неможливості відтворення запису." #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "Вийти з застосунку?" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "Копіювання до буфера обміну" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "Скопійовано до буфера обміну" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "Показати подробиці помилки" #: src/window/mod.rs:286 msgid "Help" msgstr "Довідка" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "Гаразд, зрозуміло" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "Відкрити налаштування?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" "Можливо, раніше вибраний формат недоступний. Відкрийте налаштування і " "виберіть формат для продовження запису." #: src/window/mod.rs:305 msgid "Later" msgstr "Пізніше" #: src/window/mod.rs:307 msgid "Open" msgstr "Відкрити" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "Триває запис" #: src/window/mod.rs:485 msgid "Paused" msgstr "Зупинено" #: src/window/mod.rs:522 msgid "Normal" msgstr "Звичайний" #: src/window/mod.rs:523 msgid "Selection" msgstr "Ділянка" #~ msgid "Failed to start device monitor" #~ msgstr "Не вдалося запустити монітор пристрою" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "Не вдалося під'єднатися до фонової служби PulseAudio" #~ msgid "No microphone source found" #~ msgstr "Не знайдено мікрофона" #~ msgid "No desktop speaker source found" #~ msgstr "Не знайдено динаміка настільного ПК" #~ msgid "Ok" #~ msgstr "Гаразд" #~ msgid "This frame rate may cause performance issues." #~ msgstr "Така частота кадрів може спричинити проблеми зі швидкодією." #~ msgid "approx." #~ msgstr "приблизно." #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ Вибір монітора, вікна або частини екрана для запису" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 Вибір кількох джерел" #~ msgid "No Profile" #~ msgstr "Немає профілю" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "Клацніть тут, щоб переглянути відео." #~ msgid "Failed to select saving location" #~ msgstr "Не вдалося вибрати місце збереження" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "Не вдалося відкрити файл для запису" #~ msgid "Failed to select folder" #~ msgstr "Не вдалося вибрати теку" #~ msgid "Donate (Liberapay)" #~ msgstr "Підтримати (Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "Підтримати (PayPal)" #~ msgid "Check out {} for help." #~ msgstr "Перегляньте {}, щоб отримати довідку." #~ msgid "Failed to open “{}” for writing" #~ msgstr "Не вдалося відкрити «{}» для запису" #~ msgid "_Cancel" #~ msgstr "_Скасувати" #~ msgid "_Select" #~ msgstr "_Вибрати" #~ msgid "No folder selected" #~ msgstr "Тека не вибрана" #~ msgid "Please choose a folder and try again." #~ msgstr "Виберіть теку та повторіть спробу." #~ msgid "Cannot access “{}”" #~ msgstr "Не вдалося отримати доступ до «{}»" #~ msgid "Please choose an accessible location and try again." #~ msgstr "Виберіть доступне розташування та повторіть спробу." #~ msgid "Enable Desktop Sounds" #~ msgstr "Увімкнути звуки комп'ютера" #~ msgid "Disable Desktop Sounds" #~ msgstr "Вимкнути звуки комп'ютера" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 Записування екрана без зайвих рухів." #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "" #~ "🎙️ Запис звуків за допомогою мікрофона, звуків комп'ютера, або обох " #~ "одночасно." #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 Підтримка форматів WebM, MP4, GIF та MKV." #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 Вибір кількох джерел." #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 Додаткове апаратне прискорене кодування" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ Вибір монітора або вікна для записування." #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ Вибір ділянки екрана." #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ Налаштування затримки початку запису." #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ Показ або приховування вказівника миші." #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 Вибір місця збереження записів." #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ Можливість застосовувати комбінації клавіш." #~ msgid "Toggle Computer Sounds" #~ msgstr "Увімкнути/вимкнути звуки комп’ютера" #~ msgid "_Delay" #~ msgstr "_Затримка" #~ msgid "3 seconds" #~ msgstr "3 секунди" #~ msgid "5 seconds" #~ msgstr "5 секунд" #~ msgid "10 seconds" #~ msgstr "10 секунд" #~ msgid "_Video Format" #~ msgstr "_Формат відео" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "_Зберегти до…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "Можливо не встановлено плагін GStreamer. Якщо він встановлений, але не " #~ "працює належним чином, повідомте про це на сторінці проблем Kooha." #~ msgid "Record Computer Sounds" #~ msgstr "Записувати звуки комп'ютера" #~ msgid "Record From Microphone" #~ msgstr "Записувати з мікрофона" #~ msgid "Dave Patrick" #~ msgstr "Дейв Патрік" #~ msgid "Cancel Delay" #~ msgstr "Скасувати Затримку" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Авторське право 2021 Дейв Патрік" #~ msgid "Screencast Recorded!" #~ msgstr "Записано!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "Запис збережено до «{}»" #~ msgid "Open File" #~ msgstr "Відкрити файл" #~ msgid "Screencast Portal Request Error" #~ msgstr "Помилка запиту порталу Screencast" #~ msgid "Pipeline Build Error" #~ msgstr "Помилка побудови pipeline" #~ msgid "Recording Error" #~ msgstr "Помилка записування" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "Обов’язково перевірте наявність залежностей виконання та Не працює " #~ "сторінка." #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "Переконайтеся, що місце збереження існує та доступне. Якщо так, це " #~ "вказує, що сталася невідома помилка. Будь ласка, повідомте про неї на сторінці обговорень " #~ "Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If it actually exists, " #~ "something went wrong and please report to Kooha's issue page." #~ msgstr "" #~ "Переконайтеся, що місце збереження існує. Якщо воно справді існує, щось " #~ "пішло не так. Повідомте про це на сторінці проблем Kooha." #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "Можливо, не встановлено плагін GStreamer. Якщо встановлено, тоді " #~ "надішліть звіт на сторінці проблем Kooha." #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "Переконайтеся, що розташування для збереження існує. Якщо ні, тоді щось " #~ "пішло не так, тоді можете повідомити про це на сторінці проблем Kooha." #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "Знімайте свій екран просто і безболісно, без відволікань." #~ msgid "" #~ "Make sure to check for the runtime dependencies and \"It Doesn't Work\" " #~ "page in Kooha's readme page. ({})" #~ msgstr "" #~ "Обов'язково перевірте наявність залежностей середовища виконання та «It " #~ "Doesn't Work» на сторінці readme Kooha. ({})" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's " #~ "issue page. ({})" #~ msgstr "" #~ "Можливо, не встановлено плагін GStreamer. Якщо ні, повідомте про це на " #~ "сторінці проблем Kooha. ({})" #~ msgid "Screencast Portal Request Failed" #~ msgstr "Помилка запиту на портал трансляції екрана" #~ msgid "Recording Failed" #~ msgstr "Не вдалося записати" #~ msgid "Pipeline Build Failed" #~ msgstr "Помилка побудови каналу" #~ msgid "Please choose an accessible location and retry." #~ msgstr "Будь-ласка, оберіть доступне місце збереження, і спобуйте ще раз." #~ msgid "Select a Folder" #~ msgstr "Вибрати папку" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ Вибір меж записування екрана." #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 Підтримка вільних відеоформатів Matroska та WebM." #~ msgid "Open menu" #~ msgstr "Відкрити меню" #~ msgid "Show keyboard shortcuts" #~ msgstr "Показати гарячі клавіші" #, fuzzy #~ msgid "Toggle record" #~ msgstr "Перемкнути запис" #~ msgid "Cancel delay" #~ msgstr "Скасувати затримку" #, fuzzy #~ msgid "Toggle computer sounds" #~ msgstr "Записувати або не записувати звуки комп'ютера" #~ msgid "Toggle microphone" #~ msgstr "Ввімкнути або вимкнути мікрофон" #~ msgid "Toggle pointer" #~ msgstr "Показувати або сховати вказівник миші" #~ msgid "Delay" #~ msgstr "Затримка" #~ msgid "Video Format" #~ msgstr "Формат Відео" #~ msgid "Save to…" #~ msgstr "Зберегти в…" #~ msgid "Keyboard Shortcuts" #~ msgstr "Гарячі Клавіші" #~ msgid "About Kooha" #~ msgstr "Про Kooha" #~ msgid "Select" #~ msgstr "Обрати" #~ msgid "Toggle capture mode" #~ msgstr "Змінити режим захоплення" #~ msgid "Full Screen" #~ msgstr "Повний екран" #~ msgid "Processing" #~ msgstr "Обробка" #~ msgid "Save location not set" #~ msgstr "Місце збереження не вказано" #~ msgid "Recording cannot start" #~ msgstr "Неможливо почати запис" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "Місце збереження яке Ви обрали може не існувати." #~ msgid "The recording has been saved in" #~ msgstr "Запис зебережено у" Kooha-2.3.0/po/zh_Hans.po000066400000000000000000000530321457702140700151370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # TheInterestingSoul , 2021, 2022. # Zhou Nan , 2021, 2022. # Zhongrui Cao , 2021. # WhiredPlanck , 2021. # Liu Tao , 2021. # joe , 2022. # lumingzh , 2022. # Hugel , 2022. # Leedsgarden , 2022. # Deleted User , 2022. # yangyangdaji <1504305527@qq.com>, 2023. # CrackTC , 2023. # Carter Zhang , 2023. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2024-02-24 02:33+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\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.5-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "优雅地录制屏幕" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;录屏;录制;视频;屏幕;屏幕录制;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "以直观、直接的方式捕捉屏幕,无需分心。" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha 是一个界面极简的录屏软件。无需一系列的配置,只需轻点一下即可开始录制。" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "Kooha 的主要特性有:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "🎙️ 可以同时录制麦克风,电脑音频" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "📼 支持MP4、GIF、WebM、MKV、MKA和MKS格式" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "🛠️ 你可以配置光标是否可见,帧率的大小和延迟的高低,将配置文件保存在本地" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "🚀 尝试使用硬件加速编码" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "选择区域" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "取消" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "完成" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "重设选区" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "通用" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "延迟(s)" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "录制文件夹" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "视频" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "格式" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "帧率" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "打开菜单" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "显示设置" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "显示快捷键" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "退出" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "录制中" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "录制/停止" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "继续/暂停" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "取消录制" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "设置" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "打开/关闭电脑音频" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "打开/关闭麦克风" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "显示/隐藏鼠标指针" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "主菜单" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "捕捉一个显示器或窗口" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "捕捉一个屏幕选区" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "打开桌面音频" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "关闭桌面音频" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "打开麦克风" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "关闭麦克风" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "显示鼠标指针" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "隐藏鼠标指针" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "开始录制" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "录制" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "重设原先的视频源" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "停止记录" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "停止" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "停止录制" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "即将录制……" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "取消录制" #: data/resources/ui/window.ui:257 msgid "Flushing…" msgstr "冲制中…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "设置 (_P)" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "快捷键(_K)" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "关于 Kooha (_A)" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "" "有趣的灵魂 (@TheInterestingSoul)\n" "Zhou Nan <zhounan@nfschina.com>\n" "Zhongrui Cao <zhongrui.cao@suse.com>\n" "WhiredPlanck <wplanck@aosc.io>\n" "lumingzh <lumingzh@qq.com>" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "捐赠(买我一杯咖啡!)" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "翻译" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "截屏记录" #: src/application.rs:144 msgid "Show in Files" msgstr "在文件中显示" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "确保你已在系统安装PulseAudio。" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "此格式是实验性的,不受支持。" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "无" #: src/recording.rs:42 msgid "No active profile" msgstr "配置无效" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "开始录制失败" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "查看 “{link}” 以获取帮助。" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "GStreamer plugin可能没有安装。" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "确保保存路径存在并可以访问。" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "录制时产生错误" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "无法打开并写入 “{path}”" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "选择录制保存文件夹" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "切换暂停状态失败" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "复制到剪贴板" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "已复制到剪贴板" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "显示错误详情" #: src/window/mod.rs:286 msgid "Help" msgstr "帮助" #: src/window/mod.rs:291 #, fuzzy msgid "Ok, Got It" msgstr "好的,我知道了" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "是否要打开设置?" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "先前选择的格式可能不可用。打开首选项并选择一种格式以继续录制。" #: src/window/mod.rs:305 msgid "Later" msgstr "稍后" #: src/window/mod.rs:307 msgid "Open" msgstr "打开" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "已暂停" #: src/window/mod.rs:522 msgid "Normal" msgstr "一般" #: src/window/mod.rs:523 msgid "Selection" msgstr "选区录制" #~ msgid "Failed to start device monitor" #~ msgstr "启动设备监视器失败" #~ msgid "Failed to connect to PulseAudio daemon" #~ msgstr "连接到PulseAudio守护进程失败" #~ msgid "No microphone source found" #~ msgstr "没有找到麦克风源" #~ msgid "No desktop speaker source found" #~ msgstr "没有找到桌面音频源" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "This frame rate may cause performance issues." #~ msgstr "此帧率可能会导致性能问题。" #~ msgid "approx." #~ msgstr "大约。" #~ msgid "🖥️ Select a monitor, a window, or a portion of the screen to record" #~ msgstr "🖥️ 你可以录制桌面,窗口或者屏幕的指定部分" #~ msgid "🗔 Multiple sources selection" #~ msgstr "🗔 你可以同时启用多个录制源" #~ msgid "Dave Patrick Caberto" #~ msgstr "Dave Patrick Caberto" #~ msgid "© 2022 Dave Patrick Caberto" #~ msgstr "© 2022 Dave Patrick Caberto" #~ msgid "Click here to view the video." #~ msgstr "点击此处查看视频。" #~ msgid "Failed to select saving location" #~ msgstr "选择保存位置失败" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "Matroska" #~ msgstr "Matroska" #~ msgid "WebM VP9" #~ msgstr "WebM VP9" #~ msgid "WebM AV1" #~ msgstr "WebM AV1" #~ msgid "WebM VAAPI VP8" #~ msgstr "WebM VAAPI VP8" #~ msgid "WebM VAAPI VP9" #~ msgstr "WebM VAAPI VP9" #~ msgid "WebM VAAPI H264" #~ msgstr "WebM VAAPI H264" #~ msgid "Failed to open file for writing" #~ msgstr "打开文件写入失败" #~ msgid "Donate (Liberapay)" #~ msgstr "捐赠(Liberapay)" #~ msgid "Donate (PayPal)" #~ msgstr "捐赠(PayPal)" #~ msgid "Check out {} for help." #~ msgstr "查看{}以获取帮助。" #~ msgid "Failed to open “{}” for writing" #~ msgstr "打开“{}”写入失败" #~ msgid "_Cancel" #~ msgstr "取消(_C)" #~ msgid "_Select" #~ msgstr "选择(_S)" #~ msgid "No folder selected" #~ msgstr "没有选中文件夹" #~ msgid "Please choose a folder and try again." #~ msgstr "请选择一个文件夹,然后重试。" #~ msgid "Cannot access “{}”" #~ msgstr "无法访问“{}”" #~ msgid "Please choose an accessible location and try again." #~ msgstr "请选择一个可以访问的位置并重试。" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 轻松录屏,省心省时。" #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ 录制麦克风或计算机声音,抑或两者同时录制。" #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 支持 WebM、MP4、GIF 和 MKV 格式。" #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 多个画面来源选择。" #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 可选硬件加速编码" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ 选择显示器或窗口以录制。" #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ 在屏幕上选择特定区域来捕获画面。" #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ 在开始录制之前设置延迟来准备。" #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ 显示/隐藏鼠标指针。" #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 为您的录像选择一个保存位置。" #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ 键盘快捷键让你事半功倍。" #~ msgid "Toggle Computer Sounds" #~ msgstr "切换电脑声音录制状态" #~ msgid "_Delay" #~ msgstr "延迟(_D)" #~ msgid "3 seconds" #~ msgstr "3秒" #~ msgid "5 seconds" #~ msgstr "5 秒" #~ msgid "10 seconds" #~ msgstr "10 秒" #~ msgid "_Video Format" #~ msgstr "视频格式(_V)" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "保存到(_S)…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "可能未安装 GStreamer 插件。如果已安装但仍无法正常工作,请报告kooha问题页面。" #~ msgid "Record Computer Sounds" #~ msgstr "录制本机声音" #~ msgid "Record From Microphone" #~ msgstr "录制麦克风声音" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "取消延迟" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "版权所有: Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "屏幕已录制!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "录制文件已保存到“{}”" #~ msgid "Open File" #~ msgstr "打开文件" #~ msgid "Screencast Portal Request Error" #~ msgstr "请求录制入口时出错" #~ msgid "Pipeline Build Error" #~ msgstr "管道构建时出错" #~ msgid "Recording Error" #~ msgstr "录制时出错" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "请确保检查运行时依赖和“为何不工作”说明页。" #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "‎确保保存位置存在或可访问。如果确实存在且可访问,则出问题,请报告给‎‎‎‎古嗣的问题页面‎‎‎。" #~ msgid "" #~ "A GStreamer plugin may not be installed. If not, please report to Kooha's issue page." #~ msgstr "" #~ "GStreamer 插件或许未安装。如果不是这样,请将此报告到 Kooha 的 Issue 页处。" #~ msgid "" #~ "Make sure that the saving location exists. If not, something went wrong " #~ "and please report to Kooha's issue page." #~ msgstr "" #~ "请确保保存的位置存在。如果位置确实存在,说明有故障,请将此报告到 Kooha 的 Issue 页处。" #~ msgid "" #~ "Capture your screen in a straightforward and painless way without " #~ "distractions." #~ msgstr "以直截了当、无痛无扰的方式录制你的屏幕。" #~ msgid "Please choose an accessible location and retry." #~ msgstr "请选择一个可访问的位置,然后重试。" #~ msgid "Select a Folder" #~ msgstr "选择一个文件夹" #~ msgid "🖼️ Select an area of your screen to record." #~ msgstr "🖼️ 选择屏幕中要录制的区域。" #~ msgid "📼 Support for the free Matroska and WebM formats." #~ msgstr "📼 支持 MKV 与 WebM 格式。" #~ msgid "Open menu" #~ msgstr "打开菜单" #~ msgid "Show keyboard shortcuts" #~ msgstr "显示键盘快捷键" #~ msgid "Toggle record" #~ msgstr "开始/结束录制" #~ msgid "Toggle record pause" #~ msgstr "暂停/继续录制" #~ msgid "Cancel delay" #~ msgstr "取消延迟" #~ msgid "Toggle computer sounds" #~ msgstr "切换本机声音录制" #~ msgid "Toggle microphone" #~ msgstr "切换麦克风录制" #~ msgid "Toggle pointer" #~ msgstr "切换鼠标指针显示" #~ msgid "Delay" #~ msgstr "延迟" #~ msgid "Video Format" #~ msgstr "视频格式" #~ msgid "Save to…" #~ msgstr "保存至……" #~ msgid "Keyboard Shortcuts" #~ msgstr "快捷键" #~ msgid "About Kooha" #~ msgstr "关于 Kooha" #~ msgid "Sorry! An error has occured." #~ msgstr "抱歉!软件出现了问题。" #~ msgid "Videos" #~ msgstr "视频" #~ msgid "Failed to create session." #~ msgstr "无法创建会话。" #~ msgid "Failed to select sources." #~ msgstr "无法选择录制源。" #~ msgid "Select" #~ msgstr "选择" #~ msgid "Inaccessible location “{directory}”" #~ msgstr "无法访问 “{directory}”" #~ msgid "The recording has been saved in {saving_location}" #~ msgstr "录像已保存至 {saving_location}" #~ msgid "Inaccessible location '{directory}'" #~ msgstr "无法访问位置 '{directory}'" #~ msgid "Toggle capture mode" #~ msgstr "切换画面捕获模式" #~ msgid "Full Screen" #~ msgstr "全屏录制" #~ msgid "Processing" #~ msgstr "处理中" #~ msgid "Save location not set" #~ msgstr "未设置保存位置" #~ msgid "Recording cannot start" #~ msgstr "无法开始录制" #~ msgid "The saving location you have selected may have been deleted." #~ msgstr "您所选择的保存位置可能已被删除。" #~ msgid "The recording has been saved in" #~ msgstr "录屏视频已保存到" #~ msgid "Record computer sounds" #~ msgstr "录制本机声音" #~ msgid "Record from microphone" #~ msgstr "录制麦克风声音" #~ msgid "Show pointer" #~ msgstr "显示鼠标指针" #~ msgid "Elegantly record your screen " #~ msgstr "优雅地录制你的屏幕。 " #~ msgid "Simple screen recorder" #~ msgstr "简单的屏幕录制工具" #~ msgid "" #~ "Kooha is a simple screen recorder built with GTK. It allows you to record " #~ "your screen and also audio from your microphone or desktop." #~ msgstr "" #~ "Kooha 是一个使用 GTK 构建的简单的屏幕录制工具。它可以录制你的屏幕和来自你" #~ "的麦克风或计算机内的声音。" Kooha-2.3.0/po/zh_Hant.po000066400000000000000000000336341457702140700151460ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the kooha package. # Kisaragi Hiu , 2022. msgid "" msgstr "" "Project-Id-Version: kooha\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 20:05+0800\n" "PO-Revision-Date: 2022-07-27 17:16+0000\n" "Last-Translator: Kisaragi Hiu \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_Hant\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 4.14-dev\n" #: data/io.github.seadve.Kooha.desktop.in.in:3 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:7 src/about.rs:22 #: src/main.rs:71 msgid "Kooha" msgstr "Kooha" #: data/io.github.seadve.Kooha.desktop.in.in:5 #: data/io.github.seadve.Kooha.metainfo.xml.in.in:8 msgid "Elegantly record your screen" msgstr "優雅地錄下螢幕內容" #. Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #: data/io.github.seadve.Kooha.desktop.in.in:10 msgid "Screencast;Recorder;Screen;Video;" msgstr "Screencast;Recorder;Screen;Video;螢幕錄影;錄影;螢幕;" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:10 msgid "" "Capture your screen in a intuitive and straightforward way without " "distractions." msgstr "用可觀並直覺的方式截取您的螢幕,沒有讓人分心的東西。" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:11 msgid "" "Kooha is a simple screen recorder with a minimalist interface. You can just " "click the record button without having to configure a bunch of settings." msgstr "" "Kooha 是一個簡潔的螢幕錄影工具。Kooha 使用極簡化的介面,您只需要按下錄影按" "鈕,不需要調整一大堆設定。" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:13 msgid "The main features of Kooha include the following:" msgstr "以下是 Kooha 的主要功能:" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:15 msgid "🎙️ Record microphone, desktop audio, or both at the same time" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:16 msgid "📼 Support for WebM, MP4, GIF, and Matroska formats" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:17 msgid "🖥️ Select a monitor or a portion of the screen to record" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:18 msgid "" "🛠️ Configurable saving location, pointer visibility, frame rate, and delay" msgstr "" #: data/io.github.seadve.Kooha.metainfo.xml.in.in:19 msgid "🚀 Experimental hardware accelerated encoding" msgstr "" #: data/resources/ui/area_selector.ui:15 msgid "Select Area" msgstr "" #: data/resources/ui/area_selector.ui:20 data/resources/ui/window.ui:233 #: data/resources/ui/window.ui:276 src/window/mod.rs:210 msgid "Cancel" msgstr "" #: data/resources/ui/area_selector.ui:26 msgid "Done" msgstr "" #: data/resources/ui/area_selector.ui:35 msgid "Reset Selection" msgstr "" #: data/resources/ui/preferences_dialog.ui:10 data/resources/ui/shortcuts.ui:10 msgid "General" msgstr "一般" #: data/resources/ui/preferences_dialog.ui:13 msgid "Delay (Seconds)" msgstr "" #: data/resources/ui/preferences_dialog.ui:14 msgid "Time interval before recording begins" msgstr "" #: data/resources/ui/preferences_dialog.ui:27 msgid "Recordings Folder" msgstr "" #: data/resources/ui/preferences_dialog.ui:28 msgid "Destination folder for the recordings" msgstr "" #: data/resources/ui/preferences_dialog.ui:50 msgid "Video" msgstr "" #: data/resources/ui/preferences_dialog.ui:53 msgid "Format" msgstr "" #: data/resources/ui/preferences_dialog.ui:58 msgid "Frame Rate" msgstr "" #: data/resources/ui/shortcuts.ui:14 msgid "Open Menu" msgstr "開啟選單" #: data/resources/ui/shortcuts.ui:20 msgid "Show Preferences" msgstr "" #: data/resources/ui/shortcuts.ui:26 msgid "Show Shortcuts" msgstr "顯示快捷鍵" #: data/resources/ui/shortcuts.ui:32 src/window/mod.rs:212 msgid "Quit" msgstr "離開" #: data/resources/ui/shortcuts.ui:39 src/window/mod.rs:477 msgid "Recording" msgstr "正在錄影" #: data/resources/ui/shortcuts.ui:43 msgid "Toggle Record" msgstr "切換錄影" #: data/resources/ui/shortcuts.ui:50 msgid "Toggle Pause" msgstr "切換暫停" #: data/resources/ui/shortcuts.ui:56 msgid "Cancel Record" msgstr "" #: data/resources/ui/shortcuts.ui:63 msgid "Settings" msgstr "設定" #: data/resources/ui/shortcuts.ui:67 msgid "Toggle Desktop Audio" msgstr "" #: data/resources/ui/shortcuts.ui:73 msgid "Toggle Microphone" msgstr "切換麥克風" #: data/resources/ui/shortcuts.ui:79 msgid "Toggle Pointer" msgstr "切換游標" #: data/resources/ui/window.ui:24 msgid "Main Menu" msgstr "主選單" #: data/resources/ui/window.ui:53 msgid "Capture a Monitor or Window" msgstr "截取一個螢幕或視窗" #: data/resources/ui/window.ui:66 msgid "Capture a Selection of Screen" msgstr "選取畫面上的區域進行截取" #: data/resources/ui/window.ui:86 msgid "Enable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:87 msgid "Disable Desktop Audio" msgstr "" #: data/resources/ui/window.ui:95 msgid "Enable Microphone" msgstr "" #: data/resources/ui/window.ui:96 msgid "Disable Microphone" msgstr "" #: data/resources/ui/window.ui:104 msgid "Show Pointer" msgstr "顯示游標" #: data/resources/ui/window.ui:105 msgid "Hide Pointer" msgstr "" #: data/resources/ui/window.ui:115 msgid "Start Recording" msgstr "" #: data/resources/ui/window.ui:116 msgid "Record" msgstr "錄影" #: data/resources/ui/window.ui:129 msgid "Forget Previously Selected Video Sources" msgstr "" #: data/resources/ui/window.ui:180 msgid "Stop Recording" msgstr "" #: data/resources/ui/window.ui:181 msgid "Stop" msgstr "停止" #: data/resources/ui/window.ui:191 msgid "Pause Recording" msgstr "" #: data/resources/ui/window.ui:214 msgid "Recording in…" msgstr "即將開始錄影…" #: data/resources/ui/window.ui:232 data/resources/ui/window.ui:275 msgid "Cancel Recording" msgstr "" #: data/resources/ui/window.ui:257 #, fuzzy msgid "Flushing…" msgstr "正在寫入…" #: data/resources/ui/window.ui:293 msgid "_Preferences" msgstr "" #: data/resources/ui/window.ui:297 msgid "_Keyboard Shortcuts" msgstr "鍵盤快捷鍵(_K)" #: data/resources/ui/window.ui:301 msgid "_About Kooha" msgstr "關於 Kooha(_A)" #. Translators: Replace "translator-credits" with your names. Put a comma between. #: src/about.rs:33 msgid "translator-credits" msgstr "Kisaragi Hiu" #: src/about.rs:43 msgid "Donate (Buy Me a Coffee)" msgstr "" #: src/about.rs:46 msgid "GitHub" msgstr "GitHub" #: src/about.rs:48 msgid "Translate" msgstr "" #. Translators: This is a message that the user will see when the recording is finished. #: src/application.rs:137 msgid "Screencast recorded" msgstr "" #: src/application.rs:144 msgid "Show in Files" msgstr "" #: src/device.rs:26 msgid "Failed to find the default audio device" msgstr "" #: src/device.rs:27 msgid "Make sure that you have PulseAudio installed in your system." msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:24 msgid "{time} hour" msgid_plural "{time} hours" msgstr[0] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:31 msgid "{time} minute" msgid_plural "{time} minutes" msgstr[0] "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/format_time.rs:38 msgid "{time} second" msgid_plural "{time} seconds" msgstr[0] "" #: src/preferences_dialog.rs:65 msgid "Failed to set recordings folder" msgstr "" #: src/preferences_dialog.rs:208 msgid "This frame rate may cause performance issues on the selected format." msgstr "" #: src/preferences_dialog.rs:247 msgid "This format is experimental and unsupported." msgstr "" #: src/preferences_dialog.rs:254 src/window/mod.rs:535 msgid "None" msgstr "無" #: src/recording.rs:42 msgid "No active profile" msgstr "" #: src/recording.rs:184 src/recording.rs:221 src/recording.rs:263 msgid "Failed to start recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:187 msgid "Check out {link} for help." msgstr "" #: src/recording.rs:222 msgid "A GStreamer plugin may not be installed." msgstr "" #: src/recording.rs:264 src/recording.rs:489 msgid "Make sure that the saving location exists and is accessible." msgstr "" #: src/recording.rs:480 msgid "An error occurred while recording" msgstr "" #. Translators: Do NOT translate the contents between '{' and '}', this is a variable name. #: src/recording.rs:486 msgid "Failed to open “{path}” for writing" msgstr "" #: src/settings.rs:43 msgid "Select Recordings Folder" msgstr "選取儲存錄影的資料夾" #: src/window/mod.rs:79 msgid "Failed to toggle pause" msgstr "" #: src/window/mod.rs:196 msgid "" "A recording is currently in progress. Quitting immediately may cause the " "recording to be unplayable. Please stop the recording before quitting." msgstr "" #: src/window/mod.rs:199 msgid "" "Quitting will cancel the processing and may cause the recording to be " "unplayable." msgstr "" #: src/window/mod.rs:205 msgid "Quit the Application?" msgstr "" #: src/window/mod.rs:253 msgid "Copy to clipboard" msgstr "" #: src/window/mod.rs:258 msgid "Copied to clipboard" msgstr "" #: src/window/mod.rs:264 msgid "Show detailed error" msgstr "" #: src/window/mod.rs:286 msgid "Help" msgstr "" #: src/window/mod.rs:291 msgid "Ok, Got It" msgstr "" #: src/window/mod.rs:300 msgid "Open Preferences?" msgstr "" #: src/window/mod.rs:301 msgid "" "The previously selected format may have been unavailable. Open preferences " "and select a format to continue recording." msgstr "" #: src/window/mod.rs:305 msgid "Later" msgstr "" #: src/window/mod.rs:307 msgid "Open" msgstr "" #: src/window/mod.rs:437 msgid "A recording is in progress" msgstr "" #: src/window/mod.rs:485 msgid "Paused" msgstr "已暫停" #: src/window/mod.rs:522 msgid "Normal" msgstr "一般" #: src/window/mod.rs:523 msgid "Selection" msgstr "選取區域" #~ msgid "GIF" #~ msgstr "GIF" #~ msgid "WebM" #~ msgstr "WebM" #~ msgid "MP4" #~ msgstr "MP4" #~ msgid "🎥 Capture your screen without any hassle." #~ msgstr "🎥 一點麻煩都沒有地截取您的螢幕。" #~ msgid "🎙️ Record your microphone, computer sounds, or both at the same time." #~ msgstr "🎙️ 錄下您的麥克風、電腦內部音訊,或是兩個都錄。" #~ msgid "📼 Support for WebM, MP4, GIF, and MKV formats." #~ msgstr "📼 支援 WebM、MP4、GIF 及 MKV 格式。" #~ msgid "🗔 Multiple sources selection." #~ msgstr "🗔 選取多個來源。" #~ msgid "🚀 Optional hardware accelerated encoding" #~ msgstr "🚀 編碼可以選擇使用硬體加速" #~ msgid "🖥️ Select a monitor or window to record." #~ msgstr "🖥️ 選取要錄影的螢幕或視窗。" #~ msgid "🖼️ Create a selection to capture certain area from your screen." #~ msgstr "🖼️ 選取並截取螢幕的一部分。" #~ msgid "⏲️ Set delay to prepare before you start recording." #~ msgstr "⏲️ 設定開始錄影前的延遲,讓您進行準備。" #~ msgid "🖱️ Hide or show mouse pointer." #~ msgstr "🖱️ 隱藏或顯示滑鼠游標。" #~ msgid "💾 Choose a saving location for your recording." #~ msgstr "💾 選擇您的錄影要儲存的地方。" #~ msgid "⌨️ Utilize helpful keyboard shortcuts." #~ msgstr "⌨️ 利用好用的鍵盤快捷鍵。" #~ msgid "Toggle Computer Sounds" #~ msgstr "切換電腦內部音訊" #~ msgid "_Delay" #~ msgstr "延遲(_D)" #~ msgid "5 seconds" #~ msgstr "5 秒" #~ msgid "10 seconds" #~ msgstr "10 秒" #~ msgid "_Video Format" #~ msgstr "影片格式(_V)" #~ msgid "MKV" #~ msgstr "MKV" #~ msgid "_Save to…" #~ msgstr "儲存到(_S)…" #~ msgid "" #~ "A GStreamer plugin may not be installed. If it is installed but still " #~ "does not work properly, please report to Kooha's issue page." #~ msgstr "" #~ "可能有一個 GStreamer 外掛程式尚未安裝。如果已經安裝了卻還是無法正常運作," #~ "請到 Kooha 的 issue 頁" #~ "面進行回報。" #~ msgid "Record Computer Sounds" #~ msgstr "錄下電腦內部音訊" #~ msgid "Record From Microphone" #~ msgstr "錄下麥克風" #~ msgid "Dave Patrick" #~ msgstr "Dave Patrick" #~ msgid "Cancel Delay" #~ msgstr "取消延遲" #~ msgid "Copyright 2021 Dave Patrick" #~ msgstr "Copyright 2021 Dave Patrick" #~ msgid "Screencast Recorded!" #~ msgstr "螢幕錄影完成!" #~ msgid "The recording has been saved in “{}”" #~ msgstr "已將錄影儲存到「{}」" #~ msgid "Open File" #~ msgstr "開啟檔案" #~ msgid "Screencast Portal Request Error" #~ msgstr "螢幕錄影 (screencast) portal 請求錯誤" #~ msgid "Pipeline Build Error" #~ msgstr "管線建構錯誤" #~ msgid "Recording Error" #~ msgstr "錄影錯誤" #~ msgid "" #~ "Make sure to check for the runtime dependencies and It Doesn't Work page." #~ msgstr "" #~ "請確保執行時所需的軟體有安裝。也請參照無法正常運作時的說明。" #~ msgid "" #~ "Make sure that the saving location exists or is accessible. If it " #~ "actually exists or is accessible, something went wrong and please report " #~ "to Kooha's issue page." #~ msgstr "" #~ "請確保儲存的目的地存在或是可存取。如果它的確存在或可存取,那就代表有東西出" #~ "錯了,請到 Kooha 的 " #~ "issue 頁面進行回報。" Kooha-2.3.0/src/000077500000000000000000000000001457702140700133535ustar00rootroot00000000000000Kooha-2.3.0/src/about.rs000066400000000000000000000123631457702140700150400ustar00rootroot00000000000000use std::{ env, io::BufRead, path::Path, process::{Command, Stdio}, }; use adw::prelude::*; use anyhow::Result; use gettextrs::gettext; use gst::prelude::*; use gtk::glib; use crate::{ config::{APP_ID, VERSION}, experimental, }; pub fn present_dialog(parent: &impl IsA) { let dialog = adw::AboutDialog::builder() .application_icon(APP_ID) .application_name(gettext("Kooha")) .developer_name("Dave Patrick Caberto") .version(VERSION) .copyright("© 2024 Dave Patrick Caberto") .license_type(gtk::License::Gpl30) .developers(vec![ "Dave Patrick Caberto", "Mathiascode", "Felix Weilbach", ]) // Translators: Replace "translator-credits" with your names. Put a comma between. .translator_credits(gettext("translator-credits")) .issue_url("https://github.com/SeaDve/Kooha/issues") .support_url("https://github.com/SeaDve/Kooha/discussions") .debug_info(debug_info()) .debug_info_filename("kooha-debug-info") .release_notes_version("2.3.0") .release_notes(release_notes()) .build(); dialog.add_link( &gettext("Donate (Buy Me a Coffee)"), "https://www.buymeacoffee.com/seadve", ); dialog.add_link(&gettext("GitHub"), "https://github.com/SeaDve/Kooha"); dialog.add_link( &gettext("Translate"), "https://hosted.weblate.org/projects/seadve/kooha", ); dialog.present(parent); } fn release_notes() -> &'static str { r#"

This release contains new features and fixes:

  • Area selector window is now resizable
  • Previous selected area is now remembered
  • Logout and idle are now inhibited while recording
  • Video format and FPS are now shown in the main view
  • Notifications now show the duration and size of the recording
  • Notification actions now work even when the application is closed
  • Progress is now shown when flushing the recording
  • It is now much easier to pick from frame rate options
  • Actually fixed audio from stuttering and being cut on long recordings
  • Record audio in stereo rather than mono when possible
  • Recordings are no longer deleted when flushing is cancelled
  • Significant improvements in recording performance
  • Improved preferences dialog UI
  • Fixed incorrect output video orientation on certain compositors
  • Fixed incorrect focus on area selector
  • Fixed too small area selector window default size on HiDPI monitors
  • Updated translations
"# } fn cpu_model() -> Result { let output = Command::new("lscpu") .stdout(Stdio::piped()) .spawn()? .wait_with_output()?; for res in output.stdout.lines() { let line = res?; if line.contains("Model name:") { if let Some((_, value)) = line.split_once(':') { return Ok(value.trim().to_string()); } } } Ok("".into()) } fn gpu_model() -> Result { let output = Command::new("lspci") .stdout(Stdio::piped()) .spawn()? .wait_with_output()?; for res in output.stdout.lines() { let line = res?; if line.contains("VGA") { if let Some(value) = line.splitn(3, ':').last() { return Ok(value.trim().to_string()); } } } Ok("".into()) } fn debug_info() -> String { let is_flatpak = Path::new("/.flatpak-info").exists(); let experimental_features = experimental::enabled_features(); let language_names = glib::language_names().join(", "); let cpu_model = cpu_model().unwrap_or_else(|e| format!("<{}>", e)); let gpu_model = gpu_model().unwrap_or_else(|e| format!("<{}>", e)); let distribution = glib::os_info("PRETTY_NAME").unwrap_or_else(|| "".into()); let desktop_session = env::var("DESKTOP_SESSION").unwrap_or_else(|_| "".into()); let display_server = env::var("XDG_SESSION_TYPE").unwrap_or_else(|_| "".into()); let gtk_version = format!( "{}.{}.{}", gtk::major_version(), gtk::minor_version(), gtk::micro_version() ); let adw_version = format!( "{}.{}.{}", adw::major_version(), adw::minor_version(), adw::micro_version() ); let gst_version_string = gst::version_string(); let pipewire_version = gst::Registry::get() .find_feature("pipewiresrc", gst::ElementFactory::static_type()) .map_or("".into(), |feature| { feature .plugin() .map_or("".into(), |plugin| plugin.version()) }); format!( r#"- {APP_ID} {VERSION} - Flatpak: {is_flatpak} - Experimental Features: {experimental_features:?} - Language: {language_names} - CPU: {cpu_model} - GPU: {gpu_model} - Distribution: {distribution} - Desktop Session: {desktop_session} - Display Server: {display_server} - GTK {gtk_version} - Libadwaita {adw_version} - {gst_version_string} - Pipewire {pipewire_version}"# ) } Kooha-2.3.0/src/application.rs000066400000000000000000000177531457702140700162410ustar00rootroot00000000000000use adw::{prelude::*, subclass::prelude::*}; use gettextrs::gettext; use gtk::{ gio, glib::{self, clone}, }; use crate::{ about, config::{APP_ID, PKGDATADIR, PROFILE, VERSION}, format_time, preferences_dialog::PreferencesDialog, settings::Settings, window::Window, }; mod imp { use std::cell::OnceCell; use super::*; #[derive(Debug, Default)] pub struct Application { pub(super) settings: OnceCell, } #[glib::object_subclass] impl ObjectSubclass for Application { const NAME: &'static str = "KoohaApplication"; type Type = super::Application; type ParentType = adw::Application; } impl ObjectImpl for Application {} impl ApplicationImpl for Application { fn activate(&self) { self.parent_activate(); let obj = self.obj(); if let Some(window) = obj.windows().first() { window.present(); return; } let window = Window::new(&obj); window.present(); } fn startup(&self) { self.parent_startup(); gtk::Window::set_default_icon_name(APP_ID); let obj = self.obj(); obj.setup_gactions(); obj.setup_accels(); } } impl GtkApplicationImpl for Application {} impl AdwApplicationImpl for Application {} } glib::wrapper! { pub struct Application(ObjectSubclass) @extends gio::Application, gtk::Application, adw::Application, @implements gio::ActionMap, gio::ActionGroup; } impl Application { pub fn new() -> Self { glib::Object::builder() .property("application-id", APP_ID) .property("resource-base-path", "/io/github/seadve/Kooha/") .build() } /// Returns the global instance of `Application`. /// /// # Panics /// /// Panics if the app is not running or if this is called on a non-main thread. pub fn get() -> Self { debug_assert!( gtk::is_initialized_main_thread(), "application must only be accessed in the main thread" ); gio::Application::default().unwrap().downcast().unwrap() } pub fn settings(&self) -> &Settings { self.imp().settings.get_or_init(|| { let settings = Settings::default(); if tracing::enabled!(tracing::Level::TRACE) { settings.connect_changed(None, |settings, key| { tracing::trace!("Settings `{}` changed to `{}`", key, settings.value(key)); }); } settings }) } pub fn window(&self) -> Window { self.active_window() .map_or_else(|| Window::new(self), |w| w.downcast().unwrap()) } pub async fn send_record_success_notification( &self, recording_file: &gio::File, duration: gst::ClockTime, ) { let mut body_fragments = vec![format_time::duration(duration)]; match recording_file .query_info_future( gio::FILE_ATTRIBUTE_STANDARD_SIZE, gio::FileQueryInfoFlags::NONE, glib::Priority::DEFAULT_IDLE, ) .await { Ok(file_info) => { let formatted_size = glib::format_size(file_info.size() as u64); body_fragments.push(formatted_size.to_string()); } Err(err) => tracing::warn!("Failed to get file size: {:?}", err), } // Translators: This is a message that the user will see when the recording is finished. let notification = gio::Notification::new(&gettext("Screencast recorded")); notification.set_body(Some(&body_fragments.join(", "))); notification.set_default_action_and_target_value( "app.launch-uri", Some(&recording_file.uri().to_variant()), ); notification.add_button_with_target_value( &gettext("Show in Files"), "app.show-in-files", Some(&recording_file.uri().to_variant()), ); self.send_notification(Some("record-success"), ¬ification); } pub fn run(&self) -> glib::ExitCode { tracing::info!("Kooha ({})", APP_ID); tracing::info!("Version: {} ({})", VERSION, PROFILE); tracing::info!("Datadir: {}", PKGDATADIR); ApplicationExtManual::run(self) } pub fn quit(&self) { glib::spawn_future_local(clone!(@weak self as obj => async move { if obj.quit_request().await.is_proceed() { ApplicationExt::quit(&obj); } })); } async fn quit_request(&self) -> glib::Propagation { if let Some(window) = self.active_window() { let window = window.downcast::().unwrap(); if window.is_busy() { return window.run_quit_confirmation_dialog().await; } } glib::Propagation::Proceed } fn setup_gactions(&self) { let launch_uri_action = gio::ActionEntry::builder("launch-uri") .parameter_type(Some(&String::static_variant_type())) .activate(|obj: &Self, _, param| { let uri = param.unwrap().get::().unwrap(); glib::spawn_future_local(clone!(@strong obj => async move { if let Err(err) = gtk::FileLauncher::new(Some(&gio::File::for_uri(&uri))) .launch_future(obj.active_window().as_ref()) .await { tracing::error!("Failed to launch uri `{}`: {:?}", uri, err); } })); }) .build(); let show_in_files_action = gio::ActionEntry::builder("show-in-files") .parameter_type(Some(&String::static_variant_type())) .activate(|obj: &Self, _, param| { let uri = param.unwrap().get::().unwrap(); glib::spawn_future_local(clone!(@strong obj => async move { if let Err(err) = gtk::FileLauncher::new(Some(&gio::File::for_uri(&uri))) .open_containing_folder_future(obj.active_window().as_ref()) .await { tracing::warn!("Failed to show `{}` in files: {:?}", uri, err); } })); }) .build(); let quit_action = gio::ActionEntry::builder("quit") .activate(|obj: &Self, _, _| { obj.quit(); }) .build(); let show_preferences_action = gio::ActionEntry::builder("show-preferences") .activate(|obj: &Self, _, _| { let dialog = PreferencesDialog::new(obj.settings()); dialog.present(&obj.window()); }) .build(); let show_about_action = gio::ActionEntry::builder("show-about") .activate(|obj: &Self, _, _| { about::present_dialog(&obj.window()); }) .build(); self.add_action_entries([ launch_uri_action, show_in_files_action, quit_action, show_preferences_action, show_about_action, ]); } fn setup_accels(&self) { self.set_accels_for_action("app.show-preferences", &["comma"]); self.set_accels_for_action("app.quit", &["q"]); self.set_accels_for_action("window.close", &["w"]); self.set_accels_for_action("win.record-desktop-audio", &["a"]); self.set_accels_for_action("win.record-microphone", &["m"]); self.set_accels_for_action("win.show-pointer", &["p"]); self.set_accels_for_action("win.toggle-record", &["r"]); // self.set_accels_for_action("win.toggle-pause", &["k"]); // See issue #112 in GitHub repo self.set_accels_for_action("win.cancel-record", &["c"]); } } Kooha-2.3.0/src/area_selector/000077500000000000000000000000001457702140700161635ustar00rootroot00000000000000Kooha-2.3.0/src/area_selector/mod.rs000066400000000000000000000403221457702140700173110ustar00rootroot00000000000000mod view_port; use adw::{prelude::*, subclass::prelude::*}; use anyhow::{Context, Result}; use futures_channel::oneshot::{self, Sender}; use gst::prelude::*; use gtk::{ gdk, glib::{self, clone}, graphene::Rect, }; use std::{cell::RefCell, os::unix::prelude::RawFd}; pub use self::view_port::Selection; use self::view_port::ViewPort; use crate::{application::Application, cancelled::Cancelled, pipeline, screencast_portal::Stream}; const PREVIEW_FRAMERATE: gst::Fraction = gst::Fraction::from_integer(60); const WINDOW_TO_MONITOR_SCALE_FACTOR: f64 = 0.4; // We can't get header bar height before the window is presented, so we assume "46" as the default. // It is not much of a problem if we get this wrong since the header bar height is not used for // anything important aside from the window size calculation. const ASSUMED_HEADER_BAR_HEIGHT: f64 = 46.0; #[derive(Debug)] pub struct SelectAreaData { /// Selection relative to paintable_rect pub selection: Selection, /// The geometry of paintable where the stream is displayed pub paintable_rect: Rect, /// Actual stream size pub stream_size: (i32, i32), } /// Context to identify if the selection is still valid. #[derive(Debug, Clone, PartialEq, glib::Variant)] pub struct SelectionContext { paintable_rect: (f64, f64, f64, f64), stream_size: (i32, i32), } impl SelectionContext { fn new(paintable_rect: Rect, stream_size: (i32, i32)) -> Self { Self { paintable_rect: ( paintable_rect.x() as f64, paintable_rect.y() as f64, paintable_rect.width() as f64, paintable_rect.height() as f64, ), stream_size, } } } mod imp { use std::cell::OnceCell; use gst::bus::BusWatchGuard; use super::*; #[derive(Debug, Default, gtk::CompositeTemplate)] #[template(resource = "/io/github/seadve/Kooha/ui/area_selector.ui")] pub struct AreaSelector { #[template_child] pub(super) window_title: TemplateChild, #[template_child] pub(super) done_button: TemplateChild, #[template_child] pub(super) stack: TemplateChild, #[template_child] pub(super) loading: TemplateChild, #[template_child] pub(super) view_port: TemplateChild, pub(super) pipeline: OnceCell, pub(super) stream_size: OnceCell<(i32, i32)>, pub(super) result_tx: RefCell>>>, pub(super) async_done_tx: RefCell>>>, pub(super) bus_watch_guard: OnceCell, } #[glib::object_subclass] impl ObjectSubclass for AreaSelector { const NAME: &'static str = "KoohaAreaSelector"; type Type = super::AreaSelector; type ParentType = adw::Window; fn class_init(klass: &mut Self::Class) { klass.bind_template(); klass.install_action("area-selector.cancel", None, move |obj, _, _| { if let Some(tx) = obj.imp().async_done_tx.take() { let _ = tx.send(Err(Cancelled::new("area select loading").into())); } if let Some(tx) = obj.imp().result_tx.take() { let _ = tx.send(Err(Cancelled::new("area select"))); obj.close(); } else { tracing::error!("Sent result twice"); } }); klass.install_action("area-selector.done", None, move |obj, _, _| { if let Some(tx) = obj.imp().result_tx.take() { let _ = tx.send(Ok(())); obj.close(); } else { tracing::error!("Sent response twice"); } }); klass.install_action("area-selector.reset", None, move |obj, _, _| { obj.imp().view_port.set_selection(None::); }); klass.add_binding_action( gdk::Key::Escape, gdk::ModifierType::empty(), "area-selector.cancel", ); } fn instance_init(obj: &glib::subclass::InitializingObject) { obj.init_template(); } } impl ObjectImpl for AreaSelector { fn constructed(&self) { self.parent_constructed(); let obj = self.obj(); self.view_port .connect_selection_notify(clone!(@weak obj => move |_| { obj.update_selection_ui(); })); self.view_port .connect_paintable_rect_notify(clone!(@weak obj => move |_| { obj.update_selection_ui(); })); obj.update_selection_ui(); } fn dispose(&self) { if let Some(pipeline) = self.pipeline.get() { if let Err(err) = pipeline.set_state(gst::State::Null) { tracing::warn!("Failed to set pipeline to Null: {}", err); } } } } impl WidgetImpl for AreaSelector {} impl WindowImpl for AreaSelector { fn close_request(&self) -> glib::Propagation { let obj = self.obj(); obj.save_selection(); self.parent_close_request() } } impl AdwWindowImpl for AreaSelector {} } glib::wrapper! { pub struct AreaSelector(ObjectSubclass) @extends gtk::Widget, gtk::Window, adw::Window, @implements gtk::Native; } impl AreaSelector { pub async fn select( fd: RawFd, streams: &[Stream], parent: &impl IsA, ) -> Result { let this: Self = glib::Object::builder() .property("transient-for", parent) .property("modal", true) .build(); let imp = this.imp(); // Setup window size let parent = parent.as_ref(); let surface = parent.surface().context("Parent has no surface")?; let monitor_geometry = RootExt::display(parent) .monitor_at_surface(&surface) .context("No monitor found")? .geometry(); this.set_default_width( (monitor_geometry.width() as f64 * WINDOW_TO_MONITOR_SCALE_FACTOR) as i32, ); this.set_default_height( (monitor_geometry.height() as f64 * WINDOW_TO_MONITOR_SCALE_FACTOR + ASSUMED_HEADER_BAR_HEIGHT) as i32, ); imp.stack.set_visible_child(&imp.loading.get()); let (result_tx, result_rx) = oneshot::channel(); imp.result_tx.replace(Some(result_tx)); // Setup pipeline let pipeline = gst::Pipeline::new(); imp.pipeline.set(pipeline.clone()).unwrap(); let videosrc_bin = pipeline::make_videosrc_bin(fd, streams, PREVIEW_FRAMERATE)?; let gtksink = gst::ElementFactory::make("gtk4paintablesink").build()?; let paintable = gtksink.property::("paintable"); paintable.set_property("use-scaling-filter", true); imp.view_port.set_paintable(Some(paintable.clone())); if paintable .property::>("gl-context") .is_some() { tracing::debug!("Using gl pipeline"); let glsinkbin = gst::ElementFactory::make("glsinkbin") .property("sink", >ksink) .build()?; pipeline.add_many([videosrc_bin.upcast_ref(), &glsinkbin])?; videosrc_bin.link(&glsinkbin)?; } else { tracing::debug!("Falling back to non-gl pipeline"); let videoconvert = gst::ElementFactory::make("videoconvert").build()?; pipeline.add_many([videosrc_bin.upcast_ref(), &videoconvert, >ksink])?; gst::Element::link_many([videosrc_bin.upcast_ref(), &videoconvert, >ksink])?; } let (async_done_tx, async_done_rx) = oneshot::channel(); imp.async_done_tx.replace(Some(async_done_tx)); // Setup bus to receive async done message let bus_watch_guard = pipeline .bus() .unwrap() .add_watch_local( clone!(@weak this as obj => @default-return glib::ControlFlow::Break, move |_, message| { obj.handle_bus_message(message) }), ) .unwrap(); imp.bus_watch_guard.set(bus_watch_guard).unwrap(); let state_change = pipeline.set_state(gst::State::Playing)?; if state_change != gst::StateChangeSuccess::Async { if let Some(async_done_tx) = imp.async_done_tx.take() { let _ = async_done_tx.send(Ok(())); } } this.present(); // Wait for pipeline to be on playing state async_done_rx.await.unwrap()?; // Get stream size let caps = videosrc_bin .static_pad("src") .context("Videosrc bin has no src pad")? .current_caps() .context("Videosrc bin src pad has no currentcaps")?; let caps_struct = caps .structure(0) .context("Videosrc bin src pad caps has no structure")?; let stream_width = caps_struct.get::("width")?; let stream_height = caps_struct.get::("height")?; imp.stream_size.set((stream_width, stream_height)).unwrap(); this.update_selection_ui(); let (paintable_rect_set_tx, paintable_rect_set_rx) = oneshot::channel(); let paintable_rect_set_tx = RefCell::new(Some(paintable_rect_set_tx)); let handler_id = imp .view_port .connect_paintable_rect_notify(move |view_port| { if view_port.paintable_rect().is_some() { if let Some(selection_context_set_tx) = paintable_rect_set_tx.take() { let _ = selection_context_set_tx.send(()); } } }); imp.stack.set_visible_child(&imp.view_port.get()); // Wait for view port size to be allocated and paintable_rect to be set paintable_rect_set_rx.await.unwrap(); imp.view_port.disconnect(handler_id); // At this point, the paintable rect and stream size and, thus, the selection context is now set. this.restore_selection(); // Wait for user response result_rx.await.unwrap()?; Ok(SelectAreaData { selection: imp.view_port.selection().unwrap(), paintable_rect: imp.view_port.paintable_rect().unwrap(), stream_size: (stream_width, stream_height), }) } fn selection_context(&self) -> Option { let imp = self.imp(); if let (Some(stream_size), Some(paintable_rect)) = (imp.stream_size.get(), imp.view_port.paintable_rect()) { let selection_context = SelectionContext::new(paintable_rect, *stream_size); debug_assert_ne!( selection_context, Application::get() .settings() .selection_context_default_value() ); Some(selection_context) } else { None } } fn restore_selection(&self) { let imp = self.imp(); let app = Application::get(); let settings = app.settings(); let selection = settings.selection(); if selection != settings.selection_default_value() && self .selection_context() .is_some_and(|selection_context| selection_context == settings.selection_context()) { imp.view_port.set_selection(Some(selection)); } } fn save_selection(&self) { let imp = self.imp(); let app = Application::get(); let settings = app.settings(); if let Some(selection) = imp.view_port.selection() { settings.set_selection(selection); settings.set_selection_context( self.selection_context() .unwrap_or_else(|| settings.selection_context_default_value()), ); } else { settings.reset_selection(); settings.reset_selection_context(); } } fn handle_bus_message(&self, message: &gst::Message) -> glib::ControlFlow { use gst::MessageView; let imp = self.imp(); match message.view() { MessageView::AsyncDone(_) => { if let Some(async_done_tx) = imp.async_done_tx.take() { let _ = async_done_tx.send(Ok(())); } glib::ControlFlow::Continue } MessageView::Eos(_) => { tracing::debug!("Eos signal received from record bus"); glib::ControlFlow::Break } MessageView::StateChanged(sc) => { let new_state = sc.current(); if message.src() != imp .pipeline .get() .map(|pipeline| pipeline.upcast_ref::()) { tracing::trace!( "`{}` changed state from `{:?}` -> `{:?}`", message .src() .map_or_else(|| "".into(), |e| e.name()), sc.old(), new_state, ); return glib::ControlFlow::Continue; } tracing::debug!( "Pipeline changed state from `{:?}` -> `{:?}`", sc.old(), new_state, ); glib::ControlFlow::Continue } MessageView::Error(e) => { tracing::error!("Received error message on bus: {:?}", e); if let Some(async_done_tx) = imp.async_done_tx.take() { let _ = async_done_tx.send(Err(e.error().into())); } glib::ControlFlow::Break } MessageView::Warning(w) => { tracing::warn!("Received warning message on bus: {:?}", w); glib::ControlFlow::Continue } MessageView::Info(i) => { tracing::debug!("Received info message on bus: {:?}", i); glib::ControlFlow::Continue } other => { tracing::trace!("Received other message on bus: {:?}", other); glib::ControlFlow::Continue } } } fn update_selection_ui(&self) { let imp = self.imp(); let view_port = imp.view_port.get(); let selection = view_port.selection(); self.action_set_enabled("area-selector.reset", selection.is_some()); self.action_set_enabled("area-selector.done", selection.is_some()); if selection.is_some() { imp.done_button.grab_focus(); } let (Some(stream_size), Some(selection)) = (imp.stream_size.get(), selection) else { imp.window_title.set_subtitle(""); return; }; let Some(paintable_rect) = view_port.paintable_rect() else { imp.window_title.set_subtitle(""); return; }; let (stream_width, stream_height) = stream_size; let scale_factor_h = *stream_width as f32 / paintable_rect.width(); let scale_factor_v = *stream_height as f32 / paintable_rect.height(); let selection_rect_scaled = selection.rect().scale(scale_factor_h, scale_factor_v); imp.window_title.set_subtitle(&format!( "{}×{} px", selection_rect_scaled.width().round() as i32, selection_rect_scaled.height().round() as i32, )); } } #[cfg(test)] mod tests { use super::*; #[test] fn selection_context_variant() { assert_eq!( SelectionContext::static_variant_type().as_str(), "((dddd)(ii))" ); let original = SelectionContext::new(Rect::new(1.0, 2.0, 3.0, 4.0), (5, 6)); let converted = original.to_variant().get::().unwrap(); assert_eq!(original, converted); } } Kooha-2.3.0/src/area_selector/view_port.rs000066400000000000000000000717541457702140700205650ustar00rootroot00000000000000// Based on gnome-shell's screenshot ui (GPLv2). // Source: https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/a3c84ca7463ed92b5be6f013a12bce927223f7c5/js/ui/screenshot.js use gtk::{ gdk, glib::{self, clone}, graphene::{Point, Rect}, gsk::{self, RoundedRect}, prelude::*, subclass::prelude::*, }; use std::{ borrow::Cow, cell::{Cell, RefCell}, fmt, }; // TODO // * Add animation when entering/leaving selection mode. // * Add undo and redo. // * Add minimum selection size. const SIZE: f64 = 100.0; const DEFAULT_SELECTION_SIZE: f32 = 40.0; const SHADE_COLOR: gdk::RGBA = gdk::RGBA::BLACK.with_alpha(0.5); const SELECTION_LINE_WIDTH: f32 = 2.0; const SELECTION_LINE_COLOR: gdk::RGBA = gdk::RGBA::WHITE.with_alpha(0.6); const SELECTION_HANDLE_COLOR: gdk::RGBA = gdk::RGBA::WHITE; const SELECTION_HANDLE_SHADOW_COLOR: gdk::RGBA = gdk::RGBA::BLACK.with_alpha(0.2); const SELECTION_HANDLE_RADIUS: f32 = 12.0; #[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] enum CursorType { #[default] Default, Crosshair, Move, NorthResize, SouthResize, EastResize, WestResize, NorthEastResize, NorthWestResize, SouthEastResize, SouthWestResize, } impl CursorType { fn as_str(self) -> &'static str { match self { Self::Default => "default", Self::Crosshair => "crosshair", Self::Move => "move", Self::NorthResize => "n-resize", Self::SouthResize => "s-resize", Self::EastResize => "e-resize", Self::WestResize => "w-resize", Self::NorthEastResize => "ne-resize", Self::NorthWestResize => "nw-resize", Self::SouthEastResize => "se-resize", Self::SouthWestResize => "sw-resize", } } } #[derive(Clone, Copy, PartialEq, glib::Boxed)] #[boxed_type(name = "KoohaSelection", nullable)] pub struct Selection { start_x: f32, start_y: f32, end_x: f32, end_y: f32, } impl fmt::Debug for Selection { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let rect = self.rect(); f.debug_struct("Selection") .field("x", &rect.x()) .field("y", &rect.y()) .field("width", &rect.width()) .field("height", &rect.height()) .finish() } } impl Selection { fn from_rect(x: f32, y: f32, width: f32, height: f32) -> Self { Self { start_x: x, start_y: y, end_x: x + width, end_y: y + height, } } pub fn left_x(&self) -> f32 { self.start_x.min(self.end_x) } pub fn right_x(&self) -> f32 { self.start_x.max(self.end_x) } pub fn top_y(&self) -> f32 { self.start_y.min(self.end_y) } pub fn bottom_y(&self) -> f32 { self.start_y.max(self.end_y) } pub fn rect(&self) -> Rect { Rect::new( self.left_x(), self.top_y(), (self.start_x - self.end_x).abs(), (self.start_y - self.end_y).abs(), ) } } impl StaticVariantType for Selection { fn static_variant_type() -> Cow<'static, glib::VariantTy> { <(f64, f64, f64, f64)>::static_variant_type() } } impl FromVariant for Selection { fn from_variant(variant: &glib::Variant) -> Option { let (start_x, start_y, end_x, end_y) = variant.get::<(f64, f64, f64, f64)>()?; Some(Self { start_x: start_x as f32, start_y: start_y as f32, end_x: end_x as f32, end_y: end_y as f32, }) } } impl ToVariant for Selection { fn to_variant(&self) -> glib::Variant { ( self.start_x as f64, self.start_y as f64, self.end_x as f64, self.end_y as f64, ) .to_variant() } } impl From for glib::Variant { fn from(selection: Selection) -> glib::Variant { selection.to_variant() } } mod imp { use super::*; #[derive(Debug, Default, glib::Properties, gtk::CompositeTemplate)] #[template(resource = "/io/github/seadve/Kooha/ui/view_port.ui")] #[properties(wrapper_type = super::ViewPort)] pub struct ViewPort { #[property(get, set = Self::set_paintable, explicit_notify, nullable)] pub(super) paintable: RefCell>, #[property(get, set = Self::set_selection, explicit_notify, nullable)] pub(super) selection: Cell>, #[property(get, nullable)] pub(super) paintable_rect: Cell>, pub(super) selection_handles: Cell>, // [top-left, top-right, bottom-right, bottom-left] pub(super) drag_start: Cell>, pub(super) drag_cursor: Cell, pub(super) pointer_position: Cell>, pub(super) handler_ids: RefCell>, } #[glib::object_subclass] impl ObjectSubclass for ViewPort { const NAME: &'static str = "KoohaViewPort"; type Type = super::ViewPort; type ParentType = gtk::Widget; fn class_init(klass: &mut Self::Class) { klass.bind_template(); klass.bind_template_instance_callbacks(); } fn instance_init(obj: &glib::subclass::InitializingObject) { obj.init_template(); } } #[glib::derived_properties] impl ObjectImpl for ViewPort {} impl WidgetImpl for ViewPort { fn request_mode(&self) -> gtk::SizeRequestMode { gtk::SizeRequestMode::HeightForWidth } fn measure(&self, orientation: gtk::Orientation, for_size: i32) -> (i32, i32, i32, i32) { if for_size == 0 { return (0, 0, -1, -1); } let Some(paintable) = self.obj().paintable() else { return (0, 0, -1, -1); }; if orientation == gtk::Orientation::Horizontal { let (natural_width, _) = paintable.compute_concrete_size( 0.0, if for_size < 0 { 0.0 } else { for_size as f64 }, SIZE, SIZE, ); (0, natural_width.ceil() as i32, -1, -1) } else { let (_, natural_height) = paintable.compute_concrete_size( if for_size < 0 { 0.0 } else { for_size as f64 }, 0.0, SIZE, SIZE, ); (0, natural_height.ceil() as i32, -1, -1) } } fn size_allocate(&self, width: i32, height: i32, _baseline: i32) { let obj = self.obj(); let Some(paintable) = obj.paintable() else { self.paintable_rect.set(None); obj.notify_paintable_rect(); return; }; let width = width as f64; let height = height as f64; let ratio = width / height; let paintable_width = paintable.intrinsic_width() as f64; let paintable_height = paintable.intrinsic_height() as f64; let paintable_ratio = paintable.intrinsic_aspect_ratio(); let (rel_paintable_width, rel_paintable_height) = if width >= paintable_width && height >= paintable_height { (paintable_width, paintable_height) } else if paintable_ratio > ratio { (width, width / paintable_ratio) } else { (height * paintable_ratio, height) }; let new_paintable_rect = Rect::new( ((width - rel_paintable_width) / 2.0).floor() as f32, ((height - rel_paintable_height) / 2.0).floor() as f32, rel_paintable_width.ceil() as f32, rel_paintable_height.ceil() as f32, ); let prev_paintable_rect = self.paintable_rect.replace(Some(new_paintable_rect)); obj.notify_paintable_rect(); // Update selection if paintable rect changed. if let Some(prev_paintable_rect) = prev_paintable_rect { if let Some(selection) = obj.selection() { let selection_rect = selection.rect(); let scale_x = new_paintable_rect.width() / prev_paintable_rect.width(); let scale_y = new_paintable_rect.height() / prev_paintable_rect.height(); let rel_x = selection_rect.x() - prev_paintable_rect.x(); let rel_y = selection_rect.y() - prev_paintable_rect.y(); obj.set_selection(Some(Selection::from_rect( new_paintable_rect.x() + rel_x * scale_x, new_paintable_rect.y() + rel_y * scale_y, selection_rect.width() * scale_x, selection_rect.height() * scale_y, ))); } } } fn snapshot(&self, snapshot: >k::Snapshot) { let obj = self.obj(); if let Some(paintable_rect) = obj.paintable_rect() { snapshot.save(); snapshot.translate(&Point::new(paintable_rect.x(), paintable_rect.y())); let paintable = obj.paintable().unwrap(); paintable.snapshot( snapshot, paintable_rect.width() as f64, paintable_rect.height() as f64, ); snapshot.restore(); } if let Some(selection) = obj.selection() { let selection_rect = selection.rect().round_extents(); // Shades the area outside the selection. if let Some(paintable_rect) = obj.paintable_rect() { snapshot.push_mask(gsk::MaskMode::InvertedAlpha); snapshot.append_color(&gdk::RGBA::BLACK, &selection_rect); snapshot.pop(); snapshot.append_color(&SHADE_COLOR, &paintable_rect); snapshot.pop(); } let path_builder = gsk::PathBuilder::new(); path_builder.add_rect(&selection_rect); snapshot.append_stroke( &path_builder.to_path(), &gsk::Stroke::builder(SELECTION_LINE_WIDTH) .dash(&[10.0, 6.0]) .build(), &SELECTION_LINE_COLOR, ); for handle in self.selection_handles.get().unwrap() { let bounds = RoundedRect::from_rect(handle, SELECTION_HANDLE_RADIUS); snapshot.append_outset_shadow( &bounds, &SELECTION_HANDLE_SHADOW_COLOR, 0.0, 1.0, 2.0, 3.0, ); snapshot.push_rounded_clip(&bounds); snapshot.append_color(&SELECTION_HANDLE_COLOR, &handle); snapshot.pop(); } } } } impl ViewPort { fn set_paintable(&self, paintable: Option) { let obj = self.obj(); if paintable == obj.paintable() { return; } let mut handler_ids = self.handler_ids.borrow_mut(); if let Some(previous_paintable) = self.paintable.replace(paintable.clone()) { for handler_id in handler_ids.drain(..) { previous_paintable.disconnect(handler_id); } } if let Some(paintable) = paintable { handler_ids.push(paintable.connect_invalidate_contents( clone!(@weak obj => move |_| { obj.queue_draw(); }), )); handler_ids.push( paintable.connect_invalidate_size(clone!(@weak obj => move |_| { obj.queue_resize(); })), ); } self.paintable_rect.set(None); obj.notify_paintable_rect(); obj.queue_resize(); obj.notify_paintable(); } fn set_selection(&self, selection: Option) { let obj = self.obj(); if selection == obj.selection() { return; } self.selection.set(selection); obj.update_selection_handles(); obj.queue_draw(); obj.notify_selection(); } } } glib::wrapper! { pub struct ViewPort(ObjectSubclass) @extends gtk::Widget; } impl ViewPort { pub fn new() -> Self { glib::Object::new() } fn set_cursor(&self, cursor_type: CursorType) { if self .cursor() .and_then(|cursor| cursor.name()) .is_some_and(|name| name == cursor_type.as_str()) { return; } self.set_cursor_from_name(Some(cursor_type.as_str())); } fn compute_cursor_type(&self, position: Point) -> CursorType { let imp = self.imp(); if self.paintable().is_none() { return CursorType::Default; }; let Some(selection) = self.selection() else { return CursorType::Crosshair; }; let [top_left_handle, top_right_handle, bottom_right_handle, bottom_left_handle] = imp.selection_handles.get().unwrap(); if top_left_handle.contains_point(&position) { CursorType::NorthWestResize } else if top_right_handle.contains_point(&position) { CursorType::NorthEastResize } else if bottom_right_handle.contains_point(&position) { CursorType::SouthEastResize } else if bottom_left_handle.contains_point(&position) { CursorType::SouthWestResize } else if selection.rect().contains_point(&position) { CursorType::Move } else if top_left_handle .union(&top_right_handle) .contains_point(&position) { CursorType::NorthResize } else if top_right_handle .union(&bottom_right_handle) .contains_point(&position) { CursorType::EastResize } else if bottom_right_handle .union(&bottom_left_handle) .contains_point(&position) { CursorType::SouthResize } else if bottom_left_handle .union(&top_left_handle) .contains_point(&position) { CursorType::WestResize } else { CursorType::Crosshair } } fn update_selection_handles(&self) { let imp = self.imp(); let Some(selection) = self.selection() else { imp.selection_handles.set(None); return; }; let selection_handle_diameter = SELECTION_HANDLE_RADIUS * 2.0; let top_left = Rect::new( selection.left_x() - SELECTION_HANDLE_RADIUS, selection.top_y() - SELECTION_HANDLE_RADIUS, selection_handle_diameter, selection_handle_diameter, ); let top_right = Rect::new( selection.right_x() - SELECTION_HANDLE_RADIUS, selection.top_y() - SELECTION_HANDLE_RADIUS, selection_handle_diameter, selection_handle_diameter, ); let bottom_right = Rect::new( selection.right_x() - SELECTION_HANDLE_RADIUS, selection.bottom_y() - SELECTION_HANDLE_RADIUS, selection_handle_diameter, selection_handle_diameter, ); let bottom_left = Rect::new( selection.left_x() - SELECTION_HANDLE_RADIUS, selection.bottom_y() - SELECTION_HANDLE_RADIUS, selection_handle_diameter, selection_handle_diameter, ); imp.selection_handles.set(Some([ top_left.round_extents(), top_right.round_extents(), bottom_right.round_extents(), bottom_left.round_extents(), ])); } } #[gtk::template_callbacks] impl ViewPort { #[template_callback] fn enter(&self, x: f64, y: f64) { let imp = self.imp(); imp.pointer_position .set(Some(Point::new(x as f32, y as f32))); } #[template_callback] fn motion(&self, x: f64, y: f64) { let imp = self.imp(); imp.pointer_position .set(Some(Point::new(x as f32, y as f32))); if imp.drag_start.get().is_none() { let cursor_type = self.compute_cursor_type(Point::new(x as f32, y as f32)); self.set_cursor(cursor_type); } } #[template_callback] fn leave(&self) { let imp = self.imp(); imp.pointer_position.set(None); self.set_cursor(CursorType::Default); } #[template_callback] fn drag_begin(&self, x: f64, y: f64) { tracing::trace!("Drag begin at ({}, {})", x, y); let Some(paintable_rect) = self.paintable_rect() else { return; }; let imp = self.imp(); let cursor_type = self.compute_cursor_type(Point::new(x as f32, y as f32)); if cursor_type == CursorType::Crosshair { imp.drag_cursor.set(CursorType::Crosshair); self.set_cursor(CursorType::Crosshair); let x = (x as f32).clamp( paintable_rect.x(), paintable_rect.x() + paintable_rect.width(), ); let y = (y as f32).clamp( paintable_rect.y(), paintable_rect.y() + paintable_rect.height(), ); self.set_selection(Some(Selection { start_x: x, start_y: y, end_x: x, end_y: y, })); } else { imp.drag_cursor.set(cursor_type); imp.drag_start.set(Some(Point::new(x as f32, y as f32))); let selection = self.selection().unwrap(); let mut new_selection = selection; if cursor_type == CursorType::Move { new_selection.start_x = selection.left_x(); new_selection.start_y = selection.top_y(); new_selection.end_x = selection.right_x(); new_selection.end_y = selection.bottom_y(); } if matches!( cursor_type, CursorType::NorthWestResize | CursorType::WestResize | CursorType::SouthWestResize ) { new_selection.start_x = selection.right_x(); new_selection.end_x = selection.left_x(); } if matches!( cursor_type, CursorType::NorthEastResize | CursorType::EastResize | CursorType::SouthEastResize ) { new_selection.start_x = selection.left_x(); new_selection.end_x = selection.right_x(); } if matches!( cursor_type, CursorType::NorthWestResize | CursorType::NorthResize | CursorType::NorthEastResize ) { new_selection.start_y = selection.bottom_y(); new_selection.end_y = selection.top_y(); } if matches!( cursor_type, CursorType::SouthWestResize | CursorType::SouthResize | CursorType::SouthEastResize ) { new_selection.start_y = selection.top_y(); new_selection.end_y = selection.bottom_y(); } self.set_selection(Some(new_selection)); } } #[template_callback] fn drag_update(&self, _dx: f64, _dy: f64) { let Some(paintable_rect) = self.paintable_rect() else { return; }; let imp = self.imp(); let pointer_position = imp.pointer_position.get().unwrap(); let drag_cursor = imp.drag_cursor.get(); if drag_cursor == CursorType::Crosshair { let Selection { start_x, start_y, .. } = self.selection().unwrap(); self.set_selection(Some(Selection { start_x, start_y, end_x: pointer_position.x().clamp( paintable_rect.x(), paintable_rect.width() + paintable_rect.x(), ), end_y: pointer_position.y().clamp( paintable_rect.y(), paintable_rect.height() + paintable_rect.y(), ), })); } else { let drag_start = imp.drag_start.get().unwrap(); let mut dx = pointer_position.x() - drag_start.x(); let mut dy = pointer_position.y() - drag_start.y(); if drag_cursor == CursorType::Move { let Selection { start_x, start_y, end_x, end_y, } = self.selection().unwrap(); let mut new_start_x = start_x + dx; let mut new_start_y = start_y + dy; let mut new_end_x = end_x + dx; let mut new_end_y = end_y + dy; let mut overshoot_x = 0.0; let mut overshoot_y = 0.0; let selection_rect = self.selection().unwrap().rect(); // Keep the size intact if we bumped to the paintable rect. if new_start_x < paintable_rect.x() { overshoot_x = paintable_rect.x() - new_start_x; new_start_x = paintable_rect.x(); new_end_x = new_start_x + selection_rect.width(); } else if new_end_x > paintable_rect.width() + paintable_rect.x() { overshoot_x = paintable_rect.width() + paintable_rect.x() - new_end_x; new_end_x = paintable_rect.width() + paintable_rect.x(); new_start_x = new_end_x - selection_rect.width(); } if new_start_y < paintable_rect.y() { overshoot_y = paintable_rect.y() - new_start_y; new_start_y = paintable_rect.y(); new_end_y = new_start_y + selection_rect.height(); } else if new_end_y > paintable_rect.height() + paintable_rect.y() { overshoot_y = paintable_rect.height() + paintable_rect.y() - new_end_y; new_end_y = paintable_rect.height() + paintable_rect.y(); new_start_y = new_end_y - selection_rect.height(); } dx += overshoot_x; dy += overshoot_y; self.set_selection(Some(Selection { start_x: new_start_x, start_y: new_start_y, end_x: new_end_x, end_y: new_end_y, })); } else { if matches!(drag_cursor, CursorType::WestResize | CursorType::EastResize) { dy = 0.0; } if matches!( drag_cursor, CursorType::NorthResize | CursorType::SouthResize ) { dx = 0.0; } let mut new_selection = self.selection().unwrap(); new_selection.end_x += dx; if new_selection.end_x >= paintable_rect.width() + paintable_rect.x() { dx -= new_selection.end_x - (paintable_rect.width() + paintable_rect.x()); new_selection.end_x = paintable_rect.width() + paintable_rect.x(); } else if new_selection.end_x < paintable_rect.x() { dx -= new_selection.end_x - paintable_rect.x(); new_selection.end_x = paintable_rect.x(); } new_selection.end_y += dy; if new_selection.end_y >= paintable_rect.height() + paintable_rect.y() { dy -= new_selection.end_y - (paintable_rect.height() + paintable_rect.y()); new_selection.end_y = paintable_rect.height() + paintable_rect.y(); } else if new_selection.end_y < paintable_rect.y() { dy -= new_selection.end_y - paintable_rect.y(); new_selection.end_y = paintable_rect.y(); } self.set_selection(Some(new_selection)); let selection = new_selection; // If we drag the handle past a selection side, update which // handles are which. if selection.end_x > selection.start_x { if drag_cursor == CursorType::NorthWestResize { imp.drag_cursor.set(CursorType::NorthEastResize); } else if drag_cursor == CursorType::SouthWestResize { imp.drag_cursor.set(CursorType::SouthEastResize); } else if drag_cursor == CursorType::WestResize { imp.drag_cursor.set(CursorType::EastResize); } } else if drag_cursor == CursorType::NorthEastResize { imp.drag_cursor.set(CursorType::NorthWestResize); } else if drag_cursor == CursorType::SouthEastResize { imp.drag_cursor.set(CursorType::SouthWestResize); } else if drag_cursor == CursorType::EastResize { imp.drag_cursor.set(CursorType::WestResize); } if selection.end_y > selection.start_y { if drag_cursor == CursorType::NorthWestResize { imp.drag_cursor.set(CursorType::SouthWestResize); } else if drag_cursor == CursorType::NorthEastResize { imp.drag_cursor.set(CursorType::SouthEastResize); } else if drag_cursor == CursorType::NorthResize { imp.drag_cursor.set(CursorType::SouthResize); } } else if drag_cursor == CursorType::SouthWestResize { imp.drag_cursor.set(CursorType::NorthWestResize); } else if drag_cursor == CursorType::SouthEastResize { imp.drag_cursor.set(CursorType::NorthEastResize); } else if drag_cursor == CursorType::SouthResize { imp.drag_cursor.set(CursorType::NorthResize); } self.set_cursor(imp.drag_cursor.get()); } imp.drag_start .set(Some(Point::new(drag_start.x() + dx, drag_start.y() + dy))); } } #[template_callback] fn drag_end(&self, dx: f64, dy: f64) { tracing::trace!("Drag end offset ({}, {})", dx, dy); let Some(paintable_rect) = self.paintable_rect() else { return; }; let imp = self.imp(); imp.drag_start.set(None); // The user clicked without dragging. Make up a larger selection // to reduce confusion. if let Some(mut selection) = self.selection() { if imp.drag_cursor.get() == CursorType::Crosshair && selection.end_x == selection.start_x && selection.end_y == selection.start_y { let offset = DEFAULT_SELECTION_SIZE / 2.0; selection.start_x -= offset; selection.start_y -= offset; selection.end_x += offset; selection.end_y += offset; let selection_rect = selection.rect(); // Keep the coordinates inside the paintable rect. if selection.start_x < paintable_rect.x() { selection.start_x = paintable_rect.x(); selection.end_x = selection.start_x + selection_rect.width(); } else if selection.end_x > paintable_rect.width() + paintable_rect.x() { selection.end_x = paintable_rect.width() + paintable_rect.x(); selection.start_x = selection.end_x - selection_rect.width(); } if selection.start_y < paintable_rect.y() { selection.start_y = paintable_rect.y(); selection.end_y = selection.start_y + selection_rect.height(); } else if selection.end_y > paintable_rect.height() + paintable_rect.y() { selection.end_y = paintable_rect.height() + paintable_rect.y(); selection.start_y = selection.end_y - selection_rect.height(); } self.set_selection(Some(selection)); } } if let Some(pointer_position) = imp.pointer_position.get() { let cursor_type = self.compute_cursor_type(pointer_position); self.set_cursor(cursor_type); } } } #[cfg(test)] mod tests { use super::*; #[test] fn selection_variant() { let original = Selection::from_rect(1.0, 2.0, 3.0, 4.0); let converted = original.to_variant().get::().unwrap(); assert_eq!(original, converted); } } Kooha-2.3.0/src/cancelled.rs000066400000000000000000000006031457702140700156320ustar00rootroot00000000000000use std::{error, fmt}; #[derive(Debug)] pub struct Cancelled { task: String, } impl Cancelled { pub fn new(task: impl Into) -> Self { Cancelled { task: task.into() } } } impl fmt::Display for Cancelled { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Cancelled {}", self.task) } } impl error::Error for Cancelled {} Kooha-2.3.0/src/config.rs.in000066400000000000000000000005061457702140700155740ustar00rootroot00000000000000pub const APP_ID: &str = @APP_ID@; pub const GETTEXT_PACKAGE: &str = @GETTEXT_PACKAGE@; pub const LOCALEDIR: &str = @LOCALEDIR@; pub const PKGDATADIR: &str = @PKGDATADIR@; pub const PROFILE: &str = @PROFILE@; pub const RESOURCES_FILE: &str = concat!(@PKGDATADIR@, "/resources.gresource"); pub const VERSION: &str = @VERSION@; Kooha-2.3.0/src/device.rs000066400000000000000000000041241457702140700151610ustar00rootroot00000000000000use anyhow::{anyhow, Context, Result}; use gettextrs::gettext; use gst::prelude::*; use crate::help::ContextWithHelp; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum DeviceClass { Source, Sink, } impl DeviceClass { fn as_str(self) -> &'static str { match self { Self::Source => "Audio/Source", Self::Sink => "Audio/Sink", } } } pub fn find_default(class: DeviceClass) -> Result { let provider = gst::DeviceProviderFactory::by_name("pulsedeviceprovider").with_context(|| { ContextWithHelp::new( gettext("Failed to find the default audio device"), gettext("Make sure that you have PulseAudio installed in your system."), ) })?; provider.start()?; let devices = provider.devices(); provider.stop(); tracing::debug!("Finding device name for class `{:?}`", class); for device in devices { if !device.has_classes(class.as_str()) { tracing::debug!( "Skipping device `{}` as it has unknown device class `{}`", device.name(), device.device_class() ); continue; } let Some(properties) = device.properties() else { tracing::warn!( "Skipping device `{}` as it has no properties", device.name() ); continue; }; let is_default = match properties.get::("is-default") { Ok(is_default) => is_default, Err(err) => { tracing::warn!( "Skipping device `{}` as it has no `is-default` property: {:?}", device.name(), err ); continue; } }; if !is_default { tracing::debug!( "Skipping device `{}` as it is not the default", device.name() ); continue; } return Ok(device); } Err(anyhow!("Failed to find a default device")) } Kooha-2.3.0/src/experimental.rs000066400000000000000000000027571457702140700164310ustar00rootroot00000000000000use std::{env, sync::OnceLock}; pub fn enabled_features() -> &'static [Feature] { static ENABLED_FEATURES: OnceLock> = OnceLock::new(); ENABLED_FEATURES.get_or_init(|| { env::var("KOOHA_EXPERIMENTAL") .map(|val| { val.split(',') .filter_map(|raw_feature_str| { let feature_str = raw_feature_str.trim().to_lowercase(); let feature = Feature::from_str(&feature_str); if feature.is_none() { tracing::warn!("Unknown `{}` experimental feature", feature_str); } feature }) .collect::>() }) .unwrap_or_default() }) } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Feature { All, ExperimentalFormats, MultipleVideoSources, WindowRecording, } impl Feature { fn from_str(string: &str) -> Option { match string { "all" | "1" => Some(Self::All), "experimental-formats" => Some(Self::ExperimentalFormats), "multiple-video-sources" => Some(Self::MultipleVideoSources), "window-recording" => Some(Self::WindowRecording), _ => None, } } pub fn is_enabled(self) -> bool { let enabled_features = enabled_features(); enabled_features.contains(&Self::All) || enabled_features.contains(&self) } } Kooha-2.3.0/src/format_time.rs000066400000000000000000000071011457702140700162260ustar00rootroot00000000000000use crate::i18n::ngettext_f; /// Formats time in MM:SS. /// /// The MM part will be more than 2 digits if the time is >= 100 minutes. pub fn digital_clock(clock_time: gst::ClockTime) -> String { let secs = clock_time.seconds(); let seconds_display = secs % 60; let minutes_display = secs / 60; format!("{:02}∶{:02}", minutes_display, seconds_display) } /// Formats time as duration. pub fn duration(clock_time: gst::ClockTime) -> String { let secs = clock_time.seconds(); let hours_display = secs / 3600; let minutes_display = (secs % 3600) / 60; let seconds_display = secs % 60; let hours_display_str = ngettext_f( // Translators: Do NOT translate the contents between '{' and '}', this is a variable name. "{time} hour", "{time} hours", hours_display as u32, &[("time", &hours_display.to_string())], ); let minutes_display_str = ngettext_f( // Translators: Do NOT translate the contents between '{' and '}', this is a variable name. "{time} minute", "{time} minutes", minutes_display as u32, &[("time", &minutes_display.to_string())], ); let seconds_display_str = ngettext_f( // Translators: Do NOT translate the contents between '{' and '}', this is a variable name. "{time} second", "{time} seconds", seconds_display as u32, &[("time", &seconds_display.to_string())], ); if hours_display > 0 { // 4 hours 5 minutes 6 seconds format!( "{} {} {}", hours_display_str, minutes_display_str, seconds_display_str ) } else if minutes_display > 0 { // 5 minutes 6 seconds format!("{} {}", minutes_display_str, seconds_display_str) } else { // 6 seconds seconds_display_str } } #[cfg(test)] mod tests { use super::*; #[test] fn test_duration() { assert_eq!(duration(gst::ClockTime::ZERO), "0 seconds"); assert_eq!(duration(gst::ClockTime::from_seconds(1)), "1 second"); assert_eq!( duration(gst::ClockTime::from_seconds(3 * 60 + 4)), "3 minutes 4 seconds" ); assert_eq!( duration(gst::ClockTime::from_seconds(60 * 60 + 6)), "1 hour 0 minutes 6 seconds" ); assert_eq!( duration(gst::ClockTime::from_seconds(2 * 60 * 60)), "2 hours 0 minutes 0 seconds" ); } #[test] fn digital_clock_less_than_1_hour() { assert_eq!(digital_clock(gst::ClockTime::ZERO), "00∶00"); assert_eq!(digital_clock(gst::ClockTime::from_seconds(31)), "00∶31"); assert_eq!( digital_clock(gst::ClockTime::from_seconds(8 * 60 + 1)), "08∶01" ); assert_eq!( digital_clock(gst::ClockTime::from_seconds(33 * 60 + 3)), "33∶03" ); assert_eq!( digital_clock(gst::ClockTime::from_seconds(59 * 60 + 59)), "59∶59" ); } #[test] fn digital_clock_more_than_1_hour() { assert_eq!( digital_clock(gst::ClockTime::from_seconds(60 * 60)), "60∶00" ); assert_eq!( digital_clock(gst::ClockTime::from_seconds(60 * 60 + 9)), "60∶09" ); assert_eq!( digital_clock(gst::ClockTime::from_seconds(60 * 60 + 31)), "60∶31" ); assert_eq!( digital_clock(gst::ClockTime::from_seconds(100 * 60 + 20)), "100∶20" ); } } Kooha-2.3.0/src/framerate_option.rs000066400000000000000000000113731457702140700172640ustar00rootroot00000000000000use std::fmt; use gtk::{gio, glib::BoxedAnyObject}; use num_traits::Signed; use crate::settings::Settings; /// The available options for the framerate. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum FramerateOption { _10, _20, _24, _25, _29_97, _30, _48, _50, _59_94, _60, Other(gst::Fraction), } impl FramerateOption { fn all_except_other() -> [Self; 10] { [ Self::_10, Self::_20, Self::_24, Self::_25, Self::_29_97, Self::_30, Self::_48, Self::_50, Self::_59_94, Self::_60, ] } /// Returns a model of type `BoxedAnyObject`. This contains `Other` if the current settings framerate /// does not match any of the predefined options. pub fn model(settings: &Settings) -> gio::ListStore { let list_store = gio::ListStore::new::(); let items = Self::all_except_other() .into_iter() .map(BoxedAnyObject::new) .collect::>(); list_store.splice(0, 0, &items); if let other @ Self::Other(_) = Self::from_framerate(settings.framerate()) { list_store.append(&BoxedAnyObject::new(other)); } list_store } /// Returns the corresponding `FramerateOption` for the given framerate. pub fn from_framerate(framerate: gst::Fraction) -> Self { // This must be updated if an option is added or removed. let epsilon = gst::Fraction::new_raw(1, 100); Self::all_except_other() .into_iter() .find(|o| (o.as_framerate() - framerate).abs() < epsilon.0) .unwrap_or(Self::Other(framerate)) } /// Converts a `FramerateOption` to a framerate. pub const fn as_framerate(self) -> gst::Fraction { let (numerator, denominator) = match self { Self::_10 => (10, 1), Self::_20 => (20, 1), Self::_24 => (24, 1), Self::_25 => (25, 1), Self::_29_97 => (30_000, 1001), Self::_30 => (30, 1), Self::_48 => (48, 1), Self::_50 => (50, 1), Self::_59_94 => (60_000, 1001), Self::_60 => (60, 1), Self::Other(framerate) => return framerate, }; gst::Fraction::new_raw(numerator, denominator) } } impl fmt::Display for FramerateOption { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str(match self { Self::_10 => "10", Self::_20 => "20", Self::_24 => "24", Self::_25 => "25", Self::_29_97 => "29.97", Self::_30 => "30", Self::_48 => "48", Self::_50 => "50", Self::_59_94 => "59.94", Self::_60 => "60", Self::Other(framerate) => return write!(f, "{}", framerate), }) } } #[cfg(test)] mod tests { use super::*; #[track_caller] fn assert_simplified(framerate: gst::Fraction) { let reduced = framerate.0.reduced(); assert_eq!( (framerate.numer(), framerate.denom()), (*reduced.numer(), *reduced.denom()) ); } #[test] fn simplified() { for option in FramerateOption::all_except_other() { assert_simplified(option.as_framerate()); } } #[track_caller] fn test_framerate(framerate: gst::Fraction, expected: FramerateOption) { assert_eq!(FramerateOption::from_framerate(framerate), expected); } #[test] fn equivalence() { test_framerate( gst::Fraction::from_integer(5), FramerateOption::Other(gst::Fraction::from_integer(5)), ); test_framerate(gst::Fraction::from_integer(10), FramerateOption::_10); test_framerate(gst::Fraction::from_integer(20), FramerateOption::_20); test_framerate(gst::Fraction::from_integer(24), FramerateOption::_24); test_framerate(gst::Fraction::from_integer(25), FramerateOption::_25); test_framerate( gst::Fraction::approximate_f64(29.97).unwrap(), FramerateOption::_29_97, ); test_framerate(gst::Fraction::from_integer(30), FramerateOption::_30); test_framerate(gst::Fraction::from_integer(48), FramerateOption::_48); test_framerate(gst::Fraction::from_integer(50), FramerateOption::_50); test_framerate( gst::Fraction::approximate_f64(59.94).unwrap(), FramerateOption::_59_94, ); test_framerate(gst::Fraction::from_integer(60), FramerateOption::_60); test_framerate( gst::Fraction::from_integer(120), FramerateOption::Other(gst::Fraction::from_integer(120)), ); } } Kooha-2.3.0/src/help.rs000066400000000000000000000010721457702140700146510ustar00rootroot00000000000000use std::fmt; #[derive(Debug)] pub struct ContextWithHelp { context: String, help_message: String, } impl ContextWithHelp { pub fn new(context: impl Into, help_message: impl Into) -> Self { ContextWithHelp { context: context.into(), help_message: help_message.into(), } } pub fn help_message(&self) -> &str { &self.help_message } } impl fmt::Display for ContextWithHelp { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str(&self.context) } } Kooha-2.3.0/src/i18n.rs000066400000000000000000000110121457702140700144730ustar00rootroot00000000000000// Copied from Fractal GPLv3 // See https://gitlab.gnome.org/GNOME/fractal/-/blob/c0bc4078bb2cdd511c89fdf41a51275db90bb7ab/src/i18n.rs use gettextrs::{gettext, ngettext}; /// Like `gettext`, but replaces named variables using the given key-value tuples. /// /// The expected format to replace is `{name}`, where `name` is the first string /// in a key-value tuple. pub fn gettext_f(msgid: &str, args: &[(&str, &str)]) -> String { let s = gettext(msgid); freplace(s, args) } /// Like `ngettext`, but replaces named variables using the given key-value tuples. /// /// The expected format to replace is `{name}`, where `name` is the first string /// in a key-value tuple. pub fn ngettext_f(msgid: &str, msgid_plural: &str, n: u32, args: &[(&str, &str)]) -> String { let s = ngettext(msgid, msgid_plural, n); freplace(s, args) } /// Replace variables in the given string using the given key-value tuples. /// /// The expected format to replace is `{name}`, where `name` is the first string /// in a key-value tuple. fn freplace(s: String, args: &[(&str, &str)]) -> String { // This function is useless if there are no arguments debug_assert!(!args.is_empty(), "atleast one key-value pair must be given"); // We could check here if all keys were used, but some translations might // not use all variables, so we don't do that. let mut s = s; for (key, val) in args { s = s.replace(&format!("{{{key}}}"), val); } debug_assert!(!s.contains('{'), "all format variables must be replaced"); if tracing::enabled!(tracing::Level::WARN) && s.contains('{') { tracing::warn!( "all format variables must be replaced, but some were not: {}", s ); } s } #[cfg(test)] mod tests { use super::*; #[test] #[should_panic = "atleast one key-value pair must be given"] fn freplace_no_args() { gettext_f("no args", &[]); } #[test] #[should_panic = "all format variables must be replaced"] fn freplace_missing_key() { gettext_f("missing {one}", &[("two", "2")]); } #[test] fn gettext_f_simple() { assert_eq!(gettext_f("no replace", &[("one", "1")]), "no replace"); assert_eq!(gettext_f("{one} param", &[("one", "1")]), "1 param"); assert_eq!( gettext_f("middle {one} param", &[("one", "1")]), "middle 1 param" ); assert_eq!(gettext_f("end {one}", &[("one", "1")]), "end 1"); } #[test] fn gettext_f_multiple() { assert_eq!( gettext_f("multiple {one} and {two}", &[("one", "1"), ("two", "2")]), "multiple 1 and 2" ); assert_eq!( gettext_f("multiple {two} and {one}", &[("one", "1"), ("two", "2")]), "multiple 2 and 1" ); assert_eq!( gettext_f("multiple {one} and {one}", &[("one", "1"), ("two", "2")]), "multiple 1 and 1" ); } #[test] fn ngettext_f_multiple() { assert_eq!( ngettext_f( "singular {one} and {two}", "plural {one} and {two}", 1, &[("one", "1"), ("two", "two")], ), "singular 1 and two" ); assert_eq!( ngettext_f( "singular {one} and {two}", "plural {one} and {two}", 2, &[("one", "1"), ("two", "two")], ), "plural 1 and two" ); } #[test] fn ngettext_f_unused_on_singular() { assert_eq!( ngettext_f( "singular {one}", "plural {one} and {two}", 1, &[("one", "1"), ("two", "2")], ), "singular 1" ); assert_eq!( ngettext_f( "singular {one}", "plural {one} and {two}", 2, &[("one", "1"), ("two", "2")], ), "plural 1 and 2" ); } #[test] fn ngettext_f_unused_on_plural() { assert_eq!( ngettext_f( "singular {one} and {two}", "plural {one}", 1, &[("one", "1"), ("two", "2")], ), "singular 1 and 2" ); assert_eq!( ngettext_f( "singular {one} and {two}", "plural {one}", 2, &[("one", "1"), ("two", "2")], ), "plural 1" ); } } Kooha-2.3.0/src/item_row.rs000066400000000000000000000124721457702140700155540ustar00rootroot00000000000000use gtk::{glib, prelude::*, subclass::prelude::*}; mod imp { use std::cell::{Cell, RefCell}; use super::*; #[derive(Default, glib::Properties, gtk::CompositeTemplate)] #[properties(wrapper_type = super::ItemRow)] #[template(resource = "/io/github/seadve/Kooha/ui/item_row.ui")] pub struct ItemRow { #[property(get, set = Self::set_title, explicit_notify)] pub(super) title: RefCell, #[property(get, set = Self::set_warning_tooltip_text, explicit_notify)] pub(super) warning_tooltip_text: RefCell, #[property(get, set = Self::set_shows_warning_icon, explicit_notify)] pub(super) shows_warning_icon: Cell, #[property(get, set = Self::set_is_on_popover, explicit_notify)] pub(super) is_on_popover: Cell, #[property(get, set = Self::set_is_selected, explicit_notify)] pub(super) is_selected: Cell, #[template_child] pub(super) start_warning_icon: TemplateChild, #[template_child] pub(super) title_label: TemplateChild, #[template_child] pub(super) selected_icon: TemplateChild, #[template_child] pub(super) end_warning_icon: TemplateChild, } #[glib::object_subclass] impl ObjectSubclass for ItemRow { const NAME: &'static str = "KoohaItemRow"; type Type = super::ItemRow; type ParentType = gtk::Widget; fn class_init(klass: &mut Self::Class) { klass.bind_template(); } fn instance_init(obj: &glib::subclass::InitializingObject) { obj.init_template(); } } #[glib::derived_properties] impl ObjectImpl for ItemRow { fn constructed(&self) { self.parent_constructed(); let obj = self.obj(); obj.update_title_label(); obj.update_warning_icon_tooltip_text(); obj.update_warning_icons_visibility(); obj.update_selected_icon_visibility(); obj.update_selected_icon_opacity(); } fn dispose(&self) { self.dispose_template(); } } impl WidgetImpl for ItemRow {} impl ItemRow { fn set_title(&self, title: String) { let obj = self.obj(); if title == obj.title() { return; } self.title.set(title); obj.update_title_label(); obj.notify_title(); } fn set_warning_tooltip_text(&self, warning_tooltip_text: String) { let obj = self.obj(); if warning_tooltip_text == obj.warning_tooltip_text() { return; } self.warning_tooltip_text.set(warning_tooltip_text); obj.update_warning_icon_tooltip_text(); obj.notify_warning_tooltip_text(); } fn set_shows_warning_icon(&self, shows_warning_icon: bool) { let obj = self.obj(); if shows_warning_icon == obj.shows_warning_icon() { return; } self.shows_warning_icon.set(shows_warning_icon); obj.update_warning_icons_visibility(); obj.notify_shows_warning_icon(); } fn set_is_on_popover(&self, is_on_popover: bool) { let obj = self.obj(); if is_on_popover == obj.is_on_popover() { return; } self.is_on_popover.set(is_on_popover); obj.update_selected_icon_visibility(); obj.update_warning_icons_visibility(); obj.notify_is_on_popover(); } fn set_is_selected(&self, is_selected: bool) { let obj = self.obj(); if is_selected == obj.is_selected() { return; } self.is_selected.set(is_selected); obj.update_selected_icon_opacity(); obj.notify_is_selected(); } } } glib::wrapper! { pub struct ItemRow(ObjectSubclass) @extends gtk::Widget; } impl ItemRow { pub fn new() -> Self { glib::Object::new() } fn update_title_label(&self) { let imp = self.imp(); imp.title_label.set_label(&self.title()); } fn update_warning_icon_tooltip_text(&self) { let imp = self.imp(); let warning_tooltip_text = Some(self.warning_tooltip_text()).filter(|s| !s.is_empty()); imp.start_warning_icon .set_tooltip_text(warning_tooltip_text.as_deref()); imp.end_warning_icon .set_tooltip_text(warning_tooltip_text.as_deref()); } fn update_warning_icons_visibility(&self) { let imp = self.imp(); let is_on_popover = self.is_on_popover(); let shows_warning_icon = self.shows_warning_icon(); imp.start_warning_icon .set_visible(shows_warning_icon && !is_on_popover); imp.end_warning_icon .set_visible(shows_warning_icon && is_on_popover); } fn update_selected_icon_visibility(&self) { let imp = self.imp(); imp.selected_icon.set_visible(self.is_on_popover()); } fn update_selected_icon_opacity(&self) { let imp = self.imp(); let opacity = if self.is_selected() { 1.0 } else { 0.0 }; imp.selected_icon.set_opacity(opacity); } } Kooha-2.3.0/src/main.rs000066400000000000000000000043631457702140700146530ustar00rootroot00000000000000#![allow(clippy::new_without_default)] #![warn( rust_2018_idioms, clippy::items_after_statements, clippy::needless_pass_by_value, clippy::explicit_iter_loop, clippy::semicolon_if_nothing_returned, clippy::match_wildcard_for_single_variants, clippy::inefficient_to_string, clippy::map_unwrap_or, clippy::implicit_clone, clippy::struct_excessive_bools, clippy::trivially_copy_pass_by_ref, clippy::unreadable_literal, clippy::if_not_else, clippy::doc_markdown, clippy::unused_async, clippy::default_trait_access, clippy::unnecessary_wraps, clippy::unused_self, clippy::dbg_macro, clippy::todo, clippy::print_stdout )] mod about; mod application; mod area_selector; mod cancelled; mod config; mod device; mod experimental; mod format_time; mod framerate_option; mod help; mod i18n; mod item_row; mod pipeline; mod preferences_dialog; mod profile; mod recording; mod screencast_portal; mod settings; mod timer; mod window; use std::env; use gettextrs::{gettext, LocaleCategory}; use gtk::{gio, glib}; use self::{ application::Application, config::{GETTEXT_PACKAGE, LOCALEDIR, RESOURCES_FILE}, }; fn main() -> glib::ExitCode { // HACK Use gl renderer by default instead of ngl due to gtk4paintablesink bug. // See https://gitlab.gnome.org/GNOME/gtk/-/issues/6411 and // https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/508 if env::var("GSK_RENDERER").map_or(true, |val| val.is_empty()) { env::set_var("GSK_RENDERER", "gl"); } tracing_subscriber::fmt::init(); gettextrs::setlocale(LocaleCategory::LcAll, ""); gettextrs::bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR).expect("Unable to bind the text domain."); gettextrs::textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain."); glib::set_application_name(&gettext("Kooha")); gst::init().expect("Unable to start gstreamer."); gstgif::plugin_register_static().expect("Failed to register gif plugin."); gstgtk4::plugin_register_static().expect("Failed to register gtk4 plugin."); let res = gio::Resource::load(RESOURCES_FILE).expect("Could not load gresource file."); gio::resources_register(&res); let app = Application::new(); app.run() } Kooha-2.3.0/src/meson.build000066400000000000000000000034561457702140700155250ustar00rootroot00000000000000global_conf = configuration_data() global_conf.set_quoted('APP_ID', application_id) global_conf.set_quoted('PKGDATADIR', pkgdatadir) global_conf.set_quoted('PROFILE', profile) global_conf.set_quoted('VERSION', version + version_suffix) global_conf.set_quoted('GETTEXT_PACKAGE', gettext_package) global_conf.set_quoted('LOCALEDIR', localedir) config = configure_file( input: 'config.rs.in', output: 'config.rs', configuration: global_conf ) # Copy the config.rs output to the source directory. run_command( 'cp', meson.project_build_root() / 'src' / 'config.rs', meson.project_source_root() / 'src' / 'config.rs', check: true ) cargo_options = [ '--manifest-path', meson.project_source_root() / 'Cargo.toml' ] cargo_options += [ '--target-dir', meson.project_build_root() / 'src' ] if get_option('profile') == 'default' cargo_options += [ '--release' ] rust_target = 'release' message('Building in release mode') else rust_target = 'debug' message('Building in debug mode') endif cargo_env = [ 'CARGO_HOME=' + meson.project_build_root() / 'cargo-home' ] cargo_build = custom_target( 'cargo-build', build_by_default: true, build_always_stale: true, output: meson.project_name(), console: true, install: true, install_dir: bindir, depends: resources, command: [ 'env', cargo_env, cargo, 'build', cargo_options, '&&', 'cp', 'src' / rust_target / meson.project_name(), '@OUTPUT@', ] ) test( 'cargo-test', cargo, args: [ 'test', cargo_options, '--', '--nocapture', ], env: [ 'RUST_BACKTRACE=1', cargo_env ], timeout: 300, # give cargo more time ) test( 'cargo-clippy', cargo, args: [ 'clippy', cargo_options, '--', '-D', 'warnings' ], env: [ cargo_env ], timeout: 300, # give cargo more time ) Kooha-2.3.0/src/pipeline.rs000066400000000000000000000351521457702140700155340ustar00rootroot00000000000000use anyhow::{bail, ensure, Context, Ok, Result}; use gst::prelude::*; use gtk::graphene::Rect; use std::{os::unix::io::RawFd, path::PathBuf}; use crate::{ area_selector::SelectAreaData, device::{self, DeviceClass}, profile::Profile, screencast_portal::Stream, }; const AUDIO_SAMPLE_RATE: i32 = 48_000; #[derive(Debug)] #[must_use] pub struct PipelineBuilder { file_path: PathBuf, framerate: gst::Fraction, profile: Profile, fd: RawFd, streams: Vec, record_desktop_audio: bool, record_microphone: bool, select_area_data: Option, } impl PipelineBuilder { pub fn new( file_path: PathBuf, framerate: gst::Fraction, profile: Profile, fd: RawFd, streams: Vec, ) -> Self { Self { file_path, framerate, profile, fd, streams, record_desktop_audio: false, record_microphone: false, select_area_data: None, } } pub fn record_desktop_audio(&mut self, record_desktop_audio: bool) -> &mut Self { self.record_desktop_audio = record_desktop_audio; self } pub fn record_microphone(&mut self, record_microphone: bool) -> &mut Self { self.record_microphone = record_microphone; self } pub fn select_area_data(&mut self, data: SelectAreaData) -> &mut Self { self.select_area_data = Some(data); self } /// Builds the pipeline. /// /// (If has select_area_data) /// | | /// v v /// pipewiresrc-bin -> videoscale -> videocrop -> queue -> | /// | -> profile.attach -> filesink /// pulsesrc-bin -> queue -> | pub fn build(&self) -> Result { tracing::debug!( file_path = %self.file_path.display(), framerate = ?self.framerate, profile = ?self.profile.id(), fd = self.fd, stream_len = self.streams.len(), streams = ?self.streams, record_desktop_audio = ?self.record_desktop_audio, record_microphone = ?self.record_microphone, select_area_data = ?self.select_area_data, ); let pipeline = gst::Pipeline::new(); let videosrc_bin = make_videosrc_bin(self.fd, &self.streams, self.framerate) .context("Failed to create videosrc bin")?; let videoenc_queue = gst::ElementFactory::make("queue") .name("kooha-videoenc-queue") .build()?; let filesink = gst::ElementFactory::make("filesink") .property( "location", self.file_path .to_str() .context("Could not convert file path to string")?, ) .build()?; pipeline.add_many([videosrc_bin.upcast_ref(), &videoenc_queue, &filesink])?; if let Some(ref data) = self.select_area_data { let videoscale = gst::ElementFactory::make("videoscale").build()?; let videocrop = make_videocrop(data)?; pipeline.add_many([&videoscale, &videocrop])?; // x264enc requires even resolution. let (stream_width, stream_height) = data.stream_size; let videoscale_caps = gst::Caps::builder("video/x-raw") .field("width", round_to_even(stream_width)) .field("height", round_to_even(stream_height)) .build(); videosrc_bin.link(&videoscale)?; videoscale.link_filtered(&videocrop, &videoscale_caps)?; videocrop.link(&videoenc_queue)?; } else { videosrc_bin.link(&videoenc_queue)?; } let audioenc_queue = if self.record_desktop_audio || self.record_microphone { debug_assert!(self.profile.supports_audio()); let pulsesrcs = [ self.record_desktop_audio .then(|| make_pulsesrc(DeviceClass::Sink, "kooha-desktop-audio-src")), self.record_microphone .then(|| make_pulsesrc(DeviceClass::Source, "kooha-microphone-src")), ]; let audiosrc_bin = make_audiosrc_bin( &pulsesrcs .into_iter() .flatten() .collect::>>()?, ) .context("Failed to create audiosrc bin")?; let audioenc_queue = gst::ElementFactory::make("queue") .name("kooha-audioenc-queue") .build()?; pipeline.add_many([audiosrc_bin.upcast_ref(), &audioenc_queue])?; audiosrc_bin.link(&audioenc_queue)?; Some(audioenc_queue) } else { None }; self.profile .attach( &pipeline, &videoenc_queue, audioenc_queue.as_ref(), &filesink, ) .with_context(|| { format!( "Failed to attach profile `{}` to pipeline", self.profile.id() ) })?; Ok(pipeline) } } fn make_pipewiresrc(fd: RawFd, path: &str) -> Result { let src = gst::ElementFactory::make("pipewiresrc") .property("fd", fd) .property("path", path) .property("do-timestamp", true) .property("keepalive-time", 1000) .property("resend-last", true) .build()?; Ok(src) } fn make_videoflip() -> Result { let videoflip = gst::ElementFactory::make("videoflip") .property_from_str("video-direction", "auto") .build()?; Ok(videoflip) } /// Create a videocrop element that computes the crop from the given coordinates /// and size. fn make_videocrop(data: &SelectAreaData) -> Result { let SelectAreaData { selection, paintable_rect, stream_size, } = data; let (stream_width, stream_height) = stream_size; let scale_factor_h = *stream_width as f32 / paintable_rect.width(); let scale_factor_v = *stream_height as f32 / paintable_rect.height(); if scale_factor_h != scale_factor_v { tracing::warn!( scale_factor_h, scale_factor_v, "Scale factors of horizontal and vertical are unequal" ); } // Both paintable and selection position are relative to the widget coordinates. // To get the absolute position and so correct crop values, subtract the paintable // rect's position from the selection rect. let old_selection_rect = selection.rect(); let selection_rect_scaled = Rect::new( old_selection_rect.x() - paintable_rect.x(), old_selection_rect.y() - paintable_rect.y(), old_selection_rect.width(), old_selection_rect.height(), ) .scale(scale_factor_h, scale_factor_v); let raw_top_crop = selection_rect_scaled.y(); let raw_left_crop = selection_rect_scaled.x(); let raw_right_crop = *stream_width as f32 - (selection_rect_scaled.width() + selection_rect_scaled.x()); let raw_bottom_crop = *stream_height as f32 - (selection_rect_scaled.height() + selection_rect_scaled.y()); tracing::debug!(raw_top_crop, raw_left_crop, raw_right_crop, raw_bottom_crop); let top_crop = round_to_even_f32(raw_top_crop).clamp(0, *stream_height); let left_crop = round_to_even_f32(raw_left_crop).clamp(0, *stream_width); let right_crop = round_to_even_f32(raw_right_crop).clamp(0, *stream_width); let bottom_crop = round_to_even_f32(raw_bottom_crop).clamp(0, *stream_height); tracing::debug!(top_crop, left_crop, right_crop, bottom_crop); // x264enc requires even resolution. let crop = gst::ElementFactory::make("videocrop") .property("top", top_crop) .property("left", left_crop) .property("right", right_crop) .property("bottom", bottom_crop) .build()?; Ok(crop) } /// Creates a bin with a src pad for multiple pipewire streams. /// /// Single stream: /// /// pipewiresrc -> videoflip -> videorate /// /// Multiple streams: /// /// pipewiresrc1 -> videoflip -> | /// | /// pipewiresrc2 -> videoflip -> | -> compositor -> videorate /// | /// pipewiresrcn -> videoflip -> | pub fn make_videosrc_bin( fd: RawFd, streams: &[Stream], framerate: gst::Fraction, ) -> Result { let bin = gst::Bin::builder().name("kooha-pipewiresrc-bin").build(); let videorate = gst::ElementFactory::make("videorate") .property("skip-to-first", true) .build()?; let videorate_capsfilter = gst::ElementFactory::make("capsfilter") .property( "caps", gst::Caps::builder("video/x-raw") .field("framerate", framerate) .build(), ) .build()?; bin.add_many([&videorate, &videorate_capsfilter])?; videorate.link(&videorate_capsfilter)?; match streams { [] => bail!("No streams provided"), [stream] => { let pipewiresrc = make_pipewiresrc(fd, &stream.node_id().to_string())?; let videoflip = make_videoflip()?; bin.add_many([&pipewiresrc, &videoflip])?; gst::Element::link_many([&pipewiresrc, &videoflip, &videorate])?; } streams => { let compositor = gst::ElementFactory::make("compositor").build()?; bin.add(&compositor)?; compositor.link(&videorate)?; let mut last_pos = 0; for stream in streams { let pipewiresrc = make_pipewiresrc(fd, &stream.node_id().to_string())?; let videoflip = make_videoflip()?; bin.add_many([&pipewiresrc, &videoflip])?; pipewiresrc.link(&videoflip)?; let compositor_sink_pad = compositor .request_pad_simple("sink_%u") .context("Failed to request sink_%u pad from compositor")?; compositor_sink_pad.set_property("xpos", last_pos); videoflip .static_pad("src") .unwrap() .link(&compositor_sink_pad)?; let (stream_width, _) = stream.size().unwrap(); last_pos += stream_width; } } } let src_pad = videorate_capsfilter.static_pad("src").unwrap(); bin.add_pad(&gst::GhostPad::with_target(&src_pad)?)?; Ok(bin) } /// Creates a new audio src element with the given name. /// /// If the class is already a source, it will return the device name as is, /// otherwise, if it is a sink, it will append `.monitor` to the device name. fn make_pulsesrc(class: DeviceClass, element_name: &str) -> Result { let device = device::find_default(class)?; let pulsesrc = gst::ElementFactory::make("pulsesrc") .name(element_name) .property("provide-clock", false) .build()?; match class { DeviceClass::Sink => { let pulsesink = device.create_element(None)?; let device_name = pulsesink .property::>("device") .context("No device name")?; ensure!(!device_name.is_empty(), "Empty device name"); let monitor_name = format!("{}.monitor", device_name); pulsesrc.set_property("device", &monitor_name); tracing::debug!("Found desktop audio with name `{}`", monitor_name); } DeviceClass::Source => { device.reconfigure_element(&pulsesrc)?; let device_name = pulsesrc .property::>("device") .context("No device name")?; ensure!(!device_name.is_empty(), "Empty device name"); tracing::debug!("Found microphone with name `{}`", device_name); } } Ok(pulsesrc) } /// Creates a bin with a src pad for a pulse audio device /// /// pulsesrc1 -> audiorate -> | /// | /// pulsesrc2 -> audiorate -> | -> audiomixer /// | /// pulsesrcn -> audiorate -> | fn make_audiosrc_bin<'a>( pulsesrcs: impl IntoIterator, ) -> Result { let bin = gst::Bin::builder().name("kooha-pulsesrc-bin").build(); let caps = gst::Caps::builder_full() .structure( gst::Structure::builder("audio/x-raw") .field("rate", AUDIO_SAMPLE_RATE) .field("channels", 2) .build(), ) .structure( gst::Structure::builder("audio/x-raw") .field("rate", AUDIO_SAMPLE_RATE) .field("channels", 1) .build(), ) .build(); let audiomixer = gst::ElementFactory::make("audiomixer") .property("latency", gst::ClockTime::from_seconds(2)) .build()?; let audiomixer_capsfilter = gst::ElementFactory::make("capsfilter") .property("caps", &caps) .build()?; bin.add_many([&audiomixer, &audiomixer_capsfilter])?; audiomixer.link(&audiomixer_capsfilter)?; let src_pad = audiomixer_capsfilter.static_pad("src").unwrap(); bin.add_pad(&gst::GhostPad::with_target(&src_pad)?)?; for pulsesrc in pulsesrcs { let audiorate = gst::ElementFactory::make("audiorate") .property("skip-to-first", true) .build()?; bin.add_many([&pulsesrc, &audiorate])?; pulsesrc.link_filtered(&audiorate, &caps)?; audiorate.link_pads(None, &audiomixer, Some("sink_%u"))?; } Ok(bin) } fn round_to_even(number: i32) -> i32 { number / 2 * 2 } fn round_to_even_f32(number: f32) -> i32 { (number / 2.0).round() as i32 * 2 } #[cfg(test)] mod test { use super::*; macro_rules! assert_even { ($number:expr) => { assert_eq!($number % 2, 0) }; } #[test] fn odd_round_to_even() { assert_even!(round_to_even(5)); assert_even!(round_to_even(101)); } #[test] fn odd_round_to_even_f32() { assert_even!(round_to_even_f32(3.0)); assert_even!(round_to_even_f32(99.0)); } #[test] fn even_round_to_even() { assert_even!(round_to_even(50)); assert_even!(round_to_even(4)); } #[test] fn even_round_to_even_f32() { assert_even!(round_to_even_f32(300.0)); assert_even!(round_to_even_f32(6.0)); } #[test] fn float_round_to_even_f32() { assert_even!(round_to_even_f32(5.3)); assert_even!(round_to_even_f32(2.9)); } } Kooha-2.3.0/src/preferences_dialog.rs000066400000000000000000000343561457702140700175540ustar00rootroot00000000000000use std::path::Path; use adw::{prelude::*, subclass::prelude::*}; use gettextrs::gettext; use gtk::{ gio, glib::{self, clone, BoxedAnyObject}, }; use crate::{ experimental::Feature, framerate_option::FramerateOption, item_row::ItemRow, profile::Profile, settings::Settings, }; const ROW_SELECTED_ITEM_NOTIFY_HANDLER_ID_KEY: &str = "kooha-row-selected-item-notify-handler-id"; const SETTINGS_PROFILE_CHANGED_HANDLER_ID_KEY: &str = "kooha-settings-profile-changed-handler-id"; /// Used to represent "none" profile in the profiles model type NoneProfile = BoxedAnyObject; mod imp { use std::cell::OnceCell; use super::*; #[derive(Debug, Default, glib::Properties, gtk::CompositeTemplate)] #[properties(wrapper_type = super::PreferencesDialog)] #[template(resource = "/io/github/seadve/Kooha/ui/preferences_dialog.ui")] pub struct PreferencesDialog { #[property(get, set, construct_only)] pub(super) settings: OnceCell, #[template_child] pub(super) delay_row: TemplateChild, #[template_child] pub(super) file_chooser_label: TemplateChild, #[template_child] pub(super) profile_row: TemplateChild, #[template_child] pub(super) framerate_row: TemplateChild, } #[glib::object_subclass] impl ObjectSubclass for PreferencesDialog { const NAME: &'static str = "KoohaPreferencesDialog"; type Type = super::PreferencesDialog; type ParentType = adw::PreferencesDialog; fn class_init(klass: &mut Self::Class) { klass.bind_template(); klass.install_action_async( "preferences.select-saving-location", None, |obj, _, _| async move { let parent = obj.root().map(|r| r.downcast::().unwrap()); if let Err(err) = obj.settings().select_saving_location(parent.as_ref()).await { if !err .downcast_ref::() .is_some_and(|error| error.matches(gtk::DialogError::Dismissed)) { tracing::error!("Failed to select saving location: {:?}", err); let toast = adw::Toast::new(&gettext("Failed to set recordings folder")); obj.add_toast(toast); } } }, ); } fn instance_init(obj: &glib::subclass::InitializingObject) { obj.init_template(); } } #[glib::derived_properties] impl ObjectImpl for PreferencesDialog { fn constructed(&self) { self.parent_constructed(); let obj = self.obj(); obj.setup_rows(); let settings = obj.settings(); settings .bind_record_delay(&self.delay_row.get(), "value") .build(); settings.connect_saving_location_changed(clone!(@weak obj => move |_| { obj.update_file_chooser_label(); })); settings.connect_profile_changed(clone!(@weak obj => move |_| { obj.update_profile_row_selected(); })); settings.connect_framerate_changed(clone!(@weak obj => move |_| { obj.update_framerate_row_selected(); })); obj.update_file_chooser_label(); obj.update_profile_row_selected(); obj.update_framerate_row_selected(); // Load last active value first in `update_*_row` before connecting to // the signal to avoid unnecessary updates. self.profile_row .connect_selected_item_notify(clone!(@weak obj => move |row| { if let Some(item) = row.selected_item() { let profile = profile_from_obj(&item); obj.settings().set_profile(profile); } })); self.framerate_row .connect_selected_item_notify(clone!(@weak obj => move |row| { if let Some(item) = row.selected_item() { let framerate_option = item .downcast_ref::() .unwrap() .borrow::(); obj.settings() .set_framerate(framerate_option.as_framerate()); } })); } } impl WidgetImpl for PreferencesDialog {} impl AdwDialogImpl for PreferencesDialog {} impl PreferencesDialogImpl for PreferencesDialog {} } glib::wrapper! { pub struct PreferencesDialog(ObjectSubclass) @extends gtk::Widget, adw::Dialog, adw::PreferencesDialog; } impl PreferencesDialog { pub fn new(settings: &Settings) -> Self { glib::Object::builder() .property("settings", settings) .build() } pub fn profile_row_grab_focus(&self) -> bool { self.imp().profile_row.grab_focus() } fn update_file_chooser_label(&self) { let imp = self.imp(); let saving_location = self.settings().saving_location(); imp.file_chooser_label .set_label(&display_path(&saving_location)); imp.file_chooser_label .set_tooltip_text(Some(&saving_location.display().to_string())); } fn update_profile_row_selected(&self) { let imp = self.imp(); let settings = self.settings(); let active_profile = settings.profile(); let model = imp.profile_row.model().unwrap(); let position = model.iter().position(|item| { let item = item.unwrap(); let profile = profile_from_obj(&item); profile.map(|p| p.id()) == active_profile.map(|p| p.id()) }); if let Some(position) = position { imp.profile_row.set_selected(position as u32); } else { tracing::error!( "Active profile `{:?}` was not found on profile model", active_profile.as_ref().map(|p| p.id()) ); } } fn update_framerate_row_selected(&self) { let imp = self.imp(); let settings = self.settings(); let framerate_option = FramerateOption::from_framerate(settings.framerate()); let model = imp.framerate_row.model().unwrap(); let position = model .iter::() .position(|item| *item.unwrap().borrow::() == framerate_option); if let Some(position) = position { imp.framerate_row.set_selected(position as u32); } else { tracing::error!( "Active framerate `{:?}` was not found on framerate model", framerate_option ); } } fn setup_rows(&self) { let imp = self.imp(); let settings = self.settings(); imp.framerate_row.set_factory(Some(&row_factory( &imp.framerate_row, &gettext("This frame rate may cause performance issues on the selected format."), clone!(@strong settings => move |list_item| { let item = list_item.item().unwrap(); let item_row = list_item.child().unwrap().downcast::().unwrap(); let framerate_option = item .downcast_ref::() .unwrap() .borrow::(); item_row.set_title(framerate_option.to_string()); unsafe { list_item.set_data( SETTINGS_PROFILE_CHANGED_HANDLER_ID_KEY, settings.connect_profile_changed( clone!(@weak list_item => move |settings| { update_framerate_row_shows_warning_icon(settings, &list_item); }), ), ); } update_framerate_row_shows_warning_icon(&settings, list_item); }), clone!(@strong settings => move |list_item| { unsafe { let handler_id = list_item .steal_data(SETTINGS_PROFILE_CHANGED_HANDLER_ID_KEY) .unwrap(); settings.disconnect(handler_id); } }), ))); let framerate_model = FramerateOption::model(&settings); imp.framerate_row.set_model(Some(&framerate_model)); imp.profile_row.set_factory(Some(&row_factory( &imp.profile_row, &gettext("This format is experimental and unsupported."), |list_item| { let item = list_item.item().unwrap(); let item_row = list_item.child().unwrap().downcast::().unwrap(); let profile = profile_from_obj(&item); item_row.set_title( profile.map_or_else(|| gettext("None"), |profile| profile.name().to_string()), ); item_row.set_shows_warning_icon( profile.is_some_and(|profile| profile.is_experimental()), ); }, |_| {}, ))); let active_profile = settings.profile(); let profile_model = { let profiles = Profile::all() .inspect_err(|err| tracing::error!("Failed to load profiles: {:?}", err)) .unwrap_or_default(); let model = gio::ListStore::new::(); model.splice(0, 0, profiles); if active_profile.is_none() { model.insert(0, &NoneProfile::new(())); } model }; let filter = gtk::CustomFilter::new(move |obj| { profile_from_obj(obj).map_or(true, |profile| { (Feature::ExperimentalFormats.is_enabled() || !profile.is_experimental() || active_profile.is_some_and(|active_profile| active_profile == profile)) && profile.is_available() }) }); let profile_filter_model = gtk::FilterListModel::new(Some(profile_model), Some(filter)); imp.profile_row.set_model(Some(&profile_filter_model)); } } fn row_factory( row: &adw::ComboRow, warning_tooltip_text: &str, bind_cb: impl Fn(>k::ListItem) + 'static, unbind_cb: impl Fn(>k::ListItem) + 'static, ) -> gtk::SignalListItemFactory { let factory = gtk::SignalListItemFactory::new(); let warning_tooltip_text = warning_tooltip_text.to_string(); factory.connect_setup(clone!(@weak row => move |_, list_item| { let list_item = list_item.downcast_ref::().unwrap(); let item_row = ItemRow::new(); item_row.set_warning_tooltip_text(warning_tooltip_text.as_str()); list_item.set_child(Some(&item_row)); })); factory.connect_bind(clone!(@weak row => move |_, list_item| { let list_item = list_item.downcast_ref::().unwrap(); let item_row = list_item.child().unwrap().downcast::().unwrap(); // Only show the selected icon when it is inside the given row's popover. This assumes that // the parent of the given row is not a popover, so we can tell which is which. if item_row.ancestor(gtk::Popover::static_type()).is_some() { debug_assert!(row.ancestor(gtk::Popover::static_type()).is_none()); item_row.set_is_on_popover(true); unsafe { list_item.set_data( ROW_SELECTED_ITEM_NOTIFY_HANDLER_ID_KEY, row.connect_selected_item_notify(clone!(@weak list_item => move |row| { update_item_row_is_selected(row, &list_item); })), ); } update_item_row_is_selected(&row, list_item); } else { item_row.set_is_on_popover(false); } bind_cb(list_item); })); factory.connect_unbind(clone!(@weak row => move |_, list_item| { let list_item = list_item.downcast_ref::().unwrap(); unsafe { if let Some(handler_id) = list_item.steal_data(ROW_SELECTED_ITEM_NOTIFY_HANDLER_ID_KEY) { row.disconnect(handler_id); } } unbind_cb(list_item); })); factory } fn update_item_row_is_selected(row: &adw::ComboRow, list_item: >k::ListItem) { let item_row = list_item.child().unwrap().downcast::().unwrap(); item_row.set_is_selected(row.selected_item() == list_item.item()); } fn update_framerate_row_shows_warning_icon(settings: &Settings, list_item: >k::ListItem) { let item_row = list_item.child().unwrap().downcast::().unwrap(); let item = list_item.item().unwrap(); let framerate_option = item .downcast_ref::() .unwrap() .borrow::(); item_row.set_shows_warning_icon(settings.profile().is_some_and(|profile| { framerate_option.as_framerate() > profile.suggested_max_framerate() })); } /// Returns `Some` if the object is a `Profile`, otherwise `None`, if the object is a `NoneProfile`. fn profile_from_obj(obj: &glib::Object) -> Option<&Profile> { if let Some(profile) = obj.downcast_ref::() { Some(profile) } else if obj.downcast_ref::().is_some() { None } else { tracing::warn!("Unexpected object type `{}`", obj.type_()); None } } // Copied from Delineate // See https://github.com/SeaDve/Delineate/blob/e5f57835133a85c002961e681dc8935249458ef7/src/utils.rs#L71 /// Returns a shortened human-readable representation of the path. fn display_path(path: &Path) -> String { let home_dir = glib::home_dir(); if path == home_dir { return "~/".to_string(); } let path_display = path.display().to_string(); if path.starts_with(&home_dir) { let home_dir_display = home_dir.display().to_string(); return format!("~{}", &path_display[home_dir_display.len()..]); } path_display } Kooha-2.3.0/src/profile.rs000066400000000000000000000235141457702140700153660ustar00rootroot00000000000000use anyhow::{bail, Context, Result}; use gst::prelude::*; use gtk::{ gio, glib::{self, subclass::prelude::*}, }; use once_cell::sync::OnceCell as OnceLock; use serde::Deserialize; const DEFAULT_SUGGESTED_MAX_FRAMERATE: gst::Fraction = gst::Fraction::from_integer(60); const MAX_THREAD_COUNT: u32 = 64; #[derive(Debug, Deserialize)] struct Profiles { supported: Vec, experimental: Vec, } #[derive(Debug, Deserialize)] struct ProfileData { id: String, #[serde(default)] is_experimental: bool, name: String, #[serde(rename = "suggested-max-fps")] suggested_max_framerate: Option, #[serde(rename = "extension")] file_extension: String, #[serde(rename = "videoenc")] videoenc_bin_str: String, #[serde(rename = "audioenc")] audioenc_bin_str: Option, #[serde(rename = "muxer")] muxer_bin_str: Option, } mod imp { use super::*; #[derive(Debug, Default)] pub struct Profile { pub(super) data: OnceLock, } #[glib::object_subclass] impl ObjectSubclass for Profile { const NAME: &'static str = "KoohaProfile"; type Type = super::Profile; } impl ObjectImpl for Profile {} } glib::wrapper! { pub struct Profile(ObjectSubclass); } impl Profile { fn from_data(data: ProfileData) -> Self { let this = glib::Object::new::(); this.imp().data.set(data).unwrap(); this } fn data(&self) -> &ProfileData { self.imp().data.get().unwrap() } pub fn all() -> Result<&'static [Self]> { static ALL: OnceLock> = OnceLock::new(); ALL.get_or_try_init(|| { let bytes = gio::resources_lookup_data( "/io/github/seadve/Kooha/profiles.yml", gio::ResourceLookupFlags::NONE, )?; let profiles = serde_yaml::from_slice::(&bytes)?; let supported = profiles.supported.into_iter().map(|mut data| { data.is_experimental = false; Self::from_data(data) }); let experimental = profiles.experimental.into_iter().map(|mut data| { data.is_experimental = true; Self::from_data(data) }); Ok(supported.chain(experimental).collect()) }) .map(|v| v.as_slice()) } pub fn from_id(id: &str) -> Result<&'static Self> { let profile = Self::all()? .iter() .find(|p| p.id() == id) .with_context(|| format!("Profile `{}` not found", id))?; Ok(profile) } pub fn id(&self) -> &str { &self.data().id } pub fn name(&self) -> &str { &self.data().name } pub fn file_extension(&self) -> &str { &self.data().file_extension } pub fn supports_audio(&self) -> bool { self.data().audioenc_bin_str.is_some() } pub fn suggested_max_framerate(&self) -> gst::Fraction { self.data().suggested_max_framerate.map_or_else( || DEFAULT_SUGGESTED_MAX_FRAMERATE, |raw| gst::Fraction::approximate_f64(raw).unwrap(), ) } pub fn is_experimental(&self) -> bool { self.data().is_experimental } pub fn is_available(&self) -> bool { self.is_available_inner() .inspect_err(|err| { tracing::debug!("Profile `{}` is not available: {:?}", self.id(), err); }) .is_ok() } fn is_available_inner(&self) -> Result<()> { parse_bin_test(&self.data().videoenc_bin_str).context("Failed to parse videoenc bin")?; if let Some(audioenc_bin_str) = &self.data().audioenc_bin_str { parse_bin_test(audioenc_bin_str).context("Failed to parse audioenc bin")?; } if let Some(muxer_bin_str) = &self.data().muxer_bin_str { parse_bin_test(muxer_bin_str).context("Failed to parse muxer bin")?; } Ok(()) } pub fn attach( &self, pipeline: &gst::Pipeline, video_src: &gst::Element, audio_srcs: Option<&gst::Element>, sink: &gst::Element, ) -> Result<()> { let videoenc_bin = parse_bin("kooha-videoenc-bin", &self.data().videoenc_bin_str)?; debug_assert!(videoenc_bin.iterate_elements().into_iter().any(|element| { let factory = element.unwrap().factory().unwrap(); factory.has_type(gst::ElementFactoryType::VIDEO_ENCODER) })); pipeline.add(&videoenc_bin)?; video_src.link(&videoenc_bin)?; match (&self.data().audioenc_bin_str, &self.data().muxer_bin_str) { (None, None) => { // Special case for gifenc if audio_srcs.is_some() { tracing::error!("Audio srcs ignored: Profile does not support audio"); } videoenc_bin.link(sink)?; } (audioenc_str, Some(muxer_bin_str)) => { let muxer_bin = parse_bin("kooha-muxer-bin", muxer_bin_str)?; let muxer = muxer_bin .iterate_elements() .find(|element| { element .factory() .is_some_and(|f| f.has_type(gst::ElementFactoryType::MUXER)) }) .context("Can't find the muxer in muxer bin")?; pipeline.add(&muxer_bin)?; videoenc_bin.link_pads(None, &muxer, Some("video_%u"))?; muxer_bin.link(sink)?; if let Some(audio_srcs) = audio_srcs { let audioenc_str = audioenc_str .as_ref() .context("Failed to handle audio srcs: Profile has no audio encoder")?; let audioenc_bin = parse_bin("kooha-audioenc-bin", audioenc_str)?; debug_assert!(audioenc_bin.iterate_elements().into_iter().any(|element| { let factory = element.unwrap().factory().unwrap(); factory.has_type(gst::ElementFactoryType::AUDIO_ENCODER) })); pipeline.add(&audioenc_bin)?; audio_srcs.link(&audioenc_bin)?; audioenc_bin.link_pads(None, &muxer, Some("audio_%u"))?; } } (Some(_), None) => { bail!("Unexpected audioenc without muxer") } } Ok(()) } } fn parse_bin_test(description: &str) -> Result<(), glib::Error> { // Empty names are ignored in implementation details of `gst::parse::bin_from_description_with_name_full` parse_bin_inner("", description, false)?; Ok(()) } fn parse_bin(name: &str, description: &str) -> Result { parse_bin_inner(name, description, true) } fn parse_bin_inner( name: &str, description: &str, add_ghost_pads: bool, ) -> Result { let ideal_n_threads = glib::num_processors().min(MAX_THREAD_COUNT); let formatted_description = description.replace("${N_THREADS}", &ideal_n_threads.to_string()); let bin = gst::parse::bin_from_description_with_name_full( &formatted_description, add_ghost_pads, name, None, gst::ParseFlags::FATAL_ERRORS, )? .downcast() .unwrap(); Ok(bin) } #[cfg(test)] mod tests { use super::*; use std::{collections::HashSet, sync::Once}; use crate::config::RESOURCES_FILE; fn init_gresources() { static INIT: Once = Once::new(); INIT.call_once(|| { let res = gio::Resource::load(RESOURCES_FILE).unwrap(); gio::resources_register(&res); }); } #[test] fn profiles_fields_validity() { init_gresources(); let mut unique = HashSet::new(); for profile in Profile::all().unwrap() { assert!(!profile.id().is_empty()); assert!(!profile.name().is_empty()); assert!(!profile.file_extension().is_empty()); assert_ne!( profile.suggested_max_framerate(), gst::Fraction::from_integer(0) ); assert!( unique.insert(profile.id().to_string()), "Duplicate id `{}`", profile.id() ); } } #[test] fn profiles_validity() { init_gresources(); gst::init().unwrap(); gstgif::plugin_register_static().unwrap(); for profile in Profile::all().unwrap() { // These profiles are not supported by the CI runner. if matches!(profile.id(), "vaapi-vp8" | "vaapi-vp9" | "va-h264") { continue; } let pipeline = gst::Pipeline::new(); let dummy_video_src = gst::ElementFactory::make("fakesrc").build().unwrap(); let dummy_sink = gst::ElementFactory::make("fakesink").build().unwrap(); pipeline.add_many([&dummy_video_src, &dummy_sink]).unwrap(); let dummy_audio_src = if profile.supports_audio() { let dummy_audio_src = gst::ElementFactory::make("fakesrc").build().unwrap(); pipeline.add(&dummy_audio_src).unwrap(); Some(dummy_audio_src) } else { None }; if let Err(err) = profile.attach( &pipeline, &dummy_video_src, dummy_audio_src.as_ref(), &dummy_sink, ) { panic!("can't attach profile `{}`: {:?}", profile.id(), err); } assert!(pipeline .find_unlinked_pad(gst::PadDirection::Sink) .is_none()); assert!(pipeline.find_unlinked_pad(gst::PadDirection::Src).is_none()); assert!(profile.is_available()); } } } Kooha-2.3.0/src/recording.rs000066400000000000000000000505741457702140700157100ustar00rootroot00000000000000use std::{ cell::{Cell, OnceCell, RefCell}, error, ffi::OsStr, fmt, os::unix::prelude::RawFd, path::{Path, PathBuf}, rc::Rc, time::Duration, }; use anyhow::{ensure, Context, Error, Result}; use gettextrs::gettext; use gst::prelude::*; use gtk::{ gio::{self, prelude::*}, glib::{self, clone, closure_local, subclass::prelude::*}, }; use crate::{ application::Application, area_selector::AreaSelector, cancelled::Cancelled, experimental::Feature, help::ContextWithHelp, i18n::gettext_f, pipeline::PipelineBuilder, screencast_portal::{ CursorMode, PersistMode, Proxy, Session, SourceType, Stream, WindowIdentifier, }, settings::{CaptureMode, Settings}, timer::Timer, }; const DURATION_UPDATE_INTERVAL: Duration = Duration::from_millis(200); #[derive(Debug)] pub struct NoProfileError; impl fmt::Display for NoProfileError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str(&gettext("No active profile")) } } impl error::Error for NoProfileError {} #[derive(Debug, Default, Clone, Copy, PartialEq, Eq, glib::Boxed)] #[boxed_type(name = "KoohaRecordingState")] pub enum RecordingState { #[default] Init, Delayed { secs_left: u64, }, Recording, Paused, Flushing { /// Progress in percentage with range 0..=100 progress: u8, }, Finished, } #[derive(Debug, Clone, glib::SharedBoxed)] #[shared_boxed_type(name = "KoohaRecordingResult")] struct BoxedResult(Rc>); mod imp { use glib::subclass::Signal; use gst::bus::BusWatchGuard; use once_cell::sync::Lazy; use super::*; #[derive(Debug, Default, glib::Properties)] #[properties(wrapper_type = super::Recording)] pub struct Recording { #[property(get)] pub(super) state: Cell, #[property(get)] pub(super) duration: Cell, pub(super) file: OnceCell, pub(super) estimated_final_duration: Cell>, pub(super) timer: RefCell>, pub(super) session: RefCell>, pub(super) duration_source_id: RefCell>, pub(super) pipeline: OnceCell, pub(super) bus_watch_guard: RefCell>, } #[glib::object_subclass] impl ObjectSubclass for Recording { const NAME: &'static str = "KoohaRecording"; type Type = super::Recording; } #[glib::derived_properties] impl ObjectImpl for Recording { fn dispose(&self) { if let Some(timer) = self.timer.take() { timer.cancel(); } if let Some(pipeline) = self.pipeline.get() { if let Err(err) = pipeline.set_state(gst::State::Null) { tracing::warn!("Failed to stop pipeline on dispose: {:?}", err); } } self.obj().close_session(); if let Some(source_id) = self.duration_source_id.take() { source_id.remove(); } } fn signals() -> &'static [glib::subclass::Signal] { static SIGNALS: Lazy> = Lazy::new(|| { vec![Signal::builder("finished") .param_types([BoxedResult::static_type()]) .build()] }); SIGNALS.as_ref() } } } glib::wrapper! { pub struct Recording(ObjectSubclass); } impl Recording { pub fn new() -> Self { glib::Object::new() } pub async fn start(&self, parent: Option<&impl IsA>, settings: &Settings) { if !matches!(self.state(), RecordingState::Init) { tracing::error!("Trying to start recording on a non-init state"); return; } if let Err(err) = self.start_inner(parent, settings).await { self.close_session(); self.set_finished(Err(err)); } } async fn start_inner( &self, parent: Option<&impl IsA>, settings: &Settings, ) -> Result<()> { let imp = self.imp(); let profile = settings.profile().context(NoProfileError)?; // Setup screencast session let restore_token = settings.screencast_restore_token(); settings.reset_screencast_restore_token(); let (screencast_session, streams, restore_token, fd) = new_screencast_session( if settings.show_pointer() { CursorMode::EMBEDDED } else { CursorMode::HIDDEN }, if Feature::WindowRecording.is_enabled() { SourceType::MONITOR | SourceType::WINDOW } else { SourceType::MONITOR }, Feature::MultipleVideoSources.is_enabled(), Some(&restore_token), PersistMode::Persistent, parent, ) .await .with_context(|| { ContextWithHelp::new( gettext("Failed to start recording"), gettext_f( // Translators: Do NOT translate the contents between '{' and '}', this is a variable name. "Check out {link} for help.", &[("link", r#"It Doesn't Work page"#)], ), ) })?; imp.session.replace(Some(screencast_session)); settings.set_screencast_restore_token(&restore_token.unwrap_or_default()); let file_path = new_recording_path(&settings.saving_location(), profile.file_extension()); imp.file.set(gio::File::for_path(&file_path)).unwrap(); let mut pipeline_builder = PipelineBuilder::new( file_path, settings.framerate(), profile.clone(), fd, streams.clone(), ); // Select area if settings.capture_mode() == CaptureMode::Selection { let data = AreaSelector::select(fd, &streams, &Application::get().window()).await?; pipeline_builder.select_area_data(data); } if profile.supports_audio() { pipeline_builder.record_desktop_audio(settings.record_desktop_audio()); pipeline_builder.record_microphone(settings.record_microphone()); } // Build pipeline let pipeline = pipeline_builder.build().with_context(|| { ContextWithHelp::new( gettext("Failed to start recording"), gettext("A GStreamer plugin may not be installed."), ) })?; imp.pipeline.set(pipeline.clone()).unwrap(); // Setup and run timer let timer = Timer::new( settings.record_delay(), clone!(@weak self as obj => move |secs_left| { obj.set_state(RecordingState::Delayed { secs_left }); }), ); imp.timer.replace(Some(Timer::clone(&timer))); timer.await?; let bus_watch_guard = pipeline .bus() .unwrap() .add_watch_local( clone!(@weak self as obj => @default-return glib::ControlFlow::Break, move |_, message| { obj.handle_bus_message(message) }), ) .unwrap(); imp.bus_watch_guard.replace(Some(bus_watch_guard)); imp.duration_source_id.replace(Some(glib::timeout_add_local( DURATION_UPDATE_INTERVAL, clone!(@weak self as obj => @default-return glib::ControlFlow::Break, move || { obj.update_duration(); obj.update_flushing_progress(); glib::ControlFlow::Continue }), ))); pipeline .set_state(gst::State::Playing) .context("Failed to initialize pipeline state to playing") .with_context(|| { ContextWithHelp::new( gettext("Failed to start recording"), gettext("Make sure that the saving location exists and is accessible."), ) })?; self.update_duration(); Ok(()) } pub fn pause(&self) -> Result<()> { ensure!( matches!(self.state(), RecordingState::Recording), "Recording can only be paused from recording state" ); self.pipeline() .set_state(gst::State::Paused) .context("Failed to set pipeline state to paused")?; // TODO Handle effect on estimated final duration Ok(()) } pub fn resume(&self) -> Result<()> { ensure!( matches!(self.state(), RecordingState::Paused), "Recording can only be resumed from paused state" ); self.pipeline() .set_state(gst::State::Playing) .context("Failed to set pipeline state to playing from paused")?; Ok(()) } pub fn stop(&self) { let imp = self.imp(); let state = self.state(); if matches!( state, RecordingState::Init | RecordingState::Flushing { .. } | RecordingState::Finished ) { tracing::error!("Trying to stop recording on a `{:?}` state", state); return; } let pipeline = self.pipeline(); self.set_state(RecordingState::Flushing { progress: 0 }); imp.estimated_final_duration .set(pipeline.current_running_time()); self.update_flushing_progress(); tracing::debug!("Sending eos event to pipeline"); // FIXME Maybe it is needed to verify if we received the same // eos event by checking its seqnum in the bus? pipeline.send_event(gst::event::Eos::new()); } pub fn cancel(&self) { let imp = self.imp(); tracing::debug!("Cancelling recording"); if let Some(timer) = imp.timer.take() { timer.cancel(); } if let Some(pipeline) = imp.pipeline.get() { if let Err(err) = pipeline.set_state(gst::State::Null) { tracing::warn!("Failed to stop pipeline on cancel: {:?}", err); } } let _ = imp.bus_watch_guard.take(); self.close_session(); if let Some(source_id) = imp.duration_source_id.take() { source_id.remove(); } // HACK we need to return before calling this to avoid a `BorrowMutError` when // `Window` tried to take the `recording` on finished callback while `recording` // is borrowed to call `cancel`. glib::idle_add_local_once(clone!(@weak self as obj => move || { obj.set_finished(Err(Error::from(Cancelled::new("recording")))); })); } pub fn connect_finished(&self, f: F) -> glib::SignalHandlerId where F: Fn(&Self, &Result<(gio::File, gst::ClockTime)>) + 'static, { self.connect_closure( "finished", true, closure_local!(|obj: &Self, result: BoxedResult| { f(obj, &result.0); }), ) } fn set_state(&self, state: RecordingState) { tracing::trace!("Recording state changed to {:?}", state); if state == self.state() { return; } self.imp().state.replace(state); self.notify_state(); } fn file(&self) -> &gio::File { self.imp() .file .get() .expect("file not set, make sure to start recording first") } fn pipeline(&self) -> &gst::Pipeline { self.imp() .pipeline .get() .expect("pipeline not set, make sure to start recording first") } fn set_finished(&self, res: Result<(gio::File, gst::ClockTime)>) { self.set_state(RecordingState::Finished); let result = BoxedResult(Rc::new(res)); self.emit_by_name::<()>("finished", &[&result]); } /// Closes session on the background fn close_session(&self) { if let Some(session) = self.imp().session.take() { glib::spawn_future_local(async move { if let Err(err) = session.close().await { tracing::warn!("Failed to close screencast session: {:?}", err); } }); } } fn update_duration(&self) { let imp = self.imp(); let clock_time = imp .pipeline .get() .and_then(|pipeline| pipeline.query_position::()) .unwrap_or(gst::ClockTime::ZERO); if clock_time == self.duration() { return; } imp.duration.set(clock_time); self.notify_duration(); } fn update_flushing_progress(&self) { let imp = self.imp(); let RecordingState::Flushing { progress: prev_progress, } = self.state() else { return; }; let progress = imp .estimated_final_duration .get() .map_or(0, |estimated_final_duration| { let progress_percent = self.duration().nseconds() as f64 / estimated_final_duration.nseconds() as f64 * 100.0; (progress_percent.round() as u8).clamp(0, 100) }); if prev_progress == progress { return; } self.set_state(RecordingState::Flushing { progress }); } fn handle_bus_message(&self, message: &gst::Message) -> glib::ControlFlow { use gst::MessageView; let imp = self.imp(); match message.view() { MessageView::Error(e) => { tracing::debug!(state = ?self.state(), "Received error at bus"); if let Err(err) = self.pipeline().set_state(gst::State::Null) { tracing::warn!("Failed to stop pipeline on error: {:?}", err); } self.close_session(); if let Some(source_id) = imp.duration_source_id.take() { source_id.remove(); } // TODO print error quarks for all glib::Error let error = Error::from(e.error()) .context(e.debug().unwrap_or_else(|| "".into())) .context(gettext("An error occurred while recording")); let error = if e.error().matches(gst::ResourceError::OpenWrite) { error.context(ContextWithHelp::new( gettext_f( // Translators: Do NOT translate the contents between '{' and '}', this is a variable name. "Failed to open “{path}” for writing", &[("path", &self.file().uri())], ), gettext("Make sure that the saving location exists and is accessible."), )) } else { error }; self.set_finished(Err(error)); glib::ControlFlow::Break } MessageView::Eos(..) => { tracing::debug!("Eos signal received from record bus"); debug_assert!( matches!(self.state(), RecordingState::Flushing { .. }), "received eos signal on {:?}", self.state() ); self.set_state(RecordingState::Flushing { progress: 100 }); self.update_duration(); let duration = self.duration(); if let Err(err) = self.pipeline().set_state(gst::State::Null) { tracing::error!("Failed to stop pipeline on eos: {:?}", err); } self.close_session(); if let Some(source_id) = imp.duration_source_id.take() { source_id.remove(); } self.set_finished(Ok((self.file().clone(), duration))); glib::ControlFlow::Break } MessageView::StateChanged(sc) => { let new_state = sc.current(); if message.src() != imp .pipeline .get() .map(|pipeline| pipeline.upcast_ref::()) { tracing::trace!( "`{}` changed state from `{:?}` -> `{:?}`", message .src() .map_or_else(|| "".into(), |e| e.name()), sc.old(), new_state, ); return glib::ControlFlow::Continue; } tracing::debug!( "Pipeline changed state from `{:?}` -> `{:?}`", sc.old(), new_state, ); let state = match new_state { gst::State::Paused => RecordingState::Paused, gst::State::Playing => RecordingState::Recording, _ => return glib::ControlFlow::Continue, }; self.set_state(state); glib::ControlFlow::Continue } MessageView::AsyncDone(ad) => { tracing::trace!("Received async-done message on bus: {:?}", ad); // This is enabled by setting `GST_DEBUG_DUMP_DOT_DIR` to a directory (e.g. `GST_DEBUG_DUMP_DOT_DIR=.`). self.pipeline() .debug_to_dot_file_with_ts(gst::DebugGraphDetails::VERBOSE, "kooha-pipeline"); glib::ControlFlow::Continue } MessageView::Warning(w) => { tracing::warn!("Received warning message on bus: {:?}", w); glib::ControlFlow::Continue } MessageView::Info(i) => { tracing::debug!("Received info message on bus: {:?}", i); glib::ControlFlow::Continue } MessageView::Qos(q) => { tracing::warn!("Received qos message on bus: {:?}", q); glib::ControlFlow::Continue } other => { tracing::trace!("Received other message on bus: {:?}", other); glib::ControlFlow::Continue } } } } async fn new_screencast_session( cursor_mode: CursorMode, source_type: SourceType, is_multiple_sources: bool, restore_token: Option<&str>, persist_mode: PersistMode, parent_window: Option<&impl IsA>, ) -> Result<(Session, Vec, Option, RawFd)> { let proxy = Proxy::new() .await .context("Failed to create screencast proxy")?; tracing::debug!( version = ?proxy.version(), available_cursor_modes = ?proxy.available_cursor_modes(), available_source_types = ?proxy.available_source_types(), "Created screencast proxy" ); let session = proxy .create_session() .await .context("Failed to create session")?; tracing::debug!( ?cursor_mode, ?source_type, is_multiple_sources, restore_token, ?persist_mode, "Selecting sources" ); session .select_sources( source_type, is_multiple_sources, cursor_mode, restore_token, persist_mode, ) .await .context("Failed to select sources")?; let window_identifier = if let Some(window) = parent_window { WindowIdentifier::new(window.as_ref()).await } else { WindowIdentifier::None }; tracing::debug!(%window_identifier, "Starting session"); let (streams, restore_token) = session .start(window_identifier) .await .context("Failed to start session")?; let fd = session .open_pipe_wire_remote() .await .context("Failed to open pipewire remote")?; Ok((session, streams, restore_token, fd)) } fn new_recording_path(saving_location: &Path, extension: impl AsRef) -> PathBuf { let file_name = glib::DateTime::now_local() .expect("You are somehow on year 9999") .format("Kooha-%F-%H-%M-%S") .expect("Invalid format string"); let mut path = saving_location.join(file_name); path.set_extension(extension); path } Kooha-2.3.0/src/screencast_portal/000077500000000000000000000000001457702140700170665ustar00rootroot00000000000000Kooha-2.3.0/src/screencast_portal/handle_token.rs000066400000000000000000000017121457702140700220700ustar00rootroot00000000000000use gtk::glib::{self, prelude::*}; use std::sync::atomic::{AtomicUsize, Ordering}; static COUNTER: AtomicUsize = AtomicUsize::new(0); #[derive(Debug)] pub struct HandleToken(String); impl HandleToken { pub fn new() -> Self { Self(format!("kooha_{}", COUNTER.fetch_add(1, Ordering::Relaxed))) } pub fn as_str(&self) -> &str { &self.0 } } impl ToVariant for HandleToken { fn to_variant(&self) -> glib::Variant { self.0.to_variant() } } #[cfg(test)] mod tests { use super::*; #[test] fn uniqueness() { let a = HandleToken::new(); let b = HandleToken::new(); let c = HandleToken::new(); assert_ne!(a.as_str(), b.as_str()); assert_ne!(b.as_str(), c.as_str()); assert_ne!(a.as_str(), c.as_str()); } #[test] fn to_variant() { let ht = HandleToken::new(); assert_eq!(ht.to_variant().type_(), String::static_variant_type()); } } Kooha-2.3.0/src/screencast_portal/mod.rs000066400000000000000000000255601457702140700202230ustar00rootroot00000000000000mod handle_token; mod types; mod variant_dict; mod window_identifier; use anyhow::{anyhow, bail, Context, Result}; use futures_channel::oneshot; use futures_util::future::{self, Either}; use gtk::{ gio, glib::{ self, variant::{Handle, ObjectPath}, }, prelude::*, }; use std::{cell::RefCell, os::unix::io::RawFd, time::Duration}; use self::{handle_token::HandleToken, variant_dict::VariantDict}; pub use self::{ types::{CursorMode, PersistMode, SourceType, Stream}, window_identifier::WindowIdentifier, }; use crate::cancelled::Cancelled; const DESKTOP_BUS_NAME: &str = "org.freedesktop.portal.Desktop"; const DESKTOP_OBJECT_PATH: &str = "/org/freedesktop/portal/desktop"; const SESSION_IFACE_NAME: &str = "org.freedesktop.portal.Session"; const REQUEST_IFACE_NAME: &str = "org.freedesktop.portal.Request"; const SCREENCAST_IFACE_NAME: &str = "org.freedesktop.portal.ScreenCast"; const PROXY_CALL_TIMEOUT: Duration = Duration::from_secs(5); pub struct Proxy(gio::DBusProxy); impl Proxy { pub async fn new() -> Result { let inner = gio::DBusProxy::for_bus_future( gio::BusType::Session, gio::DBusProxyFlags::NONE, None, DESKTOP_BUS_NAME, DESKTOP_OBJECT_PATH, SCREENCAST_IFACE_NAME, ) .await?; Ok(Self(inner)) } pub async fn create_session(&self) -> Result { let session_handle_token = HandleToken::new(); let handle_token = HandleToken::new(); let session_options = VariantDict::builder() .entry("handle_token", &handle_token) .entry("session_handle_token", &session_handle_token) .build(); let response = screencast_request_call(&self.0, &handle_token, "CreateSession", &(session_options,)) .await?; tracing::trace!(?response, "Created screencast session"); // FIXME this must be an ObjectPath not a String let session_handle = response.get_flatten::("session_handle")?; debug_assert!(session_handle.ends_with(&session_handle_token.as_str())); Ok(Session { proxy: self.0.clone(), session_handle: ObjectPath::try_from(session_handle)?, }) } pub fn version(&self) -> Result { self.property("version") } pub fn available_cursor_modes(&self) -> Result { let value = self.property::("AvailableCursorModes")?; CursorMode::from_bits(value).ok_or_else(|| anyhow!("Invalid cursor mode: {}", value)) } pub fn available_source_types(&self) -> Result { let value = self.property::("AvailableSourceTypes")?; SourceType::from_bits(value).ok_or_else(|| anyhow!("Invalid source type: {}", value)) } fn property(&self, name: &str) -> Result { let variant = self .0 .cached_property(name) .ok_or_else(|| anyhow!("No cached property named `{}`", name))?; variant_get::(&variant) } } #[derive(Debug)] pub struct Session { proxy: gio::DBusProxy, session_handle: ObjectPath, } impl Session { pub async fn select_sources( &self, source_type: SourceType, multiple: bool, cursor_mode: CursorMode, restore_token: Option<&str>, persist_mode: PersistMode, ) -> Result<()> { let handle_token = HandleToken::new(); let mut options = VariantDict::builder() .entry("handle_token", &handle_token) .entry("types", source_type.bits()) .entry("multiple", multiple) .entry("cursor_mode", cursor_mode.bits()) .entry("persist_mode", persist_mode as u32) .build(); if let Some(restore_token) = restore_token.filter(|t| !t.is_empty()) { options.insert("restore_token", restore_token); } let response = screencast_request_call( &self.proxy, &handle_token, "SelectSources", &(&self.session_handle, options), ) .await?; debug_assert!(response.is_empty()); tracing::trace!(?response, "Selected sources"); Ok(()) } pub async fn start( &self, window_identifier: WindowIdentifier, ) -> Result<(Vec, Option)> { let handle_token = HandleToken::new(); let options = VariantDict::builder() .entry("handle_token", &handle_token) .build(); let response = screencast_request_call( &self.proxy, &handle_token, "Start", &(&self.session_handle, window_identifier, options), ) .await?; tracing::trace!(?response, "Started screencast session"); let streams = response.get_flatten("streams")?; let restore_token = response.get("restore_token")?; Ok((streams, restore_token)) } pub async fn open_pipe_wire_remote(&self) -> Result { let (response, fd_list) = self .proxy .call_with_unix_fd_list_future( "OpenPipeWireRemote", Some(&(&self.session_handle, VariantDict::default()).to_variant()), gio::DBusCallFlags::NONE, PROXY_CALL_TIMEOUT.as_millis() as i32, gio::UnixFDList::NONE, ) .await?; tracing::trace!(%response, fd_list = ?fd_list.peek_fds(), "Opened pipe wire remote"); let (fd_index,) = variant_get::<(Handle,)>(&response)?; debug_assert_eq!(fd_list.length(), 1); let fd = fd_list .get(fd_index.0) .with_context(|| format!("Failed to get fd at index `{}`", fd_index.0))?; Ok(fd) } pub async fn close(self) -> Result<()> { let response = self .proxy .connection() .call_future( Some(DESKTOP_BUS_NAME), self.session_handle.as_str(), SESSION_IFACE_NAME, "Close", None, None, gio::DBusCallFlags::NONE, PROXY_CALL_TIMEOUT.as_millis() as i32, ) .await .context("Failed to invoke Close on the session")?; debug_assert!(variant_get::<()>(&response).is_ok()); tracing::trace!(%response, "Closed screencast session"); Ok(()) } } async fn screencast_request_call( proxy: &gio::DBusProxy, handle_token: &HandleToken, method: &str, params: impl ToVariant, ) -> Result { let connection = proxy.connection(); let unique_identifier = connection .unique_name() .expect("Connection has no unique name") .trim_start_matches(':') .replace('.', "_"); let request_path = { let path = format!( "/org/freedesktop/portal/desktop/request/{}/{}", unique_identifier, handle_token.as_str() ); ObjectPath::try_from(path.as_str()) .with_context(|| format!("Failed to create object path from `{}`", path))? }; let request_proxy = gio::DBusProxy::for_bus_future( gio::BusType::Session, gio::DBusProxyFlags::DO_NOT_AUTO_START | gio::DBusProxyFlags::DO_NOT_CONNECT_SIGNALS | gio::DBusProxyFlags::DO_NOT_LOAD_PROPERTIES, None, DESKTOP_BUS_NAME, request_path.as_str(), REQUEST_IFACE_NAME, ) .await?; let (name_owner_lost_tx, name_owner_lost_rx) = oneshot::channel(); let name_owner_lost_tx = RefCell::new(Some(name_owner_lost_tx)); let handler_id = request_proxy.connect_notify_local(Some("g-name-owner"), move |proxy, _| { if proxy.g_name_owner().is_none() { tracing::warn!("Lost request name owner"); if let Some(tx) = name_owner_lost_tx.take() { let _ = tx.send(()); } else { tracing::warn!("Received another g name owner notify"); } } }); let (response_tx, response_rx) = oneshot::channel(); let response_tx = RefCell::new(Some(response_tx)); let subscription_id = connection.signal_subscribe( Some(DESKTOP_BUS_NAME), Some(REQUEST_IFACE_NAME), Some("Response"), Some(request_path.as_str()), None, gio::DBusSignalFlags::NONE, move |_connection, _sender_name, _object_path, _interface_name, _signal_name, output| { if let Some(tx) = response_tx.take() { let _ = tx.send(output.clone()); } else { tracing::warn!("Received another response for already finished request"); } }, ); let params = params.to_variant(); let path = proxy .call_future( method, Some(¶ms), gio::DBusCallFlags::NONE, PROXY_CALL_TIMEOUT.as_millis() as i32, ) .await .with_context(|| format!("Failed to call `{}` with parameters: {:?}", method, params))?; debug_assert_eq!(variant_get::<(ObjectPath,)>(&path).unwrap().0, request_path); tracing::trace!("Waiting request response for method `{}`", method); let response = match future::select(response_rx, name_owner_lost_rx).await { Either::Left((res, _)) => res .with_context(|| Cancelled::new(method)) .context("Sender dropped")?, Either::Right(_) => bail!("Lost name owner for request"), }; request_proxy.disconnect(handler_id); connection.signal_unsubscribe(subscription_id); tracing::trace!("Request response received for method `{}`", method); let (response_no, response) = variant_get::<(u32, VariantDict)>(&response)?; match response_no { 0 => Ok(response), 1 => Err(Cancelled::new(method)).context("Cancelled by user"), 2 => Err(anyhow!( "Interaction was ended in some other way with response {:?}", response )), no => Err(anyhow!("Unknown response number of {}", no)), } } /// Provides error messages on incorrect variant type. fn variant_get(variant: &glib::Variant) -> Result { variant.get::().ok_or_else(|| { anyhow!( "Expected type `{}`; got `{}` with value `{}`", T::static_variant_type(), variant.type_(), variant ) }) } #[cfg(test)] mod tests { use super::*; #[test] fn get_variant_ok() { let variant = ("foo",).to_variant(); let (value,) = variant_get::<(String,)>(&variant).unwrap(); assert_eq!(value, "foo"); } #[test] fn get_variant_wrong_type() { let variant = "foo".to_variant(); let err = variant_get::(&variant).unwrap_err(); assert_eq!( "Expected type `u`; got `s` with value `'foo'`", err.to_string() ); } } Kooha-2.3.0/src/screencast_portal/types.rs000066400000000000000000000064371457702140700206120ustar00rootroot00000000000000use gtk::glib::{self, bitflags::bitflags, prelude::*}; use std::borrow::Cow; use super::VariantDict; bitflags! { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct CursorMode: u32 { const HIDDEN = 1; const EMBEDDED = 2; const METADATA = 4; } } bitflags! { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct SourceType: u32 { const MONITOR = 1; const WINDOW = 2; const VIRTUAL = 4; } } #[allow(dead_code)] #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(u32)] pub enum PersistMode { /// Do not persist. None = 0, /// Persist as long as the application is alive. Transient = 1, /// Persist until the user revokes this permission. Persistent = 2, } type StreamVariantType = (u32, VariantDict); #[derive(Debug, Clone)] pub struct Stream { node_id: u32, id: Option, position: Option<(i32, i32)>, size: Option<(i32, i32)>, source_type: Option, } impl Stream { pub fn node_id(&self) -> u32 { self.node_id } pub fn id(&self) -> Option<&str> { self.id.as_deref() } pub fn position(&self) -> Option<(i32, i32)> { self.position } pub fn size(&self) -> Option<(i32, i32)> { self.size } pub fn source_type(&self) -> Option { self.source_type } } impl StaticVariantType for Stream { fn static_variant_type() -> Cow<'static, glib::VariantTy> { ::static_variant_type() } } impl FromVariant for Stream { fn from_variant(variant: &glib::Variant) -> Option { let (node_id, props) = variant.get::()?; Some(Self { node_id, id: props.get_flatten("id").ok(), position: props.get_flatten("position").ok(), size: props.get_flatten("size").ok(), source_type: props .get_flatten::("source_type") .ok() .and_then(SourceType::from_bits), }) } } #[cfg(test)] mod tests { use super::*; #[test] fn stream_static_variant_type() { assert_eq!( Stream::static_variant_type(), glib::VariantTy::new("(ua{sv})").unwrap() ); } #[test] fn stream_from_variant() { let variant = glib::Variant::parse(None, "(uint32 63, {'id': <'0'>, 'source_type': , 'position': <(2, 2)>, 'size': <(1680, 1050)>})").unwrap(); assert_eq!(variant.type_(), Stream::static_variant_type()); let stream = variant.get::().unwrap(); assert_eq!(stream.node_id(), 63); assert_eq!(stream.id(), Some("0")); assert_eq!(stream.position(), Some((2, 2))); assert_eq!(stream.size(), Some((1680, 1050))); assert_eq!(stream.source_type(), Some(SourceType::MONITOR)); } #[test] fn stream_from_variant_optional() { let variant = glib::Variant::parse(Some(&Stream::static_variant_type()), "(uint32 63, {})").unwrap(); let stream = variant.get::().unwrap(); assert_eq!(stream.node_id(), 63); assert_eq!(stream.id(), None); assert_eq!(stream.position(), None); assert_eq!(stream.size(), None); assert_eq!(stream.source_type(), None); } } Kooha-2.3.0/src/screencast_portal/variant_dict.rs000066400000000000000000000123521457702140700221060ustar00rootroot00000000000000use anyhow::{anyhow, Result}; use gtk::glib::{self, prelude::*}; use std::{borrow::Cow, collections::HashMap, fmt}; #[derive(Default)] pub struct VariantDict(HashMap); impl fmt::Debug for VariantDict { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fmt::Debug::fmt(&self.to_variant(), f) } } impl VariantDict { pub fn builder() -> VariantDictBuilder { VariantDictBuilder { h: HashMap::new() } } pub fn is_empty(&self) -> bool { self.0.is_empty() } pub fn insert(&mut self, key: &str, value: impl ToVariant) { self.0.insert(key.to_string(), value.to_variant()); } pub fn get_flatten(&self, key: &str) -> Result { let variant = self .0 .get(key) .ok_or_else(|| anyhow!("Key `{}` not found", key))?; variant.get::().ok_or_else(|| { anyhow!( "Expected key `{}` of type `{}`; got `{}` with value `{}`", key, T::static_variant_type(), variant.type_(), variant ) }) } pub fn get(&self, key: &str) -> Result> { let Some(variant) = self.0.get(key) else { return Ok(None); }; let value = variant.get::().ok_or_else(|| { anyhow!( "Expected key `{}` of type `{}`; got `{}` with value `{}`", key, T::static_variant_type(), variant.type_(), variant ) })?; Ok(Some(value)) } } impl StaticVariantType for VariantDict { fn static_variant_type() -> Cow<'static, glib::VariantTy> { glib::VariantDict::static_variant_type() } } impl FromVariant for VariantDict { fn from_variant(value: &glib::Variant) -> Option { Some(Self(value.get::>()?)) } } impl ToVariant for VariantDict { fn to_variant(&self) -> glib::Variant { self.0.to_variant() } } pub struct VariantDictBuilder { h: HashMap, } impl VariantDictBuilder { pub fn entry(mut self, key: &str, value: impl ToVariant) -> Self { self.h.insert(key.into(), value.to_variant()); self } pub fn build(self) -> VariantDict { VariantDict(self.h) } } #[cfg(test)] mod tests { use super::*; #[test] fn empty() { let var_dict_a = VariantDict::default(); assert!(var_dict_a.is_empty()); let var_dict_b = VariantDict::builder().entry("test", "value").build(); assert!(!var_dict_b.is_empty()); } #[test] fn get_flatten_ok() { let var_dict = VariantDict::builder().entry("test", "value").build(); assert_eq!(var_dict.get_flatten::("test").unwrap(), "value"); } #[test] fn get_flatten_missing() { let var_dict = VariantDict::builder().entry("test", "value").build(); assert_eq!( var_dict .get_flatten::("test2") .unwrap_err() .to_string(), "Key `test2` not found" ); } #[test] fn get_flatten_wrong_type() { let var_dict = VariantDict::builder().entry("test", "value").build(); assert_eq!( var_dict.get_flatten::("test").unwrap_err().to_string(), "Expected key `test` of type `u`; got `s` with value `'value'`" ); } #[test] fn get_ok() { let var_dict = VariantDict::builder().entry("test", "value").build(); assert_eq!( var_dict.get::("test").unwrap().as_deref(), Some("value") ); } #[test] fn get_missing() { let var_dict = VariantDict::builder().entry("test", "value").build(); assert_eq!(var_dict.get::("test2").unwrap(), None); } #[test] fn get_wrong_type() { let var_dict = VariantDict::builder().entry("test", "value").build(); assert_eq!( var_dict.get::("test").unwrap_err().to_string(), "Expected key `test` of type `u`; got `s` with value `'value'`" ); } #[test] fn static_variant_type() { assert_eq!( VariantDict::default().to_variant().type_(), glib::VariantDict::static_variant_type() ); } #[test] fn from_variant() { let var = glib::Variant::parse(None, "{'test': <'value'>}").unwrap(); let var_dict = VariantDict::from_variant(&var).unwrap(); assert_eq!(var_dict.get_flatten::("test").unwrap(), "value"); } #[test] fn to_variant() { assert_eq!(VariantDict::static_variant_type(), glib::VariantTy::VARDICT); let var_dict = VariantDict::builder().entry("test", "value").build(); assert_eq!(var_dict.to_variant().to_string(), "{'test': <'value'>}"); } #[test] fn builder() { let var_dict = VariantDict::builder() .entry("test", "value") .entry("test2", "value2") .build(); assert_eq!(var_dict.get_flatten::("test").unwrap(), "value"); assert_eq!(var_dict.get_flatten::("test2").unwrap(), "value2"); } } Kooha-2.3.0/src/screencast_portal/window_identifier.rs000066400000000000000000000077071457702140700231600ustar00rootroot00000000000000// Based on ashpd (MIT) // Source: https://github.com/bilelmoussaoui/ashpd/blob/49aca6ff0f20c68fc2ddb09763ed9937b002ded6/src/window_identifier/gtk4.rs use futures_channel::oneshot; use gtk::{ glib::{self, WeakRef}, prelude::*, }; use std::{cell::RefCell, fmt}; const WINDOW_HANDLE_KEY: &str = "kooha-wayland-window-handle"; type WindowHandleData = (Option, u8); #[derive(Debug)] pub enum WindowIdentifier { Wayland { top_level: WeakRef, handle: Option, }, X11(gdk_x11::XWindow), None, } impl fmt::Display for WindowIdentifier { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { WindowIdentifier::Wayland { handle, .. } => { write!(f, "wayland:{}", handle.as_deref().unwrap_or_default()) } WindowIdentifier::X11(xid) => write!(f, "x11:{:#x}", xid), WindowIdentifier::None => f.write_str(""), } } } impl ToVariant for WindowIdentifier { fn to_variant(&self) -> glib::Variant { self.to_string().to_variant() } } impl WindowIdentifier { pub async fn new(native: &impl IsA) -> Self { let Some(surface) = native.surface() else { return Self::None; }; if let Some(top_level) = surface.downcast_ref::() { let handle = unsafe { if let Some(mut handle) = top_level.data::(WINDOW_HANDLE_KEY) { let (handle, ref_count) = handle.as_mut(); *ref_count += 1; handle.clone() } else { let (tx, rx) = oneshot::channel(); let tx = RefCell::new(Some(tx)); let result = top_level.export_handle(move |_, handle| { let tx = tx.take().expect("callback called twice"); match handle { Ok(handle) => { let _ = tx.send(Some(handle.to_string())); } Err(err) => { tracing::warn!("Failed to export handle: {:?}", err); let _ = tx.send(None); } } }); if !result { return Self::None; } let handle = rx.await.unwrap(); top_level.set_data::(WINDOW_HANDLE_KEY, (handle.clone(), 1)); handle } }; Self::Wayland { top_level: top_level.downgrade(), handle, } } else if let Some(surface) = surface.downcast_ref::() { Self::X11(surface.xid()) } else { tracing::warn!( "Unhandled surface backend type: {:?}", surface.display().backend() ); Self::None } } } impl Drop for WindowIdentifier { fn drop(&mut self) { if let WindowIdentifier::Wayland { top_level, handle } = self { if handle.is_none() { return; } if let Some(top_level) = top_level.upgrade() { unsafe { let (handle, ref_count) = top_level .data::(WINDOW_HANDLE_KEY) .unwrap() .as_mut(); if *ref_count > 1 { *ref_count -= 1; return; } top_level.unexport_handle(); tracing::trace!("Unexported handle: {:?}", handle); let _ = top_level.steal_data::(WINDOW_HANDLE_KEY); } } } } } Kooha-2.3.0/src/settings.rs000066400000000000000000000130161457702140700155620ustar00rootroot00000000000000use std::{fs, path::PathBuf, time::Duration}; use adw::prelude::*; use anyhow::{Context, Result}; use gettextrs::gettext; use gsettings_macro::gen_settings; use gtk::{gio, glib}; use crate::{ area_selector::{Selection, SelectionContext}, config::APP_ID, profile::Profile, }; #[gen_settings(file = "./data/io.github.seadve.Kooha.gschema.xml.in")] #[gen_settings_define(key_name = "selection", arg_type = "Selection", ret_type = "Selection")] #[gen_settings_define( key_name = "selection-context", arg_type = "SelectionContext", ret_type = "SelectionContext" )] #[gen_settings_skip(key_name = "saving-location")] #[gen_settings_skip(key_name = "framerate")] #[gen_settings_skip(key_name = "record-delay")] #[gen_settings_skip(key_name = "profile-id")] pub struct Settings; impl Default for Settings { fn default() -> Self { Self::new(APP_ID) } } impl Settings { /// Opens a `FileDialog` to select a folder and updates /// the settings with the selected folder. pub async fn select_saving_location( &self, parent: Option<&impl IsA>, ) -> Result<()> { let dialog = gtk::FileDialog::builder() .modal(true) .title(gettext("Select Recordings Folder")) .initial_folder(&gio::File::for_path(self.saving_location())) .build(); let folder = dialog.select_folder_future(parent).await?; let path = folder.path().context("Folder does not have a path")?; self.0.set("saving-location", path).unwrap(); Ok(()) } pub fn saving_location(&self) -> PathBuf { let stored_saving_location: PathBuf = self.0.get("saving-location"); if !stored_saving_location.as_os_str().is_empty() { return stored_saving_location; } let saving_location = glib::user_special_dir(glib::UserDirectory::Videos).unwrap_or_else(glib::home_dir); let kooha_saving_location = saving_location.join("Kooha"); if let Err(err) = fs::create_dir_all(&kooha_saving_location) { tracing::warn!( "Failed to create dir at `{}`: {:?}", kooha_saving_location.display(), err ); return saving_location; } kooha_saving_location } pub fn connect_saving_location_changed( &self, f: impl Fn(&Self) + 'static, ) -> glib::SignalHandlerId { self.0 .connect_changed(Some("saving-location"), move |settings, _| { f(&Self(settings.clone())); }) } pub fn framerate(&self) -> gst::Fraction { self.0.get::<(i32, i32)>("framerate").into() } pub fn set_framerate(&self, framerate: gst::Fraction) { let raw = <(i32, i32)>::from(framerate); self.0.set("framerate", raw).unwrap(); } pub fn connect_framerate_changed(&self, f: impl Fn(&Self) + 'static) -> glib::SignalHandlerId { self.0 .connect_changed(Some("framerate"), move |settings, _| { f(&Self(settings.clone())); }) } pub fn record_delay(&self) -> Duration { Duration::from_secs(self.0.get::("record-delay") as u64) } pub fn create_record_delay_action(&self) -> gio::Action { self.0.create_action("record-delay") } pub fn bind_record_delay<'a>( &'a self, object: &'a impl IsA, property: &'a str, ) -> gio::BindingBuilder<'a> { self.0.bind("record-delay", object, property) } pub fn set_profile(&self, profile: Option<&Profile>) { self.0 .set_string("profile-id", profile.map_or("", |profile| profile.id())) .unwrap(); } pub fn profile(&self) -> Option<&'static Profile> { let profile_id = self.0.get::("profile-id"); if profile_id.is_empty() { return None; } Profile::from_id(&profile_id) .inspect_err(|err| { tracing::warn!("Failed to get profile with id `{}`: {:?}", profile_id, err); }) .ok() .filter(|profile| profile.is_available()) } pub fn connect_profile_changed(&self, f: impl Fn(&Self) + 'static) -> glib::SignalHandlerId { self.0 .connect_changed(Some("profile-id"), move |settings, _| { f(&Self(settings.clone())); }) } pub fn reset_profile(&self) { self.0.reset("profile-id"); } } #[cfg(test)] mod tests { use super::*; use std::{env, process::Command, sync::Once}; fn setup_schema() { static INIT: Once = Once::new(); INIT.call_once(|| { let schema_dir = concat!(env!("CARGO_MANIFEST_DIR"), "/data"); let output = Command::new("glib-compile-schemas") .arg(schema_dir) .output() .unwrap(); if !output.status.success() { panic!( "Failed to compile GSchema for tests; stdout: {}; stderr: {}", String::from_utf8_lossy(&output.stdout), String::from_utf8_lossy(&output.stderr) ); } env::set_var("GSETTINGS_SCHEMA_DIR", schema_dir); env::set_var("GSETTINGS_BACKEND", "memory"); }); } #[test] fn default_profile() { setup_schema(); gst::init().unwrap(); assert!(Settings::default().profile().is_some()); assert!(Settings::default().profile().unwrap().supports_audio()); } } Kooha-2.3.0/src/timer.rs000066400000000000000000000137761457702140700150570ustar00rootroot00000000000000use futures_util::future::FusedFuture; use gtk::glib::{self, clone}; use std::{ cell::{Cell, RefCell}, fmt, future::Future, pin::Pin, rc::Rc, task::{Context, Poll, Waker}, time::{Duration, Instant}, }; use crate::cancelled::Cancelled; const SECS_LEFT_UPDATE_INTERVAL: Duration = Duration::from_millis(200); /// A reference counted cancellable timed future /// /// The timer will only start when it gets polled. #[derive(Clone)] pub struct Timer { inner: Rc, } impl fmt::Debug for Timer { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("Timer") .field("duration", &self.inner.duration) .field("state", &self.inner.state.get()) .field("elapsed", &self.inner.instant.get().map(|i| i.elapsed())) .finish() } } #[derive(Debug, Clone, Copy)] enum State { Waiting, Cancelled, Done, } impl State { fn to_poll(self) -> Poll<::Output> { match self { State::Waiting => Poll::Pending, State::Cancelled => Poll::Ready(Err(Cancelled::new("timer"))), State::Done => Poll::Ready(Ok(())), } } } struct Inner { duration: Duration, secs_left_changed_cb: Box, secs_left_changed_source_id: RefCell>, state: Cell, instant: Cell>, waker: RefCell>, source_id: RefCell>, } impl Inner { fn secs_left(&self) -> u64 { if self.is_terminated() { return 0; } let elapsed_secs = self .instant .get() .map_or(Duration::ZERO, |instant| instant.elapsed()) .as_secs(); self.duration.as_secs() - elapsed_secs } fn is_terminated(&self) -> bool { matches!(self.state.get(), State::Done | State::Cancelled) } } impl Timer { /// The timer will start as soon as it gets polled pub fn new(duration: Duration, secs_left_changed_cb: impl Fn(u64) + 'static) -> Self { Self { inner: Rc::new(Inner { duration, secs_left_changed_cb: Box::new(secs_left_changed_cb), secs_left_changed_source_id: RefCell::new(None), state: Cell::new(State::Waiting), instant: Cell::new(None), waker: RefCell::new(None), source_id: RefCell::new(None), }), } } pub fn cancel(&self) { if self.inner.is_terminated() { return; } self.inner.state.set(State::Cancelled); if let Some(source_id) = self.inner.source_id.take() { source_id.remove(); } if let Some(source_id) = self.inner.secs_left_changed_source_id.take() { source_id.remove(); } if let Some(waker) = self.inner.waker.take() { waker.wake(); } } } impl Future for Timer { type Output = Result<(), Cancelled>; fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { match self.inner.state.get().to_poll() { ready @ Poll::Ready(_) => return ready, Poll::Pending => {} } if self.inner.duration.is_zero() { self.inner.state.set(State::Done); return Poll::Ready(Ok(())); } let waker = cx.waker().clone(); self.inner.waker.replace(Some(waker)); self.inner .secs_left_changed_source_id .replace(Some(glib::timeout_add_local( SECS_LEFT_UPDATE_INTERVAL, clone!(@weak self.inner as inner => @default-return glib::ControlFlow::Break, move || { (inner.secs_left_changed_cb)(inner.secs_left()); glib::ControlFlow::Continue }), ))); self.inner .source_id .replace(Some(glib::timeout_add_local_once( self.inner.duration, clone!(@weak self.inner as inner => move || { inner.state.set(State::Done); if let Some(source_id) = inner.secs_left_changed_source_id.take() { source_id.remove(); } if let Some(waker) = inner.waker.take() { waker.wake(); } }), ))); self.inner.instant.set(Some(Instant::now())); (self.inner.secs_left_changed_cb)(self.inner.secs_left()); self.inner.state.get().to_poll() } } impl FusedFuture for Timer { fn is_terminated(&self) -> bool { self.inner.is_terminated() } } impl Drop for Timer { fn drop(&mut self) { self.cancel(); } } #[cfg(test)] mod tests { use super::*; use futures_util::FutureExt; #[gtk::test] async fn normal() { let timer = Timer::new(Duration::from_nanos(10), |_| {}); assert_eq!(timer.inner.duration, Duration::from_nanos(10)); assert!(matches!(timer.inner.state.get(), State::Waiting)); assert!(timer.clone().await.is_ok()); assert!(matches!(timer.inner.state.get(), State::Done)); assert_eq!(timer.inner.secs_left(), 0); } #[gtk::test] async fn cancelled() { let timer = Timer::new(Duration::from_nanos(10), |_| {}); assert!(matches!(timer.inner.state.get(), State::Waiting)); timer.cancel(); assert!(timer.clone().await.is_err()); assert!(matches!(timer.inner.state.get(), State::Cancelled)); assert_eq!(timer.inner.secs_left(), 0); } #[gtk::test] fn zero_duration() { let control = Timer::new(Duration::from_nanos(10), |_| {}); assert!(control.now_or_never().is_none()); let timer = Timer::new(Duration::ZERO, |_| {}); assert!(timer.clone().now_or_never().unwrap().is_ok()); assert!(matches!(timer.inner.state.get(), State::Done)); assert_eq!(timer.inner.secs_left(), 0); } } Kooha-2.3.0/src/window/000077500000000000000000000000001457702140700146625ustar00rootroot00000000000000Kooha-2.3.0/src/window/mod.rs000066400000000000000000000466251457702140700160240ustar00rootroot00000000000000mod progress_icon; mod toggle_button; use adw::{prelude::*, subclass::prelude::*}; use anyhow::{Error, Result}; use gettextrs::gettext; use gtk::{ gio, glib::{self, clone}, }; use std::cell::RefCell; use self::{progress_icon::ProgressIcon, toggle_button::ToggleButton}; use crate::{ cancelled::Cancelled, config::PROFILE, format_time, framerate_option::FramerateOption, help::ContextWithHelp, preferences_dialog::PreferencesDialog, recording::{NoProfileError, Recording, RecordingState}, settings::CaptureMode, Application, }; mod imp { use super::*; #[derive(Debug, Default, gtk::CompositeTemplate)] #[template(resource = "/io/github/seadve/Kooha/ui/window.ui")] pub struct Window { #[template_child] pub(super) title: TemplateChild, #[template_child] pub(super) stack: TemplateChild, #[template_child] pub(super) main_page: TemplateChild, #[template_child] pub(super) forget_video_sources_revealer: TemplateChild, #[template_child] pub(super) recording_page: TemplateChild, #[template_child] pub(super) recording_label: TemplateChild, #[template_child] pub(super) recording_time_label: TemplateChild, #[template_child] pub(super) pause_record_button: TemplateChild, #[template_child] pub(super) delay_page: TemplateChild, #[template_child] pub(super) delay_label: TemplateChild, #[template_child] pub(super) flushing_page: TemplateChild, #[template_child] pub(super) flushing_progress_icon: TemplateChild, pub(super) inhibit_cookie: RefCell>, pub(super) recording: RefCell)>>, } #[glib::object_subclass] impl ObjectSubclass for Window { const NAME: &'static str = "KoohaWindow"; type Type = super::Window; type ParentType = adw::ApplicationWindow; fn class_init(klass: &mut Self::Class) { ToggleButton::ensure_type(); klass.bind_template(); klass.install_action_async("win.toggle-record", None, |obj, _, _| async move { obj.toggle_record().await; }); klass.install_action("win.toggle-pause", None, move |obj, _, _| { if let Err(err) = obj.toggle_pause() { let err = err.context(gettext("Failed to toggle pause")); tracing::error!("{:?}", err); obj.present_recording_error_dialog(&err); } }); klass.install_action("win.cancel-record", None, move |obj, _, _| { obj.cancel_record(); }); klass.install_action("win.forget-video-sources", None, move |_obj, _, _| { Application::get() .settings() .reset_screencast_restore_token(); }); } fn instance_init(obj: &glib::subclass::InitializingObject) { obj.init_template(); } } impl ObjectImpl for Window { fn constructed(&self) { self.parent_constructed(); let obj = self.obj(); if PROFILE == "Devel" { obj.add_css_class("devel"); } obj.setup_settings(); obj.update_view(); obj.update_title_label(); obj.update_subtitle_label(); obj.update_forget_video_sources_action(); } } impl WidgetImpl for Window { fn map(&self) { self.parent_map(); let obj = self.obj(); obj.update_audio_actions(); } } impl WindowImpl for Window { fn close_request(&self) -> glib::Propagation { let obj = self.obj(); if obj.is_busy() { glib::spawn_future_local(clone!(@weak obj => async move { if obj.run_quit_confirmation_dialog().await.is_proceed() { obj.destroy(); } })); return glib::Propagation::Stop; } self.parent_close_request() } } impl ApplicationWindowImpl for Window {} impl AdwApplicationWindowImpl for Window {} } glib::wrapper! { pub struct Window(ObjectSubclass) @extends gtk::Widget, gtk::Window, gtk::ApplicationWindow, adw::ApplicationWindow, @implements gio::ActionMap, gio::ActionGroup, gtk::Native; } impl Window { pub fn new(app: &Application) -> Self { glib::Object::builder().property("application", app).build() } /// Returns `true` if the window is busy with a recording. pub fn is_busy(&self) -> bool { self.imp() .recording .borrow() .as_ref() .is_some_and(|(recording, _)| { matches!( recording.state(), RecordingState::Recording | RecordingState::Paused | RecordingState::Flushing { .. } ) }) } /// Returns `Proceed` if the user wants to proceed with the quit operation. pub async fn run_quit_confirmation_dialog(&self) -> glib::Propagation { const CANCEL_RESPONSE_ID: &str = "cancel"; const QUIT_RESPONSE_ID: &str = "quit"; debug_assert!( self.is_busy(), "quit confirmation dialog must only be presented when busy" ); let body_text = match self .imp() .recording .borrow() .as_ref() .map(|(recording, _)| recording.state()) { Some(RecordingState::Recording) | Some(RecordingState::Paused) => gettext( "A recording is currently in progress. Quitting immediately may cause the recording to be unplayable. Please stop the recording before quitting.", ), Some(RecordingState::Flushing { .. }) => gettext( "Quitting will cancel the processing and may cause the recording to be unplayable.", ), state => unreachable!("unexpected recording state: {:?}", state), }; let dialog = adw::AlertDialog::builder() .heading(gettext("Quit the Application?")) .body(body_text) .close_response(CANCEL_RESPONSE_ID) .default_response(CANCEL_RESPONSE_ID) .build(); dialog.add_response(CANCEL_RESPONSE_ID, &gettext("Cancel")); dialog.add_response(QUIT_RESPONSE_ID, &gettext("Quit")); dialog.set_response_appearance(QUIT_RESPONSE_ID, adw::ResponseAppearance::Destructive); match dialog.choose_future(self).await.as_str() { CANCEL_RESPONSE_ID => glib::Propagation::Stop, QUIT_RESPONSE_ID => glib::Propagation::Proceed, _ => unreachable!(), } } fn present_recording_error_dialog(&self, err: &Error) { const OK_RESPONSE_ID: &str = "ok"; let err_text = format!("{:?}", err); let err_view = gtk::TextView::builder() .buffer(>k::TextBuffer::builder().text(&err_text).build()) .editable(false) .monospace(true) .top_margin(6) .bottom_margin(6) .left_margin(6) .right_margin(6) .build(); let scrolled_window = gtk::ScrolledWindow::builder() .min_content_width(360) .min_content_height(120) .child(&err_view) .build(); let scrolled_window_row = gtk::ListBoxRow::builder() .overflow(gtk::Overflow::Hidden) .activatable(false) .selectable(false) .child(&scrolled_window) .build(); scrolled_window_row.add_css_class("error-view"); let copy_button = gtk::Button::builder() .valign(gtk::Align::Center) .tooltip_text(gettext("Copy to clipboard")) .icon_name("edit-copy-symbolic") .build(); copy_button.connect_clicked(move |button| { button.clipboard().set_text(&err_text); button.set_tooltip_text(Some(&gettext("Copied to clipboard"))); button.set_icon_name("checkmark-symbolic"); button.add_css_class("copy-done"); }); let expander = adw::ExpanderRow::builder() .title(gettext("Show detailed error")) .activatable(false) .build(); expander.add_row(&scrolled_window_row); expander.add_suffix(©_button); let list_box = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .build(); list_box.add_css_class("boxed-list"); list_box.append(&expander); let dialog = adw::AlertDialog::builder() .heading(err.to_string()) .body_use_markup(true) .default_response(OK_RESPONSE_ID) .extra_child(&list_box) .build(); if let Some(context) = err.downcast_ref::() { dialog.set_body(&format!( "{}: {}", gettext("Help"), context.help_message() )); } dialog.add_response(OK_RESPONSE_ID, &gettext("Ok, Got It")); dialog.present(self); } fn present_no_profile_error_dialog(&self) { const OPEN_RESPONSE_ID: &str = "open"; const LATER_RESPONSE_ID: &str = "later"; let dialog = adw::AlertDialog::builder() .heading(gettext("Open Preferences?")) .body(gettext("The previously selected format may have been unavailable. Open preferences and select a format to continue recording.")) .default_response(OPEN_RESPONSE_ID) .build(); dialog.add_response(LATER_RESPONSE_ID, &gettext("Later")); dialog.add_response(OPEN_RESPONSE_ID, &gettext("Open")); dialog.set_response_appearance(OPEN_RESPONSE_ID, adw::ResponseAppearance::Suggested); dialog.connect_response( Some(OPEN_RESPONSE_ID), clone!(@weak self as obj => move |dialog, _| { dialog.close(); let app = Application::get(); let preferences_dialog = PreferencesDialog::new(app.settings()); preferences_dialog.present(&obj); let was_focused = preferences_dialog.profile_row_grab_focus(); debug_assert!(was_focused); }), ); dialog.present(self); } async fn toggle_record(&self) { let imp = self.imp(); if let Some((ref recording, _)) = *imp.recording.borrow() { recording.stop(); return; } let recording = Recording::new(); let handler_ids = vec![ recording.connect_state_notify(clone!(@weak self as obj => move |_| { obj.update_view(); obj.update_inhibit(); })), recording.connect_duration_notify(clone!(@weak self as obj => move |recording| { let formatted_time = format_time::digital_clock(recording.duration()); obj.imp().recording_time_label.set_label(&formatted_time); })), recording.connect_finished(clone!(@weak self as obj => move |recording, res| { obj.handle_recording_finished(recording, res); })), ]; imp.recording .replace(Some((recording.clone(), handler_ids))); self.update_inhibit(); recording .start(Some(self), Application::get().settings()) .await; } fn toggle_pause(&self) -> Result<()> { let imp = self.imp(); if let Some((ref recording, _)) = *imp.recording.borrow() { if matches!(recording.state(), RecordingState::Paused) { recording.resume()?; } else { recording.pause()?; }; } Ok(()) } fn cancel_record(&self) { let imp = self.imp(); if let Some((ref recording, _)) = *imp.recording.borrow() { recording.cancel(); } } fn handle_recording_finished( &self, recording: &Recording, res: &Result<(gio::File, gst::ClockTime)>, ) { debug_assert_eq!(recording.state(), RecordingState::Finished); match res { Ok((recording_file, duration)) => { let duration = *duration; glib::spawn_future_local(clone!(@strong recording_file => async move { let app = Application::get(); app.send_record_success_notification(&recording_file, duration).await; })); let recent_manager = gtk::RecentManager::default(); recent_manager.add_item(&recording_file.uri()); } Err(ref err) => { if err.is::() { tracing::debug!("{:?}", err); } else if err.is::() { self.present_no_profile_error_dialog(); } else { tracing::error!("{:?}", err); self.present_recording_error_dialog(err); if let Some(surface) = self.surface() { surface.beep(); } } } } if let Some((recording, handler_ids)) = self.imp().recording.take() { for handler_id in handler_ids { recording.disconnect(handler_id); } self.update_inhibit(); } else { tracing::warn!("Recording finished but no stored recording"); } } fn update_inhibit(&self) { let imp = self.imp(); let app = Application::get(); let is_busy = self.is_busy(); if is_busy && imp.inhibit_cookie.borrow().is_none() { let inhibit_cookie = app.inhibit( Some(self), gtk::ApplicationInhibitFlags::LOGOUT | gtk::ApplicationInhibitFlags::IDLE, Some(&gettext("A recording is in progress")), ); imp.inhibit_cookie.replace(Some(inhibit_cookie)); tracing::debug!("Inhibited logout and idle"); } else if !is_busy { if let Some(inhibit_cookie) = imp.inhibit_cookie.take() { app.uninhibit(inhibit_cookie); tracing::debug!("Uninhibited logout and idle"); } } } fn update_view(&self) { let imp = self.imp(); // TODO disregard ms granularity recording state change let state = imp .recording .borrow() .as_ref() .map_or(RecordingState::Init, |(recording, _)| recording.state()); match state { RecordingState::Init | RecordingState::Finished => { imp.stack.set_visible_child(&*imp.main_page); imp.recording_time_label .set_label(&format_time::digital_clock(gst::ClockTime::ZERO)); } RecordingState::Delayed { secs_left } => { imp.delay_label.set_label(&secs_left.to_string()); imp.stack.set_visible_child(&*imp.delay_page); } RecordingState::Recording => { imp.pause_record_button .set_icon_name("media-playback-pause-symbolic"); imp.recording_label.set_label(&gettext("Recording")); imp.recording_time_label.remove_css_class("paused"); imp.stack.set_visible_child(&*imp.recording_page); } RecordingState::Paused => { imp.pause_record_button .set_icon_name("media-playback-start-symbolic"); imp.recording_label.set_label(&gettext("Paused")); imp.recording_time_label.add_css_class("paused"); imp.stack.set_visible_child(&*imp.recording_page); } RecordingState::Flushing { progress } => { imp.flushing_progress_icon .set_progress(progress as f64 / 100.0); imp.stack.set_visible_child(&*imp.flushing_page); } } self.action_set_enabled( "win.toggle-record", !matches!( state, RecordingState::Delayed { .. } | RecordingState::Flushing { .. } ), ); self.action_set_enabled( "win.toggle-pause", matches!(state, RecordingState::Recording | RecordingState::Paused), ); self.action_set_enabled( "win.cancel-record", matches!( state, RecordingState::Delayed { .. } | RecordingState::Flushing { .. } ), ); } fn update_title_label(&self) { let imp = self.imp(); match Application::get().settings().capture_mode() { CaptureMode::MonitorWindow => imp.title.set_title(&gettext("Normal")), CaptureMode::Selection => imp.title.set_title(&gettext("Selection")), } } fn update_subtitle_label(&self) { let imp = self.imp(); let app = Application::get(); let settings = app.settings(); let profile_text = settings .profile() .map_or_else(|| gettext("None"), |profile| profile.name().to_string()); let framerate_option = FramerateOption::from_framerate(settings.framerate()); imp.title .set_subtitle(&format!("{} • {} FPS", profile_text, framerate_option)); } fn update_audio_actions(&self) { let is_enabled = Application::get() .settings() .profile() .map_or(true, |profile| profile.supports_audio()); self.action_set_enabled("win.record-desktop-audio", is_enabled); self.action_set_enabled("win.record-microphone", is_enabled); } fn update_forget_video_sources_action(&self) { let has_restore_token = !Application::get() .settings() .screencast_restore_token() .is_empty(); self.imp() .forget_video_sources_revealer .set_reveal_child(has_restore_token); self.action_set_enabled("win.forget-video-sources", has_restore_token); } fn setup_settings(&self) { let app = Application::get(); let settings = app.settings(); settings.connect_capture_mode_changed(clone!(@weak self as obj => move |_| { obj.update_title_label(); })); settings.connect_profile_changed(clone!(@weak self as obj => move |_| { obj.update_audio_actions(); obj.update_subtitle_label(); })); settings.connect_framerate_changed(clone!(@weak self as obj => move |_| { obj.update_subtitle_label(); })); settings.connect_screencast_restore_token_changed(clone!(@weak self as obj => move |_| { obj.update_forget_video_sources_action(); })); self.add_action(&settings.create_record_desktop_audio_action()); self.add_action(&settings.create_record_microphone_action()); self.add_action(&settings.create_show_pointer_action()); self.add_action(&settings.create_capture_mode_action()); } } Kooha-2.3.0/src/window/progress_icon.rs000066400000000000000000000065711457702140700201150ustar00rootroot00000000000000use std::{ cell::Cell, f64::consts::{FRAC_PI_2, TAU}, }; use adw::prelude::*; use gtk::{ cairo, glib::{self, clone}, graphene::Rect, subclass::prelude::*, }; const LINE_WIDTH: f64 = 4.0; const ANIMATION_DURATION_MS: u32 = 300; mod imp { use std::cell::OnceCell; use super::*; #[derive(Default, glib::Properties)] #[properties(wrapper_type = super::ProgressIcon)] pub struct ProgressIcon { #[property(get, set = Self::set_progress, minimum = 0.0, maximum = 1.0, explicit_notify)] pub(super) progress: Cell, pub(super) animation: OnceCell, pub(super) display_progress: Cell, } #[glib::object_subclass] impl ObjectSubclass for ProgressIcon { const NAME: &'static str = "KoohaProgressIcon"; type Type = super::ProgressIcon; type ParentType = gtk::Widget; } #[glib::derived_properties] impl ObjectImpl for ProgressIcon { fn constructed(&self) { self.parent_constructed(); let obj = self.obj(); let animation_target = adw::CallbackAnimationTarget::new(clone!(@weak obj => move |value| { let imp = obj.imp(); imp.display_progress.set(value); obj.queue_draw(); })); let animation = adw::TimedAnimation::builder() .widget(&*obj) .duration(ANIMATION_DURATION_MS) .target(&animation_target) .build(); self.animation.set(animation).unwrap(); } } impl WidgetImpl for ProgressIcon { fn snapshot(&self, snapshot: >k::Snapshot) { let obj = self.obj(); let width = obj.width(); let height = obj.height(); let color = obj.color(); let cx = width as f64 / 2.0; let cy = height as f64 / 2.0; let radius = width as f64 / 2.0 - LINE_WIDTH / 2.0; let arc_end = self.display_progress.get() * TAU - FRAC_PI_2; let ctx = snapshot.append_cairo(&Rect::new(0.0, 0.0, width as f32, height as f32)); ctx.set_line_width(LINE_WIDTH); ctx.set_line_cap(cairo::LineCap::Round); ctx.set_source_color(&color); ctx.move_to(cx, cy - radius); ctx.arc(cx, cy, radius, -FRAC_PI_2, arc_end); ctx.stroke().unwrap(); ctx.set_source_color(&color.with_alpha(color.alpha() * 0.15)); ctx.move_to(cx + radius * arc_end.cos(), cy + radius * arc_end.sin()); ctx.arc(cx, cy, radius, arc_end, 3.0 * FRAC_PI_2); ctx.stroke().unwrap(); } } impl ProgressIcon { fn set_progress(&self, progress: f64) { if (progress - self.progress.get()).abs() < f64::EPSILON { return; } let obj = self.obj(); self.progress.set(progress); let animation = self.animation.get().unwrap(); animation.set_value_from(animation.value()); animation.set_value_to(progress); animation.play(); obj.notify_progress(); } } } glib::wrapper! { pub struct ProgressIcon(ObjectSubclass) @extends gtk::Widget; } impl ProgressIcon { pub fn new() -> Self { glib::Object::new() } } Kooha-2.3.0/src/window/toggle_button.rs000066400000000000000000000100151457702140700201010ustar00rootroot00000000000000use gtk::{glib, prelude::*, subclass::prelude::*}; use std::cell::RefCell; mod imp { use super::*; #[derive(Debug, Default, glib::Properties)] #[properties(wrapper_type = super::ToggleButton)] pub struct ToggleButton { /// Icon name to show on un-toggled state #[property(get, set = Self::set_default_icon_name, explicit_notify)] pub(super) default_icon_name: RefCell, /// Icon name to show on toggled state #[property(get, set = Self::set_toggled_icon_name, explicit_notify)] pub(super) toggled_icon_name: RefCell, /// Tooltip text to show on un-toggled state #[property(get, set = Self::set_default_tooltip_text, explicit_notify)] pub(super) default_tooltip_text: RefCell, /// Tooltip text to show on toggled state #[property(get, set = Self::set_toggled_tooltip_text, explicit_notify)] pub(super) toggled_tooltip_text: RefCell, } #[glib::object_subclass] impl ObjectSubclass for ToggleButton { const NAME: &'static str = "KoohaToggleButton"; type Type = super::ToggleButton; type ParentType = gtk::ToggleButton; } #[glib::derived_properties] impl ObjectImpl for ToggleButton {} impl WidgetImpl for ToggleButton {} impl ButtonImpl for ToggleButton {} impl ToggleButtonImpl for ToggleButton { fn toggled(&self) { let obj = self.obj(); obj.update_icon_name(); obj.update_tooltip_text(); self.parent_toggled(); } } impl ToggleButton { fn set_default_icon_name(&self, default_icon_name: String) { let obj = self.obj(); if default_icon_name == obj.default_icon_name().as_str() { return; } self.default_icon_name.replace(default_icon_name); obj.update_icon_name(); obj.notify_default_icon_name(); } fn set_toggled_icon_name(&self, toggled_icon_name: String) { let obj = self.obj(); if toggled_icon_name == obj.toggled_icon_name().as_str() { return; } self.toggled_icon_name.replace(toggled_icon_name); obj.update_icon_name(); obj.notify_toggled_icon_name(); } fn set_default_tooltip_text(&self, default_tooltip_text: String) { let obj = self.obj(); if default_tooltip_text == obj.default_tooltip_text().as_str() { return; } self.default_tooltip_text.replace(default_tooltip_text); obj.update_tooltip_text(); obj.notify_default_tooltip_text(); } fn set_toggled_tooltip_text(&self, toggled_tooltip_text: String) { let obj = self.obj(); if toggled_tooltip_text == obj.toggled_tooltip_text().as_str() { return; } self.toggled_tooltip_text.replace(toggled_tooltip_text); obj.update_tooltip_text(); obj.notify_toggled_tooltip_text(); } } } glib::wrapper! { /// A toggle button that shows different icons and tooltips depending on the state. /// /// Note: `icon-name` and `tooltip-text` must not be set directly. pub struct ToggleButton(ObjectSubclass) @extends gtk::Widget, gtk::Button, gtk::ToggleButton; } impl ToggleButton { pub fn new() -> Self { glib::Object::new() } fn update_icon_name(&self) { let icon_name = if self.is_active() { self.toggled_icon_name() } else { self.default_icon_name() }; self.set_icon_name(&icon_name); } fn update_tooltip_text(&self) { let tooltip_text = if self.is_active() { self.toggled_tooltip_text() } else { self.default_tooltip_text() }; self.set_tooltip_text(if tooltip_text.is_empty() { None } else { Some(&tooltip_text) }); } } Kooha-2.3.0/typos.toml000066400000000000000000000001411457702140700146330ustar00rootroot00000000000000[default.extend-words] numer = "numer" [files] extend-exclude = ["data/icons/*.svg", "po/*.po"]